1 #ifndef SILICONTRACKING_MarlinTrk_H
2 #define SILICONTRACKING_MarlinTrk_H 1
4 #include "marlin/Processor.h"
5 #include <marlin/Global.h>
10 #include <IMPL/TrackImpl.h>
11 #include "ClusterExtended.h"
12 #include "TrackExtended.h"
13 #include "TrackerHitExtended.h"
14 #include "HelixClass.h"
16 #include "MarlinTrk/IMarlinTrack.h"
18 #include <UTIL/BitField64.h>
19 #include <UTIL/ILDConf.h>
21 namespace DiagnosticsHistograms {
25 namespace DiagnosticsHistograms2D {
29 using namespace lcio ;
30 using namespace marlin ;
38 class IMarlinTrkSystem ;
42 class LCRelationNavigator ;
196 virtual void init() ;
200 virtual void processRunHeader( LCRunHeader* run ) ;
204 virtual void processEvent( LCEvent * evt ) ;
207 virtual void check( LCEvent * evt ) ;
219 EVENT::LCEvent* _current_event;
221 int _nDivisionsInPhi;
222 int _nDivisionsInTheta;
225 MarlinTrk::HelixFit* _fastfitter;
230 bool _runMarlinTrkDiagnostics;
231 std::string _MarlinTrkDiagnosticsName;
233 bool _MSOn, _ElossOn, _SmoothOn ;
235 float _initialTrackError_d0;
236 float _initialTrackError_phi0;
237 float _initialTrackError_omega;
238 float _initialTrackError_z0;
239 float _initialTrackError_tanL;
241 double _maxChi2PerHit;
243 bool _UseEventDisplay;
244 int _detector_model_for_drawing;
245 std::vector<int> _colours;
253 bool _createDiagnosticsHistograms;
257 int _ntriplets, _ntriplets_good, _ntriplets_2MCP, _ntriplets_3MCP, _ntriplets_1MCP_Bad, _ntriplets_bad;
261 LCCollection* GetCollection( LCEvent * evt, std::string colName ) ;
264 LCRelationNavigator* GetRelations( LCEvent * evt, std::string RelName ) ;
269 float _MCpThreshold ;
275 bool operator()(TrackExtended *a, TrackExtended *b)
const {
276 if ( a == b )
return false;
277 return (a->getChi2()/a->getNDF() < b->getChi2()/b->getNDF() );
282 std::string _VTXHitCollection;
283 std::string _FTDPixelHitCollection;
284 std::string _FTDSpacePointCollection;
285 std::string _SITHitCollection;
286 std::string _siTrkCollection;
288 std::vector< LCCollection* > _colTrackerHits;
289 std::map< LCCollection*, std::string > _colNamesTrackerHits;
291 std::vector<TrackerHitExtendedVec> _sectors;
292 std::vector<TrackerHitExtendedVec> _sectorsFTD;
307 _tracksNHits.resize(maxHits-2);
308 _maxIndex=(maxHits-3);
321 return _tracksNHits.at(std::min(nHits-3, _maxIndex));
325 std::vector< TrackExtendedVec > _tracksNHits;
329 TracksWithNHitsContainer _tracksWithNHitsContainer;
331 int InitialiseVTX(LCEvent * evt);
332 int InitialiseFTD(LCEvent * evt);
333 void ProcessOneSector(
int iSectorPhi,
int iSectorTheta);
335 TrackExtended * TestTriplet(TrackerHitExtended * outerHit,
336 TrackerHitExtended * middleHit,
337 TrackerHitExtended * innerHit,
340 int BuildTrack(TrackerHitExtended * outerHit,
341 TrackerHitExtended * middleHit,
342 TrackerHitExtended * innerHit,
345 int iPhiLow,
int iPhiUp,
346 int iTheta,
int iThetaUp,
347 TrackExtended * trackAR);
349 void Sorting( TrackExtendedVec & trackVec);
350 void CreateTrack(TrackExtended * trackAR );
351 void AttachRemainingVTXHitsSlow();
352 void AttachRemainingFTDHitsSlow();
353 void AttachRemainingVTXHitsFast();
354 void AttachRemainingFTDHitsFast();
355 void TrackingInFTD();
356 int BuildTrackFTD(TrackExtended* trackAR,
int* nLR,
int iS);
357 int AttachHitToTrack(TrackExtended * trackAR, TrackerHitExtended * hit,
int iopt);
359 void FinalRefit(LCCollectionVec* trk_col, LCCollectionVec* rel_col);
362 float _chi2WRPhiTriplet;
363 float _chi2WRPhiQuartet;
364 float _chi2WRPhiSeptet;
365 float _chi2WZTriplet;
366 float _chi2WZQuartet;
368 float _minDistCutAttach;
369 int _minimalLayerToAttach;
372 static const double TWOPI;
380 std::vector<int> _Combinations;
381 std::vector<int> _CombinationsFTD;
383 float _resolutionRPhiVTX;
384 float _resolutionZVTX;
386 float _resolutionRPhiFTD;
387 float _resolutionZFTD;
389 float _resolutionRPhiSIT;
390 float _resolutionZSIT;
392 float _phiCutForMerging;
393 float _tanlambdaCutForMerging;
394 float _angleCutForMerging;
398 float _minDistToDelta;
405 TrackExtendedVec _trackImplVec;
408 float _cutOnD0, _cutOnZ0, _cutOnOmega, _cutOnPt;
414 int _max_hits_per_sector;
416 int _nTotalVTXHits,_nTotalFTDHits,_nTotalSITHits;
419 std::string _trkSystemName ;
423 UTIL::BitField64* _encoder;
424 int getDetectorID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::subdet]; }
425 int getSideID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::side]; };
426 int getLayerID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::layer]; };
427 int getModuleID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::module]; };
428 int getSensorID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::sensor]; };
430 void setupGearGeom(
const gear::GearMgr* gearMgr ) ;
433 unsigned int _nLayersVTX;
435 unsigned int _nLayersSIT;
438 std::vector<float> _zLayerFTD;
440 unsigned int _nlayersFTD;
441 bool _petalBasedFTDWithOverlaps;
444 int _output_track_col_quality;
445 static const int _output_track_col_quality_GOOD;
446 static const int _output_track_col_quality_FAIR;
447 static const int _output_track_col_quality_POOR;
=== Silicon Tracking Processor === Processor performing stand-alone pattern recognition in the vert...
Definition: SiliconTracking_MarlinTrk.h:184
A helper class to allow good code readability by accessing tracks with N hits.
Definition: SiliconTracking_MarlinTrk.h:300
TrackExtendedVec & getTracksWithNHitsVec(size_t nHits)
Returns the TrackExtendedVec for track with n hits.
Definition: SiliconTracking_MarlinTrk.h:318
MarlinTrk::IMarlinTrkSystem * _trksystem
pointer to the IMarlinTrkSystem instance
Definition: SiliconTracking_MarlinTrk.h:229
Compare tracks according to their chi2/ndf.
Definition: SiliconTracking_MarlinTrk.h:273
Definition: SiliconTracking_MarlinTrk.cc:90
std::string _colNameMCParticles
input MCParticle collection and threshold used for Drawing
Definition: SiliconTracking_MarlinTrk.h:268
void resize(size_t maxHits)
Set the size to allow a maximum of maxHit hits.
Definition: SiliconTracking_MarlinTrk.h:306