FEDRA emulsion software from the OPERA Collaboration
EdbVertexComb.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbVertexComb
2 #define ROOT_EdbVertexComb
3 #include "EdbVertex.h"
4 #include "EdbScanCond.h"
5 
6 //_________________________________________________________________________
7 class EdbTopology: public TObject {
8 
9  private:
10  TObjArray eVertices;
11  TObjArray eTracks; // detached tracks - part of the topology but not participated in any vtx
12 
13  public:
15  virtual ~EdbTopology(){}
16 
17  Int_t Nvtx() const {return eVertices.GetEntriesFast();}
18  Int_t Ntr() const {return eTracks.GetEntriesFast();}
19  Float_t Probability();
20  Float_t DZ();
21  EdbVertex *AddVertex( EdbVertex *v ) { eVertices.Add(v); return v; }
22  EdbVertex *GetVertex( int i ) const { return (EdbVertex *)eVertices.At(i); }
23  EdbTrackP *GetTrack( int i ) const { return (EdbTrackP *)eTracks.At(i); }
24  void AddSingleTracks( TObjArray &tracks ) { eTracks.AddAll(&tracks); }
25  void Print();
26  void PrintTracks();
27  char *TracksStr();
28  char *VertexStr(EdbVertex &v);
29  void OrderVtxByZ();
30  bool IsEqual(EdbTopology &t);
31  Int_t MaxV(){return 0;}
32 
33  ClassDef(EdbTopology,1) //class to keep the reconstructed topology
34 };
35 
36 //_________________________________________________________________________
37 class EdbVertexComb: public TObject {
38 
39  public:
40  TObjArray eTracks; // input EdbTracks
41 
42  Int_t eRecursionMax; // number of vertex/event to be searched
43  Int_t eRecursion; // recursion level (0 - no recursion)
46  Float_t eZ0; // input parameter: the first approximation for the vertex z-position
47 
48  Float_t eProbMinV; // min probability to accept the vertex for topology calculation
49  Int_t eNProngMinV; // min prongs to accept the vertex for topology calculation
50 
51  Float_t eProbDetached; // default probability for the detached track (1-prong vertex)
52 
53  TObjArray eVertices; // output vertices
54  TObjArray eOther; // recursive array of EdbVertexComb objects in multyvertex case
55 
56  TObjArray eTopologies; // found EdbTopologies sorted by rating
57 
58  public:
60  EdbVertexComb( TObjArray &tracks );
61  virtual ~EdbVertexComb();
62 
63  void Set0();
64  void CopyPar( EdbVertexComb &comb );
65  void AddTrack( EdbTrackP *t ) { eTracks.Add(t); }
66  void SetTracksErrors(EdbScanCond &cond) { eCond = cond; SetTracksErrors(); }
68  void SetTracksErrors(TObjArray &tracks, EdbScanCond &cond);
69 // void SelectSortVertices();
70 
71  void FormVertices();
72  int FindTopologies();
73  void PrintTopologies();
74 
75  EdbTopology *GetTopology(int i) const {return ((EdbTopology*)(eTopologies.At(i)));}
76 
77  int Ntr() const {return eTracks.GetEntriesFast();}
78  int Nvtx() const {return eVertices.GetEntriesFast();}
79  EdbVertex *GetVertex( int i ) const { return (EdbVertex *)eVertices.At(i); }
80  EdbVertexComb *GetVertexComb( int i ) const { return (EdbVertexComb *)eOther.At(i); }
81 
82  bool IsAcceptable(EdbVertex &v);
83  EdbVertex *CheckVTX(TObjArray &tracks);
84  void PrintTracks();
85  void SelectTopologies(TObjArray &topoarr);
86  void SortTopologies(TObjArray &topoarr);
87  void ClearDoublets(TObjArray &topoarr);
88  void PrintTeoricalCombinations(Int_t n);
89 
90  ClassDef(EdbVertexComb,1) //combinatorial selection of the best vertex combinations
91 };
92 #endif /* ROOT_EdbVertexComb */
TTree * t
Definition: check_shower.C:4
Definition: EdbScanCond.h:10
Definition: EdbVertexComb.h:7
Int_t MaxV()
Definition: EdbVertexComb.h:31
EdbVertex * GetVertex(int i) const
Definition: EdbVertexComb.h:22
char * TracksStr()
Definition: EdbVertexComb.cxx:88
TObjArray eVertices
Definition: EdbVertexComb.h:10
void OrderVtxByZ()
Definition: EdbVertexComb.cxx:61
virtual ~EdbTopology()
Definition: EdbVertexComb.h:15
void Print()
Definition: EdbVertexComb.cxx:113
bool IsEqual(EdbTopology &t)
Definition: EdbVertexComb.cxx:52
EdbTopology()
Definition: EdbVertexComb.h:14
Float_t DZ()
Definition: EdbVertexComb.cxx:36
void AddSingleTracks(TObjArray &tracks)
Definition: EdbVertexComb.h:24
EdbVertex * AddVertex(EdbVertex *v)
Definition: EdbVertexComb.h:21
char * VertexStr(EdbVertex &v)
Definition: EdbVertexComb.cxx:99
TObjArray eTracks
Definition: EdbVertexComb.h:11
Int_t Ntr() const
Definition: EdbVertexComb.h:18
Float_t Probability()
Definition: EdbVertexComb.cxx:23
EdbTrackP * GetTrack(int i) const
Definition: EdbVertexComb.h:23
Int_t Nvtx() const
Definition: EdbVertexComb.h:17
void PrintTracks()
Definition: EdbVertexComb.cxx:73
Definition: EdbPattern.h:118
Definition: EdbVertexComb.h:37
void Set0()
Definition: EdbVertexComb.cxx:139
Float_t eZ0
Definition: EdbVertexComb.h:46
Int_t eRecursionMax
Definition: EdbVertexComb.h:42
void FormVertices()
Definition: EdbVertexComb.cxx:211
void PrintTracks()
Definition: EdbVertexComb.cxx:248
EdbVertex * CheckVTX(TObjArray &tracks)
Definition: EdbVertexComb.cxx:332
Int_t eRecursion
Definition: EdbVertexComb.h:43
void SetTracksErrors(EdbScanCond &cond)
Definition: EdbVertexComb.h:66
void AddTrack(EdbTrackP *t)
Definition: EdbVertexComb.h:65
EdbVertex * GetVertex(int i) const
Definition: EdbVertexComb.h:79
TObjArray eTopologies
Definition: EdbVertexComb.h:56
EdbVertexPar eVPar
Definition: EdbVertexComb.h:45
virtual ~EdbVertexComb()
Definition: EdbVertexComb.cxx:134
void PrintTeoricalCombinations(Int_t n)
Definition: EdbVertexComb.cxx:161
Int_t eNProngMinV
Definition: EdbVertexComb.h:49
void ClearDoublets(TObjArray &topoarr)
Definition: EdbVertexComb.cxx:263
Float_t eProbMinV
Definition: EdbVertexComb.h:48
int FindTopologies()
Definition: EdbVertexComb.cxx:190
EdbVertexComb()
Definition: EdbVertexComb.h:59
TObjArray eTracks
Definition: EdbVertexComb.h:40
EdbVertexComb * GetVertexComb(int i) const
Definition: EdbVertexComb.h:80
int Ntr() const
Definition: EdbVertexComb.h:77
Float_t eProbDetached
Definition: EdbVertexComb.h:51
TObjArray eOther
Definition: EdbVertexComb.h:54
void SetTracksErrors()
Definition: EdbVertexComb.h:67
void PrintTopologies()
Definition: EdbVertexComb.cxx:203
void SelectTopologies(TObjArray &topoarr)
Definition: EdbVertexComb.cxx:293
EdbScanCond eCond
Definition: EdbVertexComb.h:44
EdbTopology * GetTopology(int i) const
Definition: EdbVertexComb.h:75
bool IsAcceptable(EdbVertex &v)
Definition: EdbVertexComb.cxx:325
void SortTopologies(TObjArray &topoarr)
Definition: EdbVertexComb.cxx:279
TObjArray eVertices
Definition: EdbVertexComb.h:53
void CopyPar(EdbVertexComb &comb)
Definition: EdbVertexComb.cxx:149
int Nvtx() const
Definition: EdbVertexComb.h:78
Definition: EdbVertex.h:172
Definition: EdbVertex.h:68
TTree * tracks
Definition: check_tr.C:19