BmnRoot
Loading...
Searching...
No Matches
BmnCellAutoTracking.h
Go to the documentation of this file.
1/*
2 * File: BmnCellAutoTracking.h
3 * Author: Sergey Merts
4 *
5 * Created on July 30, 2018, 11:29 AM
6 *
7 * Attempt to implement Cellular Automaton Tracking.
8 */
9
10#ifndef BMNCELLAUTOTRACKING_H
11#define BMNCELLAUTOTRACKING_H
12
13
14// Base Class Headers ----------------
15
16#include "FairTask.h"
17#include "TClonesArray.h"
18#include "TString.h"
19#include "BmnTrack.h"
20#include "BmnGlobalTrack.h"
21#include <vector>
22#include <map>
23#include "FairTrackParam.h"
24#include "BmnKalmanFilter.h"
25#include "BmnMath.h"
26#include "BmnCellDuet.h"
29#include "FairMCPoint.h"
30#include "CbmMCTrack.h"
31#include "BmnSteering.h"
32
33using namespace std;
34
35class BmnCellAutoTracking : public FairTask {
36public:
37
38 // Constructors/Destructors ---------
39
41 BmnCellAutoTracking(Short_t period, Int_t run, Bool_t field, Bool_t target, TString steerFile = "");
42 virtual ~BmnCellAutoTracking();
43
44 virtual InitStatus Init();
45 virtual void Exec(Option_t* opt);
46 virtual void Finish();
47
48 void SetInnerTrackerSetup(map<DetectorId, Bool_t> setup) {
49 fInnerTrackerSetup = setup;
50 };
51
52 void SetDetectorPresence(DetectorId det, Bool_t use) {
53 fInnerTrackerSetup[det] = use;
54 };
55
56private:
57
58 BmnStatus CellsCreation(vector<BmnCellDuet>* cells);
59 BmnStatus StateCalculation(vector<BmnCellDuet>* cells);
60 vector<BmnTrack> CellsConnection(vector<BmnCellDuet>* cells);
61 BmnStatus TrackUpdateByKalman(vector<BmnTrack>& cands);
62 BmnStatus TrackUpdateByLine(vector <BmnTrack>& cands);
63 BmnStatus SortTracks(vector<BmnTrack>& inTracks, vector<BmnTrack>& sortedTracks);
64 BmnStatus TrackSelection(vector<BmnTrack>& cands);
65
66 Double_t CalcQp(BmnTrack* track);
67 BmnStatus CalculateTrackParams(BmnTrack* tr);
68 BmnStatus CalcCovMatrix(BmnTrack * tr);
69 TVector2 CalcMeanSigma(vector <Double_t>);
70 Double_t CalculateLength(BmnTrack* tr);
71 BmnStatus CheckSharedHits(vector<BmnTrack>& sortedTracks);
72 void SetHitsUsing(BmnTrack* tr, Bool_t use);
73 BmnStatus DrawHits();
74
75 BmnGemStripStationSet* fGemDetector;
76 BmnSiliconStationSet* fSilDetector;
77 TString fGemHitsBranchName;
78 TString fSilHitsBranchName;
79 TString fSsdHitsBranchName;
80 TString fGlobTracksBranchName;
81 TString fGemTracksBranchName;
82 TString fSilTracksBranchName;
83 TString fSsdTracksBranchName;
84
85 TClonesArray* fGlobTracksArray;
86 TClonesArray* fSilTracksArray;
87 TClonesArray* fGemTracksArray;
88 TClonesArray* fSsdTracksArray;
89 TClonesArray* fSilHitsArray;
90 TClonesArray* fSsdHitsArray;
91 TClonesArray* fGemHitsArray;
92 TClonesArray* fHitsArray;
93
94 TClonesArray* fMCTracksArray;
95 TClonesArray* fSilPointsArray;
96 TClonesArray* fSsdPointsArray;
97 TClonesArray* fGemPointsArray;
98
99 BmnKalmanFilter* fKalman;
100
101 Bool_t fIsField; // run with mag.field or not
102 Bool_t fIsTarget; // run with target or not
103 map<DetectorId, Bool_t> fInnerTrackerSetup;
104
105 UInt_t fEventNo;
106 Short_t fPeriodId;
107 Short_t fNStations;
108 Short_t fNSiliconStations;
109
110 TVector3 fRoughVertex; // for correct transformation
111
112 FairField* fField;
113
114 Double_t fChiSquareCut;
115 Double_t* fCellDistCut;
116 Double_t* fHitXCutMin;
117 Double_t* fHitXCutMax;
118 Double_t* fHitYCutMin;
119 Double_t* fHitYCutMax;
120 Double_t* fCellSlopeXZCutMin;
121 Double_t* fCellSlopeXZCutMax;
122 Double_t* fCellSlopeYZCutMin;
123 Double_t* fCellSlopeYZCutMax;
124
125 Double_t* fCellDiffSlopeYZCut;
126 Double_t* fCellDiffSlopeXZCut;
127 Int_t fNHitsCut;
128
129 TString fSteerFile;
130 BmnSteering* fSteering;
131
132 Bool_t isSRC;
133
134 size_t kCellsCut;
135
136 ClassDef(BmnCellAutoTracking, 1);
137};
138
139
140#endif /* BMNCELLAUTOTRACKING_H */
141
DetectorId
BmnStatus
Definition BmnEnums.h:24
virtual void Exec(Option_t *opt)
void SetInnerTrackerSetup(map< DetectorId, Bool_t > setup)
void SetDetectorPresence(DetectorId det, Bool_t use)
virtual InitStatus Init()
-clang-format
Definition setup.py:1
STL namespace.