1 #ifndef ROWBASEDPADPULSEROADSEARCHPROCESSOR_H 2 #define ROWBASEDPADPULSEROADSEARCHPROCESSOR_H 6 #include <marlin/Processor.h> 7 #include <marlin/Global.h> 11 #include <gear/TPCModule.h> 14 #include "EVENT/TrackerPulse.h" 21 #include "TMatrixDSym.h" 114 virtual void check(EVENT::LCEvent* evt);
169 pb_Pulse(
const int iPulse,
const EVENT::TrackerPulse& aPulse,
const gear::TPCModule& aModule,
const double zPos);
171 int getPulseNum()
const;
172 int getModule()
const;
173 int getPadId()
const;
175 int getColumn()
const;
176 int getQuality()
const;
177 double getCharge()
const;
178 double getRelCharge()
const;
179 double getTime()
const;
183 void getPos(
double*)
const;
184 void getCOG(
double*)
const;
185 void getMeasDir(
double*)
const;
186 double getPhiMeas()
const;
187 bool isMaxPulse()
const;
189 int getNumSeeds()
const;
191 void removeSeed(
int);
193 const seedIdListType& getSeedIdList()
const;
194 int getSeedId()
const;
198 int getIndex()
const;
200 int getHitNum()
const;
239 pb_Seed(
const int seedID,
const double Bzc,
const pulseListType& pulses,
const int minRows,
const double rowDensityCut,
240 const double maxVarXY);
241 pb_Seed(
const int seedID,
const double Bzc,
const pulseListType& pulses);
243 int getSeedId()
const;
244 bool getValid()
const;
246 int getNumSeedPulses()
const;
247 int getNumUniqueSeedPulses()
const;
248 bool hasAddedPulses()
const;
249 double getVarXY()
const;
250 void getRefPoint(
double*)
const;
251 void getPar(
double *)
const;
255 const pulseListType& getPulseList()
const;
256 void roadSearch(pulseListType& pulses, pulseListType& insidePulses,
const double maxDxy,
const double maxDz)
const;
286 int getSegId1()
const;
287 int getSegId2()
const;
288 int getFirstRow1()
const;
289 int getFirstRow2()
const;
290 int getLastRow1()
const;
291 int getLastRow2()
const;
292 bool getValid()
const;
310 #endif // ROWBASEDPADPULSEROADSEARCHPROCESSOR_H const int _firstRow1
first row of first segment
RowBasedPadPulseRoadSearchProcessor()
Construct processor.
virtual void processEvent(EVENT::LCEvent *evt)
Process event.
const double _pulsePhiMeas
measurement direction in XY (tangential to row)
std::vector< rb_SegmentMatch * > segMatchListType
bool _skipRoadSearch
skip road search, hit finding only
const int _pulsePadID
pad ID
const double _bzc
magnetic field strength (Bz*c)
const int _segId2
second segment ID
double _slopeRow
measurement variance: diffusion term in row direction
std::map< int, std::vector< int > > _modNeighbours
neighbour modules
double _offsetRow
measurement variance: sigma0^2 in row direction (use rowHeight^2/12. if < 0.)
std::map< int, pulseListType > rowPulseMapType
virtual Processor * newProcessor()
std::map< int, int > _moduleRowOffset
row offsets per module layer
std::vector< pb_Pulse * > pulseListType
Simultaneous hit and track finding (pad row based).
std::list< int > seedIdListType
pulseListType _pulseList
pointers to pulses
double _offsetDrift
measurement variance: sigma0^2 in drift direction
double _Bzc
magnetic field strength (Bz*c)
const int _lastRow2
last row of second segment
virtual void init()
Initialize processor.
int _maxColDiffHit
maximum distance of pad to seed in hit (if > 0)
const double _pulseX
X position (local)
bool areNeighbourModules(gear::TPCModule *, gear::TPCModule *, bool)
Check if modules are neighbours.
int _maxColDiff
maximal column difference to pulse in neighbourhood
const int _pulseNum
input pulse collection index
double _maxOverlapFraction
maximum overlap fraction of segment seeds
std::string _outputTrackerHitsColName
Name of the TPC hit output collection.
const unsigned int _numPulses
number of pulses
std::string _inputTrackerPulsesColName
Name of the TPc pulse input collection.
TVectorD _parameters
parameter vector
double _dtMax
maximum drift time difference in neighboorhood/hit
double _rowDensityCut
minimum row 'density' for segment seed
const double _pulseTime
drift time
double _sumCharge
sum of charge in local neigbourhood
int _firstCol
start (column) of local neigbourhood
std::string _outputTrackColName
Name of the track output collection.
const int _pulseModule
module number
double _Ycenter
TPC center, Y coordinate.
int _minNumPulses
minimum number of pulses in hit
int _minRows
minimum number of rows for segment seed
double _varZS
chi2/ndf from (unweighted) ZS fit
const double _pulseY
Y position (local)
double _maxDxyRoad
maximum interpolation deviation in XY (road search)
virtual void check(EVENT::LCEvent *evt)
double _maxCharge
maximum charge in local neigbourhood
int _indexCol
index in list of pulses per row
int _maxSeedsInRow
maximum number of seeding pulses in row
const double _pulseDirY
measurement direction in Y
const double _pulseCharge
charge
int _minRowDiff
minimum row difference for pulse pair seeding road
Pad based (track segment) seed.
const int _pulseQuality
quality
virtual void processRunHeader(EVENT::LCRunHeader *run)
const int _lastRow1
last row of first segment
double _varXY
chi2/ndf from (unweighted) XY fit
double _segCut
Chi2/Ndf cut for segment matching (Ndf=4 for B off, 5 for B on)
bool _inHit
flag for being part of a hit
int _lastCol
end (column) of local neigbourhood
double _maxVarXY
maximum (average) XY variance (unweighted Chi2/ndf) for segment seed
seedIdListType _seeds
list of seeds (using pulse)
double _slopeCol
measurement variance: diffusion term in column direction
bool _refAtPCA
Use Pca as reference point (else 1. hit)
double _sumChargeDist
sum of charge*distance (to pulse) in local neigbourhood
double _driftVelocity
drift velocity
const double _pulseDirX
measurement direction in X
const double _pulseZ
Z position.
double _refZ
Z of reference point.
int _hitNum
index of seeded hit
double _refX
X of reference point.
std::map< int, segMatchListType > segMatchMapType
double _Xcenter
TPC center, X coordinate.
const int _firstRow2
first row of second segment
bool _skipMultiplePulses
skip multiple pulse candidates as road search seeds
double _offsetCol
measurement variance: sigma0^2 in column direction
const bool _checked
checked flag
const int _pulseCol
column number
std::vector< pb_Seed * > seedListType
const int _pulseRow
row number
std::map< int, rowPulseMapType > modPulseMapType
const int _segId1
first segment ID
double _slopeDrift
measurement variance: diffusion term in drift direction
double _maxDzRoad
maximum interpolation deviation in Z (road search)
int _maxColGap
maximum column gap in hit
double _refY
Y of reference point.
double _chargeConversionFactor
charge conversion factor from ADC values to primary electrons
int _npar
number of parameters (5: helix, 4: line)
double _bfieldScaleFactor
scale factor for magnetic field (default: 1.0)