FEDRA emulsion software from the OPERA Collaboration
EdbShowPVRQuality.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbShowPVRQuality
2 #define ROOT_EdbShowPVRQuality
3 #include "TROOT.h"
4 #include "TSystem.h"
5 #include "TFile.h"
6 #include "TF1.h"
7 #include "TH2.h"
8 #include "TProfile.h"
9 #include "TVector3.h"
10 #include "TIndexCell.h"
11 #include "TArrayF.h"
12 #include "TBenchmark.h"
13 #include "TMultiLayerPerceptron.h"
14 #include "TMLPAnalyzer.h"
15 #include "TCanvas.h"
16 #include "EdbVertex.h"
17 #include "EdbPVRec.h"
18 #include "EdbPhys.h"
19 #include "EdbMath.h"
20 #include "EdbMomentumEstimator.h"
21 #include "EdbLog.h"
22 #include "EdbPattern.h"
23 #include "EdbShowerP.h"
24 using namespace std;
25 
26 //______________________________________________________________________________
27 //___
28 //___ Declaration of EdbShowPVRQuality Class:
29 //______________________________________________________________________________
30 
31 
32 class EdbShowPVRQuality : public TObject {
33 
34 private:
35 
36  // The source and target EdbPVRec objects:
39  Bool_t eNeedModified;
40  Bool_t eIsSource;
41  Bool_t eIsTarget;
44 
45  // Variables related for calculation Issues
46  Int_t eCutMethod;
47  Float_t eBTDensityLevel;
48  Bool_t eCutMethodIsDone[2];
51 
52  Float_t ePatternBTDensity_orig[114];
53  Float_t ePatternBTDensity_modified[114];
54 
55  // Histograms for calculations
56  TH2F* eHistChi2W;
57  TH2F* eHistYX;
58  Int_t NbinsX,NbinsY;
59 
60  Float_t minX,maxX;
61  Float_t minY,maxY;
62  // TProfile: BT dens/mm2 versus PID() source histogram
64  Float_t eProfileBTdens_vs_PID_source_meanX,eProfileBTdens_vs_PID_source_meanY;
65  Float_t eProfileBTdens_vs_PID_source_rmsX,eProfileBTdens_vs_PID_source_rmsY;
66  // TProfile: BT dens/mm2 versus PID() target histogram
68  Float_t eProfileBTdens_vs_PID_target_meanX,eProfileBTdens_vs_PID_target_meanY;
69  Float_t eProfileBTdens_vs_PID_target_rmsX,eProfileBTdens_vs_PID_target_rmsY;
70 
71  // Variables related for cut Issues
72  // eCutMethod == 0: Constant BT density
73  // eCutMethod == 1: Constant Chi2W quality
74  Float_t eCutp0[114];
75  Float_t eCutp1[114];
76  Float_t eCutDistChi2[114];
77  Float_t eCutDistW[114];
78  Float_t eAgreementChi2WDistCut[114];
83 
84 protected:
85 
86  void Set0();
87  void Init();
88 
89 public:
90 
93  EdbShowPVRQuality(EdbPVRec* ali, Float_t BTDensityTargetLevel);
94 
95  void SetCutMethod(Int_t CutMethod);
96  inline void SetBTDensityLevel(Float_t BTDensityLevel) {
97  eBTDensityLevel=BTDensityLevel;
98  }
99 
100  inline void SetBTDensityLevelCalcMethodMC(Bool_t BTDensityLevelCalcMethodMC) {
101  eBTDensityLevelCalcMethodMC=BTDensityLevelCalcMethodMC;
102  }
103  inline void SetBTDensityLevelCalcMethodMCConfirmation(Int_t BTDensityLevelCalcMethodMCConfirmationNumber) {
104  eBTDensityLevelCalcMethodMCConfirmationNumber=BTDensityLevelCalcMethodMCConfirmationNumber;
105  }
107  return eBTDensityLevelCalcMethodMC;
108  }
110  return eBTDensityLevelCalcMethodMCConfirmationNumber;
111  }
112 
113 
114 
115  inline EdbPVRec* GetEdbPVRec() {
116  return GetEdbPVRec(eNeedModified);
117  }
118  inline EdbPVRec* GetEdbPVRec(Int_t EdbPVRecType) {
119  cout << "Inline EdbPVRecType= " << EdbPVRecType << endl;
120  if (EdbPVRecType==1) {
121  return eAli_modified;
122  }
123  else {
124  return eAli_orig;
125  }
126  }
127  inline EdbPVRec* GetEdbPVRec(Bool_t NeedModified) {
128  cout << "Inline EdbPVRecType= " << NeedModified << endl;
129  if (NeedModified==1) {
130  return eAli_modified;
131  }
132  else {
133  return eAli_orig;
134  }
135  }
136 
138  return GetEdbPVRec(0);
139  }
141  return GetEdbPVRec(1);
142  }
143 
144  inline void SetEdbPVRec(EdbPVRec* Ali_orig) {
145  eAli_orig=Ali_orig;
146  eIsSource=kTRUE;
147  eAli_maxNpatterns=Ali_orig->Npatterns();
148  }
149 
150  inline TH2F* GetHistChi2W() {
151  return eHistChi2W;
152  }
153  inline TH2F* GetHistYX() {
154  return eHistYX;
155  }
156 
157 
158 
159  inline Int_t GetCutMethod() {
160  return eCutMethod;
161  }
162  inline Bool_t GetCutMethodIsDone(Int_t type) {
163  if (type>1) return 0;
164  return eCutMethodIsDone[type];
165  }
166  inline Float_t GetBTDensityLevel() {
167  return eBTDensityLevel;
168  }
169 
170  inline Float_t* GetCutp0() {
171  return eCutp0;
172  }
173  inline Float_t* GetCutp1() {
174  return eCutp1;
175  }
176  inline Float_t GetCutp0(Int_t patNR) {
177  return eCutp0[patNR];
178  }
179  inline Float_t GetCutp1(Int_t patNR) {
180  return eCutp1[patNR];
181  }
182 
183  inline Float_t GetagreementChi2CutMeanChi2() {
184  return eAgreementChi2CutMeanChi2;
185  }
186  inline Float_t GetagreementChi2CutRMSChi2() {
187  return eAgreementChi2CutRMSChi2;
188  }
189  inline Float_t GetagreementChi2CutMeanW() {
190  return eAgreementChi2CutMeanW;
191  }
192  inline Float_t GetagreementChi2CutRMSW() {
193  return eAgreementChi2CutRMSW;
194  }
195 
196  inline Float_t* GetagreementChi2Cut() {
197  return eAgreementChi2WDistCut;
198  }
199  inline Float_t GetagreementChi2Cut(Int_t patNR) {
200  return eAgreementChi2WDistCut[patNR];
201  }
202 
203  void SetHistGeometry_OPERA();
204  void SetHistGeometry_MC();
205  void SetHistGeometry_OPERAandMC();
206 
207  void CheckEdbPVRec();
208  void Execute_ConstantBTDensity();
209  void Execute_ConstantQuality();
210 
211  EdbPVRec* Remove_DoubleBT(EdbPVRec* aliSource);
212  EdbPVRec* Remove_Passing(EdbPVRec* aliSource);
213 
214  // All these functions will call Remove_SegmentArray(..,..,..);
215  EdbPVRec* Remove_SegmentArray(TObjArray* segarray, EdbPVRec* aliSource=NULL, Int_t Option=0);
216  EdbPVRec* Remove_Segment(EdbSegP* seg, EdbPVRec* aliSource=NULL, Int_t Option=0);
217  EdbPVRec* Remove_TrackArray(TObjArray* trackArray, EdbPVRec* aliSource=NULL, Int_t Option=0);
218  EdbPVRec* Remove_Track(EdbTrackP* track, EdbPVRec* aliSource=NULL, Int_t Option=0);
219  TObjArray* TrackToSegmentArray(EdbTrackP* track);
220  TObjArray* TrackArrayToSegmentArray(TObjArray* trackArray);
221 
222 
223 
224  void CreateEdbPVRec();
225  void CheckFilledXYSize();
226  Int_t FindFirstBinAbove(TH1* hist, Double_t threshold, Int_t axis);
227  Int_t FindLastBinAbove(TH1* hist, Double_t threshold, Int_t axis);
228  TObjArray* GetTracksFromLinkedTracksRootFile();
229 
230  Bool_t CheckSegmentQualityInPattern_ConstBTDens(EdbPVRec* ali, Int_t PatternAtNr, EdbSegP* seg);
231  Bool_t CheckSegmentQualityInPattern_ConstQual(EdbPVRec* ali, Int_t PatternAtNr, EdbSegP* seg);
232 
233  virtual ~EdbShowPVRQuality(); // virtual constructor due to inherited class
234 
235  void Print();
236  void PrintCutType();
237  void PrintCutType0();
238  void PrintCutType1();
239  void Help();
240  ClassDef(EdbShowPVRQuality,1); // Root Class Definition for EdbShowPVRQuality
241 };
242 
243 //______________________________________________________________________________
244 
245 #endif /* EdbShowPVRQuality */
EdbPVRec * ali
Definition: align.C:1
Definition: EdbPVRec.h:148
Int_t Npatterns() const
Definition: EdbPattern.h:380
Definition: EdbSegP.h:18
Definition: EdbShowPVRQuality.h:32
Float_t eAgreementChi2CutMeanChi2
Definition: EdbShowPVRQuality.h:79
TProfile * eProfileBTdens_vs_PID_source
Definition: EdbShowPVRQuality.h:63
Float_t GetagreementChi2CutMeanW()
Definition: EdbShowPVRQuality.h:189
EdbPVRec * GetEdbPVRec()
Definition: EdbShowPVRQuality.h:115
Int_t eHistGeometry
Definition: EdbShowPVRQuality.h:42
Float_t GetagreementChi2Cut(Int_t patNR)
Definition: EdbShowPVRQuality.h:199
TH2F * GetHistYX()
Definition: EdbShowPVRQuality.h:153
Int_t NbinsX
Definition: EdbShowPVRQuality.h:58
Float_t eAgreementChi2CutRMSW
Definition: EdbShowPVRQuality.h:82
Float_t GetagreementChi2CutRMSW()
Definition: EdbShowPVRQuality.h:192
void SetBTDensityLevelCalcMethodMCConfirmation(Int_t BTDensityLevelCalcMethodMCConfirmationNumber)
Definition: EdbShowPVRQuality.h:103
void SetEdbPVRec(EdbPVRec *Ali_orig)
Definition: EdbShowPVRQuality.h:144
EdbPVRec * GetEdbPVRec(Int_t EdbPVRecType)
Definition: EdbShowPVRQuality.h:118
void SetBTDensityLevelCalcMethodMC(Bool_t BTDensityLevelCalcMethodMC)
Definition: EdbShowPVRQuality.h:100
Float_t * GetCutp1()
Definition: EdbShowPVRQuality.h:173
EdbPVRec * GetEdbPVRec_orig()
Definition: EdbShowPVRQuality.h:137
void SetBTDensityLevel(Float_t BTDensityLevel)
Definition: EdbShowPVRQuality.h:96
Bool_t eBTDensityLevelCalcMethodMC
Definition: EdbShowPVRQuality.h:49
TH2F * eHistYX
Definition: EdbShowPVRQuality.h:57
Bool_t eIsTarget
Definition: EdbShowPVRQuality.h:41
Bool_t GetCutMethodIsDone(Int_t type)
Definition: EdbShowPVRQuality.h:162
Float_t maxX
Definition: EdbShowPVRQuality.h:60
Int_t eBTDensityLevelCalcMethodMCConfirmationNumber
Definition: EdbShowPVRQuality.h:50
EdbPVRec * eAli_modified
Definition: EdbShowPVRQuality.h:38
Bool_t eNeedModified
Definition: EdbShowPVRQuality.h:39
Int_t eAli_maxNpatterns
Definition: EdbShowPVRQuality.h:43
Float_t GetCutp1(Int_t patNR)
Definition: EdbShowPVRQuality.h:179
Int_t GetCutMethod()
Definition: EdbShowPVRQuality.h:159
Float_t eAgreementChi2CutRMSChi2
Definition: EdbShowPVRQuality.h:80
EdbPVRec * eAli_orig
Definition: EdbShowPVRQuality.h:37
TH2F * GetHistChi2W()
Definition: EdbShowPVRQuality.h:150
Float_t GetCutp0(Int_t patNR)
Definition: EdbShowPVRQuality.h:176
Float_t eProfileBTdens_vs_PID_target_meanX
Definition: EdbShowPVRQuality.h:68
Float_t maxY
Definition: EdbShowPVRQuality.h:61
EdbPVRec * GetEdbPVRec_modified()
Definition: EdbShowPVRQuality.h:140
Float_t * GetCutp0()
Definition: EdbShowPVRQuality.h:170
Float_t GetagreementChi2CutRMSChi2()
Definition: EdbShowPVRQuality.h:186
Bool_t GetBTDensityLevelCalcMethodMC()
Definition: EdbShowPVRQuality.h:106
Float_t eProfileBTdens_vs_PID_target_rmsX
Definition: EdbShowPVRQuality.h:69
Float_t GetagreementChi2CutMeanChi2()
Definition: EdbShowPVRQuality.h:183
Int_t eCutMethod
Definition: EdbShowPVRQuality.h:46
EdbPVRec * GetEdbPVRec(Bool_t NeedModified)
Definition: EdbShowPVRQuality.h:127
Float_t eProfileBTdens_vs_PID_source_rmsX
Definition: EdbShowPVRQuality.h:65
TH2F * eHistChi2W
Definition: EdbShowPVRQuality.h:56
TProfile * eProfileBTdens_vs_PID_target
Definition: EdbShowPVRQuality.h:67
Float_t eProfileBTdens_vs_PID_source_meanX
Definition: EdbShowPVRQuality.h:64
ClassDef(EdbShowPVRQuality, 1)
Float_t * GetagreementChi2Cut()
Definition: EdbShowPVRQuality.h:196
Float_t GetBTDensityLevel()
Definition: EdbShowPVRQuality.h:166
Float_t eBTDensityLevel
Definition: EdbShowPVRQuality.h:47
Float_t eAgreementChi2CutMeanW
Definition: EdbShowPVRQuality.h:81
Bool_t eIsSource
Definition: EdbShowPVRQuality.h:40
Int_t GetBTDensityLevelCalcMethodMCConfirmation()
Definition: EdbShowPVRQuality.h:109
Definition: EdbPattern.h:118
Definition: bitview.h:14
Alg Print()
void hist()
Definition: init.C:23
void Help()
Definition: mc2raw.cxx:20
#define NULL
Definition: nidaqmx.h:84
p CreateEdbPVRec()
p CheckEdbPVRec()
TH2F * eHistChi2W
Definition: testBGReduction_AllMethods.C:37
Int_t type
Definition: testBGReduction_By_ANN.C:15