1 #ifndef ROOT_EdbPVRQuality
2 #define ROOT_EdbPVRQuality
12 #include "TBenchmark.h"
13 #include "TMultiLayerPerceptron.h"
14 #include "TMLPAnalyzer.h"
16 #include "TSpectrum.h"
17 #include "TPolyMarker.h"
56 Bool_t eCutMethodIsDone[8];
59 Float_t eBTDensityLevelAngularSpace[20];
64 Float_t ePatternBTDensity_orig[114];
65 Float_t ePatternBTDensity_modified[114];
102 Float_t eCutTTReductionFactor[12];
112 Float_t eCutTTp0[114][20];
113 Float_t eCutTTp1[114][20];
115 Float_t eCutDistChi2[114];
116 Float_t eCutDistW[114];
117 Float_t eAgreementChi2WDistCut[114];
129 Float_t eX2HatCut[114];
130 Float_t eXi2Hat_m_chi2[114];
131 Float_t eXi2Hat_s_chi2[114];
132 Float_t eXi2Hat_m_WTilde[114];
133 Float_t eXi2Hat_s_WTilde[114];
136 Float_t eXi2HatTT_m_chi2[114][20];
137 Float_t eXi2HatTT_s_chi2[114][20];
138 Float_t eXi2HatTT_m_WTilde[114][20];
139 Float_t eXi2HatTT_s_WTilde[114][20];
151 TObjArray* eArrayPatternTTSource[12];
152 TObjArray* eArrayPatternTTRejected[12];
153 TObjArray* eArrayPatternTTAccepted[12];
163 TObjArray* eArrayPatternAllExcluded[4];
183 void ResetHistosSinglePattern();
192 void SetCutMethod(Int_t CutMethod);
194 eCutMethodIsDone[CutMethod]=kTRUE;
197 eBTDensityLevel=BTDensityLevel;
200 eCutTTSqueezeFactor=CutTTSqueezeFactor;
203 return eCutTTSqueezeFactor;
207 eCutTTReductionFactor[binTT]=CutTTReductionFactor;
210 return eCutTTReductionFactor[binTT];
215 eBTDensityLevelCalcMethodMC=BTDensityLevelCalcMethodMC;
218 eBTDensityLevelCalcMethodMCConfirmationNumber=BTDensityLevelCalcMethodMCConfirmationNumber;
221 return eBTDensityLevelCalcMethodMC;
224 return eBTDensityLevelCalcMethodMCConfirmationNumber;
230 return GetEdbPVRec(eNeedModified);
233 cout <<
"Inline EdbPVRecType= " << EdbPVRecType << endl;
234 if (EdbPVRecType==1) {
235 return eAli_modified;
242 cout <<
"Inline EdbPVRecType= " << NeedModified << endl;
243 if (NeedModified==1) {
244 return eAli_modified;
252 return GetEdbPVRec(0);
255 return GetEdbPVRec(1);
264 if (eAli_maxNpatterns>57) cout <<
" This tells us not yet if we do have one/two brick reconstruction done. A possibility could also be that the dataset was read with microtracks. Further investigation is needed! (On todo list)." << endl;
265 if (eAli_maxNpatterns>114) {
266 cout <<
"WARNING EdbPVRQuality::SetEdbPVRec eAli_orig->Npatterns() = " << eAli_maxNpatterns <<
" is greater than possible basetrack data of two bricks. This class does (not yet) work with this large number of patterns. Set maximum patterns to 114 !!!" << endl;
267 eAli_maxNpatterns=114;
296 return eHistTTFillcheck;
301 return GetBTDensity_orig(patNR);
304 if (patNR==-1)
return eProfileBTdens_vs_PID_source_meanY;
305 return ePatternBTDensity_orig[patNR];
308 if (patNR==-1)
return eProfileBTdens_vs_PID_target_meanY;
309 return ePatternBTDensity_modified[patNR];
317 if (
type>7)
return 0;
318 return eCutMethodIsDone[
type];
321 return eBTDensityLevel;
331 return eCutp0[patNR];
334 return eCutp1[patNR];
338 return eAgreementChi2CutMeanChi2;
341 return eAgreementChi2CutRMSChi2;
344 return eAgreementChi2CutMeanW;
347 return eAgreementChi2CutRMSW;
351 return eAgreementChi2WDistCut;
354 return eAgreementChi2WDistCut[patNR];
358 return eArrayAllExcludedSegments;
364 void SetHistGeometry_OPERA();
365 void SetHistGeometry_MC();
366 void SetHistGeometry_OPERAandMC();
367 void SetHistGeometry_OPERAandMCBinArea625();
368 void SetHistGeometry_OPERAandMCBinArea4mm2();
371 void CheckEdbPVRecThetaSpace(Int_t AliType);
375 void Execute_ConstantBTDensity();
378 void Execute_ConstantBTQualityInAngularBins();
379 void Execute_ConstantBTX2Hat();
380 void Execute_ConstantBTX2HatInAngularBins();
381 void Execute_RandomCut();
382 void Execute_RandomCutInAngularBins();
383 void Execute_EqualizeTanThetaSpace();
384 void Execute_EqualizeTanThetaSpace_ConstantBTDensity();
385 void Execute_EqualizeTanThetaSpace_ConstantBTQuality();
386 void Execute_EqualizeTanThetaSpace_ConstantBTX2Hat();
387 void Execute_EqualizeTanThetaSpace_RandomCut();
390 void FindHighDensityBTs();
391 void FindPassingBTs();
392 void FindEventRelatedBTs();
403 TObjArray* TrackArrayToSegmentArray(TObjArray* trackArray);
407 EdbPVRec* CreatePVRWithExcludedSegmentList(
EdbPVRec* aliSource, TObjArray *SegmentArray);
410 TCanvas* GetQualityPlots(Int_t CountNr=0, Int_t aliSourceType=0);
411 TPad* GetQualityPlotsSingle(Int_t CountNr=0, Int_t aliSourceType=0, Int_t Plottype=-1);
416 Int_t CheckFilledXYSize(TH2F* HistXY);
418 Int_t GetAngularSpaceBin(
EdbSegP* seg);
419 Int_t FindFirstBinAbove(TH1*
hist, Double_t threshold, Int_t axis);
420 Int_t FindLastBinAbove(TH1*
hist, Double_t threshold, Int_t axis);
421 Int_t FindFirstBinAboveTH2(TH2*
hist, Double_t threshold, Int_t axis);
422 Int_t FindLastBinAboveTH2(TH2*
hist, Double_t threshold, Int_t axis);
424 TObjArray* GetTracksFromLinkedTracksRootFile();
426 Bool_t CheckSegmentQualityInPattern_ConstBTDens(
EdbPVRec*
ali, Int_t PatternAtNr,
EdbSegP* seg);
427 Bool_t CheckSegmentQualityInPattern_ConstQual(
EdbPVRec*
ali, Int_t PatternAtNr,
EdbSegP* seg);
432 Bool_t Chi2WRelation(
EdbSegP* seg, Float_t Cutp0, Float_t Cutp1, Int_t qualitycuttype);
433 Bool_t X2HatCutRelation(
EdbSegP* seg, Double_t CutValueX2Hat, Double_t CutValueX2Hat_Chi2Mean, Double_t CutValueX2Hat_Chi2Sigma, Double_t CutValueX2Hat_WTildeMean, Double_t CutValueX2Hat_WTildeSigma );
437 void FillTanThetaTArrays(Int_t patNR);
438 void DetermineCutTTReductionFactor(Int_t patNR);
440 void FillHistosPattern(
EdbPVRec* aliSource, Int_t patNR=0, Bool_t DoResetHistos=kTRUE, Float_t weightXY=1);
441 void FillHistosVolume(
EdbPVRec* aliSource);
444 void CreateEdbPVRec_TT_Algorithms();
446 void RebinTTHistogram(Int_t nbins=5);
450 void Cut_TTBin(Int_t TTbin);
451 void Cut_ConstantBTDensity();
452 void Cut_ConstantBTQuality();
453 void Cut_ConstantBTX2Hat();
454 void Cut_RandomCut();
455 void MergeTTSegments();
456 void MergeHighDensBTsLists();
457 void MergeExclusionLists();
462 void PrintBTDensities();
464 void PrintCutType0();
465 void PrintCutType1();
466 void PrintCutType2();
467 void PrintCutType3();
468 void PrintCutType4();
469 void PrintCutType5();
470 void PrintCutType6();
471 void PrintCutType7();
472 void PrintCutValues(Int_t CutType);
EdbPVRec * ali
Definition: align.C:1
Definition: EdbPVRQuality.h:38
Float_t eAgreementChi2CutMeanW
Definition: EdbPVRQuality.h:120
Float_t eBTDensityLevel
Definition: EdbPVRQuality.h:58
Int_t GetCutMethod()
Definition: EdbPVRQuality.h:313
TH1F * eHistTTFillcheck
Definition: EdbPVRQuality.h:78
EdbPVRec * GetEdbPVRec()
Definition: EdbPVRQuality.h:229
Int_t GetBTDensityLevelCalcMethodMCConfirmation()
Definition: EdbPVRQuality.h:223
Float_t GetagreementChi2CutRMSW()
Definition: EdbPVRQuality.h:346
EdbPVRec * GetEdbPVRec_orig()
Definition: EdbPVRQuality.h:251
Float_t eProfileBTdens_vs_PID_source_rmsX
Definition: EdbPVRQuality.h:88
TH2F * eHistTXTY
Definition: EdbPVRQuality.h:72
Int_t eAli_maxNpatterns
Definition: EdbPVRQuality.h:51
Float_t GetagreementChi2CutMeanW()
Definition: EdbPVRQuality.h:343
TH1F * GetHistTT()
Definition: EdbPVRQuality.h:289
void SetBTDensityLevel(Float_t BTDensityLevel)
Definition: EdbPVRQuality.h:196
TH2F * GetHistTYTX()
Definition: EdbPVRQuality.h:292
TObjArray * eArrayPatternAllTTSource
Definition: EdbPVRQuality.h:155
Float_t GetagreementChi2Cut(Int_t patNR)
Definition: EdbPVRQuality.h:353
EdbPVRec * GetEdbPVRec(Bool_t NeedModified)
Definition: EdbPVRQuality.h:241
TH1F * GetHistTTFillcheck()
Definition: EdbPVRQuality.h:295
TProfile * eProfileBTdens_vs_PID_target
Definition: EdbPVRQuality.h:90
Int_t eHistGeometry
Definition: EdbPVRQuality.h:50
Int_t eCutMethod
Definition: EdbPVRQuality.h:54
Float_t GetBTDensity(Int_t patNR=-1)
Definition: EdbPVRQuality.h:300
Int_t eBinTT
Definition: EdbPVRQuality.h:103
EdbPVRec * GetEdbPVRec_modified()
Definition: EdbPVRQuality.h:254
TH2F * eHistXY
Definition: EdbPVRQuality.h:71
TH1F * eHistW
Definition: EdbPVRQuality.h:75
EdbPVRec * eAli_pointer
Definition: EdbPVRQuality.h:45
TProfile * eProfileBTdens_vs_PID_source
Definition: EdbPVRQuality.h:86
TH1F * eHistBTDensityVolume
Definition: EdbPVRQuality.h:80
TObjArray * eArrayPatternAllTTRejected
Definition: EdbPVRQuality.h:156
Int_t NbinsX
Definition: EdbPVRQuality.h:81
void SetCutTTSqueezeFactor(Float_t CutTTSqueezeFactor)
Definition: EdbPVRQuality.h:199
Float_t GetCutp0(Int_t patNR)
Definition: EdbPVRQuality.h:330
Float_t maxY
Definition: EdbPVRQuality.h:83
Float_t eProfileBTdens_vs_PID_source_meanX
Definition: EdbPVRQuality.h:87
Bool_t GetCutMethodIsDone(Int_t type)
Definition: EdbPVRQuality.h:316
Float_t eAgreementChi2CutMeanChi2
Definition: EdbPVRQuality.h:118
TH1F * GetHistChi2()
Definition: EdbPVRQuality.h:276
EdbPVRec * eAli_modified
Definition: EdbPVRQuality.h:44
void SetBTDensityLevelCalcMethodMCConfirmation(Int_t BTDensityLevelCalcMethodMCConfirmationNumber)
Definition: EdbPVRQuality.h:217
TH1F * GetHistWTilde()
Definition: EdbPVRQuality.h:282
Bool_t eIsTarget
Definition: EdbPVRQuality.h:49
TH2F * eHistWChi2
Definition: EdbPVRQuality.h:70
Int_t eBTDensityLevelCalcMethodMCConfirmationNumber
Definition: EdbPVRQuality.h:62
EdbPVRec * GetEdbPVRec(Int_t EdbPVRecType)
Definition: EdbPVRQuality.h:232
Float_t GetBTDensityLevel()
Definition: EdbPVRQuality.h:320
TProfile * eProfileBTdens_vs_PID_generic
Definition: EdbPVRQuality.h:94
Float_t maxX
Definition: EdbPVRQuality.h:82
Float_t eProfileBTdens_vs_PID_target_meanX
Definition: EdbPVRQuality.h:91
TH1F * eHistTT
Definition: EdbPVRQuality.h:73
TH1F * eHistBTDensityPattern
Definition: EdbPVRQuality.h:79
Bool_t eIsSource
Definition: EdbPVRQuality.h:48
Bool_t eNeedModified
Definition: EdbPVRQuality.h:47
EdbPVRec * eAli_orig
Definition: EdbPVRQuality.h:43
Float_t * GetCutp1()
Definition: EdbPVRQuality.h:327
void SetCutTTReductionFactor(Int_t binTT, Float_t CutTTReductionFactor)
Definition: EdbPVRQuality.h:206
Float_t GetBTDensity_orig(Int_t patNR=-1)
Definition: EdbPVRQuality.h:303
Float_t * GetCutp0()
Definition: EdbPVRQuality.h:324
TObjArray * eArrayAllExcludedSegments
Definition: EdbPVRQuality.h:174
TString eCutMethodString
Definition: EdbPVRQuality.h:55
Float_t eProfileBTdens_vs_PID_target_rmsX
Definition: EdbPVRQuality.h:92
TH2F * GetHistChi2W()
Definition: EdbPVRQuality.h:271
Float_t GetCutp1(Int_t patNR)
Definition: EdbPVRQuality.h:333
Float_t eRandomCutThreshold
Definition: EdbPVRQuality.h:141
TH1F * eHistChi2
Definition: EdbPVRQuality.h:74
void SetEdbPVRec(EdbPVRec *Ali_orig)
Definition: EdbPVRQuality.h:260
TObjArray * GetArrayAllExcludedSegments()
Definition: EdbPVRQuality.h:357
void SetCutMethodIsDone(Int_t CutMethod)
Definition: EdbPVRQuality.h:193
TH1F * eHistWTilde
Definition: EdbPVRQuality.h:76
Float_t eGlobalTTReductionFactorC
Definition: EdbPVRQuality.h:105
Float_t GetBTDensity_modified(Int_t patNR=-1)
Definition: EdbPVRQuality.h:307
Bool_t GetBTDensityLevelCalcMethodMC()
Definition: EdbPVRQuality.h:220
Float_t eAgreementChi2CutRMSChi2
Definition: EdbPVRQuality.h:119
Float_t eCutTTSqueezeFactor
Definition: EdbPVRQuality.h:100
TObjArray * eArrayPatternAllTTAccepted
Definition: EdbPVRQuality.h:157
Float_t eAgreementChi2CutRMSW
Definition: EdbPVRQuality.h:121
Float_t GetCutTTSqueezeFactor()
Definition: EdbPVRQuality.h:202
Bool_t eBTDensityLevelCalcMethodMC
Definition: EdbPVRQuality.h:61
void SetBTDensityLevelCalcMethodMC(Bool_t BTDensityLevelCalcMethodMC)
Definition: EdbPVRQuality.h:214
Float_t GetagreementChi2CutRMSChi2()
Definition: EdbPVRQuality.h:340
TH2F * GetHistYX()
Definition: EdbPVRQuality.h:286
Float_t eX2Hat
Definition: EdbPVRQuality.h:128
ClassDef(EdbPVRQuality, 1)
TH1F * GetHistW()
Definition: EdbPVRQuality.h:279
Float_t * GetagreementChi2Cut()
Definition: EdbPVRQuality.h:350
Float_t GetCutTTReductionFactor(Int_t binTT)
Definition: EdbPVRQuality.h:209
Float_t GetagreementChi2CutMeanChi2()
Definition: EdbPVRQuality.h:337
Definition: EdbPVRec.h:148
Int_t Npatterns() const
Definition: EdbPattern.h:380
Definition: EdbPattern.h:118
void hist()
Definition: init.C:23
void Help()
Definition: mc2raw.cxx:20
#define NULL
Definition: nidaqmx.h:84
p Execute_ConstantBTQuality()
Int_t type
Definition: testBGReduction_By_ANN.C:15
p Execute_ConstantBTDensityInAngularBins()