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"
20 #include "EdbMomentumEstimator.h"
21 #include "EdbLog.h"
22 #include "EdbPattern.h"
23 #include "EdbSegP.h"
24 
25 // #include "EdbEDAUtil.h"
26 using namespace std;
27 
28 //______________________________________________________________________________
29 
30 class EdbShowerAlg : public TObject {
31 
32 private:
33 // nothing...
34 
35 protected:
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];
43  Int_t eActualAlgParametersetNr; // Used when more sets of same algorithm
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;
52  Int_t eInBTArrayN;
53  // Variables describing plate number cuts.
58  // TObjArray storing Reconstructed Showers:
59  TObjArray* eRecoShowerArray;
61 
62  // Transformed (smaller) EdbPVRec object:
64  Int_t eAli_SubNpat;
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.
67  Int_t eUseAliSub;
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 
83 public:
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(); // virtual constructor due to inherited class
92 
93 
94  // Hand over eAli eInBTArray from EdbShowerRec
95  inline void SetEdbPVRec( EdbPVRec* Ali ) {
96  eAli = Ali;
97  eAliNpat=eAli->Npatterns();
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) {
110  eRecoShowerArray=RecoShowerArray;
111  eRecoShowerArrayN=eRecoShowerArray->GetEntries();
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);
145  Double_t DeltaThetaComponentwise(EdbSegP* s1,EdbSegP* s2);
146  Double_t DeltaThetaSingleAngles(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);
156  void Convert_EdbPVRec_To_InBTArray();
157 
158  EdbVertex * CalcVertex(TObjArray *segments);
159 
160 
161  void Print();
162  void PrintParameters();
163  void PrintParametersShort();
164  void PrintRecoShowerArray();
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 
193 private:
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)
204  Int_t eRecoMode;
205  // Variable to set the ANN Cut on or off. Default = ON
206  Bool_t eCutModeFull;
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;
220  TTree* eANNPairTree;
221  Float_t eANNPairCut[3];
222  // Neural Network input feed variables
232 
233  // Arrays for double segment comparisons
235  TArrayI* eSegmentIDArray;
238 
239 
240 public:
241 
242  EdbShowerAlg_GS();
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 
263  inline void SetFindPairsPreselected(Bool_t FindPairsPreselected) {
264  eFindPairsPreselected = FindPairsPreselected;
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 
284  void Convert_InVtxArray_To_InBTArray();
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);
288  Bool_t IsPossibleFakeDoublet(EdbSegP* s1,EdbSegP* s2);
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);
293  TObjArray* FindPairsPreselected(EdbPVRec* eAli_Sub);
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 
317 
318 //______________________________________________________________________________
319 //___
320 //___ Declaration of EdbShowerAlgESimple Class:
321 //______________________________________________________________________________
322 
323 class EdbShowerAlgESimple : public TObject {
324 
325 private:
326 
327  // nothing;
328 
329 protected:
330 
331  // TObjArray storing Reconstructed Showers:
332  TObjArray* eRecoShowerArray;
333  Int_t eRecoShowerArrayN;// nothing...
334  Int_t eParaName;
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...
350  Int_t eSpecificationType[7];
351  TString eSpecificationTypeString[7];
352  TString eSpecificationTypeStringArray[7][7];
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;
366  Int_t ANN_nPlates_ARRAY[15];
367  Int_t ANN_n_InputNeurons_ARRAY[15];
369  TString ANN_Layout;
370  TString ANN_WeightFile_ARRAY[15];
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..)
380  Int_t eParanseg;
385  Int_t eParalongprofile[57];
386 
394  TH1D* eHisto_nbtk;
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;
420  Float_t eEnergyUnCorr;
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 
438 public:
439 
441  // EdbShowAlgE_Simple(EdbShowerP* shower); // in libShowRec
442  EdbShowerAlgESimple(EdbTrackP* track); // in libShower
444 
445  virtual ~EdbShowerAlgESimple(); // virtual constructor due to inherited class
446 
447  // Hand over eAli eInBTArray from EdbShowerRec
448  inline void SetRecoShowerArray(TObjArray* RecoShowerArray) {
449  eRecoShowerArray=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() {
462  return eEnergyArrayUnCorrected;
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  }
494  return EffFunc_UserEfficiency;
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  }
531  eForceSpecificationReload=kTRUE;
532  }
534  eForceSpecificationReload=kFALSE;
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() {
544  return eEfficiencyParametrisation;
545  }
546  void PrintEfficiencyParametrisation();
547  void SetEfficiencyParametrisationAngles();
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();
561  void LoadSpecificationWeightFile();
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 
598 private:
599 
600  // nothing;
601 
602 protected:
603 
604  // Variables for the output:
606  Double_t eANNIDCutValue;
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 
612 public:
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(); // virtual constructor due to inherited class
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 */
ShowerAlgEnergyInstance DoRun(track)
TObjArray * RecoShowerArray
Definition: Shower_E_FromShowerRoot.C:12
Double_t CalcIP(EdbSegP *s, EdbVertex *v)
Definition: ShowRec.cpp:8872
Double_t GetSpatialDist(EdbSegP *s1, EdbSegP *s2)
Definition: ShowRec.cpp:7276
EdbVertex * CalcVertex(TObjArray *segments)
Definition: ShowRec.cpp:9043
Double_t GetMinimumDist(EdbSegP *seg1, EdbSegP *seg2)
Definition: ShowRec.cpp:8581
Definition: EdbPVRec.h:148
Int_t Npatterns() const
Definition: EdbPattern.h:380
Definition: EdbSegP.h:18
Definition: EdbShowerAlg.h:323
TF1 * GetEffFunc_edefault()
Definition: EdbShowerAlg.h:478
void SetForceSpecificationReload()
Definition: EdbShowerAlg.h:530
Int_t eEnergyArrayCount
Definition: EdbShowerAlg.h:423
TF1 * EffFunc_elletroni
Definition: EdbShowerAlg.h:403
TH1D * eHisto_longprofile
Definition: EdbShowerAlg.h:395
Bool_t eForceSpecificationReload
Definition: EdbShowerAlg.h:354
Float_t eParaShowerAxisAngle
Definition: EdbShowerAlg.h:379
TF1 * EffFunc_MiddleFix
Definition: EdbShowerAlg.h:405
TString ANN_Layout
Definition: EdbShowerAlg.h:369
TTree * ANNTree
Definition: EdbShowerAlg.h:363
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
TMultiLayerPerceptron * GetNeuralNetwork(Int_t ANNType=0)
Definition: EdbShowerAlg.h:497
void UnSetForceSpecificationReload()
Definition: EdbShowerAlg.h:533
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 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
TArrayF * GetEnergyArrayUnCorrected()
Definition: EdbShowerAlg.h:461
Float_t eEnergySigmaCorr
Definition: EdbShowerAlg.h:421
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_LowEff()
Definition: EdbShowerAlg.h:490
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
TF1 * GetEffFunc_elletroni()
Definition: EdbShowerAlg.h:481
TSpline3 * eSplineCurrent
Definition: EdbShowerAlg.h:430
TH1D * eHisto_transprofile_av
Definition: EdbShowerAlg.h:389
Float_t GetEnergy()
Definition: EdbShowerAlg.h:464
TSpline3 * eEfficiencyParametrisation
Definition: EdbShowerAlg.h:412
Double_t outANN
Definition: EdbShowerAlg.h:365
TF1 * GetEffFunc_UserEfficiency()
Definition: EdbShowerAlg.h:493
void SetRecoShowerArray(TObjArray *RecoShowerArray)
Definition: EdbShowerAlg.h:448
TF1 * GetEffFunc_neuchmicro()
Definition: EdbShowerAlg.h:484
Int_t eParaName
Definition: EdbShowerAlg.h:334
TSpline3 * GetEfficiencyParametrisation()
Definition: EdbShowerAlg.h:543
TH1D * eHisto_transprofile
Definition: EdbShowerAlg.h:396
Float_t eCalibrationSlope
Definition: EdbShowerAlg.h:338
Int_t eParanseg
Definition: EdbShowerAlg.h:380
Float_t eParaBT_deltaT_rms
Definition: EdbShowerAlg.h:384
TArrayF * GetEnergyArray()
Definition: EdbShowerAlg.h:458
TArrayF * eEnergyArraySigmaCorrected
Definition: EdbShowerAlg.h:417
TF1 * GetEffFunc_MiddleFix()
Definition: EdbShowerAlg.h:487
Float_t eEnergyCorr
Definition: EdbShowerAlg.h:419
TH1D * eHisto_nbtk_av
Definition: EdbShowerAlg.h:387
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
TH1D * eHisto_deltaT_mean
Definition: EdbShowerAlg.h:391
Int_t GetRecoShowerArrayN() const
Definition: EdbShowerAlg.h:455
TH1D * eHisto_deltaR_rms
Definition: EdbShowerAlg.h:392
Float_t eParaBT_deltaR_rms
Definition: EdbShowerAlg.h:382
TArrayF * eEnergyArrayUnCorrected
Definition: EdbShowerAlg.h:416
Float_t eEnergyUnCorr
Definition: EdbShowerAlg.h:420
TF1 * GetEffFunc_all()
Definition: EdbShowerAlg.h:475
TF1 * EffFunc_UserEfficiency
Definition: EdbShowerAlg.h:407
ClassDef(EdbShowerAlgESimple, 1)
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 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
void SetANNIDCutValue(Double_t ANNIDCutValue)
Definition: EdbShowerAlg.h:625
ClassDef(EdbShowerAlgIDSimple, 1)
Double_t eIDEnergySigmaCorr
Definition: EdbShowerAlg.h:605
Double_t eANNIDCutValue
Definition: EdbShowerAlg.h:606
Definition: EdbShowerAlg.h:191
void SetCleanPairs(Bool_t CleanPairs)
Definition: EdbShowerAlg.h:267
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 SetInVtxArray(TObjArray *InVtxArray)
Definition: EdbShowerAlg.h:248
ClassDef(EdbShowerAlg_GS, 1)
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
Int_t eRecoMode
Definition: EdbShowerAlg.h:204
TMultiLayerPerceptron * eANNPair
Definition: EdbShowerAlg.h:216
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
TArrayI * eSegment2IDArray
Definition: EdbShowerAlg.h:237
TTree * eANNPairTree
Definition: EdbShowerAlg.h:220
Float_t eValueGSNN_var04
Definition: EdbShowerAlg.h:227
TArrayI * eSegmentPIDArray
Definition: EdbShowerAlg.h:234
TArrayI * eSegmentIDArray
Definition: EdbShowerAlg.h:235
void SetCutModeFull(Bool_t CutModeFull)
Definition: EdbShowerAlg.h:271
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
TObjArray * GetInVtxArray() const
Definition: EdbShowerAlg.h:259
Float_t eValueGSNN_varInput
Definition: EdbShowerAlg.h:230
TObjArray * eInVtxArray
Definition: EdbShowerAlg.h:195
Definition: EdbShowerAlg.h:30
ClassDef(EdbShowerAlg, 1)
TObjArray * eRecoShowerArray
Definition: EdbShowerAlg.h:59
void SetEdbPVRec(EdbPVRec *Ali)
Definition: EdbShowerAlg.h:95
Int_t eAlgValue
Definition: EdbShowerAlg.h:40
void SetUseAliSub(Bool_t UseAliSub)
Definition: EdbShowerAlg.h:136
Int_t eAliNpat
Definition: EdbShowerAlg.h:49
Int_t eNumberPlate_eAliPID
Definition: EdbShowerAlg.h:57
Int_t eMiddlePlate_eAliPID
Definition: EdbShowerAlg.h:56
TString GetAlgName() const
Definition: EdbShowerAlg.h:126
void SetInBTArray(TObjArray *InBTArray)
Definition: EdbShowerAlg.h:99
TObjArray * GetRecoShowerArray() const
Definition: EdbShowerAlg.h:132
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
Int_t eUseAliSub
Definition: EdbShowerAlg.h:67
void SetRecoShowerArrayN(Int_t RecoShowerArrayN)
Definition: EdbShowerAlg.h:113
Int_t eFirstPlate_eAliPID
Definition: EdbShowerAlg.h:54
Int_t eInBTArrayN
Definition: EdbShowerAlg.h:52
void SetActualAlgParameterset(Int_t ActualAlgParametersetNr)
Definition: EdbShowerAlg.h:119
Int_t eAli_SubNpat
Definition: EdbShowerAlg.h:64
Int_t GetAlgValue() const
Definition: EdbShowerAlg.h:123
Bool_t eDebug
Definition: EdbShowerAlg.h:80
void SetDebug()
Definition: EdbShowerAlg.h:170
Int_t eActualAlgParametersetNr
Definition: EdbShowerAlg.h:43
Int_t eRecoShowerArrayN
Definition: EdbShowerAlg.h:60
Int_t GetRecoShowerArrayN() const
Definition: EdbShowerAlg.h:129
EdbPVRec * eAli_Sub
Definition: EdbShowerAlg.h:63
TObjArray * eInBTArray
Definition: EdbShowerAlg.h:51
Definition: EdbPattern.h:118
Definition: EdbVertex.h:68
Definition: bitview.h:14
Alg Print()
Alg Execute()
void Finalize()
Definition: ShowRec.cpp:513
void Help()
Definition: mc2raw.cxx:20
void Initialize()
Definition: rwcToEdb.cpp:28
EdbSegP * s1
Definition: tlg2pattern.C:30
EdbSegP * s2
Definition: tlg2pattern.C:31
EdbSegP * s
Definition: tlg2pattern.C:32