1 #ifndef ROOT_EdbShowerAlg
2 #define ROOT_EdbShowerAlg
13 #include "TMultiLayerPerceptron.h"
14 #include "TMLPAnalyzer.h"
15 #include "TBenchmark.h"
41 Float_t eParaValue[10];
42 TString eParaString[10];
100 eInBTArray = InBTArray;
101 eInBTArrayN=eInBTArray->GetEntries();
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;
111 eRecoShowerArrayN=eRecoShowerArray->GetEntries();
114 eRecoShowerArrayN=RecoShowerArrayN;
120 eActualAlgParametersetNr=ActualAlgParametersetNr;
130 return eRecoShowerArrayN;
133 return eRecoShowerArray;
137 eUseAliSub=UseAliSub;
151 void SetParameter(Int_t parNr, Float_t parvalue);
152 void SetParameters(Float_t* par);
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();
162 void PrintParameters();
163 void PrintParametersShort();
164 void PrintRecoShowerArray();
221 Float_t eANNPairCut[3];
249 eInVtxArray = InVtxArray;
250 eInVtxArrayN = eInVtxArray->GetEntries();
251 cout <<
"SetInVtxArray:: " << eInVtxArrayN <<
" entries set"<<endl;
264 eFindPairsPreselected = FindPairsPreselected;
268 eSetCleanPairs = CleanPairs;
272 eCutModeFull = CutModeFull;
279 TObjArray* SelectHighestPInMCArray(TObjArray* BTArray);
282 void SetRecoMode(Int_t RecoMode);
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);
292 TObjArray* CheckCleanPairs(
EdbSegP* InBT, TObjArray* RecoShowerArrayFromFindPairs);
293 TObjArray* FindPairsPreselected(
EdbPVRec* eAli_Sub);
296 void CreateANNPair();
297 void ReloadANNs(Int_t RecoMode);
298 void CreateANNPlots();
350 Int_t eSpecificationType[7];
351 TString eSpecificationTypeString[7];
352 TString eSpecificationTypeStringArray[7][7];
358 Int_t ePlateBinning[15];
362 TMultiLayerPerceptron *ANN_MLP_ARRAY[15];
366 Int_t ANN_nPlates_ARRAY[15];
367 Int_t ANN_n_InputNeurons_ARRAY[15];
370 TString ANN_WeightFile_ARRAY[15];
373 Float_t eANN_MLP_CORR_0[15];
374 Float_t eANN_MLP_CORR_1[15];
385 Int_t eParalongprofile[57];
450 eRecoShowerArrayN=eRecoShowerArray->GetEntriesFast();
453 eRecoShowerArrayN=RecoShowerArrayN;
456 return eRecoShowerArrayN;
462 return eEnergyArrayUnCorrected;
479 return EffFunc_edefault;
482 return EffFunc_elletroni;
485 return EffFunc_neuchmicro;
488 return EffFunc_MiddleFix;
491 return EffFunc_LowEff;
494 return EffFunc_UserEfficiency;
498 if (ANNType>=15) ANNType=14;
499 return ANN_MLP_ARRAY[ANNType];
503 if (ANNType>=15) ANNType=14;
504 ANN_MLP_ARRAY[ANNType]->Train(100);
509 if (ANNType>=15) ANNType=14;
510 ANN_MLP_ARRAY[ANNType]->DumpWeights(weight);
515 eCalibrationOffset=CalibrationOffset;
518 eCalibrationSlope=CalibrationSlope;
522 ePlateNumberType=PlateNumberType;
525 ePlateNumber=PlateNumber;
528 return eSpecificationType[SpecificationType];
531 eForceSpecificationReload=kTRUE;
534 eForceSpecificationReload=kFALSE;
537 void SetEfficiencyParametrisationValues(Double_t* Angles, Double_t* EffValuesAtAngles);
540 eEfficiencyParametrisation=EfficiencyParametrisation;
541 EfficiencyParametrisation->Print();
544 return eEfficiencyParametrisation;
546 void PrintEfficiencyParametrisation();
547 void SetEfficiencyParametrisationAngles();
549 void SetWeightFileString(TString weightstring);
552 Int_t FindClosestEfficiencyParametrization(Double_t TestAngle,Double_t ReferenceEff);
554 void GetNplIndexNr(Int_t sh_npl,Int_t &check_Npl_index, Int_t ePlateNumberType);
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);
560 void PrintSpecifications();
561 void LoadSpecificationWeightFile();
562 void ReadCorrectionFactors(TString weigthstring, Float_t &p0, Float_t &p1);
568 void DoRun(TObjArray* trackarray);
572 void ReadTables_Energy();
577 WriteNewRootFile(
"Shower.root",
"treebranch");
580 WriteNewRootFile(sourcefilename,
"treebranch");
582 void WriteNewRootFile(TString sourcefilename, TString treename);
610 Double_t eIDCutTypeValue[3];
626 eANNIDCutValue=ANNIDCutValue;
628 void SetSpecificationType(Int_t SpecificationType, Int_t SpecificationTypeVal);
629 void PrintSpecifications();
637 void ReadTables_ID();
640 void DoRun(TObjArray* trackarray);
643 Int_t DetermineIDType(Double_t val, Int_t SpecificationType);
644 Int_t DetermineIDFlag(Int_t IDType);
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: 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
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