1 #ifndef FPCCDFULLLDCTRACKING_H
2 #define FPCCDFULLLDCTRACKING_H 1
4 #include "marlin/Processor.h"
5 #include <marlin/Global.h>
8 #include "ClusterExtended.h"
9 #include "TrackExtended.h"
10 #include "TrackerHitExtended.h"
11 #include "TrackHitPair.h"
12 #include "HelixClass.h"
13 #include "HelixClass_double.h"
14 #include "ClusterShapes.h"
15 #include "GroupTracks.h"
20 #include "MarlinTrk/IMarlinTrack.h"
22 #include <UTIL/BitField64.h>
23 #include <UTIL/ILDConf.h>
30 #include "TStopwatch.h"
31 #include <EVENT/SimTrackerHit.h>
32 #include <EVENT/LCRelation.h>
33 #include <UTIL/LCRelationNavigator.h>
34 #include "../src/GetPurity.h"
39 using namespace lcio ;
40 using namespace marlin ;
46 class IMarlinTrkSystem ;
303 virtual void init() ;
304 virtual void processRunHeader( LCRunHeader* run ) ;
305 virtual void processEvent( LCEvent * evt ) ;
306 virtual void check( LCEvent * evt ) ;
311 void prepareVectors( LCEvent * evt );
313 void MergeTPCandSiTracks();
314 void MergeTPCandSiTracksII();
316 TrackExtended * CombineTracks(TrackExtended * tpcTrk, TrackExtended * siTrk,
float maxAllowedOutliers ,
bool testCombinationOnly );
320 void Sorting(TrackExtendedVec & trackVec);
321 void SelectCombinedTracks();
322 void AddNotCombinedTracks();
324 void AddNotAssignedHits();
325 void RemoveSplitTracks();
326 void AddTrackColToEvt(LCEvent * evt, TrackExtendedVec & trkVec,
327 std::string TrkColName);
328 float CompareTrk(TrackExtended * first, TrackExtended * second,
329 float d0Cut,
float z0Cut,
int iopt);
331 float CompareTrkII(TrackExtended * first, TrackExtended * second,
332 float d0Cut,
float z0Cut,
int iopt,
float &Angle);
333 float CompareTrkIII(TrackExtended * first, TrackExtended * second,
334 float d0Cut,
float z0Cut,
int iopt,
float &Angle);
336 void SortingTrackHitPairs(TrackHitPairVec & trackHitPairVec);
338 void AssignSiHitsToTracks(TrackerHitExtendedVec hitVec,
341 void AssignTPCHitsToTracks(TrackerHitExtendedVec hitVec,
344 void AssignOuterHitsToTracks(TrackerHitExtendedVec hitVec,
float dcut,
int refit);
346 void CreateExtrapolations();
348 void CleanUpExtrapolations();
350 HelixClass * GetExtrapolationHelix(TrackExtended * track);
352 void PrintOutMerging(TrackExtended * firstTrackExt, TrackExtended * secondTrackExt,
355 void GeneralSorting(
int * index,
float * val,
int direct,
int nVal);
357 int SegmentRadialOverlap(TrackExtended* pTracki, TrackExtended* pTrackj);
358 bool VetoMerge(TrackExtended* firstTrackExt, TrackExtended* secondTrackExt);
364 MarlinTrk::HelixFit* _fastfitter;
370 bool _MSOn, _ElossOn, _SmoothOn ;
372 std::string _TPCTrackCollection;
373 std::string _SiTrackCollection;
374 std::string _TPCTrackMCPCollName;
375 std::string _SiTrackMCPCollName;
377 std::string _VTXTrackerHitCollection;
378 std::string _SITTrackerHitCollection;
379 std::string _SETTrackerHitCollection;
380 std::string _FTDPixelHitCollection;
381 std::string _FTDSpacePointCollection;
382 std::string _TPCTrackerHitCollection;
383 std::string _ETDTrackerHitCollection;
385 std::string _LDCTrackCollection;
388 TrackExtendedVec _allSiTracks;
389 TrackExtendedVec _allTPCTracks;
390 TrackExtendedVec _allCombinedTracks;
391 TrackExtendedVec _allNonCombinedTPCTracks;
392 TrackExtendedVec _allNonCombinedSiTracks;
393 TrackExtendedVec _trkImplVec;
394 TrackerHitExtendedVec _allTPCHits;
395 TrackerHitExtendedVec _allVTXHits;
396 TrackerHitExtendedVec _allFTDHits;
397 TrackerHitExtendedVec _allSITHits;
398 TrackerHitExtendedVec _allSETHits;
399 TrackerHitExtendedVec _allETDHits;
401 float PI, PIOVER2, TWOPI;
404 float _chi2PrefitCut;
409 float _dPCutForMerging;
410 float _d0CutForMerging;
411 float _z0CutForMerging;
412 float _dOmegaForMerging;
413 float _angleForMerging;
417 float _dPCutForForcedMerging;
418 float _d0CutForForcedMerging;
419 float _z0CutForForcedMerging;
420 float _dOmegaForForcedMerging;
421 float _angleForForcedMerging;
424 int _mergeTPCSegments;
425 float _dPCutToMergeTPC;
426 float _PtCutToMergeTPC;
427 float _d0CutToMergeTPC;
428 float _z0CutToMergeTPC;
430 float _cosThetaCutHighPtMerge;
431 float _cosThetaCutSoftHighPtMerge;
432 float _momDiffCutHighPtMerge;
433 float _momDiffCutSoftHighPtMerge;
434 float _hitDistanceCutHighPtMerge;
435 float _maxHitDistanceCutHighPtMerge;
436 float _maxFractionOfOutliersCutHighPtMerge;
438 float _vetoMergeMomentumCut;
440 float _initialTrackError_d0;
441 float _initialTrackError_phi0;
442 float _initialTrackError_omega;
443 float _initialTrackError_z0;
444 float _initialTrackError_tanL;
446 double _maxChi2PerHit;
447 double _minChi2ProbForSiliconTracks;
448 double _maxChi2ForSiliconTracks;
449 bool _useMaxChi2ReqForSiTrk;
450 float _maxAllowedPercentageOfOutliersForTrackCombination;
451 int _maxAllowedSiHitRejectionsForTrackCombination;
453 bool _runMarlinTrkDiagnostics;
454 std::string _MarlinTrkDiagnosticsName;
456 int _nHitsExtrapolation;
462 int _assignVTXHits,_assignFTDHits,_assignSITHits,_assignTPCHits;
464 int _assignSETHits, _assignETDHits;
466 float _distCutForVTXHits,_distCutForFTDHits,_distCutForSITHits,_distCutForTPCHits;
468 float _distCutForSETHits, _distCutForETDHits;
471 float _d0TrkCut,_z0TrkCut;
473 int _forbidOverlapInZTPC,_forbidOverlapInZComb;
477 std::map<TrackExtended*,HelixClass*> _trackExtrapolatedHelix;
478 std::set<TrackExtended*> _candidateCombinedTracks;
480 UTIL::BitField64* _encoder;
481 int getDetectorID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::subdet]; }
482 int getSideID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::side]; };
483 int getLayerID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::layer]; };
484 int getModuleID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::module]; };
485 int getSensorID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::sensor]; };
487 int getDetectorID(SimTrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::subdet]; }
488 int getSideID(SimTrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::side]; };
489 int getLayerID(SimTrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::layer]; };
490 int getModuleID(SimTrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::module]; };
491 int getSensorID(SimTrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::sensor]; };
494 void setupGearGeom(
const gear::GearMgr* gearMgr ) ;
498 double _tpc_pad_height;
515 unsigned int _nLayersVTX;
531 unsigned int _nLayersSIT;
533 unsigned int _nLayersSET;
574 std::vector<float> _zLayerFTD;
576 unsigned int _nLayersFTD;
578 bool _petalBasedFTDWithOverlaps;
593 IntVec getNHitsInSubDet(SimTrackerHitVec simvec);
594 std::vector<LCRelationNavigator*> _naviVecSi;
595 std::vector<LCRelationNavigator*> _naviVecFull;
596 std::string _colNameVXDTrackerHitRelations;
597 std::string _colNameSITSpacePointRelations;
598 std::string _colNameFTDSpacePointRelations;
599 std::string _colNameFTDPixelTrackerHitRelations;
600 std::string _colNameTPCTrackerHitRelations;
601 std::string _colNameSETSpacePointRelations;
602 LCRelationNavigator* _navVXD;
603 LCRelationNavigator* _navSIT;
604 LCRelationNavigator* _navFTDsp;
605 LCRelationNavigator* _navFTDpix;
606 LCRelationNavigator* _navTPC;
607 LCRelationNavigator* _navSET;
608 std::string _colNameVXDSimHit;
609 std::string _colNameSITSimHit;
610 std::string _colNameFTDspSimHit;
611 std::string _colNameFTDpixSimHit;
612 std::string _colNameTPCSimHit;
613 std::string _colNameSETSimHit;
614 LCCollection* _simVXD;
615 LCCollection* _simSIT;
616 LCCollection* _simFTDsp;
617 LCCollection* _simFTDpix;
618 LCCollection* _simTPC;
619 LCCollection* _simSET;
622 bool _mydebugPrintMCP;
624 bool _FinalTrackCut_strategyA;
627 LCCollection* GetCollection( LCEvent * evt, std::string colName ) ;
630 LCRelationNavigator* GetRelations( LCEvent * evt, std::string RelName ) ;
632 MCPMap LoadMCPMap(
int mode);
633 std::map< MCParticle*, SimTrackerHitVec > _mcpVXD;
634 std::map< MCParticle*, SimTrackerHitVec > _mcpVXDFTD;
635 std::map< MCParticle*, SimTrackerHitVec > _mcpVXDSIT;
636 std::map< MCParticle*, SimTrackerHitVec > _mcpVXDFTDSIT;
637 std::map< MCParticle*, SimTrackerHitVec > _mcpFTD;
638 std::map< MCParticle*, SimTrackerHitVec > _mcpFTDSIT;
639 std::map< MCParticle*, SimTrackerHitVec > _mcpSIT;
641 enum MCPContributions{
=== FPCCDFullLDCTracking_MarlinTrk Processor ===
Definition: FPCCDFullLDCTracking_MarlinTrk.h:297
Definition: GetPurity.h:37
MarlinTrk::IMarlinTrkSystem * _trksystem
pointer to the IMarlinTrkSystem instance
Definition: FPCCDFullLDCTracking_MarlinTrk.h:368