"MarlinReco"  1.16.0
FullLDCTracking.h
1 #ifndef FULLLDCTRACKING_H
2 #define FULLLDCTRACKING_H 1
3 
4 #include "marlin/Processor.h"
5 #include "lcio.h"
6 #include <string>
7 #include "ClusterExtended.h"
8 #include "TrackExtended.h"
9 #include "TrackerHitExtended.h"
10 #include "TrackHitPair.h"
11 #include "HelixClass.h"
12 #include "ClusterShapes.h"
13 #include "GroupTracks.h"
14 #include "../../BrahmsTracking/include/MarlinTrackFit.h"
15 #include <map>
16 #include <set>
17 
18 using namespace lcio ;
19 using namespace marlin ;
20 
301 class FullLDCTracking : public Processor {
302 
303  public:
304 
305  virtual Processor* newProcessor() { return new FullLDCTracking ; }
306  FullLDCTracking() ;
307  virtual void init() ;
308  virtual void processRunHeader( LCRunHeader* run ) ;
309  virtual void processEvent( LCEvent * evt ) ;
310  virtual void check( LCEvent * evt ) ;
311  virtual void end() ;
312 
313  protected:
314 
315  void prepareVectors( LCEvent * evt );
316  void CleanUp();
317  void MergeTPCandSiTracks();
318  void MergeTPCandSiTracksII();
319  TrackExtended * CombineTracks(TrackExtended * tpcTrk, TrackExtended * siTrk);
320  TrackExtended * TrialCombineTracks(TrackExtended * tpcTrk, TrackExtended * siTrk);
321  void Sorting(TrackExtendedVec & trackVec);
322  void SelectCombinedTracks();
323  void AddNotCombinedTracks();
324  void CheckTracks();
325  void AddNotAssignedHits();
326  void RemoveSplitTracks();
327  void AddTrackColToEvt(LCEvent * evt, TrackExtendedVec & trkVec,
328  std::string TrkColName, std::string RelColName);
329  float CompareTrk(TrackExtended * first, TrackExtended * second,
330  float d0Cut, float z0Cut, int iopt);
331 
332  float CompareTrkII(TrackExtended * first, TrackExtended * second,
333  float d0Cut, float z0Cut, int iopt, float &Angle);
334  float CompareTrkIII(TrackExtended * first, TrackExtended * second,
335  float d0Cut, float z0Cut, int iopt, float &Angle);
336 
337  void SortingTrackHitPairs(TrackHitPairVec & trackHitPairVec);
338 
339  void AssignSiHitsToTracks(TrackerHitExtendedVec hitVec,
340  float dcut);
341 
342  void AssignTPCHitsToTracks(TrackerHitExtendedVec hitVec,
343  float dcut);
344 
345  void AssignOuterHitsToTracks(TrackerHitExtendedVec hitVec, float dcut, int refit);
346 
347  void CreateExtrapolations();
348 
349  void CleanUpExtrapolations();
350 
351  HelixClass * GetExtrapolationHelix(TrackExtended * track);
352 
353  void PrintOutMerging(TrackExtended * firstTrackExt, TrackExtended * secondTrackExt,
354  int iopt);
355 
356  void GeneralSorting(int * index, float * val, int direct, int nVal);
357 
358  int SegmentRadialOverlap(TrackExtended* pTracki, TrackExtended* pTrackj);
359  bool VetoMerge(TrackExtended* firstTrackExt, TrackExtended* secondTrackExt);
360 
361 
362  int _nRun ;
363  int _nEvt ;
364 
365  std::string _TPCTrackCollection;
366  std::string _SiTrackCollection;
367  std::string _TPCTrackMCPCollName;
368  std::string _SiTrackMCPCollName;
369 
370  std::string _VTXTrackerHitCollection;
371  std::string _SITTrackerHitCollection;
372  std::string _SETTrackerHitCollection;
373  std::string _FTDTrackerHitCollection;
374  std::string _TPCTrackerHitCollection;
375  std::string _ETDTrackerHitCollection;
376 
377  std::string _LDCTrackCollection;
378  std::string _LDCTrackMCPCollection;
379 
380  std::string _RefittedTPCTrackCollection;
381  std::string _RefittedTPCTrackMCPCollection;
382  std::string _RefittedSiTrackCollection;
383  std::string _RefittedSiTrackMCPCollection;
384 
385  TrackExtendedVec _allSiTracks;
386  TrackExtendedVec _allTPCTracks;
387  TrackExtendedVec _allCombinedTracks;
388  TrackExtendedVec _allNonCombinedTPCTracks;
389  TrackExtendedVec _allNonCombinedSiTracks;
390  TrackExtendedVec _trkImplVec;
391  TrackerHitExtendedVec _allTPCHits;
392  TrackerHitExtendedVec _allVTXHits;
393  TrackerHitExtendedVec _allFTDHits;
394  TrackerHitExtendedVec _allSITHits;
395  TrackerHitExtendedVec _allSETHits;
396  TrackerHitExtendedVec _allETDHits;
397 
398  float _resolutionRPhi_TPC,_resolutionZ_TPC;
399  float _resolutionRPhi_VTX,_resolutionZ_VTX;
400  float _resolutionRPhi_FTD,_resolutionZ_FTD;
401  float _resolutionRPhi_SIT,_resolutionZ_SIT;
402  float PI, PIOVER2, TWOPI;
403 
404  float _bField;
405  float _chi2PrefitCut;
406  float _chi2FitCut;
407 
408  int _debug;
409  int _createMap;
410  int _useExtraPoint,_optFit;
411 
412  float _dPCutForMerging;
413  float _d0CutForMerging;
414  float _z0CutForMerging;
415  float _dOmegaForMerging;
416  float _angleForMerging;
417 
418 
419  int _forceMerging;
420  float _dPCutForForcedMerging;
421  float _d0CutForForcedMerging;
422  float _z0CutForForcedMerging;
423  float _dOmegaForForcedMerging;
424  float _angleForForcedMerging;
425 
426 
427  int _mergeTPCSegments;
428  float _dPCutToMergeTPC;
429  float _PtCutToMergeTPC;
430  float _d0CutToMergeTPC;
431  float _z0CutToMergeTPC;
432 
433  float _cosThetaCutHighPtMerge;
434  float _cosThetaCutSoftHighPtMerge;
435  float _momDiffCutHighPtMerge;
436  float _momDiffCutSoftHighPtMerge;
437  float _hitDistanceCutHighPtMerge;
438  float _maxHitDistanceCutHighPtMerge;
439  float _maxFractionOfOutliersCutHighPtMerge;
440 
441  MarlinTrackFit _trackFit;
442 
443  int _refitTPCTracks;
444  int _refitSiTracks;
445  int _storeRefittedTPCTracks;
446  int _storeRefittedSiTracks;
447  int _storeHitsInFit;
448 
449  int _nHitsExtrapolation;
450 
451  int _cutOnTPCHits;
452  int _cutOnSiHits;
453 
454  float _aParIpReso,_bParIpReso,_sParIpReso;
455 
456  int _assignVTXHits,_assignFTDHits,_assignSITHits,_assignTPCHits;
457 
458  int _assignSETHits, _assignETDHits;
459 
460  float _distCutForVTXHits,_distCutForFTDHits,_distCutForSITHits,_distCutForTPCHits;
461 
462  float _distCutForSETHits, _distCutForETDHits;
463 
464  int _optFitTPC,_optFitSi;
465 
466  float _d0TrkCut,_z0TrkCut;
467 
468  int _forbidOverlapInZTPC,_forbidOverlapInZComb;
469 
470  LCEvent * _evt;
471 
472  std::map<TrackExtended*,HelixClass*> _trackExtrapolatedHelix;
473  std::set<TrackExtended*> _candidateCombinedTracks;
474 
475 } ;
476 
477 #endif
478 
479 
480 
=== FullLDCTracking Processor === Processor performing track finding procedure in the entire LDC de...
Definition: FullLDCTracking.h:301
Definition: MarlinTrackFit.h:26