FEDRA emulsion software from the OPERA Collaboration
EdbPlateTracking.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbPlateTracking
2 #define ROOT_EdbPlateTracking
3 
5 // //
6 // EdbPlateTracking //
7 // //
9 
10 #include "EdbRun.h"
11 #include "EdbPattern.h"
12 #include "EdbLayer.h"
13 #include "EdbRunAccess.h"
14 #include "EdbBrick.h"
15 
16 //class EdbPlateP;
17 
18 //______________________________________________________________________________
19 class EdbPlateTracking : public TObject {
20 
21  public:
22 
23  // --------- input data ---------------------------
24 
25  EdbSegP ePred; // prediction to be found in this plate in Brick reference system
26  EdbPattern eSide1; // side 1 microtracks in plate reference system
27  EdbPattern eSide2; // side 2 microtracks in plate reference system
28  EdbPlateP ePlate; // plate geometry and correction parameters to be applied to prediction
29 
30  // --------- output: main result ---------------------------
31 
32  EdbSegP eS, eS1, eS2; // found segments
33  EdbSegP eNext; // next prediction
34  Int_t eStatus; // -1-nothing, 0-bt, 1-mt1, 2-mt2
35 
36  // --------- processing parameters (can be default) and itermeadiate results ------------------------
37 
38  EdbScanCond eCondMT; // conditions for microtracks
39  EdbScanCond eCondBT; // conditions for basetracks
40 
41  /* Float_t eDeltaRview; // (400) */
42  /* Float_t eDeltaTheta; // (0.15) slope acceptance */
43  /* Float_t ePreliminaryPulsMinMT; // (6) \_ preliminary cuts to microtracks candidates for */
44  Float_t ePreliminaryChi2MaxMT; // (1.6) / microtracks and basetracks selection
45 
46  EdbPattern eS1pre; // the result of the selection of microtracks ordered by chi square
48 
49  Float_t eDeltaR; // (20)
50 
51  EdbPattern eSpre; // the result of the selection of basetracks ordered by chi square
52 
53  Float_t ePulsMinBT; // (18)
54  Float_t ePulsMinDegradMT; // (0)
55  Float_t eChi2MaxBT; // (1.5) maximum chi2 accepted between prediction and basetrack candidates
56 
57  EdbPattern eScnd; // basetracks candidates passed all cuts
58 
59  Float_t ePulsMinMT; // (10) mimimal number of grains accepted to select microtracks
60  Float_t ePulsMinDegradBT; // (0)
61  Float_t eChi2MaxMT; // (1.6) maximum chi2 accepted between prediction and microtrack candidates
62 
63  EdbPattern eS1cnd; // microtrack candidates passed all cuts
65 
66  Float_t eDegradPos; // SigmaX = SigmaX(0) + degradPos * mth
67  Float_t eDegradSlope; // SigmaTX = SigmaTX(0) + degradSlope * bth
68 
69  Int_t eIdp[4]; // to read from sbt
70  Int_t eIdf[4];
71 
72  bool ePredictionScan; // if true use GetPatternDataForPrediction( spred.ID(), side, pat ); in FindCandidates (default is false)
73 
74  public:
75 
77  {
78  Set0();
79  };
80 
82  {
83 
84  for(int i=0;i<S1.N();i++)
85  eSide1.AddSegment(*(S1.GetSegment(i)));
86  for(int i=0;i<S2.N();i++)
87  eSide2.AddSegment(*(S2.GetSegment(i)));
88 
89  eSide1.SetZ(S1.Z());
90  eSide2.SetZ(S2.Z());
91 
92  ePred.Copy(prediction);
93  ePlate.Copy(plate);
94  Set0();
95  };
96 
98  {
99 
100  for(int i=0;i<S1.N();i++)
101  eSide1.AddSegment(*(S1.GetSegment(i)));
102  for(int i=0;i<S2.N();i++)
103  eSide2.AddSegment(*(S2.GetSegment(i)));
104 
105  eSide1.SetZ(S1.Z());
106  eSide2.SetZ(S2.Z());
107 
108  ePred.Copy(prediction);
109  Set0();
110  };
111 
112  virtual ~EdbPlateTracking();
113 
114  void Set0();
115  void SetCondMT(EdbScanCond &cond) { eCondMT = cond; }
116  void SetCondBT(EdbScanCond &cond) { eCondBT = cond; }
117 
118  void SetPred(const EdbSegP &pred);
119 
120  int UpdateFlag(int flag, int status);
121  static int GetBTHoles(int flag) { return(flag/10000); }
122  static int GetMTHoles(int flag) { return((flag/100)%100); }
123  int ExtrapolateCond(EdbScanCond &inputcond, int flag, EdbScanCond &outputcond );
124 
125  int FindCompliments( EdbSegP &s, EdbPattern &pat, TObjArray &found, float chi2max, TArrayF &chiarr );
126 
127  int FindCandidates( EdbSegP &spred, EdbPattern &fndbt, EdbPattern &fnds1, EdbPattern &fnds2 );
128  int FindCandidateMT( EdbPattern &fnds1, EdbPattern &fnds2, EdbSegP &fnd );
129  // int FindCandidateBT(EdbPattern &fndbt, EdbSegP &fnd );
130  int FindBestCandidate(EdbPattern &fndbt, EdbSegP &fnd,EdbPattern &cnd, float wmin, float wmindegrad, float chi2max);
131  int FindPrediction( EdbSegP &spred, EdbSegP &fndbt, EdbSegP &fnds1, EdbSegP &fnds2, EdbSegP &snewpred );
132 
133  int FindBestCandidateDS(EdbPattern &fndbt, EdbSegP &fnd,EdbPattern &cnd, float wmin, float wmindegrad, float chi2max, EdbSegP &spred, float maxdmin);
134  int FindPredictionDS( EdbSegP &spred, EdbSegP &fndbt, EdbSegP &fnds1, EdbSegP &fnds2, EdbSegP &snewpred, float maxdmin);
135  int FindCandidateMTDS( EdbPattern &fnds1, EdbPattern &fnds2, EdbSegP &fnd, EdbSegP &spred, float maxdmin);
136 
137  //void TransformToPlateRS( EdbPlateP &plate);
138  //void TransformFromPlateRS( EdbPlateP &plate);
139  void TransformFromPlateRS();
140 
141  int FindTrack(EdbTrackP &pred,EdbTrackP &found, EdbPlateP &plate);
142 
143  void Print();
144 
145  //void Transform(const EdbAffine2D &aff);
146 
147  static void CloseSBtree(TTree *tree);
148  static TTree *InitSBtree(const char *file_name="sbt.root", const char *mode="RECREATE");
149  bool UpdateSBtree( TTree &tsbt, int idp[4], int idf[4]);
150  bool GetSBtreeEntry( int entry, TTree &tsbt);
151  // int stat,
152  // EdbSegP &ps, EdbSegP &fndbt, EdbSegP &fnds1, EdbSegP &fnds2, EdbSegP &nextpred,
153  // EdbPattern *scnd=0, EdbPattern *s1cnd=0, EdbPattern *s2cnd=0 );
154 
155  ClassDef(EdbPlateTracking,1) // track following in one emulsion plate
156 };
157 
158 #endif /* ROOT_EdbPlateTracking */
159 
TLegendEntry * entry
Definition: Canv_SYSTEMATICS_ALLCOMBINED__RMSEnergy__vs__Energy__ELECTRON.C:130
Definition: EdbPattern.h:280
Definition: EdbBrick.h:13
void Copy(EdbPlateP &p)
Definition: EdbBrick.cxx:22
Definition: EdbPlateTracking.h:19
EdbPattern eSpre
Definition: EdbPlateTracking.h:51
int FindPrediction(EdbSegP &spred, EdbSegP &fndbt, EdbSegP &fnds1, EdbSegP &fnds2, EdbSegP &snewpred)
Definition: EdbPlateTracking.cxx:340
EdbPattern eSide1
Definition: EdbPlateTracking.h:26
bool UpdateSBtree(TTree &tsbt, int idp[4], int idf[4])
Definition: EdbPlateTracking.cxx:674
Float_t ePulsMinDegradBT
Definition: EdbPlateTracking.h:60
int FindCandidateMT(EdbPattern &fnds1, EdbPattern &fnds2, EdbSegP &fnd)
Definition: EdbPlateTracking.cxx:300
EdbPlateTracking(EdbPattern &S1, EdbPattern &S2, EdbSegP &prediction)
Definition: EdbPlateTracking.h:97
void TransformFromPlateRS()
Definition: EdbPlateTracking.cxx:808
void Print()
Definition: EdbPlateTracking.cxx:66
Int_t eStatus
Definition: EdbPlateTracking.h:34
EdbSegP eNext
Definition: EdbPlateTracking.h:33
EdbPlateTracking(EdbPattern &S1, EdbPattern &S2, EdbSegP &prediction, EdbPlateP &plate)
Definition: EdbPlateTracking.h:81
Int_t eIdp[4]
Definition: EdbPlateTracking.h:69
EdbPlateP ePlate
Definition: EdbPlateTracking.h:28
EdbSegP eS2
Definition: EdbPlateTracking.h:32
EdbSegP eS1
Definition: EdbPlateTracking.h:32
int UpdateFlag(int flag, int status)
Definition: EdbPlateTracking.cxx:88
void SetCondMT(EdbScanCond &cond)
Definition: EdbPlateTracking.h:115
EdbPattern eS2pre
Definition: EdbPlateTracking.h:47
EdbPlateTracking()
Definition: EdbPlateTracking.h:76
static int GetBTHoles(int flag)
Definition: EdbPlateTracking.h:121
Float_t eChi2MaxBT
Definition: EdbPlateTracking.h:55
Float_t eDeltaR
Definition: EdbPlateTracking.h:49
EdbSegP eS
Definition: EdbPlateTracking.h:32
void SetCondBT(EdbScanCond &cond)
Definition: EdbPlateTracking.h:116
bool GetSBtreeEntry(int entry, TTree &tsbt)
Definition: EdbPlateTracking.cxx:710
Float_t ePreliminaryChi2MaxMT
Definition: EdbPlateTracking.h:44
int FindTrack(EdbTrackP &pred, EdbTrackP &found, EdbPlateP &plate)
Definition: EdbPlateTracking.cxx:769
bool ePredictionScan
Definition: EdbPlateTracking.h:72
virtual ~EdbPlateTracking()
EdbScanCond eCondBT
Definition: EdbPlateTracking.h:39
int FindCandidateMTDS(EdbPattern &fnds1, EdbPattern &fnds2, EdbSegP &fnd, EdbSegP &spred, float maxdmin)
Definition: EdbPlateTracking.cxx:450
int FindBestCandidate(EdbPattern &fndbt, EdbSegP &fnd, EdbPattern &cnd, float wmin, float wmindegrad, float chi2max)
Definition: EdbPlateTracking.cxx:321
Float_t eChi2MaxMT
Definition: EdbPlateTracking.h:61
Float_t eDegradSlope
Definition: EdbPlateTracking.h:67
EdbPattern eS1cnd
Definition: EdbPlateTracking.h:63
void SetPred(const EdbSegP &pred)
Definition: EdbPlateTracking.cxx:52
int FindBestCandidateDS(EdbPattern &fndbt, EdbSegP &fnd, EdbPattern &cnd, float wmin, float wmindegrad, float chi2max, EdbSegP &spred, float maxdmin)
Definition: EdbPlateTracking.cxx:473
EdbScanCond eCondMT
Definition: EdbPlateTracking.h:38
Int_t eIdf[4]
Definition: EdbPlateTracking.h:70
Float_t ePulsMinMT
Definition: EdbPlateTracking.h:59
Float_t eDegradPos
Definition: EdbPlateTracking.h:66
static TTree * InitSBtree(const char *file_name="sbt.root", const char *mode="RECREATE")
Definition: EdbPlateTracking.cxx:629
EdbPattern eS2cnd
Definition: EdbPlateTracking.h:64
void Set0()
Definition: EdbPlateTracking.cxx:27
static int GetMTHoles(int flag)
Definition: EdbPlateTracking.h:122
EdbPattern eS1pre
Definition: EdbPlateTracking.h:46
EdbSegP ePred
Definition: EdbPlateTracking.h:25
Float_t ePulsMinBT
Definition: EdbPlateTracking.h:53
int ExtrapolateCond(EdbScanCond &inputcond, int flag, EdbScanCond &outputcond)
Definition: EdbPlateTracking.cxx:107
int FindPredictionDS(EdbSegP &spred, EdbSegP &fndbt, EdbSegP &fnds1, EdbSegP &fnds2, EdbSegP &snewpred, float maxdmin)
Definition: EdbPlateTracking.cxx:516
Float_t ePulsMinDegradMT
Definition: EdbPlateTracking.h:54
int FindCandidates(EdbSegP &spred, EdbPattern &fndbt, EdbPattern &fnds1, EdbPattern &fnds2)
Definition: EdbPlateTracking.cxx:171
int FindCompliments(EdbSegP &s, EdbPattern &pat, TObjArray &found, float chi2max, TArrayF &chiarr)
Definition: EdbPlateTracking.cxx:126
EdbPattern eSide2
Definition: EdbPlateTracking.h:27
EdbPattern eScnd
Definition: EdbPlateTracking.h:57
static void CloseSBtree(TTree *tree)
Definition: EdbPlateTracking.cxx:742
Definition: EdbScanCond.h:10
Definition: EdbSegP.h:18
void Copy(const EdbSegP &s)
Definition: EdbSegP.cxx:104
Float_t Z() const
Definition: EdbPattern.h:87
void SetZ(float z)
Definition: EdbPattern.h:41
Int_t N() const
Definition: EdbPattern.h:89
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:66
EdbSegP * AddSegment(int i, EdbSegP &s)
Definition: EdbPattern.cxx:71
Definition: EdbPattern.h:118
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1
EdbSegP * s
Definition: tlg2pattern.C:32