FEDRA emulsion software from the OPERA Collaboration
EdbShowerAlg.h
Go to the documentation of this file.
1#ifndef ROOT_EdbShowerAlg
2#define ROOT_EdbShowerAlg
3
4#include "TROOT.h"
5#include "TFile.h"
6#include "TSystem.h"
7#include "TVector3.h"
8#include "TIndexCell.h"
9#include "TArrayF.h"
10#include "TF1.h"
11#include "TH1.h"
12#include "TSpline.h"
13#include "TMultiLayerPerceptron.h"
14#include "TMLPAnalyzer.h"
15#include "TBenchmark.h"
16#include "EdbVertex.h"
17#include "EdbPVRec.h"
18#include "EdbPhys.h"
19#include "EdbMath.h"
21#include "EdbLog.h"
22#include "EdbPattern.h"
23#include "EdbSegP.h"
24
25// #include "EdbEDAUtil.h"
26using namespace std;
27
29
30class EdbShowerAlg : public TObject {
31
32private:
33// nothing...
34
35protected:
36
37 // A algorithm here should not have more than 10 different parameters, otherwise we
38 // will have to use TObjArray implementations.
39 TString eAlgName;
40 Int_t eAlgValue;
41 Float_t eParaValue[10];
42 TString eParaString[10];
44
45
46 // Pointer copies to be used for reconstruction of showers
47 // EdbPVRec object:
49 Int_t eAliNpat;
50 // TObjArray storing Initiator Basetracks:
51 TObjArray* eInBTArray;
53 // Variables describing plate number cuts.
58 // TObjArray storing Reconstructed Showers:
59 TObjArray* eRecoShowerArray;
61
62 // Transformed (smaller) EdbPVRec object:
65 // Flag wheter to use the small EdbPvrec Object or not. Using small object, this will not be deleted ue to
66 // pointer problems. See in implementation of Transform() for details.
68
69
70
71
72 // In constructor this is created on heap...
73 //EdbShowerP* eRecoShower;
75
76 // Reset All Default Variables:
77 void Set0();
78
79 // General Debug Variable for slow debugging...
80 Bool_t eDebug;
81
82
83public:
84
86 EdbShowerAlg(TString AlgName, Int_t AlgValue);
87// EdbShowerAlg(TString AlgName, Int_t AlgValue, Float_t* ParaValue[10], TString ParaString[10]);
88// EdbShowerAlg(EdbPVRec* gAli, TObjArray* InBTArray);
89
90
91 virtual ~EdbShowerAlg();
92
93
94 // Hand over eAli eInBTArray from EdbShowerRec
95 inline void SetEdbPVRec( EdbPVRec* Ali ) {
96 eAli = Ali;
98 }
99 inline void SetInBTArray( TObjArray* InBTArray ) {
100 eInBTArray = InBTArray;
101 eInBTArrayN=eInBTArray->GetEntries();
102 }
103 inline void SetEdbPVRecPIDNumbers(Int_t FirstPlate_eAliPID, Int_t LastPlate_eAliPID, Int_t MiddlePlate_eAliPID, Int_t NumberPlate_eAliPID) {
104 eFirstPlate_eAliPID=FirstPlate_eAliPID;
105 eLastPlate_eAliPID=LastPlate_eAliPID;
106 eMiddlePlate_eAliPID=MiddlePlate_eAliPID;
107 eNumberPlate_eAliPID=NumberPlate_eAliPID;
108 }
109 inline void SetRecoShowerArray(TObjArray* RecoShowerArray) {
112 }
113 inline void SetRecoShowerArrayN(Int_t RecoShowerArrayN) {
114 eRecoShowerArrayN=RecoShowerArrayN;
115 }
116 void AddRecoShowerArray(TObjArray* RecoShowerArray);
117
118
119 inline void SetActualAlgParameterset(Int_t ActualAlgParametersetNr) {
120 eActualAlgParametersetNr=ActualAlgParametersetNr;
121 }
122
123 inline Int_t GetAlgValue() const {
124 return eAlgValue;
125 }
126 inline TString GetAlgName() const {
127 return eAlgName;
128 }
129 inline Int_t GetRecoShowerArrayN() const {
130 return eRecoShowerArrayN;
131 }
132 inline TObjArray* GetRecoShowerArray() const {
133 return eRecoShowerArray;
134 }
135
136 inline void SetUseAliSub(Bool_t UseAliSub) {
137 eUseAliSub=UseAliSub;
138 }
139
140 Double_t DeltaR_WithPropagation(EdbSegP* s,EdbSegP* stest);
141 Double_t DeltaR_WithoutPropagation(EdbSegP* s,EdbSegP* stest);
142 Double_t DeltaR_NoPropagation(EdbSegP* s,EdbSegP* stest);
143
144 Double_t DeltaTheta(EdbSegP* s1,EdbSegP* s2);
147 Double_t GetSpatialDist(EdbSegP* s1,EdbSegP* s2);
148 Double_t GetMinimumDist(EdbSegP* seg1,EdbSegP* seg2);
149
150
151 void SetParameter(Int_t parNr, Float_t parvalue);
152 void SetParameters(Float_t* par);
153 //void Transform_eAli(EdbSegP* InitiatorBT);
154 void Transform_eAli( EdbSegP* InitiatorBT, Float_t ExtractSize);
155 Bool_t IsInConeTube(EdbSegP* sTest, EdbSegP* sStart, Double_t CylinderRadius, Double_t ConeAngle);
157
158 EdbVertex * CalcVertex(TObjArray *segments);
159
160
161 void Print();
162 void PrintParameters();
165 void PrintMore();
166 void PrintAll();
167
168
169 // General DEBUG FUNCTION
170 inline void SetDebug() {
171 eDebug=kTRUE;
172 }
173
174
175 // Main functions for using this ShowerAlgorithm Object.
176 // Structure is made similar to OpRelease, where
177 // Initialize, Execute, Finalize
178 // give the three columns of the whole thing.
179 // Since these functions depend on the algorithm type they are made virtual
180 // and implemented in the inherited classes.
181 virtual void Initialize();
182 virtual void Execute();
183 virtual void Finalize();
184
185 ClassDef(EdbShowerAlg,1); // Root Class Definition for my Objects
186};
187
188
189//______________________________________________________________________________
190
192
193private:
194 // TObjArray storing Initiator Vertices:
195 TObjArray* eInVtxArray;
198
199
200 // Variable for doing a preselction of InBTs (speedup)
202 // Variable to distinuish the Case Modes as described in the
203 // manual: case A (==0) and case B (==1) and case C (==2)
205 // Variable to set the ANN Cut on or off. Default = ON
207
208
209 // Variable to clean the found parings once more.
211
212
213
214 // Neural Network to Improve Fake BG pair rejection rate
215 // (part of gamma pair reco)
216 TMultiLayerPerceptron* eANNPair;
217 TMultiLayerPerceptron* eANNPairCaseA;
218 TMultiLayerPerceptron* eANNPairCaseB;
219 TMultiLayerPerceptron* eANNPairCaseC;
221 Float_t eANNPairCut[3];
222 // Neural Network input feed variables
232
233 // Arrays for double segment comparisons
238
239
240public:
241
243 virtual ~EdbShowerAlg_GS(); // virtual constructor due to inherited class
244
245 void Set0();
246 void Init();
247
248 inline void SetInVtxArray( TObjArray* InVtxArray ) {
249 eInVtxArray = InVtxArray;
250 eInVtxArrayN = eInVtxArray->GetEntries();
251 cout << "SetInVtxArray:: " << eInVtxArrayN << " entries set"<<endl;
252 }
253 void SetInVtx( EdbVertex* vtx );
254 void AddInVtx( EdbVertex* vtx );
255
256 inline Int_t GetInVtxArrayN() const {
257 return eInVtxArrayN;
258 }
259 inline TObjArray* GetInVtxArray() const {
260 return eInVtxArray;
261 }
262
265 }
266
267 inline void SetCleanPairs(Bool_t CleanPairs) {
268 eSetCleanPairs = CleanPairs;
269 }
270
271 inline void SetCutModeFull(Bool_t CutModeFull) {
272 eCutModeFull = CutModeFull;
273 }
274
275
276
277
278 // Helper Functions (only) for this class:
279 TObjArray* SelectHighestPInMCArray(TObjArray* BTArray);
280
281 Bool_t CheckInput();
282 void SetRecoMode(Int_t RecoMode);
283
285 Bool_t CheckPairDuplications(Int_t SegPID,Int_t SegID,Int_t Seg2PID,Int_t Seg2ID,TArrayI* SegmentPIDArray,TArrayI* SegmentIDArray,TArrayI* Segment2PIDArray,TArrayI* Segment2IDArray, Int_t RecoShowerArrayN);
286 Double_t CalcIP(EdbSegP *s, double x, double y, double z);
287 Double_t CalcIP(EdbSegP *s, EdbVertex *v);
289
290 Bool_t FindPairsPreselected(EdbSegP* InitiatorBT, EdbPVRec* eAli_Sub);
291 TObjArray* FindPairs(EdbSegP* InBT, EdbPVRec* eAli_Sub);
292 TObjArray* CheckCleanPairs(EdbSegP* InBT, TObjArray* RecoShowerArrayFromFindPairs);
294
295 void FillANNTree( TObjArray* RecoShowerArray, EdbSegP* Inbt);
296 void CreateANNPair();
297 void ReloadANNs(Int_t RecoMode);
298 void CreateANNPlots();
299
300 // Main functions for using this ShowerAlgorithm Object.
301 // Structure is made similar to OpRelease, where
302 // Initialize, Execute, Finalize
303 // give the three columns of the whole thing.
304 void Initialize();
305 void Execute();
306 void Finalize();
307
308 ClassDef(EdbShowerAlg_GS,1); // Root Class Definition for my Objects
309};
310
311//______________________________________________________________________________
312
313
314
315
316
323class EdbShowerAlgESimple : public TObject {
324
325private:
326
327 // nothing;
328
329protected:
330
331 // TObjArray storing Reconstructed Showers:
333 Int_t eRecoShowerArrayN;// nothing...
335
336 // Variables related for calculation Issues
339
341 // = switch wheter to take the weightfile trained for the next longer/or next shower number of plates...
342
344 // either equal to shower->Npl() or is fixed manually.
345
347 // = generic weightFileString.
348
349 // Array for the specific specification: see GetSpecifications() for explanation...
355
356 // Generic Input Array:
357 // This Plate Binnning is the _final_binning and will not be refined furthermore!
358 Int_t ePlateBinning[15];
359
360 // Generic Input Arrays for the ANN:
361 TMultiLayerPerceptron *ANN_MLP;
362 TMultiLayerPerceptron *ANN_MLP_ARRAY[15];
363 TTree *ANNTree;
364 Double_t inANN[70];
365 Double_t outANN;
369 TString ANN_Layout;
371
372 // Generic Correction factors:
373 Float_t eANN_MLP_CORR_0[15];
374 Float_t eANN_MLP_CORR_1[15];
375
376 // Dammit! On some architecures (pc56 in Bern, for example) this structure stuff
377 // gives a crash, sometimes. Lets try it with simple Private Variables:
378 // (though now I know the reason was different to it..)
386
399
400 // Efficiency/Angle parametrisation functions
408
409 // Efficiency/Angle parametrisation function,
410 // obtained from the data; either by EDA, or to be set by
411 // hand (nseg-2/npl-2)
413
414 // Variables for the output:
415 TArrayF* eEnergyArray;
418 Float_t eEnergy;
419 Float_t eEnergyCorr;
422
424
425 // Splines for calculation the interpolation of stat. and sys. errors:
430 TSpline3* eSplineCurrent;
431
432
433 // Reset All Default Variables:
434 void Set0();
435 void Init();
436
437
438public:
439
441 // EdbShowAlgE_Simple(EdbShowerP* shower); // in libShowRec
444
445 virtual ~EdbShowerAlgESimple();
446
447 // Hand over eAli eInBTArray from EdbShowerRec
448 inline void SetRecoShowerArray(TObjArray* RecoShowerArray) {
450 eRecoShowerArrayN=eRecoShowerArray->GetEntriesFast();
451 }
452 inline void SetRecoShowerArrayN(Int_t RecoShowerArrayN) {
453 eRecoShowerArrayN=RecoShowerArrayN;
454 }
455 inline Int_t GetRecoShowerArrayN() const {
456 return eRecoShowerArrayN;
457 }
458 inline TArrayF* GetEnergyArray() {
459 return eEnergyArray;
460 }
461 inline TArrayF* GetEnergyArrayUnCorrected() {
463 }
464 inline Float_t GetEnergy() {
465 return eEnergy;
466 }
467 inline Float_t GetEnergy(EdbTrackP* track) {
468 return track->P();
469 }
470
471 // Get Track Parametrisation variables which is input for the ANN calculation
472 void GetPara(EdbTrackP* track);
473
474 // Get Efficiency/Angle parametrisation functions
475 inline TF1* GetEffFunc_all() {
476 return EffFunc_all;
477 }
478 inline TF1* GetEffFunc_edefault() {
479 return EffFunc_edefault;
480 }
481 inline TF1* GetEffFunc_elletroni() {
482 return EffFunc_elletroni;
483 }
484 inline TF1* GetEffFunc_neuchmicro() {
485 return EffFunc_neuchmicro;
486 }
487 inline TF1* GetEffFunc_MiddleFix() {
488 return EffFunc_MiddleFix;
489 }
490 inline TF1* GetEffFunc_LowEff() {
491 return EffFunc_LowEff;
492 }
495 }
496
497 inline TMultiLayerPerceptron* GetNeuralNetwork(Int_t ANNType=0) {
498 if (ANNType>=15) ANNType=14;
499 return ANN_MLP_ARRAY[ANNType];
500 }
501
502 inline void TrainNeuralNetwork(TString weight, Int_t ANNType=0) {
503 if (ANNType>=15) ANNType=14;
504 ANN_MLP_ARRAY[ANNType]->Train(100);
505 return;
506 }
507
508 inline void DumpNeuralNetworkWeight(TString weight, Int_t ANNType=0) {
509 if (ANNType>=15) ANNType=14;
510 ANN_MLP_ARRAY[ANNType]->DumpWeights(weight);
511 return;
512 }
513
514 inline void SetCalibrationOffset(Float_t CalibrationOffset) {
515 eCalibrationOffset=CalibrationOffset;
516 }
517 inline void SetCalibrationSlope(Float_t CalibrationSlope) {
518 eCalibrationSlope=CalibrationSlope;
519 }
520
521 inline void SetPlateNumberType(Int_t PlateNumberType) {
522 ePlateNumberType=PlateNumberType;
523 }
524 inline void SetPlateNumber (Int_t PlateNumber) {
525 ePlateNumber=PlateNumber;
526 }
527 inline Int_t GetSpecType(Int_t SpecificationType) {
528 return eSpecificationType[SpecificationType];
529 }
532 }
535 }
536
537 void SetEfficiencyParametrisationValues(Double_t* Angles, Double_t* EffValuesAtAngles);
538
539 inline void SetEfficiencyParametrisation(TSpline3* EfficiencyParametrisation) {
540 eEfficiencyParametrisation=EfficiencyParametrisation;
541 EfficiencyParametrisation->Print();
542 }
543 inline TSpline3* GetEfficiencyParametrisation() {
545 }
548
549 void SetWeightFileString(TString weightstring);
550 void InitStrings();
551
552 Int_t FindClosestEfficiencyParametrization(Double_t TestAngle,Double_t ReferenceEff);
553
554 void GetNplIndexNr(Int_t sh_npl,Int_t &check_Npl_index, Int_t ePlateNumberType);
555
556 void GetSpecifications();
557 void SetSpecifications(Int_t sp0, Int_t sp1, Int_t sp2, Int_t sp3, Int_t sp4, Int_t sp5);
558 void SetSpecificationType(Int_t SpecificationType, Int_t SpecificationTypeVal);
559
560 void PrintSpecifications();
562 void ReadCorrectionFactors(TString weigthstring, Float_t &p0, Float_t &p1);
563
564 void CreateANN();
565
566 void Update();
567 void DoRun();
568 void DoRun(TObjArray* trackarray);
569 void DoRun(EdbTrackP* shower);
570
571 void ReadTables();
572 void ReadTables_Energy();
573 //void ReadTables_ID(); // to be implemented...
574
575
576 inline void WriteNewRootFile() {
577 WriteNewRootFile("Shower.root","treebranch");
578 }
579 inline void WriteNewRootFile(TString sourcefilename) {
580 WriteNewRootFile(sourcefilename,"treebranch");
581 }
582 void WriteNewRootFile(TString sourcefilename, TString treename);
583
584 void Print();
585 void Help();
586 ClassDef(EdbShowerAlgESimple,1); // Root Class Definition for my Objects
587};
588
589
590
591//______________________________________________________________________________
592//___
593//___ Declaration of EdbShowerAlgIDSimple Class:
594//______________________________________________________________________________
595
597
598private:
599
600 // nothing;
601
602protected:
603
604 // Variables for the output:
607 // Type for the ID cut: 0: BestMinDist to (1,1) in the ROI curve
608 // Type for the ID cut: 1: ca. 90% eff
609 // Type for the ID cut: 2: ca. 1% cont.
610 Double_t eIDCutTypeValue[3];
611
612public:
613
615 // EdbShowerAlgIDSimple(EdbShowerP* shower); // in libShowRec
616 EdbShowerAlgIDSimple(EdbTrackP* track); // in libShower
618 EdbShowerAlgIDSimple(EdbTrackP* track, EdbVertex* vtx); // in libShower
619 EdbShowerAlgIDSimple(TObjArray* RecoShowerArray, TObjArray* VtxArray);
620
621 virtual ~EdbShowerAlgIDSimple();
622
623 void Init();
624
625 inline void SetANNIDCutValue(Double_t ANNIDCutValue) {
626 eANNIDCutValue=ANNIDCutValue;
627 }
628 void SetSpecificationType(Int_t SpecificationType, Int_t SpecificationTypeVal);
629 void PrintSpecifications();
630
631 void CreateANN();
632
633 void Update();
634 void InitStrings();
635
636 void ReadTables();
637 void ReadTables_ID(); // to be implemented...
638
639 void DoRun(EdbTrackP*);
640 void DoRun(TObjArray* trackarray);
641 void DoRun();
642
643 Int_t DetermineIDType(Double_t val, Int_t SpecificationType);
644 Int_t DetermineIDFlag(Int_t IDType);
645
646 void Print();
647 void Help();
648 ClassDef(EdbShowerAlgIDSimple,1); // Root Class Definition for my Objects
649};
650
651#endif /* ROOT_EdbShowerAlg */
TObjArray * RecoShowerArray
Definition: Shower_E_FromShowerRoot.C:12
Definition: EdbPVRec.h:148
Int_t Npatterns() const
Definition: EdbPattern.h:366
Definition: EdbSegP.h:21
Definition: EdbShowerAlg.h:323
Float_t eANN_MLP_CORR_0[15]
Definition: EdbShowerAlg.h:373
Int_t eSpecificationType[7]
Definition: EdbShowerAlg.h:350
void SetForceSpecificationReload()
Definition: EdbShowerAlg.h:530
Int_t eEnergyArrayCount
Definition: EdbShowerAlg.h:423
TF1 * GetEffFunc_all()
Definition: EdbShowerAlg.h:475
TF1 * EffFunc_elletroni
Definition: EdbShowerAlg.h:403
void PrintEfficiencyParametrisation()
Definition: EdbShowerAlg.cxx:3898
void SetEfficiencyParametrisationAngles()
Definition: EdbShowerAlg.cxx:4073
void GetPara(EdbTrackP *track)
Definition: EdbShowerAlg.cxx:3301
TH1D * eHisto_longprofile
Definition: EdbShowerAlg.h:395
void GetNplIndexNr(Int_t sh_npl, Int_t &check_Npl_index, Int_t ePlateNumberType)
Definition: EdbShowerAlg.cxx:2993
Bool_t eForceSpecificationReload
Definition: EdbShowerAlg.h:354
TF1 * GetEffFunc_elletroni()
Definition: EdbShowerAlg.h:481
TArrayF * GetEnergyArray()
Definition: EdbShowerAlg.h:458
void CreateANN()
Definition: EdbShowerAlg.cxx:2691
Float_t eParaShowerAxisAngle
Definition: EdbShowerAlg.h:379
TF1 * EffFunc_MiddleFix
Definition: EdbShowerAlg.h:405
TString ANN_Layout
Definition: EdbShowerAlg.h:369
TF1 * GetEffFunc_LowEff()
Definition: EdbShowerAlg.h:490
Double_t inANN[70]
Definition: EdbShowerAlg.h:364
TTree * ANNTree
Definition: EdbShowerAlg.h:363
void ReadTables()
Definition: EdbShowerAlg.cxx:3915
void ReadCorrectionFactors(TString weigthstring, Float_t &p0, Float_t &p1)
Definition: EdbShowerAlg.cxx:3625
Int_t ePlateBinning[15]
Definition: EdbShowerAlg.h:358
void LoadSpecificationWeightFile()
Definition: EdbShowerAlg.cxx:3134
TMultiLayerPerceptron * GetNeuralNetwork(Int_t ANNType=0)
Definition: EdbShowerAlg.h:497
void SetWeightFileString(TString weightstring)
Definition: EdbShowerAlg.cxx:2984
Float_t eParaBT_deltaR_mean
Definition: EdbShowerAlg.h:381
TArrayF * eEnergyArray
Definition: EdbShowerAlg.h:415
void SetPlateNumberType(Int_t PlateNumberType)
Definition: EdbShowerAlg.h:521
TH1D * eHisto_deltaT
Definition: EdbShowerAlg.h:398
Int_t ANN_n_InputNeurons
Definition: EdbShowerAlg.h:368
Int_t ePlateNumberType
Definition: EdbShowerAlg.h:340
void UnSetForceSpecificationReload()
Definition: EdbShowerAlg.h:533
TSpline3 * GetEfficiencyParametrisation()
Definition: EdbShowerAlg.h:543
void GetSpecifications()
Definition: EdbShowerAlg.cxx:3101
void WriteNewRootFile()
Definition: EdbShowerAlg.h:576
TObjArray * eSplineArray_Energy_Stat_Gamma
Definition: EdbShowerAlg.h:427
Float_t eCalibrationOffset
Definition: EdbShowerAlg.h:337
Float_t GetEnergy(EdbTrackP *track)
Definition: EdbShowerAlg.h:467
TF1 * EffFunc_neuchmicro
Definition: EdbShowerAlg.h:404
void InitStrings()
Definition: EdbShowerAlg.cxx:2670
TF1 * GetEffFunc_UserEfficiency()
Definition: EdbShowerAlg.h:493
void SetRecoShowerArrayN(Int_t RecoShowerArrayN)
Definition: EdbShowerAlg.h:452
TObjArray * eSplineArray_Energy_Sys_Electron
Definition: EdbShowerAlg.h:428
Float_t eParaBT_deltaT_mean
Definition: EdbShowerAlg.h:383
void Init()
Definition: EdbShowerAlg.cxx:2573
Float_t eEnergySigmaCorr
Definition: EdbShowerAlg.h:421
virtual ~EdbShowerAlgESimple()
virtual constructor due to inherited class
Definition: EdbShowerAlg.cxx:2507
void Help()
Definition: EdbShowerAlg.cxx:3879
TH1D * eHisto_nbtk
Definition: EdbShowerAlg.h:394
TObjArray * eSplineArray_Energy_Sys_Gamma
Definition: EdbShowerAlg.h:429
Float_t eEnergy
Definition: EdbShowerAlg.h:418
TF1 * GetEffFunc_edefault()
Definition: EdbShowerAlg.h:478
Int_t ANN_n_InputNeurons_ARRAY[15]
Definition: EdbShowerAlg.h:367
TH1D * eHisto_deltaR
Definition: EdbShowerAlg.h:397
Bool_t eSpecificationIsChanged
Definition: EdbShowerAlg.h:353
void WriteNewRootFile(TString sourcefilename)
Definition: EdbShowerAlg.h:579
Int_t ePlateNumber
Definition: EdbShowerAlg.h:343
Float_t eANN_MLP_CORR_1[15]
Definition: EdbShowerAlg.h:374
TSpline3 * eSplineCurrent
Definition: EdbShowerAlg.h:430
TH1D * eHisto_transprofile_av
Definition: EdbShowerAlg.h:389
void DoRun()
Definition: EdbShowerAlg.cxx:2730
TF1 * GetEffFunc_neuchmicro()
Definition: EdbShowerAlg.h:484
Float_t GetEnergy()
Definition: EdbShowerAlg.h:464
TSpline3 * eEfficiencyParametrisation
Definition: EdbShowerAlg.h:412
Double_t outANN
Definition: EdbShowerAlg.h:365
void SetRecoShowerArray(TObjArray *RecoShowerArray)
Definition: EdbShowerAlg.h:448
TMultiLayerPerceptron * ANN_MLP_ARRAY[15]
Definition: EdbShowerAlg.h:362
void Set0()
Definition: EdbShowerAlg.cxx:2529
Int_t eParaName
Definition: EdbShowerAlg.h:334
TH1D * eHisto_transprofile
Definition: EdbShowerAlg.h:396
void Print()
Definition: EdbShowerAlg.cxx:3652
Int_t FindClosestEfficiencyParametrization(Double_t TestAngle, Double_t ReferenceEff)
Definition: EdbShowerAlg.cxx:2933
Float_t eCalibrationSlope
Definition: EdbShowerAlg.h:338
Int_t eParanseg
Definition: EdbShowerAlg.h:380
Float_t eParaBT_deltaT_rms
Definition: EdbShowerAlg.h:384
void SetSpecificationType(Int_t SpecificationType, Int_t SpecificationTypeVal)
Definition: EdbShowerAlg.cxx:3160
TArrayF * eEnergyArraySigmaCorrected
Definition: EdbShowerAlg.h:417
Float_t eEnergyCorr
Definition: EdbShowerAlg.h:419
TH1D * eHisto_nbtk_av
Definition: EdbShowerAlg.h:387
TF1 * GetEffFunc_MiddleFix()
Definition: EdbShowerAlg.h:487
void SetSpecifications(Int_t sp0, Int_t sp1, Int_t sp2, Int_t sp3, Int_t sp4, Int_t sp5)
Definition: EdbShowerAlg.cxx:3143
TH1D * eHisto_deltaT_rms
Definition: EdbShowerAlg.h:393
TMultiLayerPerceptron * ANN_MLP
Definition: EdbShowerAlg.h:361
TObjArray * eSplineArray_Energy_Stat_Electron
Definition: EdbShowerAlg.h:426
void SetCalibrationSlope(Float_t CalibrationSlope)
Definition: EdbShowerAlg.h:517
TH1D * eHisto_longprofile_av
Definition: EdbShowerAlg.h:388
TArrayF * GetEnergyArrayUnCorrected()
Definition: EdbShowerAlg.h:461
Int_t ANN_nPlates_ARRAY[15]
Definition: EdbShowerAlg.h:366
TH1D * eHisto_deltaT_mean
Definition: EdbShowerAlg.h:391
void PrintSpecifications()
Definition: EdbShowerAlg.cxx:3108
Int_t GetRecoShowerArrayN() const
Definition: EdbShowerAlg.h:455
TH1D * eHisto_deltaR_rms
Definition: EdbShowerAlg.h:392
void ReadTables_Energy()
Definition: EdbShowerAlg.cxx:3927
Float_t eParaBT_deltaR_rms
Definition: EdbShowerAlg.h:382
TString eSpecificationTypeStringArray[7][7]
Definition: EdbShowerAlg.h:352
Int_t eParalongprofile[57]
Definition: EdbShowerAlg.h:385
TArrayF * eEnergyArrayUnCorrected
Definition: EdbShowerAlg.h:416
Float_t eEnergyUnCorr
Definition: EdbShowerAlg.h:420
TString ANN_WeightFile_ARRAY[15]
Definition: EdbShowerAlg.h:370
EdbShowerAlgESimple()
Definition: EdbShowerAlg.cxx:2450
TF1 * EffFunc_UserEfficiency
Definition: EdbShowerAlg.h:407
ClassDef(EdbShowerAlgESimple, 1)
TString eSpecificationTypeString[7]
Definition: EdbShowerAlg.h:351
void SetEfficiencyParametrisationValues(Double_t *Angles, Double_t *EffValuesAtAngles)
Definition: EdbShowerAlg.cxx:4081
TString eWeightFileString
Definition: EdbShowerAlg.h:346
Int_t GetSpecType(Int_t SpecificationType)
Definition: EdbShowerAlg.h:527
TObjArray * eRecoShowerArray
Definition: EdbShowerAlg.h:332
TF1 * EffFunc_all
Definition: EdbShowerAlg.h:401
void DumpNeuralNetworkWeight(TString weight, Int_t ANNType=0)
Definition: EdbShowerAlg.h:508
TF1 * EffFunc_LowEff
Definition: EdbShowerAlg.h:406
TH1D * eHisto_deltaR_mean
Definition: EdbShowerAlg.h:390
void Update()
Definition: EdbShowerAlg.cxx:3189
void SetEfficiencyParametrisation(TSpline3 *EfficiencyParametrisation)
Definition: EdbShowerAlg.h:539
TF1 * EffFunc_edefault
Definition: EdbShowerAlg.h:402
void SetCalibrationOffset(Float_t CalibrationOffset)
Definition: EdbShowerAlg.h:514
void TrainNeuralNetwork(TString weight, Int_t ANNType=0)
Definition: EdbShowerAlg.h:502
void SetPlateNumber(Int_t PlateNumber)
Definition: EdbShowerAlg.h:524
Int_t eRecoShowerArrayN
Definition: EdbShowerAlg.h:333
Definition: EdbShowerAlg.h:596
Double_t eIDCutTypeValue[3]
Definition: EdbShowerAlg.h:610
void ReadTables_ID()
Definition: EdbShowerAlg.cxx:4243
void Help()
Definition: EdbShowerAlg.cxx:4269
void InitStrings()
Definition: EdbShowerAlg.cxx:4556
void SetANNIDCutValue(Double_t ANNIDCutValue)
Definition: EdbShowerAlg.h:625
ClassDef(EdbShowerAlgIDSimple, 1)
void Print()
Definition: EdbShowerAlg.cxx:4259
void ReadTables()
Definition: EdbShowerAlg.cxx:4232
void Init()
Definition: EdbShowerAlg.cxx:4458
virtual ~EdbShowerAlgIDSimple()
virtual constructor due to inherited class
Definition: EdbShowerAlg.cxx:4209
Int_t DetermineIDFlag(Int_t IDType)
Definition: EdbShowerAlg.cxx:4782
void SetSpecificationType(Int_t SpecificationType, Int_t SpecificationTypeVal)
Definition: EdbShowerAlg.cxx:4279
EdbShowerAlgIDSimple()
Definition: EdbShowerAlg.cxx:4121
void DoRun()
Definition: EdbShowerAlg.cxx:4807
Int_t DetermineIDType(Double_t val, Int_t SpecificationType)
Definition: EdbShowerAlg.cxx:4770
Double_t eIDEnergySigmaCorr
Definition: EdbShowerAlg.h:605
Double_t eANNIDCutValue
Definition: EdbShowerAlg.h:606
void Update()
Definition: EdbShowerAlg.cxx:4304
void CreateANN()
Definition: EdbShowerAlg.cxx:4591
void PrintSpecifications()
Definition: EdbShowerAlg.cxx:4857
Definition: EdbShowerAlg.h:191
void SetCleanPairs(Bool_t CleanPairs)
Definition: EdbShowerAlg.h:267
void Finalize()
Definition: EdbShowerAlg.cxx:2380
TObjArray * SelectHighestPInMCArray(TObjArray *BTArray)
Definition: EdbShowerAlg.cxx:1174
Int_t GetInVtxArrayN() const
Definition: EdbShowerAlg.h:256
Bool_t eInVtxArraySet
Definition: EdbShowerAlg.h:197
void SetFindPairsPreselected(Bool_t FindPairsPreselected)
Definition: EdbShowerAlg.h:263
Bool_t eSetCleanPairs
Definition: EdbShowerAlg.h:210
void SetRecoMode(Int_t RecoMode)
Definition: EdbShowerAlg.cxx:1325
void CreateANNPair()
Definition: EdbShowerAlg.cxx:902
TObjArray * CheckCleanPairs(EdbSegP *InBT, TObjArray *RecoShowerArrayFromFindPairs)
Definition: EdbShowerAlg.cxx:2184
virtual ~EdbShowerAlg_GS()
Definition: EdbShowerAlg.cxx:746
void SetInVtxArray(TObjArray *InVtxArray)
Definition: EdbShowerAlg.h:248
void Convert_InVtxArray_To_InBTArray()
Definition: EdbShowerAlg.cxx:1067
TObjArray * GetInVtxArray() const
Definition: EdbShowerAlg.h:259
ClassDef(EdbShowerAlg_GS, 1)
void Init()
Definition: EdbShowerAlg.cxx:811
Float_t eValueGSNN_var02
Definition: EdbShowerAlg.h:225
TArrayI * eSegment2PIDArray
Definition: EdbShowerAlg.h:236
TMultiLayerPerceptron * eANNPairCaseC
Definition: EdbShowerAlg.h:219
Int_t eInVtxArrayN
Definition: EdbShowerAlg.h:196
TMultiLayerPerceptron * eANNPairCaseB
Definition: EdbShowerAlg.h:218
Bool_t CheckPairDuplications(Int_t SegPID, Int_t SegID, Int_t Seg2PID, Int_t Seg2ID, TArrayI *SegmentPIDArray, TArrayI *SegmentIDArray, TArrayI *Segment2PIDArray, TArrayI *Segment2IDArray, Int_t RecoShowerArrayN)
Definition: EdbShowerAlg.cxx:1158
Float_t eANNPairCut[3]
Definition: EdbShowerAlg.h:221
Int_t eRecoMode
Definition: EdbShowerAlg.h:204
TMultiLayerPerceptron * eANNPair
Definition: EdbShowerAlg.h:216
Bool_t CheckInput()
Definition: EdbShowerAlg.cxx:1245
void Set0()
Definition: EdbShowerAlg.cxx:756
void CreateANNPlots()
Definition: EdbShowerAlg.cxx:2342
Bool_t eFindPairsPreselected
Definition: EdbShowerAlg.h:201
Float_t eValueGSNN_var05
Definition: EdbShowerAlg.h:228
Float_t eValueGSNN_var03
Definition: EdbShowerAlg.h:226
Bool_t eCutModeFull
Definition: EdbShowerAlg.h:206
void ReloadANNs(Int_t RecoMode)
Definition: EdbShowerAlg.cxx:993
TArrayI * eSegment2IDArray
Definition: EdbShowerAlg.h:237
TObjArray * FindPairs(EdbSegP *InBT, EdbPVRec *eAli_Sub)
Definition: EdbShowerAlg.cxx:1751
TTree * eANNPairTree
Definition: EdbShowerAlg.h:220
Float_t eValueGSNN_var04
Definition: EdbShowerAlg.h:227
EdbShowerAlg_GS()
Definition: EdbShowerAlg.cxx:702
void SetInVtx(EdbVertex *vtx)
Definition: EdbShowerAlg.cxx:1031
void Execute()
Definition: EdbShowerAlg.cxx:1378
void Initialize()
Definition: EdbShowerAlg.cxx:1023
void FillANNTree(TObjArray *RecoShowerArray, EdbSegP *Inbt)
Definition: EdbShowerAlg.cxx:2245
TArrayI * eSegmentPIDArray
Definition: EdbShowerAlg.h:234
TArrayI * eSegmentIDArray
Definition: EdbShowerAlg.h:235
void SetCutModeFull(Bool_t CutModeFull)
Definition: EdbShowerAlg.h:271
Double_t CalcIP(EdbSegP *s, double x, double y, double z)
Definition: EdbShowerAlg.cxx:2387
Float_t eValueGSNN_var01
Definition: EdbShowerAlg.h:224
Float_t eValueGSNN_var00
Definition: EdbShowerAlg.h:223
Float_t eValueGSNN_varOutput
Definition: EdbShowerAlg.h:231
TMultiLayerPerceptron * eANNPairCaseA
Definition: EdbShowerAlg.h:217
Float_t eValueGSNN_var06
Definition: EdbShowerAlg.h:229
void AddInVtx(EdbVertex *vtx)
Definition: EdbShowerAlg.cxx:1050
Float_t eValueGSNN_varInput
Definition: EdbShowerAlg.h:230
Bool_t IsPossibleFakeDoublet(EdbSegP *s1, EdbSegP *s2)
Definition: EdbShowerAlg.cxx:2421
Bool_t FindPairsPreselected(EdbSegP *InitiatorBT, EdbPVRec *eAli_Sub)
Definition: EdbShowerAlg.cxx:1674
TObjArray * eInVtxArray
Definition: EdbShowerAlg.h:195
Root Class Definition for my Objects.
Definition: EdbShowerAlg.h:30
ClassDef(EdbShowerAlg, 1)
TObjArray * eRecoShowerArray
Definition: EdbShowerAlg.h:59
void PrintAll()
Definition: EdbShowerAlg.cxx:541
void SetEdbPVRec(EdbPVRec *Ali)
Definition: EdbShowerAlg.h:95
TString eParaString[10]
Definition: EdbShowerAlg.h:42
Int_t eAlgValue
Definition: EdbShowerAlg.h:40
Double_t DeltaR_WithPropagation(EdbSegP *s, EdbSegP *stest)
Definition: EdbShowerAlg.cxx:577
void SetUseAliSub(Bool_t UseAliSub)
Definition: EdbShowerAlg.h:136
void PrintRecoShowerArray()
Definition: EdbShowerAlg.cxx:505
void AddRecoShowerArray(TObjArray *RecoShowerArray)
Definition: EdbShowerAlg.cxx:108
void Set0()
Definition: EdbShowerAlg.cxx:53
Int_t eAliNpat
Definition: EdbShowerAlg.h:49
Int_t eNumberPlate_eAliPID
Definition: EdbShowerAlg.h:57
Int_t eMiddlePlate_eAliPID
Definition: EdbShowerAlg.h:56
Double_t GetSpatialDist(EdbSegP *s1, EdbSegP *s2)
Definition: EdbShowerAlg.cxx:633
void PrintParameters()
Definition: EdbShowerAlg.cxx:471
TString GetAlgName() const
Definition: EdbShowerAlg.h:126
Double_t DeltaThetaSingleAngles(EdbSegP *s1, EdbSegP *s2)
Definition: EdbShowerAlg.cxx:625
void SetInBTArray(TObjArray *InBTArray)
Definition: EdbShowerAlg.h:99
Double_t DeltaR_WithoutPropagation(EdbSegP *s, EdbSegP *stest)
Definition: EdbShowerAlg.cxx:567
EdbPVRec * eAli
Definition: EdbShowerAlg.h:48
Int_t eLastPlate_eAliPID
Definition: EdbShowerAlg.h:55
EdbTrackP * eRecoShower
Definition: EdbShowerAlg.h:74
void SetEdbPVRecPIDNumbers(Int_t FirstPlate_eAliPID, Int_t LastPlate_eAliPID, Int_t MiddlePlate_eAliPID, Int_t NumberPlate_eAliPID)
Definition: EdbShowerAlg.h:103
void SetRecoShowerArray(TObjArray *RecoShowerArray)
Definition: EdbShowerAlg.h:109
TString eAlgName
Definition: EdbShowerAlg.h:39
void Transform_eAli(EdbSegP *InitiatorBT, Float_t ExtractSize)
Definition: EdbShowerAlg.cxx:137
Int_t eUseAliSub
Definition: EdbShowerAlg.h:67
Float_t eParaValue[10]
Definition: EdbShowerAlg.h:41
Double_t GetMinimumDist(EdbSegP *seg1, EdbSegP *seg2)
Definition: EdbShowerAlg.cxx:651
void SetRecoShowerArrayN(Int_t RecoShowerArrayN)
Definition: EdbShowerAlg.h:113
Int_t eFirstPlate_eAliPID
Definition: EdbShowerAlg.h:54
virtual void Execute()
Definition: EdbShowerAlg.cxx:439
TObjArray * GetRecoShowerArray() const
Definition: EdbShowerAlg.h:132
Int_t eInBTArrayN
Definition: EdbShowerAlg.h:52
Double_t DeltaThetaComponentwise(EdbSegP *s1, EdbSegP *s2)
Definition: EdbShowerAlg.cxx:611
void SetActualAlgParameterset(Int_t ActualAlgParametersetNr)
Definition: EdbShowerAlg.h:119
virtual void Initialize()
Definition: EdbShowerAlg.cxx:432
void PrintMore()
Definition: EdbShowerAlg.cxx:494
void Print()
Definition: EdbShowerAlg.cxx:457
Int_t eAli_SubNpat
Definition: EdbShowerAlg.h:64
Int_t GetAlgValue() const
Definition: EdbShowerAlg.h:123
Double_t DeltaTheta(EdbSegP *s1, EdbSegP *s2)
Definition: EdbShowerAlg.cxx:595
Bool_t eDebug
Definition: EdbShowerAlg.h:80
void SetDebug()
Definition: EdbShowerAlg.h:170
void SetParameter(Int_t parNr, Float_t parvalue)
Definition: EdbShowerAlg.cxx:82
void SetParameters(Float_t *par)
Definition: EdbShowerAlg.cxx:94
Int_t eActualAlgParametersetNr
Used when more sets of same algorithm.
Definition: EdbShowerAlg.h:43
virtual ~EdbShowerAlg()
virtual constructor due to inherited class
Definition: EdbShowerAlg.cxx:44
void Convert_EdbPVRec_To_InBTArray()
Definition: EdbShowerAlg.cxx:1116
Int_t eRecoShowerArrayN
Definition: EdbShowerAlg.h:60
void PrintParametersShort()
Definition: EdbShowerAlg.cxx:484
Bool_t IsInConeTube(EdbSegP *sTest, EdbSegP *sStart, Double_t CylinderRadius, Double_t ConeAngle)
Definition: EdbShowerAlg.cxx:285
Int_t GetRecoShowerArrayN() const
Definition: EdbShowerAlg.h:129
virtual void Finalize()
Definition: EdbShowerAlg.cxx:449
EdbPVRec * eAli_Sub
Definition: EdbShowerAlg.h:63
EdbVertex * CalcVertex(TObjArray *segments)
Definition: EdbShowerAlg.cxx:353
Double_t DeltaR_NoPropagation(EdbSegP *s, EdbSegP *stest)
Definition: EdbShowerAlg.cxx:556
TObjArray * eInBTArray
Definition: EdbShowerAlg.h:51
Definition: EdbPattern.h:113
Definition: EdbVertex.h:69
Definition: bitview.h:14
s
Definition: check_shower.C:55
EdbSegP * s1
Definition: tlg2couples.C:29
EdbSegP * s2
Definition: tlg2couples.C:30
Definition: AlignmentCint.cxx:51