2 #define TruthTracker_h 1
4 #include "marlin/Processor.h"
8 #include <EVENT/TrackerHit.h>
9 #include <EVENT/SimTrackerHit.h>
10 #include <IMPL/LCCollectionVec.h>
12 #include <UTIL/BitField64.h>
13 #include <UTIL/ILDConf.h>
26 class LCRelationNavigator ;
31 class IMarlinTrkSystem ;
79 virtual marlin::Processor* newProcessor() {
return new TruthTracker ; }
98 virtual void check( LCEvent * evt ) ;
106 bool operator()(std::pair<SimTrackerHit*, TrackerHit* > p1, std::pair<SimTrackerHit*, TrackerHit* > p2) {
108 SimTrackerHit* simHit1 = p1.first;
109 SimTrackerHit* simHit2 = p2.first;
112 if( simHit1->getMCParticle() == simHit2->getMCParticle() ) {
113 return simHit1->getTime() < simHit2->getTime() ;
116 return simHit1->getMCParticle() < simHit2->getMCParticle() ;
125 const LCObjectVec* getSimHits( TrackerHit* trkhit,
const FloatVec* weights = NULL);
127 UTIL::BitField64* _encoder;
128 int getDetectorID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::subdet]; }
129 int getSideID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::side]; };
130 int getLayerID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::layer]; };
131 int getModuleID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::module]; };
132 int getSensorID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::sensor]; };
136 LCCollection*
GetCollection( LCEvent * evt, std::string colName ) ;
139 LCRelationNavigator*
GetRelations( LCEvent * evt, std::string RelName ) ;
144 void createTrack( MCParticle* mcp, UTIL::BitField64& cellID_encoder, std::vector< std::pair<SimTrackerHit*, TrackerHit* > >& hit_list );
146 void createTrack_old( MCParticle* mcp, UTIL::BitField64& cellID_encoder, std::vector<TrackerHit*>& hit_list );
148 void createTrack_iterative( MCParticle* mcp, UTIL::BitField64& cellID_encoder, std::vector< std::pair<SimTrackerHit*, TrackerHit* > >& hit_list );
165 std::vector< LCCollection* > _colTrackerHits;
166 std::vector< LCRelationNavigator* > _navTrackerHitRel;
171 LCCollectionVec* _trackVec;
176 LCCollectionVec* _trackRelVec;
182 LCCollectionVec* _trackSegmentsVec;
187 LCCollectionVec* _trackSegmentsRelVec;
194 float _MCpThreshold ;
196 bool _useMCParticleParametersFotInitOfFit;
201 bool _runMarlinTrkDiagnostics;
202 std::string _MarlinTrkDiagnosticsName;
204 bool _FitTracksWithMarlinTrk;
205 bool _create_prefit_using_MarlinTrk;
211 float _initialTrackError_d0;
212 float _initialTrackError_phi0;
213 float _initialTrackError_omega;
214 float _initialTrackError_z0;
215 float _initialTrackError_tanL;
217 bool _UseIterativeFitting;
218 bool _UseEventDisplay;
220 double _maxChi2PerHit;
224 unsigned _nCreatedTracks;
226 EVENT::LCEvent* _current_event;
228 int _detector_model_for_drawing;
229 std::vector<int> _colours;
232 std::string _trkSystemName ;
virtual void end()
Called after data processing for clean up.
Definition: TruthTracker.cc:607
void SetupInputCollections(LCEvent *evt)
sets up the different collections
Definition: TruthTracker.cc:623
virtual void init()
Called at the begin of the job before anything is read.
Definition: TruthTracker.cc:257
std::string _output_track_segments_col_name
output track segments collection, used for tracks which cannot be formed from a single fit ...
Definition: TruthTracker.h:181
std::string _output_track_rel_name
Output track relations.
Definition: TruthTracker.h:175
std::string _output_track_segment_rel_name
Output track segments relations, used for tracks which cannot be formed from a single fit...
Definition: TruthTracker.h:186
virtual void processEvent(LCEvent *evt)
Called for every event - the working horse.
Definition: TruthTracker.cc:317
LCRelationNavigator * GetRelations(LCEvent *evt, std::string RelName)
helper function to get relations using try catch block
Definition: TruthTracker.cc:2078
Track creation based on MC truth.
Definition: TruthTracker.h:75
std::string _colNameMCParticles
input MCParticle collection
Definition: TruthTracker.h:155
MarlinTrk::IMarlinTrkSystem * _trksystem
pointer to the IMarlinTrkSystem instance
Definition: TruthTracker.h:200
virtual void processRunHeader(LCRunHeader *run)
Called for every run.
Definition: TruthTracker.cc:312
Definition: TruthTracker.h:105
std::vector< std::string > _colNamesTrackerHits
input TrackerHit collections
Definition: TruthTracker.h:159
LCCollection * GetCollection(LCEvent *evt, std::string colName)
helper function to get collection using try catch block
Definition: TruthTracker.cc:2059
std::vector< std::string > _colNamesTrackerHitRelations
input relation collections
Definition: TruthTracker.h:163
std::string _output_track_col_name
output track collection
Definition: TruthTracker.h:170