FEDRA emulsion software from the OPERA Collaboration
EdbPlateTracking.h
Go to the documentation of this file.
1#ifndef ROOT_EdbPlateTracking
2#define ROOT_EdbPlateTracking
5
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//______________________________________________________________________________
19class EdbPlateTracking : public TObject {
20
21 public:
22
24
29
31
34 Int_t eStatus;
35
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 */
45
48
49 Float_t eDeltaR;
50
52
53 Float_t ePulsMinBT;
55 Float_t eChi2MaxBT;
56
58
59 Float_t ePulsMinMT;
61 Float_t eChi2MaxMT;
62
65
66 Float_t eDegradPos;
67 Float_t eDegradSlope;
68
69 Int_t eIdp[4];
70 Int_t eIdf[4];
71
73
74 public:
75
77 {
78 Set0();
79 };
80
82 {
83
84 for(int i=0;i<S1.N();i++)
86 for(int i=0;i<S2.N();i++)
88
89 eSide1.SetZ(S1.Z());
90 eSide2.SetZ(S2.Z());
91
92 ePred.Copy(prediction);
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
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);
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:273
Definition: EdbBrick.h:14
void Copy(EdbPlateP &p)
Definition: EdbBrick.cxx:24
Definition: EdbPlateTracking.h:19
EdbPattern eSpre
the result of the selection of basetracks ordered by chi square
Definition: EdbPlateTracking.h:51
int FindPrediction(EdbSegP &spred, EdbSegP &fndbt, EdbSegP &fnds1, EdbSegP &fnds2, EdbSegP &snewpred)
Definition: EdbPlateTracking.cxx:341
EdbPattern eSide1
side 1 microtracks in plate reference system
Definition: EdbPlateTracking.h:26
bool UpdateSBtree(TTree &tsbt, int idp[4], int idf[4])
Definition: EdbPlateTracking.cxx:675
Float_t ePulsMinDegradBT
(0)
Definition: EdbPlateTracking.h:60
int FindCandidateMT(EdbPattern &fnds1, EdbPattern &fnds2, EdbSegP &fnd)
Definition: EdbPlateTracking.cxx:301
EdbPlateTracking(EdbPattern &S1, EdbPattern &S2, EdbSegP &prediction)
Definition: EdbPlateTracking.h:97
void TransformFromPlateRS()
Definition: EdbPlateTracking.cxx:809
void Print()
Definition: EdbPlateTracking.cxx:67
Int_t eStatus
-1-nothing, 0-bt, 1-mt1, 2-mt2
Definition: EdbPlateTracking.h:34
EdbSegP eNext
next prediction
Definition: EdbPlateTracking.h:33
EdbPlateTracking(EdbPattern &S1, EdbPattern &S2, EdbSegP &prediction, EdbPlateP &plate)
Definition: EdbPlateTracking.h:81
Int_t eIdp[4]
to read from sbt
Definition: EdbPlateTracking.h:69
EdbPlateP ePlate
plate geometry and correction parameters to be applied to prediction
Definition: EdbPlateTracking.h:28
EdbSegP eS2
found segments
Definition: EdbPlateTracking.h:32
EdbSegP eS1
Definition: EdbPlateTracking.h:32
int UpdateFlag(int flag, int status)
Definition: EdbPlateTracking.cxx:89
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
(1.5) maximum chi2 accepted between prediction and basetrack candidates
Definition: EdbPlateTracking.h:55
Float_t eDeltaR
(20)
Definition: EdbPlateTracking.h:49
EdbSegP eS
------— output: main result ------------------------—
Definition: EdbPlateTracking.h:32
void SetCondBT(EdbScanCond &cond)
Definition: EdbPlateTracking.h:116
bool GetSBtreeEntry(int entry, TTree &tsbt)
Definition: EdbPlateTracking.cxx:711
Float_t ePreliminaryChi2MaxMT
(1.6) / microtracks and basetracks selection
Definition: EdbPlateTracking.h:44
int FindTrack(EdbTrackP &pred, EdbTrackP &found, EdbPlateP &plate)
Definition: EdbPlateTracking.cxx:770
bool ePredictionScan
if true use GetPatternDataForPrediction( spred.ID(), side, pat ); in FindCandidates (default is false...
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:451
int FindBestCandidate(EdbPattern &fndbt, EdbSegP &fnd, EdbPattern &cnd, float wmin, float wmindegrad, float chi2max)
Definition: EdbPlateTracking.cxx:322
Float_t eChi2MaxMT
(1.6) maximum chi2 accepted between prediction and microtrack candidates
Definition: EdbPlateTracking.h:61
Float_t eDegradSlope
SigmaTX = SigmaTX(0) + degradSlope * bth.
Definition: EdbPlateTracking.h:67
EdbPattern eS1cnd
microtrack candidates passed all cuts
Definition: EdbPlateTracking.h:63
void SetPred(const EdbSegP &pred)
Definition: EdbPlateTracking.cxx:53
int FindBestCandidateDS(EdbPattern &fndbt, EdbSegP &fnd, EdbPattern &cnd, float wmin, float wmindegrad, float chi2max, EdbSegP &spred, float maxdmin)
Definition: EdbPlateTracking.cxx:474
EdbScanCond eCondMT
------— processing parameters (can be default) and itermeadiate results ---------------------—
Definition: EdbPlateTracking.h:38
Int_t eIdf[4]
Definition: EdbPlateTracking.h:70
Float_t ePulsMinMT
(10) mimimal number of grains accepted to select microtracks
Definition: EdbPlateTracking.h:59
Float_t eDegradPos
SigmaX = SigmaX(0) + degradPos * mth.
Definition: EdbPlateTracking.h:66
static TTree * InitSBtree(const char *file_name="sbt.root", const char *mode="RECREATE")
Definition: EdbPlateTracking.cxx:630
EdbPattern eS2cnd
Definition: EdbPlateTracking.h:64
void Set0()
Definition: EdbPlateTracking.cxx:28
static int GetMTHoles(int flag)
Definition: EdbPlateTracking.h:122
EdbPattern eS1pre
the result of the selection of microtracks ordered by chi square
Definition: EdbPlateTracking.h:46
EdbSegP ePred
------— input data ------------------------—
Definition: EdbPlateTracking.h:25
Float_t ePulsMinBT
(18)
Definition: EdbPlateTracking.h:53
int ExtrapolateCond(EdbScanCond &inputcond, int flag, EdbScanCond &outputcond)
Definition: EdbPlateTracking.cxx:108
int FindPredictionDS(EdbSegP &spred, EdbSegP &fndbt, EdbSegP &fnds1, EdbSegP &fnds2, EdbSegP &snewpred, float maxdmin)
Definition: EdbPlateTracking.cxx:517
Float_t ePulsMinDegradMT
(0)
Definition: EdbPlateTracking.h:54
int FindCandidates(EdbSegP &spred, EdbPattern &fndbt, EdbPattern &fnds1, EdbPattern &fnds2)
Definition: EdbPlateTracking.cxx:172
int FindCompliments(EdbSegP &s, EdbPattern &pat, TObjArray &found, float chi2max, TArrayF &chiarr)
Definition: EdbPlateTracking.cxx:127
EdbPattern eSide2
side 2 microtracks in plate reference system
Definition: EdbPlateTracking.h:27
EdbPattern eScnd
basetracks candidates passed all cuts
Definition: EdbPlateTracking.h:57
static void CloseSBtree(TTree *tree)
Definition: EdbPlateTracking.cxx:743
Definition: EdbScanCond.h:10
Definition: EdbSegP.h:21
void Copy(const EdbSegP &s)
Definition: EdbSegP.cxx:105
Float_t Z() const
Definition: EdbPattern.h:84
void SetZ(float z)
Definition: EdbPattern.h:41
Int_t N() const
Definition: EdbPattern.h:86
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:66
EdbSegP * AddSegment(int i, EdbSegP &s)
Definition: EdbPattern.cxx:72
Definition: EdbPattern.h:113
s
Definition: check_shower.C:55
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1