FEDRA emulsion software from the OPERA Collaboration
EdbShowAlg_GS.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbShowAlg_GS
2 #define ROOT_EdbShowAlg_GS
3 
4 #include "TROOT.h"
5 #include "TFile.h"
6 #include "TVector3.h"
7 #include "TIndexCell.h"
8 #include "TArrayF.h"
9 #include "TBenchmark.h"
10 #include "TMultiLayerPerceptron.h"
11 #include "EdbVertex.h"
12 #include "EdbPVRec.h"
13 #include "EdbPhys.h"
14 #include "EdbMath.h"
15 #include "EdbMomentumEstimator.h"
16 #include "EdbLog.h"
17 #include "EdbPattern.h"
18 #include "EdbShowerP.h"
19 using namespace std;
20 
21 //______________________________________________________________________________
22 //___
23 //___ Declaration of EdbShowAlg Class:
24 //___ Following structure is foreseen: The (inherited) class instances of
25 //___ EdbShowAlg DO the reconstruction. They DONT manage the data.
26 //___ Following the principle "separate algorithms and data" (like ATHENA,
27 //___ the ATLAS framework). Therefore the EdbPVRec Object, the Initiator
28 //___ Base Tracks and the shower arrays are only handed over either as
29 //___ reference or as pointers. Saving/manipulating/preparing of these
30 //___ objects will only be done in the EdbShowRec class instances!
31 //___
32 //______________________________________________________________________________
33 
34 
35 
36 //______________________________________________________________________________
37 
38 class EdbShowAlg_GS : public EdbShowAlg {
39 
40 
41 private:
42 
43  // TObjArray storing Initiator Vertices:
44  TObjArray* eInVtxArray;
45  Int_t eInVtxArrayN;
46 
47  TH1F* h_GammaChi2;
48 
49 public:
50 
53  virtual ~EdbShowAlg_GS(); // virtual constructor due to inherited class
54 
55  void Init();
56 
57  inline void SetInVtxArray( TObjArray* InVtxArray ) {
58  eInVtxArray = InVtxArray;
59  eInVtxArrayN = eInVtxArray->GetEntries();
60  cout << eInVtxArrayN << " entries set"<<endl;
61  }
62  void SetInVtx( EdbVertex* vtx );
63 
64  inline Int_t GetInVtxArrayN() const {
65  return eInVtxArrayN;
66  }
67  inline TObjArray* GetInVtxArray() const {
68  return eInVtxArray;
69  }
70 
71 
72  // Helper Functions for this class:
73  void Convert_InVtxArray_To_InBTArray();
74  void Convert_TracksArray_To_InBTArray();
75  Bool_t CheckPairDuplications(Int_t SegPID,Int_t SegID,Int_t Seg2PID,Int_t Seg2ID,TArrayI* SegmentPIDArray,TArrayI* SegmentIDArray,TArrayI* Segment2PIDArray,TArrayI* Segment2IDArray,int RecoShowerArrayN);
76  Double_t CalcIP(EdbSegP *s, double x, double y, double z);
77  Double_t CalcIP(EdbSegP *s, EdbVertex *v);
78  Bool_t IsPossibleFakeDoublet(EdbSegP* s1,EdbSegP* s2);
79 
80 
81  TObjArray* FindPairs(EdbSegP* InBT, EdbPVRec* eAli_Sub);
82  TObjArray* CheckCleanPairs(EdbSegP* InBT, TObjArray* RecoShowerArrayFromFindPairs);
83 
84  // Main functions for using this ShowerAlgorithm Object.
85  // Structure is made similar to OpRelease, where
86  // Initialize, Execute, Finalize
87  // give the three columns of the whole thing.
88  void Initialize();
89  void Execute();
90  void Finalize();
91 
92  ClassDef(EdbShowAlg_GS,1); // Root Class Definition for my Objects
93 };
94 
95 
96 #endif /* ROOT_EdbShowAlg_GS */
EdbPVRec * ali
Definition: align.C:1
Double_t CalcIP(EdbSegP *s, EdbVertex *v)
Definition: ShowRec.cpp:8872
Definition: EdbPVRec.h:148
Definition: EdbSegP.h:18
Definition: EdbShowAlg_GS.h:38
ClassDef(EdbShowAlg_GS, 1)
TObjArray * GetInVtxArray() const
Definition: EdbShowAlg_GS.h:67
TObjArray * eInVtxArray
Definition: EdbShowAlg_GS.h:44
TH1F * h_GammaChi2
Definition: EdbShowAlg_GS.h:47
Int_t eInVtxArrayN
Definition: EdbShowAlg_GS.h:45
void SetInVtxArray(TObjArray *InVtxArray)
Definition: EdbShowAlg_GS.h:57
Int_t GetInVtxArrayN() const
Definition: EdbShowAlg_GS.h:64
Definition: EdbShowAlg.h:40
Definition: EdbVertex.h:68
Alg Execute()
void Finalize()
Definition: ShowRec.cpp:513
void Initialize()
Definition: rwcToEdb.cpp:28
EdbSegP * s1
Definition: tlg2pattern.C:30
EdbSegP * s2
Definition: tlg2pattern.C:31
EdbSegP * s
Definition: tlg2pattern.C:32