FEDRA emulsion software from the OPERA Collaboration
EdbVertex.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbVertex
2 #define ROOT_EdbVertex
3 
5 // //
6 // EdbVertex //
7 // //
8 // Class to reconstruct vertexes //
9 // //
11 #include <TObject.h>
12 #include <TTree.h>
13 #include <TVector3.h>
14 #include <TGraphErrors.h>
15 #include <TGraphAsymmErrors.h>
16 #include "EdbPattern.h"
17 #include "vt++/VtTrack.hh"
18 #include "vt++/VtVertex.hh"
19 #include "vt++/VtRelation.hh"
20 #include "vt++/VtKalman.hh"
21 
22 class EdbPVRec;
23 
24 //_________________________________________________________________________
25 class EdbVTA: public TObject {
26 
27  private:
28 
29  EdbTrackP *eTrack; // pointer to track (or segment)
30  EdbVertex *eVertex; // pointer to vertex
31 
32  Int_t eZpos; // 1-track start, 0-track end connect to the vertex
33  Int_t eFlag; // 0-neighbor track;
34  // 1-neighbor segment;
35  // 2-direct (attached) track connection
36  // 3-neighbor vertex;
37  Float_t eImp; // impact parameter
38  Float_t eDist; // distance from vertex to the nearest track point
39 
40  public:
41  EdbVTA();
42  EdbVTA(EdbVTA &vta);
44  virtual ~EdbVTA();
45 
46  Int_t Zpos() const {return eZpos;}
47  Int_t Flag() const {return eFlag;}
48  Float_t Imp() const {return eImp;}
49  Float_t Dist() const {return eDist;}
50  EdbTrackP *GetTrack() const {return eTrack;}
51  EdbVertex *GetVertex() const {return eVertex;}
52 
53  void Set0();
54  void SetZpos(int zpos) {eZpos = zpos;}
55  void SetFlag(int flag) {eFlag = flag;}
56  void SetImp(float imp) {eImp = imp;}
57  void SetDist(float dist) {eDist = dist;}
59  void SetVertex(EdbVertex *v) {eVertex = v;}
60  void Print();
61 
62  void AddVandT();
63 
64  ClassDef(EdbVTA,1) // vertex-track association
65 };
66 
67 //_________________________________________________________________________
68 class EdbVertex: public TObject {
69 
70  private:
71 
72  TList eVTn; // vertex neighborhood tracks and segments
73  TList eVTa; // attached tracks
74 
75  Float_t eX; // for generated vertexes - the real vertex position
76  Float_t eY; // for reconstructed ones - average of track connection
77  Float_t eZ; // points, used as local coordiantes origin (0,0,0)
78  // to avoid accuracy problem
79 
80  Int_t eFlag; // 0 - neutral (tracks starts attached only)
81  // 1 - charge (tracks ends&starts attached)
82  // 2 - back neutral (tracks ends attached only)
83  // 3 - neutral, linked (has common track with other vertex)
84  // 4 - charge, linked
85  // 5 - back neutral, linked
86  Int_t eMCEvt;
87  Int_t eID;
88  Float_t eQuality; // Probability/(vsigmax**2+vsigmay**2)
89 
90  VERTEX::Vertex *eV; // pointer to VtVertex object
91 
92  public:
93  EdbVertex();
94  //EdbVertex(EdbVertex &v);
95  virtual ~EdbVertex();
96 
97  // int MakeV( bool usemom = true, bool usesegpar=false );
98 
99  void Clear();
100  void ClearV();
101  void ClearNeighborhood();
102  void AddVTA(EdbVTA *vta);
103  void RemoveVTA(EdbVTA *vta);
104  void ResetTracks();
105  void Print();
106  void PrintGeom();
107  Int_t Compare(const TObject *o) const;
108  Bool_t EstimateVertexMath( float& xv, float& yv, float& zv, float& d );
109  void Edb2Vt(const EdbTrackP& tr, VERTEX::Track& t, float X0 = 0., float m = 0.139 );
110  void Edb2Vt(const EdbSegP& s, VERTEX::Track& t,float X0 = 0., float m = 0.139 );
111  Float_t Chi2Track(EdbTrackP *tr, int zpos, float X0 = 0.);
112 
113  Float_t MinDist();
114  Float_t Volume() { if(V()) return V()->vxerr()*V()->vyerr()*V()->vzerr(); else return 0; }
115  Float_t MaxAperture();
116  Float_t MaxImpact() { EdbVTA *vta=GetMaxImpVTA(); return vta? vta->Imp(): 0; }
117  EdbVertex *GetConnectedVertex(int nv);
119  Bool_t IsEqual(const TObject *o) const;
120 
121  Int_t N() const {return eVTa.GetSize();}
122  Int_t Nn() const {return eVTn.GetSize();}
123  Int_t Nv();
124  Int_t Flag() const {return eFlag;}
125  Int_t MCEvt() const {return eMCEvt;}
126  Int_t ID() const {return eID;}
127  Int_t Zpos(int i) {return GetVTa(i)->Zpos();}
128  ULong_t Hash() const {return eID;}
129  Bool_t IsSortable() const {return kTRUE;}
130  Float_t X() const {return eX;}
131  Float_t Y() const {return eY;}
132  Float_t Z() const {return eZ;}
133  Float_t VX() const {return eV ? (eV->vx() + eX) : 1000000.;}
134  Float_t VY() const {return eV ? (eV->vy() + eY) : 1000000.;}
135  Float_t VZ() const {return eV ? (eV->vz() + eZ) : 1000000.;}
136  Float_t Quality() {return eQuality;}
137  TList *VTa() {return &eVTa;}
138  TList *VTn() {return &eVTn;}
139  EdbVTA *GetVTa(int i) {return (EdbVTA*)(eVTa.At(i));}
140  EdbVTA *GetVTn(int i) {return (EdbVTA*)(eVTn.At(i));}
141  EdbTrackP *GetTrack(int i) {return GetVTa(i)->GetTrack();}
142  EdbTrackP *GetTrackN(int i) {return GetVTn(i)->GetTrack();}
143  EdbSegP *GetTrackV(int i, bool usesegpar=false);
144  EdbVTA *GetMaxImpVTA();
145 
146  float CheckImpGeom(const EdbTrackP *tr);
147  float CheckImp(const EdbTrackP *tr);
148  EdbVTA *CheckImp(const EdbTrackP *tr, float ImpMax, int zpos, float dist);
149  Float_t Impact(int i) { return GetVTa(i)? GetVTa(i)->Imp(): 1000000.; }
150  Float_t DistSeg(EdbSegP *seg, float X0 = 0.);
151  Float_t DistTrack(EdbTrackP *tr, int zpos, float X0 = 0.);
152  Float_t ImpTrack(int i) { return DistSeg( GetTrackV(i) ); }
153 
154  VERTEX::Vertex *V() const {return eV;}
155 
156  void SetID(int ID = 0) {eID = ID;}
157  void SetXYZ(float x, float y, float z) {eX=x; eY=y; eZ=z;}
158  void SetFlag(int flag = 0 ) {eFlag = flag;}
159  void SetMC(int mEvt=0) {eMCEvt=mEvt;}
160  void SetV(VERTEX::Vertex *v) {eV=v;}
161  void SetQuality( float q = 0 ) {eQuality = q;}
162 
163  Bool_t TrackInVertex( EdbTrackP *t );
164  Int_t CheckDiscardedTracks();
165  Int_t EstimateVertexFlag();
166  EdbTrackP *MeanTrack();
167 
168  ClassDef(EdbVertex,3) // vertex class for OPERA emulsion data
169 };
170 
171 //_________________________________________________________________________
172 class EdbVertexPar: public TObject {
173 
174  public:
175  Float_t eZbin; // z- granularity (default is 100 microns)
176  Float_t eAbin; // safety margin for angular aperture of vertex products
177  Float_t eDZmax; // maximum z-gap in the track-vertex group
178  Float_t eProbMin; // minimum acceptable probability for chi2-distance between tracks
179  Float_t eImpMax; // maximal acceptable impact parameter (preliminary check)
180  Float_t eImpMaxV; // if the impact is <= eImpMaxV the 2-vertex is accepted disregard to it's probability
181  Bool_t eUseMom; // use or not track momentum for vertex calculations
182  Bool_t eUseSegPar; // use only the nearest measured segments for vertex fit (as Neuchatel)
183  Int_t eQualityMode; // vertex quality estimation method (0:=Prob/(sigVX^2+sigVY^2); 1:= inverse average track-vertex distance)
184  Bool_t eUseKalman; // use or not Kalman for the vertex fit. Default is true
185  Bool_t eUseLimits; // if true - look for the vertex only inside limits defined by eVmin:eVmax, default is false
186  TVector3 eVmin,eVmax; // limits for the vertex search
187 
188  EdbVertexPar();
189  virtual ~EdbVertexPar(){}
190  ClassDef(EdbVertexPar,1) // vertex reconstruction parameters
191 };
192 
193 //_________________________________________________________________________
194 class EdbVertexRec: public EdbVertexPar {
195 
196  private:
197 
200 
201  public:
202 
203  TList eVTA; // vertex-track associations
204  TObjArray *eEdbTracks;
205  TObjArray *eVTX; // array of vertex
206  EdbPVRec *ePVR; // patterns volume (optional)
207 
208  public:
210  EdbVertexRec( EdbVertexPar &vpar ) : EdbVertexPar(vpar) { Set0(); }
211  virtual ~EdbVertexRec();
212 
213  void Set0();
214  void Reset();
215  const TVector3 *Vmin() const {return &eVmin;}
216  const TVector3 *Vmax() const {return &eVmax;}
217  int RefitAll();
218  void AcceptPolish();
219  void RejectPolish();
220  void StatVertexN();
223  void FillTracksStartEnd(TIndexCell &starts, TIndexCell &ends);
224 
225  Int_t MakeV(EdbVertex &edbv, bool isRefit=false);
226  Int_t FindVertex();
227 
228  EdbVertex *Make1Vertex(TObjArray &tracks, float zexpected);
229  EdbVertex *StripBadTracks( EdbVertex &v, float impMax, int ntrMin );
230 
231  EdbVertex *ProbVertex2(EdbTrackP *tr1, EdbTrackP *tr2, int zpos1, int zpos2 );
232  Int_t ProbVertexN();
233  Int_t ProbVertexN_old();
234  Int_t ProbVertexNpos(int zpos);
235  void CheckVTX();
236  EdbVertex *TestVTAGroup(TObjArray &arrvta);
237  int EstimateVertexFlag(int zpos1, int zpos2);
238 
239  Bool_t CheckDZ2(float z1, float z2, int zpos1, int zpos2, float z );
240  Bool_t IsInsideLimits(EdbSegP &s);
241  Int_t FindSimilarTracks(EdbTrackP &t, TObjArray &found, int nsegmin=2, float dMax=100., float dTheta=0.01, float dZmax=50000.);
242  Int_t FindSimilarTracksE(EdbSegP &spred, TObjArray &found, bool startend,
243  float impact, float dthetaMax, float dxy, float zminT, float zmaxT, float zminV, float zmaxV);
244  bool CompatibleSegments(EdbSegP &spred, EdbSegP &stest,
245  float impact, float dthetaMax, float dxy, float zminT, float zmaxT, float zminV, float zmaxV);
246  Int_t FindSimilarSegments(EdbSegP &spred, TObjArray &found, EdbPattern &pat,
247  float impact, float dthetaMax, float dxy, float zminT, float zmaxT, float zminV, float zmaxV);
248 
249  Int_t LinkedVertexes();
250  Int_t LoopVertex(TIndexCell &list1, TIndexCell &list2, int zpos1,
251  int zpos2);
252  Int_t AddSegmentToVertex(EdbSegP *s, float ImpMax = 25.,
253  float ProbMin = 0.01, float Mom = 0.3);
254  Int_t VertexPolish(EdbVertex *v, int refill = 0, float RadMax = 1000.,
255  int Dpat = 2, float ImpMax = 25.,
256  float ProbMin = 0.01, float Mom = 0.3);
257  Int_t VertexTuning(int seltype = 0);
258  Int_t VertexNeighbor(float RadMax = 1000., int Dpat = 1,
259  float ImpMax = 1000000.);
260  Int_t VertexNeighbor(EdbVertex *v, float RadMax = 1000., int Dpat = 1,
261  float ImpMax = 1000000.);
262  Int_t SelVertNeighbor(EdbVertex *v, int seltype, float RadMax,
263  int Dpat, TObjArray *ao);
264  Int_t SelSegNeighbor(EdbSegP *s, int seltype, float RadMax, int Dpat, TObjArray *ao);
265  Int_t SegmentNeighbor(EdbSegP *s, float RadMax = 1000., int Dpat = 1, float ImpMax = 1000000., float SegWmin=9,
266  TObjArray *aseg = 0, TObjArray *atr = 0, TObjArray *arv = 0);
267  Float_t CheckImpact( EdbSegP *s1, EdbSegP *s2, int zpos1, int zpos2, float pv[3] );
268  Float_t CheckImpactN( EdbSegP *s1, EdbSegP *s2, float pv[3], bool &parallel, float dzMax=6000. );
269  Bool_t EstimateVertexQuality(EdbVertex &v);
271  Double_t Tdistance(const VERTEX::Track& t1, const VERTEX::Track& t2);
272  Double_t Tdistance(const EdbSegP& s1, const EdbSegP& s2);
273  Double_t TdistanceChi2(const EdbTrackP& tr1, const EdbTrackP& tr2);
274  Double_t TdistanceChi2(const EdbSegP& s1, const EdbSegP& s2, float m);
275  Double_t MoveTrackToOtherVertex(EdbVertex *v2, int it2max, EdbVertex *v1,
276  int seltype, EdbVertex **v2n,
277  EdbVertex **v1n);
281 
282  EdbTrackP *GetEdbTrack(const int index);
283  EdbVTA *AddTrack(EdbVertex &edbv, EdbTrackP *track, int zpos);
284 
285  void SetPVRec(EdbPVRec *pvr) {ePVR = pvr;}
286  void AddVTA(EdbVTA *vta) {eVTA.Add((TObject*)vta);}
287  Int_t Nvtx() const {return eVTX ? eVTX->GetEntriesFast() : 0;}
288  EdbVertex *GetVertex(Int_t &i) {return eVTX ? (EdbVertex*)eVTX->At(i):0;}
289 
290  void AddVertex(EdbVertex *vtx) {
291  if (!eVTX) eVTX = new TObjArray();
292  eVTX->Add((TObject*)vtx);
293  }
294 
295  int CheckTrack(EdbTrackP &track, int zpos);
296 
297 
298  ClassDef(EdbVertexRec,3) //reconstruct vertexes in OPERA emulsion data
299 };
300 
301 #endif /* ROOT_EdbVertex */
void d()
Definition: RecDispEX.C:381
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
TTree * t
Definition: check_shower.C:4
Definition: EdbPVRec.h:148
Definition: EdbPattern.h:280
Definition: EdbSegP.h:18
Definition: EdbPattern.h:118
Definition: EdbVertex.h:25
EdbVertex * eVertex
Definition: EdbVertex.h:30
EdbTrackP * eTrack
Definition: EdbVertex.h:29
void SetImp(float imp)
Definition: EdbVertex.h:56
Float_t eDist
Definition: EdbVertex.h:38
Float_t Imp() const
Definition: EdbVertex.h:48
Float_t Dist() const
Definition: EdbVertex.h:49
EdbVTA()
Definition: EdbVertex.cxx:40
Int_t eFlag
Definition: EdbVertex.h:33
void SetDist(float dist)
Definition: EdbVertex.h:57
Int_t Flag() const
Definition: EdbVertex.h:47
Int_t Zpos() const
Definition: EdbVertex.h:46
EdbVertex * GetVertex() const
Definition: EdbVertex.h:51
virtual ~EdbVTA()
Definition: EdbVertex.cxx:75
void SetZpos(int zpos)
Definition: EdbVertex.h:54
Int_t eZpos
Definition: EdbVertex.h:32
void SetTrack(EdbTrackP *tr)
Definition: EdbVertex.h:58
EdbTrackP * GetTrack() const
Definition: EdbVertex.h:50
Float_t eImp
Definition: EdbVertex.h:37
void SetFlag(int flag)
Definition: EdbVertex.h:55
void Set0()
Definition: EdbVertex.cxx:65
void AddVandT()
Definition: EdbVertex.cxx:90
void Print()
Definition: EdbVertex.cxx:83
void SetVertex(EdbVertex *v)
Definition: EdbVertex.h:59
Definition: EdbVertex.h:172
Bool_t eUseMom
Definition: EdbVertex.h:181
Int_t eQualityMode
Definition: EdbVertex.h:183
virtual ~EdbVertexPar()
Definition: EdbVertex.h:189
EdbVertexPar()
Definition: EdbVertex.cxx:708
Float_t eAbin
Definition: EdbVertex.h:176
Bool_t eUseSegPar
Definition: EdbVertex.h:182
Float_t eImpMax
Definition: EdbVertex.h:179
TVector3 eVmax
Definition: EdbVertex.h:186
Float_t eZbin
Definition: EdbVertex.h:175
TVector3 eVmin
Definition: EdbVertex.h:186
Bool_t eUseLimits
Definition: EdbVertex.h:185
Float_t eImpMaxV
Definition: EdbVertex.h:180
Float_t eDZmax
Definition: EdbVertex.h:177
Float_t eProbMin
Definition: EdbVertex.h:178
Bool_t eUseKalman
Definition: EdbVertex.h:184
Definition: EdbVertex.h:194
int EstimateVertexFlag(int zpos1, int zpos2)
Definition: EdbVertex.cxx:1398
Int_t ProbVertexN()
Definition: EdbVertex.cxx:1448
TObjArray * eVTX
Definition: EdbVertex.h:205
virtual ~EdbVertexRec()
Definition: EdbVertex.cxx:734
Int_t ProbVertexNpos(int zpos)
Definition: EdbVertex.cxx:1462
Float_t CheckImpact(EdbSegP *s1, EdbSegP *s2, int zpos1, int zpos2, float pv[3])
Definition: EdbVertex.cxx:1243
EdbVertex * RemoveTrackFromVertex(EdbVertex *eVertex, int itr)
Definition: EdbVertex.cxx:2641
void StatVertexN()
Definition: EdbVertex.cxx:1806
Double_t MoveTrackToOtherVertex(EdbVertex *v2, int it2max, EdbVertex *v1, int seltype, EdbVertex **v2n, EdbVertex **v1n)
Definition: EdbVertex.cxx:2468
Int_t LinkedVertexes()
Definition: EdbVertex.cxx:1831
EdbVertex * RemoveVTAFromVertex(EdbVertex &vtx, EdbVTA &vta)
Definition: EdbVertex.cxx:2624
Int_t ProbVertexN_old()
Definition: EdbVertex.cxx:1601
Int_t Nvtx() const
Definition: EdbVertex.h:287
Bool_t IsInsideLimits(EdbSegP &s)
Definition: EdbVertex.cxx:1408
Bool_t EstimateVertexQuality(EdbVertex &v)
Definition: EdbVertex.cxx:751
Float_t CheckImpactN(EdbSegP *s1, EdbSegP *s2, float pv[3], bool &parallel, float dzMax=6000.)
Definition: EdbVertex.cxx:1282
Int_t AddSegmentToVertex(EdbSegP *s, float ImpMax=25., float ProbMin=0.01, float Mom=0.3)
Definition: EdbVertex.cxx:2000
Int_t FindSimilarSegments(EdbSegP &spred, TObjArray &found, EdbPattern &pat, float impact, float dthetaMax, float dxy, float zminT, float zmaxT, float zminV, float zmaxV)
Definition: EdbVertex.cxx:1034
Int_t FindSimilarTracksE(EdbSegP &spred, TObjArray &found, bool startend, float impact, float dthetaMax, float dxy, float zminT, float zmaxT, float zminV, float zmaxV)
Definition: EdbVertex.cxx:1054
Double_t Tdistance(const VERTEX::Track &t1, const VERTEX::Track &t2)
Definition: EdbVertex.cxx:3203
Int_t SelSegNeighbor(EdbSegP *s, int seltype, float RadMax, int Dpat, TObjArray *ao)
Definition: EdbVertex.cxx:1927
EdbVertexRec()
Definition: EdbVertex.h:209
EdbVertex * TestVTAGroup(TObjArray &arrvta)
Definition: EdbVertex.cxx:1562
const TVector3 * Vmin() const
Definition: EdbVertex.h:215
Int_t VertexNeighbor(float RadMax=1000., int Dpat=1, float ImpMax=1000000.)
Definition: EdbVertex.cxx:2754
EdbVertex * eWorking
Definition: EdbVertex.h:199
const TVector3 * Vmax() const
Definition: EdbVertex.h:216
Int_t LoopVertex(TIndexCell &list1, TIndexCell &list2, int zpos1, int zpos2)
Definition: EdbVertex.cxx:1164
void AddVertex(EdbVertex *vtx)
Definition: EdbVertex.h:290
void AcceptPolish()
Definition: EdbVertex.cxx:2205
int RefitAll()
Definition: EdbVertex.cxx:2525
Int_t MakeV(EdbVertex &edbv, bool isRefit=false)
Definition: EdbVertex.cxx:813
Int_t FindVertex()
Definition: EdbVertex.cxx:1087
Bool_t EstimateVertexPosition(EdbVertex &v)
Definition: EdbVertex.cxx:775
Int_t FindSimilarTracks(EdbTrackP &t, TObjArray &found, int nsegmin=2, float dMax=100., float dTheta=0.01, float dZmax=50000.)
Definition: EdbVertex.cxx:935
Int_t VertexPolish(EdbVertex *v, int refill=0, float RadMax=1000., int Dpat=2, float ImpMax=25., float ProbMin=0.01, float Mom=0.3)
Definition: EdbVertex.cxx:2131
EdbVertex * Make1Vertex(TObjArray &tracks, float zexpected)
Definition: EdbVertex.cxx:879
int CheckTrack(EdbTrackP &track, int zpos)
Definition: EdbVertex.cxx:3264
void AddVTA(EdbVTA *vta)
Definition: EdbVertex.h:286
void CheckVTX()
Definition: EdbVertex.cxx:1520
void FillTracksStartEnd(TIndexCell &starts, TIndexCell &ends)
Definition: EdbVertex.cxx:1135
EdbPVRec * ePVR
Definition: EdbVertex.h:206
EdbVertex * eVertex
Definition: EdbVertex.h:198
TObjArray * eEdbTracks
Definition: EdbVertex.h:204
EdbVertexRec(EdbVertexPar &vpar)
Definition: EdbVertex.h:210
EdbVertex * GetVertex(Int_t &i)
Definition: EdbVertex.h:288
Double_t TdistanceChi2(const EdbTrackP &tr1, const EdbTrackP &tr2)
Definition: EdbVertex.cxx:3235
EdbVTA * AddTrack(EdbVertex &edbv, EdbTrackP *track, int zpos)
Definition: EdbVertex.cxx:900
EdbVertex * AddTrackToVertex(EdbVertex *eVertex, EdbTrackP *eTr, int zpos)
Definition: EdbVertex.cxx:2543
EdbTrackP * GetEdbTrack(const int index)
Definition: EdbVertex.cxx:3257
void CancelModifiedVTX(EdbVertex *eVertex, EdbVertex *eWorking)
Definition: EdbVertex.cxx:2748
EdbVertex * ProbVertex2(EdbTrackP *tr1, EdbTrackP *tr2, int zpos1, int zpos2)
Definition: EdbVertex.cxx:1324
void RejectPolish()
Definition: EdbVertex.cxx:2210
void SetPVRec(EdbPVRec *pvr)
Definition: EdbVertex.h:285
Bool_t CheckDZ2(float z1, float z2, int zpos1, int zpos2, float z)
Definition: EdbVertex.cxx:1421
Int_t VertexTuning(int seltype=0)
Definition: EdbVertex.cxx:2215
bool CompatibleSegments(EdbSegP &spred, EdbSegP &stest, float impact, float dthetaMax, float dxy, float zminT, float zmaxT, float zminV, float zmaxV)
Definition: EdbVertex.cxx:998
void Reset()
Definition: EdbVertex.cxx:744
void Set0()
Definition: EdbVertex.cxx:723
EdbVertex * StripBadTracks(EdbVertex &v, float impMax, int ntrMin)
Definition: EdbVertex.cxx:860
Int_t SelVertNeighbor(EdbVertex *v, int seltype, float RadMax, int Dpat, TObjArray *ao)
Definition: EdbVertex.cxx:1851
TList eVTA
Definition: EdbVertex.h:203
Int_t SegmentNeighbor(EdbSegP *s, float RadMax=1000., int Dpat=1, float ImpMax=1000000., float SegWmin=9, TObjArray *aseg=0, TObjArray *atr=0, TObjArray *arv=0)
Definition: EdbVertex.cxx:3027
void AcceptModifiedVTX(EdbVertex *eVertex, EdbVertex *eWorking)
Definition: EdbVertex.cxx:2706
Definition: EdbVertex.h:68
void Print()
Definition: EdbVertex.cxx:328
TList * VTa()
Definition: EdbVertex.h:137
Float_t DistSeg(EdbSegP *seg, float X0=0.)
Definition: EdbVertex.cxx:694
Int_t ID() const
Definition: EdbVertex.h:126
void SetQuality(float q=0)
Definition: EdbVertex.h:161
EdbVTA * GetVTn(int i)
Definition: EdbVertex.h:140
Float_t Chi2Track(EdbTrackP *tr, int zpos, float X0=0.)
Definition: EdbVertex.cxx:657
void SetMC(int mEvt=0)
Definition: EdbVertex.h:159
EdbTrackP * GetTrackN(int i)
Definition: EdbVertex.h:142
Float_t Volume()
Definition: EdbVertex.h:114
EdbTrackP * MeanTrack()
Definition: EdbVertex.cxx:299
Float_t MinDist()
Definition: EdbVertex.cxx:239
Float_t Impact(int i)
Definition: EdbVertex.h:149
Bool_t IsEqual(const TObject *o) const
Definition: EdbVertex.cxx:290
Float_t VX() const
Definition: EdbVertex.h:133
Float_t eY
Definition: EdbVertex.h:76
float CheckImp(const EdbTrackP *tr)
Definition: EdbVertex.cxx:463
ULong_t Hash() const
Definition: EdbVertex.h:128
Bool_t TrackInVertex(EdbTrackP *t)
Definition: EdbVertex.cxx:221
EdbTrackP * GetTrack(int i)
Definition: EdbVertex.h:141
void AddVTA(EdbVTA *vta)
Definition: EdbVertex.cxx:377
EdbVertex * GetConnectedVertexForTrack(int it)
Definition: EdbVertex.cxx:406
TList eVTa
Definition: EdbVertex.h:73
Float_t X() const
Definition: EdbVertex.h:130
Int_t eID
Definition: EdbVertex.h:87
void SetID(int ID=0)
Definition: EdbVertex.h:156
void Clear()
Definition: EdbVertex.cxx:125
Float_t eX
Definition: EdbVertex.h:75
EdbVTA * GetMaxImpVTA()
Definition: EdbVertex.cxx:140
void SetV(VERTEX::Vertex *v)
Definition: EdbVertex.h:160
Int_t N() const
Definition: EdbVertex.h:121
VERTEX::Vertex * V() const
Definition: EdbVertex.h:154
Int_t MCEvt() const
Definition: EdbVertex.h:125
VERTEX::Vertex * eV
Definition: EdbVertex.h:90
Int_t Nn() const
Definition: EdbVertex.h:122
Float_t eQuality
Definition: EdbVertex.h:88
void PrintGeom()
Definition: EdbVertex.cxx:355
Float_t VY() const
Definition: EdbVertex.h:134
Int_t EstimateVertexFlag()
Definition: EdbVertex.cxx:184
Float_t ImpTrack(int i)
Definition: EdbVertex.h:152
void SetFlag(int flag=0)
Definition: EdbVertex.h:158
EdbVertex * GetConnectedVertex(int nv)
Definition: EdbVertex.cxx:427
Float_t Quality()
Definition: EdbVertex.h:136
float CheckImpGeom(const EdbTrackP *tr)
Definition: EdbVertex.cxx:452
Bool_t IsSortable() const
Definition: EdbVertex.h:129
EdbVertex()
Definition: EdbVertex.cxx:96
void ClearV()
Definition: EdbVertex.cxx:115
Float_t MaxImpact()
Definition: EdbVertex.h:116
void SetXYZ(float x, float y, float z)
Definition: EdbVertex.h:157
void ClearNeighborhood()
Definition: EdbVertex.cxx:275
Float_t VZ() const
Definition: EdbVertex.h:135
Float_t Z() const
Definition: EdbVertex.h:132
Int_t Compare(const TObject *o) const
Definition: EdbVertex.cxx:282
TList eVTn
Definition: EdbVertex.h:72
Bool_t EstimateVertexMath(float &xv, float &yv, float &zv, float &d)
Definition: EdbVertex.cxx:493
void Edb2Vt(const EdbTrackP &tr, VERTEX::Track &t, float X0=0., float m=0.139)
Definition: EdbVertex.cxx:590
EdbVTA * GetVTa(int i)
Definition: EdbVertex.h:139
void ResetTracks()
Definition: EdbVertex.cxx:209
Int_t Flag() const
Definition: EdbVertex.h:124
Float_t eZ
Definition: EdbVertex.h:77
Float_t MaxAperture()
Definition: EdbVertex.cxx:252
void RemoveVTA(EdbVTA *vta)
Definition: EdbVertex.cxx:383
Int_t CheckDiscardedTracks()
Definition: EdbVertex.cxx:168
Int_t Zpos(int i)
Definition: EdbVertex.h:127
EdbSegP * GetTrackV(int i, bool usesegpar=false)
Definition: EdbVertex.cxx:159
Int_t Nv()
Definition: EdbVertex.cxx:389
Int_t eFlag
Definition: EdbVertex.h:80
Float_t Y() const
Definition: EdbVertex.h:131
Float_t DistTrack(EdbTrackP *tr, int zpos, float X0=0.)
Definition: EdbVertex.cxx:684
TList * VTn()
Definition: EdbVertex.h:138
Int_t eMCEvt
Definition: EdbVertex.h:86
virtual ~EdbVertex()
Definition: EdbVertex.cxx:109
Definition: TIndexCell.h:19
Definition: VtTrack.hh:64
Definition: VtVertex.hh:88
double vyerr() const
$\sqrt{\sigma_{vy}^2}$ vertex $y$-error
double vzerr() const
$\sqrt{\sigma_{vz}^2}$ vertex $z$-error
float vz() const
$z$ of vertex
Definition: VtVertex.C:235
float vy() const
$y$ of vertex
Definition: VtVertex.C:234
float vx() const
$x$ of vertex
Definition: VtVertex.C:233
double vxerr() const
$\sqrt{\sigma_{vx}^2}$ vertex $x$-error
Definition: bitview.h:14
float X0
Definition: emthickness.cpp:69
AcqOdyssey * o
Definition: hwinit.C:2
TTree * tracks
Definition: check_tr.C:19
int nsegmin
Definition: check_vertex.C:23
float ImpMax
Definition: check_vertex.C:30
q
Definition: testBGReduction_AllMethods.C:55
EdbSegP * s1
Definition: tlg2pattern.C:30
EdbSegP * s2
Definition: tlg2pattern.C:31
EdbSegP * s
Definition: tlg2pattern.C:32