MarlinTPC
1.2.0
|
Track finder based on triplets of rows. More...
#include <RowTripletBasedTrackFinderProcessor.h>
Public Member Functions | |
virtual Processor * | newProcessor () |
RowTripletBasedTrackFinderProcessor () | |
Construct processor. | |
virtual void | init () |
Initialize processor. | |
virtual void | processRunHeader (EVENT::LCRunHeader *run) |
virtual void | processEvent (EVENT::LCEvent *evt) |
Process event. More... | |
virtual void | check (EVENT::LCEvent *evt) |
virtual void | end () |
Protected Attributes | |
std::string | _inputColName |
Name of the input collection. | |
std::string | _outputColName |
Name of the output collection. | |
double | _bfieldScaleFactor |
scale factor for magnetic field (default: 1.0) | |
double | _distCut |
Coarse cut on XY and Z residuals for triplet preselection. | |
double | _trpCut |
Chi2 cut for triplet definition on XY and Z residuals. | |
double | _posCut |
Chi2 cut for triplet position matching in XY and Z. | |
double | _dirCut |
Chi2 cut for triplet direction matching in XY and Z. | |
double | _segCut |
Chi2/Ndf cut for segment matching (Ndf=4 for B off, 5 for B on) | |
double | _unusedCut |
Chi2 cut for matching unused hits in XY and Z. | |
int | _maxGap |
Cut for (row) distance to segment for matching unused hits in XY and Z. | |
bool | _encodedModuleID |
Module ID is encoded in CellID0. | |
bool | _refAtPCA |
Use Pca as reference point (else 1. hit) | |
Track finder based on triplets of rows.
Inspired by H1 pattern recognition by V. Blobel (Univ. Hamburg).
Input are the (position, measurement direction and errors) of the TPC hits and module parameters (offset and extend) from GEAR.
In each module (with hits):
Segments from each module are combined with compatible segments from the corresponding neighbouring modules to build track candidates. As reference point for the track canidates the first hit is used (optional: PCA).
The hits on the track candidates are ordered by row number, no multiple hits in a row are allowed. All matching criteria use chi2 cuts based on the hit measurement errors. The calculation of the measurement (pad) direction in XY uses "module.getLocalPadLayout().getCoordinateType()" to select polar or cartesian pad row geometry.
"InputHits":string | The name of the input collection of TPC hits (default: "TPCHits") |
"OutputTracks":string | The name of the output collection with the found tracks (default: "TripletTracks") |
"BFieldScaleFactor":double | Optional parameter, scales magnetic field (map), use 1.0 (default) for field ON or 0.0 for field OFF |
"TripletPreSelectionDistCut":double | Optional parameter, coarse cut on XY and Z residuals for triplet preselection (default 10.) |
"TripletDefinitionChi2Cut":double | Optional parameter, Chi2 cut for triplet definition on XY and Z residuals (default 20.) |
"TripletPositionMatchingChi2Cut":double | Optional parameter, Chi2 cut for triplet position matching in XY and Z (default 20.) |
"TripletDirectionMatchingChi2Cut":double | Optional parameter, Chi2 cut for triplet direction matching in XY and Z (default 20.) |
"SegmentMatchingChi2Cut":double | Optional parameter, Chi2/Ndf cut for segment matching (Ndf=4 for B off, 5 for B on) (default 30.) |
"UnusedHitMatchingChi2Cut":double | Optional parameter, Chi2 cut for matching unused hits in XY and Z (default 20.) |
"UnusedHitMaxGapCut:int | Optional parameter, maximal (row) gap for matching unused hits in XY and Z (default 4) |
"EncodedModuleID":bool | Optional parameter, flag for encoding of module ID in CellID0 (default true) |
"ReferencePointAtPca":bool | Optional parameter, use PCA as reference point, else 1. hit (default false) |
createProcessor.py
A detailed description is available as lcnote LC-TOOL-2014-004. Changes with respect to this note:
|
virtual |
Process event.
References _bfieldScaleFactor, _dirCut, _distCut, _encodedModuleID, _inputColName, _maxGap, _outputColName, _posCut, _refAtPCA, _segCut, _trpCut, _unusedCut, marlintpc::simpleEquiClasses::addIndex(), marlintpc::simpleEquiClasses::addMatch(), marlintpc::simpleEquiClasses::getClasses(), marlintpc::rb_Segment::getNdf(), and marlintpc::rb_Doublet::match().