1 #ifndef ROWTRIPLETBASEDTRACKFINDERPROCESSOR_H 2 #define ROWTRIPLETBASEDTRACKFINDERPROCESSOR_H 4 #include <marlin/Processor.h> 5 #include <marlin/Global.h> 9 #include <gear/TPCModule.h> 12 #include "EVENT/TrackerHit.h" 19 #include "TMatrixDSym.h" 92 virtual void check(EVENT::LCEvent* evt);
127 rb_Hit(
const int iHit,
const int mod,
const int row,
const EVENT::TrackerHit& aHit);
129 int getHitNum()
const;
135 void getPos(
double*)
const;
136 double getVarXY(
const double = 0.)
const;
137 double getVarZ(
const double = 0.)
const;
138 double getPhiMeas()
const;
139 bool getUsed()
const;
140 void setUsed(
const double);
141 double getCosBeta()
const;
142 double getDistXY(
const double,
const double,
const double,
const double)
const;
143 double getDistZ(
const double)
const;
159 double _calcPhiMeas(
const EVENT::TrackerHit& aHit);
160 double _getVarXY(FloatVec);
161 double _getVarR(FloatVec);
162 double _getVarZ(FloatVec);
179 bool match(
rb_Hit*,
const double,
const double)
const;
180 rb_Hit* getHit(
const int)
const;
181 void getParameters(
double&,
double&,
double&,
double&,
double&,
double&,
double&,
double&,
double&,
double&)
const;
214 void getPos(
double*)
const;
215 double getVarXYPos(
const double = 0.)
const;
216 double getVarXYDir()
const;
217 double getVarZPos(
const double = 0.)
const;
218 double getVarZDir()
const;
219 double getPhiMeas()
const;
220 double getPhi()
const;
221 double getTanl()
const;
222 void getPosCloseTo(
const double,
const double,
double*,
double&)
const;
223 rb_Hit* getHit(
const int)
const;
224 bool match(
rb_Triplet*,
const double,
const double)
const;
225 double getCosBeta()
const;
252 rb_Segment(
double, hitListType,
unsigned int = 1);
253 rb_Segment(std::vector<rb_Segment*> segments);
254 double getBzc()
const;
255 int getFirstRow()
const;
256 int getLastRow()
const;
257 void getRefPoint(
double*)
const;
259 double getChi2()
const;
260 void getPar(
double *)
const;
261 const hitListType& getHitList()
const;
262 const TVectorD& getPar()
const;
263 const TMatrixDSym& getCov()
const;
264 bool match(
rb_Segment*,
const double,
const int)
const;
265 bool match(
rb_Hit*,
const double)
const;
266 void match(hitListType&, hitListType&,
const double)
const;
267 void getLCIOStateAtRefPoint(
const double*, TVectorD&, TMatrixDSym&)
const;
268 void fillRowMap(std::map<int, int>&)
const;
286 void fitSegment(
double);
302 void addMatch(std::pair<int, int>);
303 std::map<int, std::vector<int> > getClasses();
311 #endif // ROWTRIPLETBASEDTRACKFINDERPROCESSOR_H
const int _hitRow
row number
bool _encodedModuleID
Module ID is encoded in CellID0.
double _segCut
Chi2/Ndf cut for segment matching (Ndf=4 for B off, 5 for B on)
double _zav
average Z coordinate
const double _hitZ
Z position.
const double _hitVarR
variance in radial direction
std::map< int, std::vector< int > > _modNeighbours
neighbour modules
int _npar
number of parameters (5: helix, 4: line)
double _cosPhi
cos(_hitPhiMeas)
std::vector< rb_Triplet * > trpListType
std::map< int, segListType > modSegMapType
double _chi2
chi2 from segment fit
virtual void check(EVENT::LCEvent *evt)
double _phiMeas
measurement direction in XY (tangential to row)
double _refY
Y of reference point.
double _posCut
Chi2 cut for triplet position matching in XY and Z.
const double _hitX
X position.
const double _hitY
Y position.
const int _hitModule
module number
double _trpCut
Chi2 cut for triplet definition on XY and Z residuals.
double _xav
average X coordinate
bool areNeighbourModules(gear::TPCModule *, gear::TPCModule *, bool)
Check if modules are neighbours.
double _bzc
magnetic field strength (Bz*c)
double _Bzc
magnetic field strength (Bz*c)
std::string _outputColName
Name of the output collection.
TMatrixDSym _covariance
covariance matrix
double _sinPhi
sin(_hitPhiMeas)
double _varXY
variance in XY
double _phiMeas
(average) measurement direction in XY
double _unusedCut
Chi2 cut for matching unused hits in XY and Z.
std::string _inputColName
Name of the input collection.
double _Ycenter
TPC center, Y coordinate.
double _distCut
Coarse cut on XY and Z residuals for triplet preselection.
virtual void processRunHeader(EVENT::LCRunHeader *run)
double _dirCut
Chi2 cut for triplet direction matching in XY and Z.
double _length
(arc) length
int _ndf
number of degrees of freedom of segment fit
virtual void init()
Initialize processor.
bool _refAtPCA
Use Pca as reference point (else 1. hit)
const int _hitNum
input hit collection index
std::vector< rb_Segment * > segListType
std::vector< rb_Hit * > hitListType
std::vector< std::pair< int, int > > _matches
list of matches
int _maxGap
Cut for (row) distance to segment for matching unused hits in XY and Z.
TVectorD _parameters
parameter vector
const double _hitPhiMeas
measurement direction in XY (tangential to row)
double _Xcenter
TPC center, X coordinate.
double _refZ
Z of reference point.
std::map< int, int > _index
index list
std::map< int, rowHitMapType > modHitMapType
double _bfieldScaleFactor
scale factor for magnetic field (default: 1.0)
hitListType _hitList
pointers to hits
double _varZ
variance in Z
double _refX
X of reference point.
virtual Processor * newProcessor()
virtual void processEvent(EVENT::LCEvent *evt)
Process event.
std::map< int, hitListType > rowHitMapType
RowTripletBasedTrackFinderProcessor()
Construct processor.
Track finder based on triplets of rows.
const double _hitVarZ
variance for Z measurement
double _yav
average Y coordinate
const double _hitVarXY
variance for XY measurement