FEDRA emulsion software from the OPERA Collaboration
EdbShowerP.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbShowerP
2 #define ROOT_EdbShowerP
3 
4 #include "TROOT.h"
5 #include "TFile.h"
6 #include "TVector3.h"
7 #include "TIndexCell.h"
8 #include "TArrayF.h"
9 #include "TH1F.h"
10 #include "TCanvas.h"
11 #include "TBenchmark.h"
12 #include "EdbVertex.h"
13 #include "EdbPVRec.h"
14 #include "EdbPhys.h"
15 #include "EdbMath.h"
16 #include "EdbMomentumEstimator.h"
17 #include "EdbLog.h"
18 #include "EdbPattern.h"
19 
20 class EdbShowerP;
21 
22 using namespace std;
23 
24 
25 
26 //______________________________________________________________________________
27 
28 class EdbShowerP : public EdbSegP {
29 
30 private:
31 
32  //-C- shower meta data (related to reconstruction) here:
33 
34  // To know nameStrings of Profile histograms:
37 
38  // To know which Algorithm and Parameters were used for this shower to be reconstructed:
39  TString eAlgName;
40  Int_t eAlgValue;
41  Float_t eParaValue[10];
42  TString eParaString[10];
43 
44  Bool_t eParametrisationIsDone[10]; // number of parametrization which is already extracted or not.
45  Bool_t eExtraInfoIsDone[2]; // if Para_ExtraInfo has been read already.
46  Bool_t eMCInfoIsDone[2]; // if PGun or MCEvt Info has been read already.
47 
48  Short_t eFirstPlate; // FirstPlate is always to the starting of beam!
49  Short_t eLastPlate; // LastPlate is always to the starting of beam!
50  Short_t eFirstPlatePID; // PID of Plate containing the InitiatorBT
51  Short_t eLastPlatePID; // PID of last plate which was used for reconstruction
52  Short_t eFirstPlateZ; // Z of Plate containing the InitiatorBT
53  Short_t eLastPlateZ; // Z of last plate which was used for reconstruction
54  Float_t eFirstZ; // Z of Plate containing the InitiatorBT
55  Float_t eLastZ; // Z of last plate which was used for reconstruction
56 
57 
58  //-C- shower data (directly related to shower characteristics) here:
59 
60  //-C- For class backward compability to EdbTrackP ....
61  TObjArray *eS; // array of segments which set up the shower
62  Int_t eNpl; // number of plates passed throw
63  Int_t eN0; // number of holes (if any)
66 
67  Float_t eM; // invariant mass of the particle (from EdbTrackP; to be filled with use of ID algo)
68  Int_t ePDG; // particle ID from PDG (from EdbTrackP; to be filled with use of ID algo)
69 
70  //-C- For new class settings:
71  Int_t eNBT; // Number of BT in the shower
72  Int_t eNBTMC; // Number of BT in the shower, only MC>=0 events
73  Int_t eNBTMCFlag[99]; // NBT, only MC>=0, flagged with PDG Code but Internal array!! See corresponding fill function!
74  Int_t eNBTPlate[57]; // Number of BT in the shower per plate w.r.t to Plate of InBT (Plate of InBT===[0])
75  Int_t eNBTMCPlate[57]; // Number of BT in the shower, only MC>=0 events,w.r.t to Plate of InBT (Plate of InBT===[0])
76  Int_t eNBTMCFlagPlate[57][99]; // NBT, only MC>=0, flagged with PDG Code but Internal array!! See corresponding fill function!, w.r.t to Plate of InBT (!)
77  Int_t eN00; // largest number of consecutive holes (if any)
78 
79  Float_t ePurity; // simple purity (eNBTMC/eNBT)
80  Float_t eEnergyMC; // Energy, defined by P() of the Initiator BaseTrack // this will be revised later!
81  Int_t eMC; // MC number, defined by MCEvt() of the Initiator BaseTrack
82  Float_t eSphericity; // Value to express spherical distribution around the ShowerAxisCenterGravity
83 
84  // Internal histograms to store binentries of longitudinal and transversal shower profiles
85  // for exact definition how bins are defined see in the .cxx code implementation
88 
89 
90 
91  // shower Axis angle (tan theta)
92  // see in the .cxx code how it is exactly calculated
94  // a basetrack with information of the shower axis and its direction
96 
97 
98  // Histogram of all segments deviation: TX_showeraxis-TX_segment, and for TY
103 
104 
105  //-C- shower data (extracted from shower characteristics) here:
106  Short_t eId;
107  Short_t ePDGId;
108  Float_t eEnergy;
111 
112  //-C- Internal Helper Functions:
113  Double_t GetdR(EdbSegP* seg1,EdbSegP* seg2);
114  Double_t GetdMin(EdbSegP* seg1,EdbSegP* seg2);
115  Double_t GetdT(EdbSegP* seg1,EdbSegP* seg2);
116  Int_t GetLastFilledBin(TH1* hist);
117 
118 
119 public:
120 
121  // default constructor, empty shower
122  EdbShowerP(int nseg=0);
123 
124  // default constructor, empty shower numbers for setting histogram names...
125  EdbShowerP(int number1, int number2, int number3, int nseg=0);
126 
127  // virtual destructor due to inherited class
128  virtual ~EdbShowerP();
129 
130 
131 
132 
133  //-C- shower data: structures for the different parametrisations:
134  //
135  // made public to have access by other classes.
136  // The abbreviations follow either the persons,
137  // first time implementing them, or
138  // the type of physics case they follow...
139  //
140  // Attention after declarating "struct" ..:
141  // then after the "{}" brackets a semikolon is necessary here!
142 
143  struct Para_FJ {
144  // Variables used for FJ ( "F_rederic J_uget" ) parametrisation
145  Float_t ShowerAxisAngle; // shower Axis angle (tan theta)
146  Int_t nseg; // identical to <<eNBT>>
147  Float_t BT_deltaR_mean;
148  Float_t BT_deltaR_rms;
149  Float_t BT_deltaT_mean;
150  Float_t BT_deltaT_rms;
151  Int_t longprofile[57]; // not identical to the ProfileLongitudinalBincontent of Para_YY !!
152 
153  ClassDef (Para_FJ,1) // maybe it works, when writing //ClassDef hereafter....?
154  };
155  struct Para_LT {
156  // Variables used for LT ( "L_ongitudinal & T_ransversal" ) parametrisation
157  // Identical to "Variables used for FJ parametrisation" but with transprofile in addition
158  Float_t ShowerAxisAngle; // shower Axis angle (tan theta)
159  Int_t nseg; // identical to <<eNBT>>
160  Float_t BT_deltaR_mean;
161  Float_t BT_deltaR_rms;
162  Float_t BT_deltaT_mean;
163  Float_t BT_deltaT_rms;
164  Int_t transprofile[8];
165  Int_t longprofile[57]; // not identical to the ProfileLongitudinalBincontent of Para_YY !!
166 
167  ClassDef (Para_LT,1) // maybe it works, when writing //ClassDef hereafter....?
168  };
169  struct Para_YC {
170  // Variables used for YC ( "Y_van C_affari" ) like parametrisation
171  Float_t ShowerAxisAngle; // shower Axis angle (tan theta)
172  Int_t nseg; // identical to <<eNBT>>
173  Float_t C1;
174  Float_t a1;
175  Float_t alpha;
176  Float_t nmax;
177 
178  ClassDef (Para_YC,1) // maybe it works, when writing //ClassDef hereafter....?
179  };
180  struct Para_JC {
181  // Variables used for JC ( "J_uget C_affari" ) like parametrisation
182  // YC part
183  Float_t ShowerAxisAngle; // shower Axis angle (tan theta)
184  Int_t nseg; // identical to <<eNBT>>
185  Float_t C1;
186  Float_t a1;
187  Float_t alpha;
188  Float_t nmax;
189  // FJ part
190  //Float_t ShowerAxisAngle; // shower Axis angle (tan theta) // already there from YC part.
191  //Int_t nseg; // identical to <<eNBT>> // already there from YC part.
192  Float_t BT_deltaR_mean;
193  Float_t BT_deltaR_rms;
194  Float_t BT_deltaT_mean;
195  Float_t BT_deltaT_rms;
196  Int_t longprofile[57]; // not identical to the ProfileLongitudinalBincontent of Para_YY !!
197 
198  ClassDef (Para_JC,1) // maybe it works, when writing //ClassDef hereafter....?
199  };
200  struct Para_XX {
201  // Variables used for XX parametrisation
202  Float_t ShowerAxisAngle; // shower Axis angle (tan theta)
203  Int_t nseg; // identical to <<eNBT>>
212 
213  ClassDef (Para_XX,1) // maybe it works, when writing //ClassDef hereafter....?
214  };
215  struct Para_YY {
216  // Variables used for YY parametrisation
217  Float_t ShowerAxisAngle; // shower Axis angle (tan theta)
218  Int_t nseg; // identical to <<eNBT>>
219  Int_t ProfileLongitudinalBincontent[57];
220  Int_t ProfileTransversalBincontent[8];
221 
222  ClassDef (Para_YY,1) // maybe it works, when writing //ClassDef hereafter....?
223  };
224  struct Para_PP {
225  // Variables used for PP ( "P_hoton P_arametrisation" ) parametrisation
226  Float_t ShowerAxisAngle; // shower Axis angle (tan theta)
227  Int_t nseg;
231  Float_t ePairChi2;
232 
233  ClassDef (Para_PP,1) // maybe it works, when writing //ClassDef hereafter....?
234  };
235  struct Para_AS {
236  // Variables used for AS ( "A_ll S_egemts" ) parametrisation
237  // (But only the first 50 segments will be used. Isnt that a contradiction ???)
238  Int_t nseg; // identical to <<eNBT>>
239  Double_t edIP[50];
240  Double_t edMin[50];
241  Double_t edRLong[50];
242  Double_t edRTrans[50];
243  Double_t edeltarb[50];
244  Double_t edeltathetab[50];
245 
246  ClassDef (Para_AS,1) // maybe it works, when writing //ClassDef hereafter....?
247  };
248  struct Para_SE {
249  // Variables used for SE ( "S_imple E_asy" ) like parametrisation
250  Float_t ShowerAxisAngle; // shower Axis angle (tan theta)
251  Int_t nseg; // identical to <<eNBT>>
252  Int_t npl; // identical to <<eNPl>>
254 
255  ClassDef (Para_SE,1) // maybe it works, when writing //ClassDef hereafter....?
256  };
257  struct Para_ExtraInfo {
258  // Parametrisation Variables to store some extraInfo for the shower, which
259  // dont have necessarily have something to to with the PARA_!! parametrisation
260  Float_t InBT_E; // InBT->P()
261  Float_t InBT_Flag; // InBT->Flag()
262  Float_t InPairBT_E; // In0BT->P()+In1BT->P() if sum of Flag() ==0 (photon=electron+positron); else identical to InBT_E
263  Int_t ShowerLength; // max of Z()max -Z()min over all segments
264  Float_t InBT_IPToVtx; // IP from InBT to generic vertex. Commonly used: Vertex of G4 position vertex.
265  Float_t InBT_DeltaZToVtx; // DeltaZ from InBT to generic vertex. Commonly used: Vertex of G4 position vertex.
266 
267  ClassDef (Para_ExtraInfo,1) // maybe it works, when writing //ClassDef hereafter....?
268  };
269  struct MCInfo_PGun {
270  // Variables MCInfo_PGun to get MC data from the simulation by MC info.
271  // Use this when the simulation was done with G4Particle generator
272  // And the corresponding outputfile is in FWM like format.
273  // FWM format to be specified: up to now:
274  // #MCEvt energy tantheta dirx diry dirz vtxposx vtxposy vtxposz TX TY X Y Z
275  Int_t MCEvt;
276  Int_t PDGId;
277  Float_t energy;
278  Float_t tantheta;
279  Float_t dirx;
280  Float_t diry;
281  Float_t dirz;
282  Float_t vtxposx;
283  Float_t vtxposy;
284  Float_t vtxposz;
285  Float_t TX;
286  Float_t TY;
287  Float_t Y;
288  Float_t X;
289  Float_t Z;
290  // These are the values for the incident particle! If its a gamma, for example,
291  // the do not necessarily coincide with these from the shower! Remember!
292 
293  ClassDef (MCInfo_PGun,1) // maybe it works, when writing //ClassDef hereafter....?
294  };
295  struct MCInfo_Event {
296  // Variables MCInfo_PGun to get MC data from the simulation by MC info.
297  // Use this when the simulation was done with G4 Dario generator
298  // And the corresponding outputfile is in FWM like format.
299  Int_t eDUMMYVARIABLE; // not yet used.
300 
301  ClassDef (MCInfo_Event,1) // maybe it works, when writing //ClassDef hereafter....?
302  };
303 
304 
305  // General Implementation of the Reco_ID structure:
306  // Instances are use for e-pi separation, or e-gamma separation and so on.
307  // Instances are dependent on the type of Parametriasation with which the shower
308  // was parametrized, so the eParaNr is saved.
309  struct Reco_ID {
310  Float_t eProb90; // Signal efficency
311  Float_t eProb5; // Background rejection
312 
313  TString eReco_ID_Name; //"E_GAMMA";
314  Float_t eReco_ID_Nr; //= 0;
315 
316  Int_t eParaNr; // refers to labelling of Parametrisations (0==FJ,1==YC...)
317 
318  ClassDef (Reco_ID,1) // maybe it works, when writing //ClassDef hereafter....?
319  };
320 
321  // General Implementation of the Reco_E structure:
322  // Instances are use for estimating the shower energy.
323  // Instances are dependent on the type of parametrisation with which the shower
324  // was parametrized, so the eParaNr is saved.
325  // Instances may also be dependent on the type of the shower, if its a
326  // gammaShower or a electronShower.
327  struct Reco_E {
328  Short_t eId;
329  Short_t ePDGId;
330  Float_t eEnergy;
333  Int_t eParaNr; // refers to labelling of Parametrisations (0==FJ,1==YC...)
334 
335  ClassDef (Reco_E,1) // maybe it works, when writing //ClassDef hereafter....?
336  };
337 
338  // General Implementation of the Reco_Vtx structure:
339  // Dummy structure...to be specified later....
340  struct Reco_Vtx {
341  Int_t eDUMMYVARIABLE; // not yet used.
342 
343  ClassDef (Reco_Vtx,1) // maybe it works, when writing //ClassDef hereafter....?
344  };
345 
346 
347  // Object for the shower class description
348  // which contain additional information...
358  // Number of parameters used for the specific parametrisation.
359  Int_t ePara_N;
360 
364 
367 
368  TObjArray* eReco_ID_Array; // create crash when not initialized??? yes, so better initialize it
369  TObjArray* eReco_E_Array; // even when not yet needed....
370  TObjArray* eReco_Vtx_Array; // implementation will come later ...
371 
372 
373  void Init();
374  void Set0();
375  void Set0Parametrizations();
376 
377  EdbTrackP *TrackAS() const {
378  return eTrackAS;
379  }
380  EdbVTA *VTAS() const {
381  return eVTAS;
382  }
383 
384 
385  //-C- Similar to TrackClass: basic functions which set or return
386  //-C- simple values for the shower
387 
388  inline void SetCounters() {
389  N();
390  SetNpl();
391  SetN0();
392  SetN00();
393  }
394  inline void SetN0( int n0 ) {
395  eN0 = n0;
396  }
397  inline void SetN0() {
398  eN0 = eNpl-N();
399  }
400  inline Int_t N0() const {
401  return eN0;
402  }
403  inline void SetNpl( int npl ) {
404  eNpl=npl;
405  }
406  inline void SetNpl() {
407  if (eS) eNpl = 1+TMath::Abs(GetSegment(0)->PID() - GetSegment(N()-1)->PID());
408  }
409  inline Int_t Npl() const {
410  return eNpl;
411  }
412  inline Int_t N() const {
413  return (eS) ? eS->GetEntries() : 0;
414  }
415  inline void SetN00( int n00 ) {
416  eN00 = n00;
417  }
418  inline void SetN00() {
419  eN00 = eNpl-N();
420  }
421  inline Int_t N00() const {
422  return eN00;
423  }
424 
425  inline TObjArray* GetSegmentArray() {
426  return eS;
427  }
428 
429  inline EdbSegP *GetSegmentFirst() const {
430  return (eS) ? (EdbSegP*)(eS->First()) : 0;
431  }
432  inline EdbSegP *GetSegmentLast() const {
433  return (eS) ? (EdbSegP*)(eS->Last()) : 0;
434  }
435  inline EdbSegP *GetSegment(int i) const {
436  return (eS) ? (EdbSegP*)(eS->At(i)) : 0;
437  }
438 
439  inline Float_t GetSegmentFirstZ() const {
440  return (eS) ? ((EdbSegP*)eS->First())->Z() : 9999999;
441  }
442  inline Float_t GetSegmentLastZ() const {
443  return (eS) ? ((EdbSegP*)eS->Last())->Z() : 9999999;
444  }
445  inline Float_t GetFirstZ() const {
446  return eFirstZ;
447  }
448  inline Float_t GetLastZ() const {
449  return eLastZ;
450  }
451 
452  // EdbTrackP copied... needs to be filled with the corresponding ID values, obtained by the ID algos:
453  void SetPDG( int pdg ) {
454  ePDG=pdg;
455  }
456  Int_t PDG() const {
457  return ePDG;
458  }
459  Int_t GetPDG() const {
460  return PDG();
461  }
462  void SetM( float m ) {
463  eM=m;
464  }
465  Float_t M() const {
466  return eM;
467  }
468  Int_t GetM() const {
469  return M();
470  }
471 
472 
473  // Having EdbShowerP specific functions in it (no EdbTrackP equivalent here)
474 
475  // Gravity Center, Axis:
476  inline EdbSegP* GetSegmentGravity() const {
477  return eShowerAxisCenterGravityBT;
478  }
479  inline Float_t GetSegmentAngle() const {
480  return eShowerAxisAngle;
481  }
482 
483  // Add a segment:
484  void AddSegment(EdbSegP *s);
485  void AddSegmentAndUpdate(EdbSegP *s); // Attention, will execute the whole Update/Calculation Procedure
486  // for each BT which is attached.
487  // void RemoveSegment(EdbSegP *s); // NOT YET SUPPORTED.... isBUG in fedra. Solved from svn_1000
488  void RemoveSegment(EdbSegP *s, Bool_t UpdateAll=kFALSE);
489 
490  // Set an array of (EdbSegP) as shower array:
491  inline void SetSegmentArray(TObjArray* segArray) {
492  eS=segArray;
493  Update();
494  }
495 
496  // Sort ShowerSegments after ascending Z position:
497  void Sort();
498  Bool_t IsSorted();
499 
500  // Clear functions:
501  void ClearAll();
502  inline void Clear() {
503  if (eS) eS->Clear();
504  }
506  if (eProfileLongitudinal) eProfileLongitudinal->Reset();
507  }
509  if (eProfileTransversal) eProfileTransversal->Reset();
510  }
511 
512 
513  inline Int_t GetNBT() const {
514  return eNBT;
515  }
516  inline Int_t GetNBTMC() const {
517  return eNBTMC;
518  }
519  inline Int_t GetNBTMCFlag(Int_t PdgArray) const {
520  return eNBTMCFlag[PdgArray];
521  }
522  inline Int_t GetNBTPlate(Int_t PIDdiff) const {
523  return eNBTPlate[PIDdiff];
524  }
525  inline Int_t GetNBTMCPlate(Int_t PIDdiff) const {
526  return eNBTMCPlate[PIDdiff];
527  }
528  inline Int_t GetNBTMCFlagPlate(Int_t PIDdiff,Int_t PdgArray) const {
529  return eNBTMCFlagPlate[PIDdiff][PdgArray];
530  }
531 
532  inline Float_t GetPurity() const {
533  return ePurity;
534  }
535  inline Float_t GetSphericity() const {
536  return eSphericity;
537  }
538  inline TH1F* GetProfileLongitudinal() const {
539  return eProfileLongitudinal;
540  }
541  inline TH1F* GetProfileTransversal() const {
542  return eProfileTransversal;
543  }
544  TH1F* GetProfileLongitudinalPlate();
545 
546  inline Bool_t GetParametrisationIsDone(Int_t nr) const {
547  return eParametrisationIsDone[nr];
548  }
549  Float_t GetParaVariable(Int_t ParaVariable, Int_t ParaNr);
550 
551  inline Para_FJ GetPara_FJ() const {
552  return ePara_FJ;
553  }
554  inline Para_LT GetPara_LT() const {
555  return ePara_LT;
556  }
557  inline Para_YC GetPara_YC() const {
558  return ePara_YC;
559  }
560  inline Para_JC GetPara_JC() const {
561  return ePara_JC;
562  }
563  inline Para_XX GetPara_XX() const {
564  return ePara_XX;
565  }
566  inline Para_YY GetPara_YY() const {
567  return ePara_YY;
568  }
569  inline Para_PP GetPara_PP() const {
570  return ePara_PP;
571  }
572  inline Para_AS GetPara_AS() const {
573  return ePara_AS;
574  }
575  inline Para_SE GetPara_SE() const {
576  return ePara_SE;
577  }
579  return ePara_ExtraInfo;
580  }
581  // See comment in implementation, why we do this function:
582  void SetParaVariable(Float_t fParVar, Int_t ParaVariable, Int_t ParaNr);
583 
584  inline Bool_t GetMCInfoIsDone(Int_t nr) const {
585  return eMCInfoIsDone[nr];
586  }
587  inline Bool_t GetExtraInfoIsDone(Int_t nr) const {
588  return eExtraInfoIsDone[nr];
589  }
590  inline MCInfo_PGun GetMCInfo_PGun() const {
591  return eMCInfo_PGun;
592  }
593  inline MCInfo_Event GetMCInfo_Event() const {
594  return eMCInfo_Event;
595  }
596 
597  inline void SetMCInfoIsDone(Int_t nr, Bool_t IsDone) {
598  eMCInfoIsDone[nr]=IsDone;
599  return;
600  }
601  inline void SetExtraInfoIsDone(Int_t nr, Bool_t IsDone) {
602  eExtraInfoIsDone[nr]=IsDone;
603  return;
604  }
605  inline void SetMCInfo_PGun(MCInfo_PGun fMCInfo_PGun) {
606  eMCInfo_PGun=fMCInfo_PGun;
607  }
608  inline void SetMCInfo_Event(MCInfo_Event fMCInfo_Event) {
609  eMCInfo_Event=fMCInfo_Event;
610  }
611 
612  inline void SetAlgName(TString AlgName) {
613  eAlgName=AlgName;
614  }
615  inline void SetAlgValue(Int_t AlgValue) {
616  eAlgValue=AlgValue;
617  }
618 
619  inline void SetAlgParaValue(Int_t ParaValueNr, Float_t ParaValue) {
620  if (ParaValueNr>=10) return;
621  eParaValue[ParaValueNr]=ParaValue;
622  }
623  inline void SetAlgParaString(Int_t ParaStringNr, TString ParaString) {
624  if (ParaStringNr>=10) return;
625  eParaString[ParaStringNr]=ParaString;
626  }
627 
628 
629  //-C- Functions that calculate shower properties
630  void BuildNplN0();
631  void BuildNMC();
632  void BuildProfiles();
633  void BuildPlateProfile();
634  void BuildShowerAxis();
635  void BuildParametrisation(Int_t ParaNr);
636  void BuildParametrisation_FJ(); // 0
637  void BuildParametrisation_LT(); // 1
638  void BuildParametrisation_YC(); // 2
639  void BuildParametrisation_JC(); // 3
640  void BuildParametrisation_XX(); // 4
641  void BuildParametrisation_YY(); // 5
642  void BuildParametrisation_PP(); // 6
643  void BuildParametrisation_AS(); // 7
644  void BuildParametrisation_SE(); // 8
645  void BuildParametrisation_ExtraInfo();
646 
647  void CalcPurity();
648  void CalcSphericity();
649  void CalcShowerAngularDeviationDistribution();
650 
651 
652  Float_t CalcOpenAngle(Int_t type);
653  Float_t CalcOpenAngleSimple();
654  Double_t CalcIP(EdbSegP*, EdbVertex*);
655  Double_t CalcIP(EdbSegP*, double, double, double);
656  Double_t CalcDistLongitudinal(EdbSegP*, EdbSegP*);
657  Double_t CalcDistTransversal(EdbSegP*, EdbSegP*);
658 
659  // Update all shower properties.
660  // Can be called each time after BT is added or
661  // when last BT was added.
662  void Update();
663  void UpdateX(); // Update all shower properties _AND_ build all parametrisations.
664 
665 
667  //-C- Functions for advanced features:
668  void MergeFromShower(EdbShowerP* show,Int_t MergingType=1);
669  void MergeFromShowerByAddress(EdbShowerP* show);
670  void MergeFromShowerByPosition(EdbShowerP* show);
671  void AddShower(EdbShowerP* show); // calls MergeFromShower...
672  void Finalize();
674 
675 
676  //-C- Print functions with different detail//output level
677  void Print();
678  void PrintNice();
679  void PrintBasics();
680  void PrintMetaData();
681  void PrintSegments();
682  void PrintParametrisation(Int_t ParaNr=0);
683  void PrintParametrisation_FJ();
684  void PrintParametrisation_LT();
685  void PrintParametrisation_YC();
686  void PrintParametrisation_JC();
687  void PrintParametrisation_XX();
688  void PrintParametrisation_YY();
689  void PrintParametrisation_PP();
690  void PrintParametrisation_AS();
691  void PrintParametrisation_SE();
692  void PrintParametrisation_ExtraInfo();
693  void PrintMCInfo_PGun();
694  void PrintAll();
695 
696  //-C- HELP function , in case you dont know anything about it ...
697  void Help();
698 
699  ClassDef(EdbShowerP,1) // Root Class Definition for object EdbShowerP
700 
701 };
702 
703 #endif /* ROOT_EdbShowerP */
Double_t CalcIP(EdbSegP *s, EdbVertex *v)
Definition: ShowRec.cpp:8872
EdbSegP * BuildShowerAxis(TObjArray *ShowerSegArray)
Definition: ShowRec.cpp:8629
Double_t GetdT(EdbSegP *s1, EdbSegP *s2)
Definition: ShowRec.h:164
Double_t GetdR(EdbSegP *s1, EdbSegP *s2)
Definition: ShowRec.h:167
Definition: EdbSegP.h:18
Definition: EdbShowerP.h:28
void SetExtraInfoIsDone(Int_t nr, Bool_t IsDone)
Definition: EdbShowerP.h:601
Float_t ePurity
Definition: EdbShowerP.h:79
Para_YC ePara_YC
Definition: EdbShowerP.h:351
Float_t M() const
Definition: EdbShowerP.h:465
Float_t eShowerAngularDeviationTYDistribution_sigma
Definition: EdbShowerP.h:102
Bool_t GetExtraInfoIsDone(Int_t nr) const
Definition: EdbShowerP.h:587
Float_t GetFirstZ() const
Definition: EdbShowerP.h:445
EdbVTA * eVTAS
track to which the shower start is attached to
Definition: EdbShowerP.h:65
EdbSegP * GetSegmentLast() const
Definition: EdbShowerP.h:432
Int_t eNBT
Definition: EdbShowerP.h:71
Float_t eEnergyUncorrected
Definition: EdbShowerP.h:109
Float_t eShowerAngularDeviationTYDistribution_mean
Definition: EdbShowerP.h:101
EdbSegP * eShowerAxisCenterGravityBT
Definition: EdbShowerP.h:95
Int_t eAlgValue
Definition: EdbShowerP.h:40
void ClearProfileLongitudinalHisto()
Definition: EdbShowerP.h:505
Short_t eFirstPlateZ
Definition: EdbShowerP.h:52
EdbTrackP * eTrackAS
Definition: EdbShowerP.h:64
TObjArray * eReco_ID_Array
Definition: EdbShowerP.h:368
EdbSegP * GetSegmentGravity() const
Definition: EdbShowerP.h:476
Int_t PDG() const
Definition: EdbShowerP.h:456
Float_t eShowerAxisAngle
Definition: EdbShowerP.h:93
Short_t eLastPlatePID
Definition: EdbShowerP.h:51
Int_t eN0
Definition: EdbShowerP.h:63
Int_t ePara_N
Definition: EdbShowerP.h:359
MCInfo_Event GetMCInfo_Event() const
Definition: EdbShowerP.h:593
Int_t N() const
Definition: EdbShowerP.h:412
Para_JC GetPara_JC() const
Definition: EdbShowerP.h:560
Float_t eShowerAngularDeviationTXDistribution_mean
Definition: EdbShowerP.h:99
TObjArray * GetSegmentArray()
Definition: EdbShowerP.h:425
void SetMCInfo_PGun(MCInfo_PGun fMCInfo_PGun)
Definition: EdbShowerP.h:605
Para_SE ePara_SE
Definition: EdbShowerP.h:357
TH1F * GetProfileLongitudinal() const
Definition: EdbShowerP.h:538
TString eTransversalProfileName
Definition: EdbShowerP.h:36
Int_t eMC
Definition: EdbShowerP.h:81
Para_FJ ePara_FJ
Definition: EdbShowerP.h:349
Bool_t GetMCInfoIsDone(Int_t nr) const
Definition: EdbShowerP.h:584
Float_t eShowerAngularDeviationTXDistribution_sigma
Definition: EdbShowerP.h:100
void SetAlgParaString(Int_t ParaStringNr, TString ParaString)
Definition: EdbShowerP.h:623
Int_t N0() const
Definition: EdbShowerP.h:400
void SetAlgValue(Int_t AlgValue)
Definition: EdbShowerP.h:615
Short_t eFirstPlate
Definition: EdbShowerP.h:48
Float_t GetSegmentFirstZ() const
Definition: EdbShowerP.h:439
Float_t eM
vertex to which the shower start is attached to
Definition: EdbShowerP.h:67
Float_t eLastZ
Definition: EdbShowerP.h:55
Int_t GetNBTMCPlate(Int_t PIDdiff) const
Definition: EdbShowerP.h:525
Bool_t GetParametrisationIsDone(Int_t nr) const
Definition: EdbShowerP.h:546
EdbVTA * VTAS() const
Definition: EdbShowerP.h:380
Para_XX ePara_XX
Definition: EdbShowerP.h:353
Para_YY GetPara_YY() const
Definition: EdbShowerP.h:566
Int_t GetNBTMCFlag(Int_t PdgArray) const
Definition: EdbShowerP.h:519
Para_XX GetPara_XX() const
Definition: EdbShowerP.h:563
void SetM(float m)
Definition: EdbShowerP.h:462
Reco_Vtx eReco_Vtx
Definition: EdbShowerP.h:366
Float_t GetSegmentLastZ() const
Definition: EdbShowerP.h:442
Para_PP GetPara_PP() const
Definition: EdbShowerP.h:569
Float_t eEnergyMC
Definition: EdbShowerP.h:80
void SetN00()
Definition: EdbShowerP.h:418
Float_t eEnergyCorrected
Definition: EdbShowerP.h:110
void SetPDG(int pdg)
Definition: EdbShowerP.h:453
Float_t eEnergy
Definition: EdbShowerP.h:108
Int_t GetNBT() const
Definition: EdbShowerP.h:513
void SetAlgName(TString AlgName)
Definition: EdbShowerP.h:612
MCInfo_PGun eMCInfo_PGun
Definition: EdbShowerP.h:362
Short_t eLastPlate
Definition: EdbShowerP.h:49
Float_t GetLastZ() const
Definition: EdbShowerP.h:448
TObjArray * eReco_Vtx_Array
Definition: EdbShowerP.h:370
EdbSegP * GetSegment(int i) const
Definition: EdbShowerP.h:435
Para_AS ePara_AS
Definition: EdbShowerP.h:356
Reco_E eReco_E
Definition: EdbShowerP.h:365
Float_t eFirstZ
Definition: EdbShowerP.h:54
EdbTrackP * TrackAS() const
Definition: EdbShowerP.h:377
void SetN00(int n00)
Definition: EdbShowerP.h:415
Int_t eN00
Definition: EdbShowerP.h:77
Short_t eFirstPlatePID
Definition: EdbShowerP.h:50
Para_ExtraInfo GetPara_ExtraInfo() const
Definition: EdbShowerP.h:578
TH1F * eProfileLongitudinal
Definition: EdbShowerP.h:86
Short_t eLastPlateZ
Definition: EdbShowerP.h:53
void SetCounters()
Definition: EdbShowerP.h:388
MCInfo_Event eMCInfo_Event
Definition: EdbShowerP.h:363
TObjArray * eS
Definition: EdbShowerP.h:61
Para_PP ePara_PP
Definition: EdbShowerP.h:355
Int_t GetNBTPlate(Int_t PIDdiff) const
Definition: EdbShowerP.h:522
Int_t N00() const
Definition: EdbShowerP.h:421
Int_t GetPDG() const
Definition: EdbShowerP.h:459
Para_AS GetPara_AS() const
Definition: EdbShowerP.h:572
Para_YC GetPara_YC() const
Definition: EdbShowerP.h:557
Int_t eNpl
Definition: EdbShowerP.h:62
void ClearProfileTransversalHisto()
Definition: EdbShowerP.h:508
Int_t eNBTMC
Definition: EdbShowerP.h:72
TH1F * GetProfileTransversal() const
Definition: EdbShowerP.h:541
Para_JC ePara_JC
Definition: EdbShowerP.h:352
EdbSegP * GetSegmentFirst() const
Definition: EdbShowerP.h:429
void SetN0()
Definition: EdbShowerP.h:397
Int_t GetNBTMC() const
Definition: EdbShowerP.h:516
Float_t GetSphericity() const
Definition: EdbShowerP.h:535
Short_t eId
Definition: EdbShowerP.h:106
TH1F * eProfileTransversal
Definition: EdbShowerP.h:87
void SetNpl()
Definition: EdbShowerP.h:406
Int_t Npl() const
Definition: EdbShowerP.h:409
void SetN0(int n0)
Definition: EdbShowerP.h:394
void SetMCInfo_Event(MCInfo_Event fMCInfo_Event)
Definition: EdbShowerP.h:608
void SetNpl(int npl)
Definition: EdbShowerP.h:403
Para_ExtraInfo ePara_ExtraInfo
Definition: EdbShowerP.h:361
void Clear()
Definition: EdbShowerP.h:502
Para_LT ePara_LT
Definition: EdbShowerP.h:350
Int_t ePDG
Definition: EdbShowerP.h:68
void SetSegmentArray(TObjArray *segArray)
Definition: EdbShowerP.h:491
void SetAlgParaValue(Int_t ParaValueNr, Float_t ParaValue)
Definition: EdbShowerP.h:619
Float_t eSphericity
Definition: EdbShowerP.h:82
Para_FJ GetPara_FJ() const
Definition: EdbShowerP.h:551
Para_YY ePara_YY
Definition: EdbShowerP.h:354
MCInfo_PGun GetMCInfo_PGun() const
Definition: EdbShowerP.h:590
Float_t GetSegmentAngle() const
Definition: EdbShowerP.h:479
Float_t GetPurity() const
Definition: EdbShowerP.h:532
Short_t ePDGId
Definition: EdbShowerP.h:107
Int_t GetNBTMCFlagPlate(Int_t PIDdiff, Int_t PdgArray) const
Definition: EdbShowerP.h:528
TString eAlgName
Definition: EdbShowerP.h:39
TString eLongitudinalProfileName
Definition: EdbShowerP.h:35
Para_LT GetPara_LT() const
Definition: EdbShowerP.h:554
TObjArray * eReco_E_Array
Definition: EdbShowerP.h:369
Int_t GetM() const
Definition: EdbShowerP.h:468
Para_SE GetPara_SE() const
Definition: EdbShowerP.h:575
void AddShower(EdbShowerP *show)
void SetMCInfoIsDone(Int_t nr, Bool_t IsDone)
Definition: EdbShowerP.h:597
Definition: EdbPattern.h:118
Definition: EdbVertex.h:25
Definition: EdbVertex.h:68
struct @8 Z
ss PrintNice()
Alg Print()
void hist()
Definition: init.C:23
void Finalize()
Definition: ShowRec.cpp:513
void Help()
Definition: mc2raw.cxx:20
Definition: EdbShowerP.h:295
Int_t eDUMMYVARIABLE
Definition: EdbShowerP.h:299
Definition: EdbShowerP.h:269
Float_t vtxposy
Definition: EdbShowerP.h:283
Float_t Y
Definition: EdbShowerP.h:287
Int_t MCEvt
Definition: EdbShowerP.h:275
Float_t vtxposz
Definition: EdbShowerP.h:284
Float_t Z
Definition: EdbShowerP.h:289
Int_t PDGId
Definition: EdbShowerP.h:276
Float_t X
Definition: EdbShowerP.h:288
Float_t vtxposx
Definition: EdbShowerP.h:282
Float_t TX
Definition: EdbShowerP.h:285
Float_t tantheta
Definition: EdbShowerP.h:278
Float_t diry
Definition: EdbShowerP.h:280
Float_t dirz
Definition: EdbShowerP.h:281
Float_t TY
Definition: EdbShowerP.h:286
Float_t energy
Definition: EdbShowerP.h:277
Float_t dirx
Definition: EdbShowerP.h:279
Definition: EdbShowerP.h:235
Int_t nseg
Definition: EdbShowerP.h:238
Definition: EdbShowerP.h:257
Float_t InBT_Flag
Definition: EdbShowerP.h:261
Float_t InBT_DeltaZToVtx
Definition: EdbShowerP.h:265
Float_t InBT_IPToVtx
Definition: EdbShowerP.h:264
Int_t ShowerLength
Definition: EdbShowerP.h:263
Float_t InPairBT_E
Definition: EdbShowerP.h:262
Float_t InBT_E
Definition: EdbShowerP.h:260
Definition: EdbShowerP.h:143
Float_t BT_deltaT_rms
Definition: EdbShowerP.h:150
Int_t nseg
Definition: EdbShowerP.h:146
Float_t BT_deltaR_rms
Definition: EdbShowerP.h:148
Float_t BT_deltaR_mean
Definition: EdbShowerP.h:147
Float_t ShowerAxisAngle
Definition: EdbShowerP.h:145
Float_t BT_deltaT_mean
Definition: EdbShowerP.h:149
Definition: EdbShowerP.h:180
Int_t nseg
Definition: EdbShowerP.h:184
Float_t nmax
Definition: EdbShowerP.h:188
Float_t alpha
Definition: EdbShowerP.h:187
Float_t C1
Definition: EdbShowerP.h:185
Float_t BT_deltaT_mean
Definition: EdbShowerP.h:194
Float_t BT_deltaT_rms
Definition: EdbShowerP.h:195
Float_t BT_deltaR_rms
Definition: EdbShowerP.h:193
Float_t ShowerAxisAngle
Definition: EdbShowerP.h:183
Float_t BT_deltaR_mean
Definition: EdbShowerP.h:192
Float_t a1
Definition: EdbShowerP.h:186
Definition: EdbShowerP.h:155
Float_t BT_deltaR_rms
Definition: EdbShowerP.h:161
Float_t BT_deltaR_mean
Definition: EdbShowerP.h:160
Int_t nseg
Definition: EdbShowerP.h:159
Float_t ShowerAxisAngle
Definition: EdbShowerP.h:158
Float_t BT_deltaT_rms
Definition: EdbShowerP.h:163
Float_t BT_deltaT_mean
Definition: EdbShowerP.h:162
Definition: EdbShowerP.h:224
Float_t ePairOpeningAngle
Definition: EdbShowerP.h:228
Int_t nseg
Definition: EdbShowerP.h:227
Float_t ShowerAxisAngle
Definition: EdbShowerP.h:226
Float_t ePairChi2
Definition: EdbShowerP.h:231
Float_t ePairOpeningDist_dMin
Definition: EdbShowerP.h:229
Float_t ePairOpeningDist_dR
Definition: EdbShowerP.h:230
Definition: EdbShowerP.h:248
Int_t nseg
Definition: EdbShowerP.h:251
Float_t efficiencyAtShowerAxisAngle
Definition: EdbShowerP.h:253
Float_t ShowerAxisAngle
Definition: EdbShowerP.h:250
Int_t npl
Definition: EdbShowerP.h:252
Definition: EdbShowerP.h:200
Float_t Max_ProfileLongitudinal
Definition: EdbShowerP.h:206
Float_t Last_ProfileTransversal
Definition: EdbShowerP.h:211
Int_t nseg
Definition: EdbShowerP.h:203
Float_t Last_ProfileLongitudinal
Definition: EdbShowerP.h:210
Float_t Max_ProfileTransversal
Definition: EdbShowerP.h:209
Float_t RMS_ProfileLongitudinal
Definition: EdbShowerP.h:205
Float_t Mean_ProfileLongitudinal
Definition: EdbShowerP.h:204
Float_t RMS_ProfileTransversal
Definition: EdbShowerP.h:208
Float_t Mean_ProfileTransversal
Definition: EdbShowerP.h:207
Float_t ShowerAxisAngle
Definition: EdbShowerP.h:202
Definition: EdbShowerP.h:169
Float_t ShowerAxisAngle
Definition: EdbShowerP.h:171
Float_t C1
Definition: EdbShowerP.h:173
Float_t alpha
Definition: EdbShowerP.h:175
Int_t nseg
Definition: EdbShowerP.h:172
Float_t a1
Definition: EdbShowerP.h:174
Float_t nmax
Definition: EdbShowerP.h:176
Definition: EdbShowerP.h:215
Float_t ShowerAxisAngle
Definition: EdbShowerP.h:217
Int_t nseg
Definition: EdbShowerP.h:218
Definition: EdbShowerP.h:327
Float_t eEnergyUncorrected
Definition: EdbShowerP.h:331
Short_t eId
Definition: EdbShowerP.h:328
Short_t ePDGId
Definition: EdbShowerP.h:329
Float_t eEnergyCorrected
Definition: EdbShowerP.h:332
Float_t eEnergy
Definition: EdbShowerP.h:330
Int_t eParaNr
Definition: EdbShowerP.h:333
Definition: EdbShowerP.h:309
Float_t eProb5
Definition: EdbShowerP.h:311
TString eReco_ID_Name
Definition: EdbShowerP.h:313
Float_t eReco_ID_Nr
Definition: EdbShowerP.h:314
Int_t eParaNr
Definition: EdbShowerP.h:316
Float_t eProb90
Definition: EdbShowerP.h:310
Definition: EdbShowerP.h:340
Int_t eDUMMYVARIABLE
Definition: EdbShowerP.h:341
Definition: Flexmotn.h:102
Int_t type
Definition: testBGReduction_By_ANN.C:15
EdbSegP * s
Definition: tlg2pattern.C:32