1 #ifndef FULLLDCTRACKING_H
2 #define FULLLDCTRACKING_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 "ClusterShapes.h"
14 #include "GroupTracks.h"
19 #include "MarlinTrk/IMarlinTrack.h"
21 #include <UTIL/BitField64.h>
22 #include <UTIL/ILDConf.h>
24 using namespace lcio ;
25 using namespace marlin ;
31 class IMarlinTrkSystem ;
260 virtual void init() ;
261 virtual void processRunHeader( LCRunHeader* run ) ;
262 virtual void processEvent( LCEvent * evt ) ;
263 virtual void check( LCEvent * evt ) ;
268 void prepareVectors( LCEvent * evt );
270 void MergeTPCandSiTracks();
271 void MergeTPCandSiTracksII();
273 TrackExtended * CombineTracks(TrackExtended * tpcTrk, TrackExtended * siTrk,
float maxAllowedOutliers ,
bool testCombinationOnly );
277 void Sorting(TrackExtendedVec & trackVec);
278 void SelectCombinedTracks();
279 void AddNotCombinedTracks();
281 void AddNotAssignedHits();
282 void RemoveSplitTracks();
283 void AddTrackColToEvt(LCEvent * evt, TrackExtendedVec & trkVec,
284 std::string TrkColName);
285 float CompareTrk(TrackExtended * first, TrackExtended * second,
286 float d0Cut,
float z0Cut,
int iopt);
288 float CompareTrkII(TrackExtended * first, TrackExtended * second,
289 float d0Cut,
float z0Cut,
int iopt,
float &Angle);
290 float CompareTrkIII(TrackExtended * first, TrackExtended * second,
291 float d0Cut,
float z0Cut,
int iopt,
float &Angle);
293 void SortingTrackHitPairs(TrackHitPairVec & trackHitPairVec);
295 void AssignSiHitsToTracks(TrackerHitExtendedVec hitVec,
298 void AssignTPCHitsToTracks(TrackerHitExtendedVec hitVec,
301 void AssignOuterHitsToTracks(TrackerHitExtendedVec hitVec,
float dcut,
int refit);
303 void CreateExtrapolations();
305 void CleanUpExtrapolations();
307 HelixClass * GetExtrapolationHelix(TrackExtended * track);
309 void PrintOutMerging(TrackExtended * firstTrackExt, TrackExtended * secondTrackExt,
312 void GeneralSorting(
int * index,
float * val,
int direct,
int nVal);
314 int SegmentRadialOverlap(TrackExtended* pTracki, TrackExtended* pTrackj);
315 bool VetoMerge(TrackExtended* firstTrackExt, TrackExtended* secondTrackExt);
320 MarlinTrk::HelixFit* _fastfitter;
325 std::string _trkSystemName ;
327 bool _MSOn, _ElossOn, _SmoothOn ;
329 std::string _TPCTrackCollection;
330 std::string _SiTrackCollection;
331 std::string _TPCTrackMCPCollName;
332 std::string _SiTrackMCPCollName;
334 std::string _VTXTrackerHitCollection;
335 std::string _SITTrackerHitCollection;
336 std::string _SETTrackerHitCollection;
337 std::string _FTDPixelHitCollection;
338 std::string _FTDSpacePointCollection;
339 std::string _TPCTrackerHitCollection;
340 std::string _ETDTrackerHitCollection;
342 std::string _LDCTrackCollection;
345 TrackExtendedVec _allSiTracks;
346 TrackExtendedVec _allTPCTracks;
347 TrackExtendedVec _allCombinedTracks;
348 TrackExtendedVec _allNonCombinedTPCTracks;
349 TrackExtendedVec _allNonCombinedSiTracks;
350 TrackExtendedVec _trkImplVec;
351 TrackerHitExtendedVec _allTPCHits;
352 TrackerHitExtendedVec _allVTXHits;
353 TrackerHitExtendedVec _allFTDHits;
354 TrackerHitExtendedVec _allSITHits;
355 TrackerHitExtendedVec _allSETHits;
356 TrackerHitExtendedVec _allETDHits;
358 float PI, PIOVER2, TWOPI;
361 float _chi2PrefitCut;
366 float _dPCutForMerging;
367 float _d0CutForMerging;
368 float _z0CutForMerging;
369 float _dOmegaForMerging;
370 float _angleForMerging;
374 float _dPCutForForcedMerging;
375 float _d0CutForForcedMerging;
376 float _z0CutForForcedMerging;
377 float _dOmegaForForcedMerging;
378 float _angleForForcedMerging;
381 int _mergeTPCSegments;
382 float _dPCutToMergeTPC;
383 float _PtCutToMergeTPC;
384 float _d0CutToMergeTPC;
385 float _z0CutToMergeTPC;
387 float _cosThetaCutHighPtMerge;
388 float _cosThetaCutSoftHighPtMerge;
389 float _momDiffCutHighPtMerge;
390 float _momDiffCutSoftHighPtMerge;
391 float _hitDistanceCutHighPtMerge;
392 float _maxHitDistanceCutHighPtMerge;
393 float _maxFractionOfOutliersCutHighPtMerge;
395 float _vetoMergeMomentumCut;
397 float _initialTrackError_d0;
398 float _initialTrackError_phi0;
399 float _initialTrackError_omega;
400 float _initialTrackError_z0;
401 float _initialTrackError_tanL;
403 double _maxChi2PerHit;
404 double _minChi2ProbForSiliconTracks;
405 float _maxAllowedPercentageOfOutliersForTrackCombination;
406 int _maxAllowedSiHitRejectionsForTrackCombination;
408 bool _runMarlinTrkDiagnostics;
409 std::string _MarlinTrkDiagnosticsName;
411 int _nHitsExtrapolation;
417 int _assignVTXHits,_assignFTDHits,_assignSITHits,_assignTPCHits;
419 int _assignSETHits, _assignETDHits;
421 float _distCutForVTXHits,_distCutForFTDHits,_distCutForSITHits,_distCutForTPCHits;
423 float _distCutForSETHits, _distCutForETDHits;
426 float _d0TrkCut,_z0TrkCut;
428 int _forbidOverlapInZTPC,_forbidOverlapInZComb;
430 float _energyLossErrorTPC;
434 std::map<TrackExtended*,HelixClass*> _trackExtrapolatedHelix;
435 std::set<TrackExtended*> _candidateCombinedTracks;
437 UTIL::BitField64* _encoder;
438 int getDetectorID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::subdet]; }
439 int getSideID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::side]; };
440 int getLayerID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::layer]; };
441 int getModuleID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::module]; };
442 int getSensorID(TrackerHit* hit) { _encoder->setValue(hit->getCellID0());
return (*_encoder)[lcio::ILDCellID0::sensor]; };
445 void setupGearGeom(
const gear::GearMgr* gearMgr ) ;
449 double _tpc_pad_height;
466 unsigned int _nLayersVTX;
482 unsigned int _nLayersSIT;
484 unsigned int _nLayersSET;
525 std::vector<float> _zLayerFTD;
527 unsigned int _nLayersFTD;
529 bool _petalBasedFTDWithOverlaps;
MarlinTrk::IMarlinTrkSystem * _trksystem
pointer to the IMarlinTrkSystem instance
Definition: FullLDCTracking_MarlinTrk.h:324
=== FullLDCTracking_MarlinTrk Processor === Processor performing track finding procedure in the ent...
Definition: FullLDCTracking_MarlinTrk.h:254