MarlinTPC  1.2.0
Public Member Functions | Protected Attributes | List of all members
marlintpc::RowTripletBasedTrackFinderProcessor Class Reference

Track finder based on triplets of rows. More...

#include <RowTripletBasedTrackFinderProcessor.h>

Inheritance diagram for marlintpc::RowTripletBasedTrackFinderProcessor:

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)
 

Detailed Description

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.

Parameters
"InputHits":stringThe name of the input collection of TPC hits (default: "TPCHits")
"OutputTracks":stringThe name of the output collection with the found tracks (default: "TripletTracks")
"BFieldScaleFactor":doubleOptional parameter, scales magnetic field (map), use 1.0 (default) for field ON or 0.0 for field OFF
"TripletPreSelectionDistCut":doubleOptional parameter, coarse cut on XY and Z residuals for triplet preselection (default 10.)
"TripletDefinitionChi2Cut":doubleOptional parameter, Chi2 cut for triplet definition on XY and Z residuals (default 20.)
"TripletPositionMatchingChi2Cut":doubleOptional parameter, Chi2 cut for triplet position matching in XY and Z (default 20.)
"TripletDirectionMatchingChi2Cut":doubleOptional parameter, Chi2 cut for triplet direction matching in XY and Z (default 20.)
"SegmentMatchingChi2Cut":doubleOptional parameter, Chi2/Ndf cut for segment matching (Ndf=4 for B off, 5 for B on) (default 30.)
"UnusedHitMatchingChi2Cut":doubleOptional parameter, Chi2 cut for matching unused hits in XY and Z (default 20.)
"UnusedHitMaxGapCut:intOptional parameter, maximal (row) gap for matching unused hits in XY and Z (default 4)
"EncodedModuleID":boolOptional parameter, flag for encoding of module ID in CellID0 (default true)
"ReferencePointAtPca":boolOptional parameter, use PCA as reference point, else 1. hit (default false)
Author
C. Kleinwort (130729)
Credits:
The processor skeleton was generated by the script createProcessor.py
Todo:
  • definition of module neighbourhood from POLAR module extend ?
  • better resolve equivalent (indirectly matching) overlapping segments ?

A detailed description is available as lcnote LC-TOOL-2014-004. Changes with respect to this note:

Member Function Documentation

void marlintpc::RowTripletBasedTrackFinderProcessor::processEvent ( EVENT::LCEvent *  evt)
virtual

Process event.

  • Prepare input: map of modules with maps of rows with vectors of hits
  • For each module independently build track segments from triplets.
  1. Look for triplets.
  2. Look for segments = triplet chains.
  3. Link segments (in module).
  4. Link unused hits to segments.
  • Link segments between modules.
  • Fill output collection.

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().


The documentation for this class was generated from the following files: