FEDRA emulsion software from the OPERA Collaboration
EdbShowAlgE_Simple.h
Go to the documentation of this file.
1#ifndef ROOT_EdbShowAlgE_Simple
2#define ROOT_EdbShowAlgE_Simple
3
4#include "TROOT.h"
5#include "TSystem.h"
6#include "TFile.h"
7#include "TF1.h"
8#include "TH1.h"
9#include "TSpline.h"
10#include "TVector3.h"
11#include "TIndexCell.h"
12#include "TArrayF.h"
13#include "TBenchmark.h"
14#include "TMultiLayerPerceptron.h"
15#include "TMLPAnalyzer.h"
16#include "TCanvas.h"
17#include "EdbVertex.h"
18#include "EdbPVRec.h"
19#include "EdbPhys.h"
20#include "EdbMath.h"
22#include "EdbLog.h"
23#include "EdbPattern.h"
24#include "EdbShowerP.h"
25using namespace std;
26//______________________________________________________________________________
27//___
28//___ Declaration of EdbShowAlgE_Simple Class:
29//______________________________________________________________________________
30//______________________________________________________________________________
31
32class EdbShowAlgE_Simple : public TObject {
33
34private:
35
36 // nothing;
37
38protected:
39
40 // TObjArray storing Reconstructed Showers:
41 TObjArray* eRecoShowerArray;
42 Int_t eRecoShowerArrayN;// nothing...
43 Int_t eParaName;
44
45 // Variables related for calculation Issues
48
50 // = switch wheter to take the weightfile trained for the next longer/or next shower number of plates...
51
53 // either equal to shower->Npl() or is fixed manually.
54
56 // = generic weightFileString.
57
58 // Array for the specific specification: see GetSpecifications() for explanation...
63
64 // Generic Input Array:
65 // This Plate Binnning is the _final_binning and will not be refined furthermore!
66 Int_t ePlateBinning[15];
67
68 // Generic Input Arrays for the ANN:
69 TMultiLayerPerceptron *ANN_MLP;
70 TMultiLayerPerceptron *ANN_MLP_ARRAY[15];
71 TTree *ANNTree;
72 Double_t inANN[70];
73 Double_t outANN;
77 TString ANN_Layout;
79
80 // Generic Correction factors:
81 Float_t eANN_MLP_CORR_0[15];
82 Float_t eANN_MLP_CORR_1[15];
83
84 // Dammit! On some architecures (pc56 in Bern, for example) this structure stuff
85 // gives a crash, sometimes. Lets try it with simple Private Variables:
86 // (though now I know the reason was different to it..)
88 Int_t eParanseg;
94
107
108 // Efficiency/Angle parametrisation functions
116
117 // Efficiency/Angle parametrisation function,
118 // obtained from the data; either by EDA, or to be set by
119 // hand (nseg-2/npl-2)
121
122 // Variables for the output:
123 TArrayF* eEnergyArray;
126 Float_t eEnergy;
127 Float_t eEnergyCorr;
130
132
133 // Splines for calculation the interpolation of stat. and sys. errors:
138 TSpline3* eSplineCurrent;
139
140
141 // Reset All Default Variables:
142 void Set0();
143 void Init();
144
145
146public:
147
149 // EdbShowAlgE_Simple(EdbShowerP* shower); // in libShowRec
150 EdbShowAlgE_Simple(EdbTrackP* track); // in libShower
152
153 virtual ~EdbShowAlgE_Simple(); // virtual constructor due to inherited class
154
155 // Hand over eAli eInBTArray from EdbShowerRec
156 inline void SetRecoShowerArray(TObjArray* RecoShowerArray) {
158 eRecoShowerArrayN=eRecoShowerArray->GetEntriesFast();
159 }
160 inline void SetRecoShowerArrayN(Int_t RecoShowerArrayN) {
161 eRecoShowerArrayN=RecoShowerArrayN;
162 }
163 inline Int_t GetRecoShowerArrayN() const {
164 return eRecoShowerArrayN;
165 }
166 inline TArrayF* GetEnergyArray() {
167 return eEnergyArray;
168 }
169 inline TArrayF* GetEnergyArrayUnCorrected() {
171 }
172 inline Float_t GetEnergy() {
173 return eEnergy;
174 }
175 inline Float_t GetEnergy(EdbTrackP* track) {
176 return track->P();
177 }
178
179 // Get Track Parametrisation variables which is input for the ANN calculation
180 void GetPara(EdbTrackP* track);
181
182 // Get Efficiency/Angle parametrisation functions
183 inline TF1* GetEffFunc_all() {
184 return EffFunc_all;
185 }
186 inline TF1* GetEffFunc_edefault() {
187 return EffFunc_edefault;
188 }
189 inline TF1* GetEffFunc_elletroni() {
190 return EffFunc_elletroni;
191 }
192 inline TF1* GetEffFunc_neuchmicro() {
193 return EffFunc_neuchmicro;
194 }
195 inline TF1* GetEffFunc_MiddleFix() {
196 return EffFunc_MiddleFix;
197 }
198 inline TF1* GetEffFunc_LowEff() {
199 return EffFunc_LowEff;
200 }
203 }
204
205 inline TMultiLayerPerceptron* GetNeuralNetwork(Int_t ANNType=0) {
206 if (ANNType>=15) ANNType=14;
207 return ANN_MLP_ARRAY[ANNType];
208 }
209
210 inline void TrainNeuralNetwork(TString weight, Int_t ANNType=0) {
211 if (ANNType>=15) ANNType=14;
212 ANN_MLP_ARRAY[ANNType]->Train(100);
213 return;
214 }
215
216 inline void DumpNeuralNetworkWeight(TString weight, Int_t ANNType=0) {
217 if (ANNType>=15) ANNType=14;
218 ANN_MLP_ARRAY[ANNType]->DumpWeights(weight);
219 return;
220 }
221
222 inline void SetCalibrationOffset(Float_t CalibrationOffset) {
223 eCalibrationOffset=CalibrationOffset;
224 }
225 inline void SetCalibrationSlope(Float_t CalibrationSlope) {
226 eCalibrationSlope=CalibrationSlope;
227 }
228
229 inline void SetPlateNumberType(Int_t PlateNumberType) {
230 ePlateNumberType=PlateNumberType;
231 }
232 inline void SetPlateNumber (Int_t PlateNumber) {
233 ePlateNumber=PlateNumber;
234 }
235 inline Int_t GetSpecType(Int_t SpecificationType) {
236 return eSpecificationType[SpecificationType];
237 }
238
239 void SetEfficiencyParametrisationValues(Double_t* Angles, Double_t* EffValuesAtAngles);
240
241 inline void SetEfficiencyParametrisation(TSpline3* EfficiencyParametrisation) {
242 eEfficiencyParametrisation=EfficiencyParametrisation;
243 EfficiencyParametrisation->Print();
244 }
245 inline TSpline3* GetEfficiencyParametrisation() {
247 }
250
251 void SetWeightFileString(TString weightstring);
252 void InitStrings();
253
254 Int_t FindClosestEfficiencyParametrization(Double_t TestAngle,Double_t ReferenceEff);
255
256 void GetNplIndexNr(Int_t sh_npl,Int_t &check_Npl_index, Int_t ePlateNumberType);
257
258 void GetSpecifications();
259 void SetSpecifications(Int_t sp0, Int_t sp1, Int_t sp2, Int_t sp3, Int_t sp4, Int_t sp5);
260 void SetSpecificationType(Int_t SpecificationType, Int_t SpecificationTypeVal);
261
262 void PrintSpecifications();
264 void ReadCorrectionFactors(TString weigthstring, Float_t &p0, Float_t &p1);
265
266 void CreateANN();
267
268 void Update();
269 void DoRun();
270 void DoRun(TObjArray* trackarray);
271 void DoRun(EdbTrackP* shower);
272
273 void ReadTables();
274 void ReadTables_Energy();
275 //void ReadTables_ID(); // to be implemented...
276
277
278 void WriteNewRootFile();
279 void Print();
280 void Help();
281 ClassDef(EdbShowAlgE_Simple,1); // Root Class Definition for my Objects
282};
283
284#endif /* ROOT_EdbShowAlgE_Simple */
TObjArray * RecoShowerArray
Definition: Shower_E_FromShowerRoot.C:12
Definition: EdbShowAlgE_Simple.h:32
TString eWeightFileString
Definition: EdbShowAlgE_Simple.h:55
TObjArray * eSplineArray_Energy_Stat_Electron
Definition: EdbShowAlgE_Simple.h:134
Float_t eParaBT_deltaT_mean
Definition: EdbShowAlgE_Simple.h:91
TF1 * GetEffFunc_MiddleFix()
Definition: EdbShowAlgE_Simple.h:195
TF1 * EffFunc_edefault
Definition: EdbShowAlgE_Simple.h:110
void GetPara(EdbTrackP *track)
Definition: EdbShowAlgE_Simple.cxx:830
TF1 * GetEffFunc_all()
Definition: EdbShowAlgE_Simple.h:183
TArrayF * eEnergyArrayUnCorrected
Definition: EdbShowAlgE_Simple.h:124
Int_t eParanseg
Definition: EdbShowAlgE_Simple.h:88
TArrayF * eEnergyArraySigmaCorrected
Definition: EdbShowAlgE_Simple.h:125
TF1 * EffFunc_all
Definition: EdbShowAlgE_Simple.h:109
void LoadSpecificationWeightFile()
Definition: EdbShowAlgE_Simple.cxx:673
TF1 * EffFunc_neuchmicro
Definition: EdbShowAlgE_Simple.h:112
TH1D * eHisto_deltaR_rms
Definition: EdbShowAlgE_Simple.h:100
TSpline3 * GetEfficiencyParametrisation()
Definition: EdbShowAlgE_Simple.h:245
Int_t eSpecificationType[6]
Definition: EdbShowAlgE_Simple.h:59
TH1D * eHisto_nbtk_av
Definition: EdbShowAlgE_Simple.h:95
Int_t eEnergyArrayCount
Definition: EdbShowAlgE_Simple.h:131
Float_t eCalibrationOffset
Definition: EdbShowAlgE_Simple.h:46
Float_t eEnergyCorr
Definition: EdbShowAlgE_Simple.h:127
Float_t GetEnergy()
Definition: EdbShowAlgE_Simple.h:172
void SetEfficiencyParametrisation(TSpline3 *EfficiencyParametrisation)
Definition: EdbShowAlgE_Simple.h:241
Double_t inANN[70]
Definition: EdbShowAlgE_Simple.h:72
void Update()
Definition: EdbShowAlgE_Simple.cxx:718
void ReadCorrectionFactors(TString weigthstring, Float_t &p0, Float_t &p1)
Definition: EdbShowAlgE_Simple.cxx:1153
TF1 * GetEffFunc_UserEfficiency()
Definition: EdbShowAlgE_Simple.h:201
Int_t GetSpecType(Int_t SpecificationType)
Definition: EdbShowAlgE_Simple.h:235
Bool_t eSpecificationIsChanged
Definition: EdbShowAlgE_Simple.h:62
void WriteNewRootFile()
Definition: EdbShowAlgE_Simple.cxx:1199
TF1 * EffFunc_elletroni
Definition: EdbShowAlgE_Simple.h:111
Int_t ANN_nPlates_ARRAY[15]
Definition: EdbShowAlgE_Simple.h:74
void GetSpecifications()
Definition: EdbShowAlgE_Simple.cxx:640
Float_t eEnergy
Definition: EdbShowAlgE_Simple.h:126
Float_t eParaBT_deltaR_mean
Definition: EdbShowAlgE_Simple.h:89
void GetNplIndexNr(Int_t sh_npl, Int_t &check_Npl_index, Int_t ePlateNumberType)
Definition: EdbShowAlgE_Simple.cxx:534
Float_t eANN_MLP_CORR_1[15]
Definition: EdbShowAlgE_Simple.h:82
Float_t eParaBT_deltaR_rms
Definition: EdbShowAlgE_Simple.h:90
TObjArray * eSplineArray_Energy_Sys_Gamma
Definition: EdbShowAlgE_Simple.h:137
Int_t eRecoShowerArrayN
Definition: EdbShowAlgE_Simple.h:42
Int_t eParaName
Definition: EdbShowAlgE_Simple.h:43
TH1D * eHisto_deltaR
Definition: EdbShowAlgE_Simple.h:105
void CreateANN()
Definition: EdbShowAlgE_Simple.cxx:244
void Print()
Definition: EdbShowAlgE_Simple.cxx:1180
void PrintEfficiencyParametrisation()
Definition: EdbShowAlgE_Simple.cxx:1411
TH1D * eHisto_longprofile_av
Definition: EdbShowAlgE_Simple.h:96
TH1D * eHisto_transprofile_av
Definition: EdbShowAlgE_Simple.h:97
Int_t ePlateBinning[15]
Definition: EdbShowAlgE_Simple.h:66
void SetPlateNumber(Int_t PlateNumber)
Definition: EdbShowAlgE_Simple.h:232
void SetPlateNumberType(Int_t PlateNumberType)
Definition: EdbShowAlgE_Simple.h:229
TH1D * eHisto_deltaT
Definition: EdbShowAlgE_Simple.h:106
void DumpNeuralNetworkWeight(TString weight, Int_t ANNType=0)
Definition: EdbShowAlgE_Simple.h:216
void SetRecoShowerArray(TObjArray *RecoShowerArray)
Definition: EdbShowAlgE_Simple.h:156
TString eSpecificationTypeStringArray[6][6]
Definition: EdbShowAlgE_Simple.h:61
TSpline3 * eEfficiencyParametrisation
Definition: EdbShowAlgE_Simple.h:120
void SetRecoShowerArrayN(Int_t RecoShowerArrayN)
Definition: EdbShowAlgE_Simple.h:160
Int_t eParalongprofile[57]
Definition: EdbShowAlgE_Simple.h:93
void Set0()
Definition: EdbShowAlgE_Simple.cxx:90
void ReadTables()
Definition: EdbShowAlgE_Simple.cxx:1428
ClassDef(EdbShowAlgE_Simple, 1)
TF1 * EffFunc_LowEff
Definition: EdbShowAlgE_Simple.h:114
TTree * ANNTree
Definition: EdbShowAlgE_Simple.h:71
void Init()
Definition: EdbShowAlgE_Simple.cxx:129
TF1 * GetEffFunc_neuchmicro()
Definition: EdbShowAlgE_Simple.h:192
TArrayF * GetEnergyArray()
Definition: EdbShowAlgE_Simple.h:166
TH1D * eHisto_transprofile
Definition: EdbShowAlgE_Simple.h:104
void SetCalibrationOffset(Float_t CalibrationOffset)
Definition: EdbShowAlgE_Simple.h:222
TH1D * eHisto_longprofile
Definition: EdbShowAlgE_Simple.h:103
TObjArray * eRecoShowerArray
Definition: EdbShowAlgE_Simple.h:41
Int_t ANN_n_InputNeurons_ARRAY[15]
Definition: EdbShowAlgE_Simple.h:75
Float_t eANN_MLP_CORR_0[15]
Definition: EdbShowAlgE_Simple.h:81
TH1D * eHisto_deltaT_rms
Definition: EdbShowAlgE_Simple.h:101
void SetSpecifications(Int_t sp0, Int_t sp1, Int_t sp2, Int_t sp3, Int_t sp4, Int_t sp5)
Definition: EdbShowAlgE_Simple.cxx:682
void SetCalibrationSlope(Float_t CalibrationSlope)
Definition: EdbShowAlgE_Simple.h:225
TString eSpecificationTypeString[6]
Definition: EdbShowAlgE_Simple.h:60
TArrayF * eEnergyArray
Definition: EdbShowAlgE_Simple.h:123
void SetSpecificationType(Int_t SpecificationType, Int_t SpecificationTypeVal)
Definition: EdbShowAlgE_Simple.cxx:698
Int_t ePlateNumberType
Definition: EdbShowAlgE_Simple.h:49
void TrainNeuralNetwork(TString weight, Int_t ANNType=0)
Definition: EdbShowAlgE_Simple.h:210
void SetWeightFileString(TString weightstring)
Definition: EdbShowAlgE_Simple.cxx:525
TF1 * GetEffFunc_elletroni()
Definition: EdbShowAlgE_Simple.h:189
void SetEfficiencyParametrisationValues(Double_t *Angles, Double_t *EffValuesAtAngles)
Definition: EdbShowAlgE_Simple.cxx:1588
Int_t ANN_n_InputNeurons
Definition: EdbShowAlgE_Simple.h:76
TString ANN_WeightFile_ARRAY[15]
Definition: EdbShowAlgE_Simple.h:78
void Help()
Definition: EdbShowAlgE_Simple.cxx:1392
void DoRun()
Definition: EdbShowAlgE_Simple.cxx:283
void PrintSpecifications()
Definition: EdbShowAlgE_Simple.cxx:648
Int_t ePlateNumber
Definition: EdbShowAlgE_Simple.h:52
TSpline3 * eSplineCurrent
Definition: EdbShowAlgE_Simple.h:138
TArrayF * GetEnergyArrayUnCorrected()
Definition: EdbShowAlgE_Simple.h:169
Float_t eParaBT_deltaT_rms
Definition: EdbShowAlgE_Simple.h:92
Float_t eEnergyUnCorr
Definition: EdbShowAlgE_Simple.h:128
TMultiLayerPerceptron * ANN_MLP
Definition: EdbShowAlgE_Simple.h:69
TMultiLayerPerceptron * ANN_MLP_ARRAY[15]
Definition: EdbShowAlgE_Simple.h:70
TF1 * GetEffFunc_edefault()
Definition: EdbShowAlgE_Simple.h:186
TH1D * eHisto_deltaR_mean
Definition: EdbShowAlgE_Simple.h:98
Int_t FindClosestEfficiencyParametrization(Double_t TestAngle, Double_t ReferenceEff)
Definition: EdbShowAlgE_Simple.cxx:476
TObjArray * eSplineArray_Energy_Stat_Gamma
Definition: EdbShowAlgE_Simple.h:135
Float_t GetEnergy(EdbTrackP *track)
Definition: EdbShowAlgE_Simple.h:175
Int_t GetRecoShowerArrayN() const
Definition: EdbShowAlgE_Simple.h:163
TObjArray * eSplineArray_Energy_Sys_Electron
Definition: EdbShowAlgE_Simple.h:136
Float_t eEnergySigmaCorr
Definition: EdbShowAlgE_Simple.h:129
TH1D * eHisto_deltaT_mean
Definition: EdbShowAlgE_Simple.h:99
Double_t outANN
Definition: EdbShowAlgE_Simple.h:73
TH1D * eHisto_nbtk
Definition: EdbShowAlgE_Simple.h:102
TMultiLayerPerceptron * GetNeuralNetwork(Int_t ANNType=0)
Definition: EdbShowAlgE_Simple.h:205
TString ANN_Layout
Definition: EdbShowAlgE_Simple.h:77
void SetEfficiencyParametrisationAngles()
Definition: EdbShowAlgE_Simple.cxx:1580
void ReadTables_Energy()
Definition: EdbShowAlgE_Simple.cxx:1440
TF1 * GetEffFunc_LowEff()
Definition: EdbShowAlgE_Simple.h:198
virtual ~EdbShowAlgE_Simple()
Definition: EdbShowAlgE_Simple.cxx:68
TF1 * EffFunc_UserEfficiency
Definition: EdbShowAlgE_Simple.h:115
TF1 * EffFunc_MiddleFix
Definition: EdbShowAlgE_Simple.h:113
Float_t eCalibrationSlope
Definition: EdbShowAlgE_Simple.h:47
void InitStrings()
Definition: EdbShowAlgE_Simple.cxx:222
Float_t eParaShowerAxisAngle
Definition: EdbShowAlgE_Simple.h:87
Definition: EdbPattern.h:113
Definition: bitview.h:14
Definition: AlignmentCint.cxx:51