FEDRA emulsion software from the OPERA Collaboration
EdbSegP Class Reference

#include <EdbSegP.h>

Inheritance diagram for EdbSegP:
Collaboration diagram for EdbSegP:

Public Member Functions

void addEMULDigit (TObject *a)
 
Int_t Aid (int i) const
 
bool CheckCOV () const
 
Float_t Chi2 () const
 
void Clear ()
 
Int_t Compare (const TObject *obj) const
 
void Copy (const EdbSegP &s)
 
TMatrixD & COV () const
 
Float_t DeltaR (EdbSegP *seg1) const
 
Float_t DeltaTheta (EdbSegP *seg1) const
 
Float_t DZ () const
 
Float_t DZem () const
 
 EdbSegP ()
 
 EdbSegP (const EdbSegP &s)
 
 EdbSegP (int id, float x, float y, float tx, float ty, float w=0, int flag=0)
 
TRefArray * EMULDigitArray () const
 
Int_t Flag () const
 
void ForceCOV (TMatrixD &cov)
 
Int_t ID () const
 
bool IsCompatible (EdbSegP &s, float nsigx, float nsigt) const
 
Bool_t IsEqual (const TObject *obj) const
 
bool IsInside (float xmin, float xmax, float ymin, float ymax) const
 
bool IsInside (float xmin, float xmax, float ymin, float ymax, float zmin, float zmax) const
 
Bool_t IsSortable () const
 
Int_t MCEvt () const
 
Int_t MCTrack () const
 
void MergeTo (EdbSegP &s)
 
Float_t P () const
 
Float_t Phi () const
 
Int_t PID () const
 
Int_t Plate () const
 
void Print (Option_t *opt="") const
 
void PrintNice () const
 
Float_t Prob () const
 
Float_t ProbLink (EdbSegP &s1, EdbSegP &s2)
 
void PropagateTo (float z)
 
void PropagateToCOV (float z)
 
void PropagateToDZ (float dz)
 
EdbID ScanID () const
 
void Set (int id, float x, float y, float tx, float ty, float w, int flag)
 
void Set0 ()
 
void SetAid (int a, int v, int side=0)
 
void SetChi2 (float chi2)
 
void SetCOV (double *array, int dim=5)
 
void SetCOV (TMatrixD &cov)
 
void SetDZ (float dz)
 
void SetDZem (float dz)
 
void SetErrorP (float sp2)
 
void SetErrors ()
 
void SetErrors (float sx2, float sy2, float sz2, float stx2, float sty2, float sp2=1.)
 
void SetErrors0 ()
 
void SetErrorsCOV (float sx2, float sy2, float sz2, float stx2, float sty2, float sp2=1.)
 
void SetFlag (int flag)
 
void SetID (int id)
 
void SetMC (int mEvt, int mTrack)
 
void SetP (float p)
 
void SetPID (int pid)
 
void SetPlate (int plateid)
 
void SetProb (float prob)
 
void SetProbability (float p)
 
void SetScanID (EdbID id)
 
void SetSide (int side=0)
 
void SetSZ (float sz)
 
void SetTrack (int trid)
 
void SetTX (Float_t tx)
 
void SetTY (Float_t ty)
 
void SetVid (int vid, int sid)
 
void SetVolume (float w)
 
void SetW (float w)
 
void SetX (Float_t x)
 
void SetY (Float_t y)
 
void SetZ (float z)
 
Int_t Side () const
 
Float_t SP () const
 
Float_t STX () const
 
Float_t STY () const
 
Float_t SX () const
 
Float_t SY () const
 
Float_t SZ () const
 
Float_t Theta () const
 
Int_t Track () const
 
Float_t TX () const
 
Float_t TY () const
 
Int_t Vid (int i) const
 
Float_t Volume () const
 
Float_t W () const
 
Float_t X () const
 
Float_t Y () const
 
Float_t Z () const
 
virtual ~EdbSegP ()
 
- Public Member Functions inherited from EdbTrack2D
virtual void Substruct (EdbTrack2D *t)
 
virtual void Test () const
 
virtual void Transform (const EdbAffine2D *a)
 
virtual ~EdbTrack2D ()
 
- Public Member Functions inherited from EdbPoint2D
virtual void SetX (float x)=0
 
virtual void SetY (float y)=0
 
virtual void Substruct (EdbPoint *p)
 
virtual void TestPoint2D () const
 
virtual ~EdbPoint2D ()
 
- Public Member Functions inherited from EdbPoint
virtual void Transform (const EdbAffine3D *a)
 
virtual ~EdbPoint ()
 
- Public Member Functions inherited from EdbAngle2D
virtual void SetTX (float x)=0
 
virtual void SetTY (float y)=0
 
virtual void Substruct (const EdbAngle2D *a)
 
virtual ~EdbAngle2D ()
 

Static Public Member Functions

static Float_t Angle (const EdbSegP &s1, const EdbSegP &s2)
 
static Float_t Distance (const EdbSegP &s1, const EdbSegP &s2)
 
static void LinkMT (const EdbSegP *s1, const EdbSegP *s2, EdbSegP *s)
 

Public Attributes

Float_t eTX
 
Float_t eTY
 
Float_t eX
 
Float_t eY
 
Float_t eZ
 

Protected Attributes

TMatrixD * eCOV
 

Private Attributes

Int_t eAid [2]
 
Float_t eChi2
 
Float_t eDZ
 
Float_t eDZem
 
TRefArray * eEMULDigitArray
 
Int_t eFlag
 
Int_t eID
 
Int_t eMCEvt
 
Int_t eMCTrack
 
Float_t eP
 
Int_t ePID
 
Float_t eProb
 
EdbID eScanID
 AM+AC 27/07/07. More...
 
Float_t eSZ
 
Int_t eTrack
 
Int_t eVid [2]
 
Float_t eVolume
 
Float_t eW
 

Constructor & Destructor Documentation

◆ EdbSegP() [1/3]

EdbSegP::EdbSegP ( )
inline
50  {
51  eEMULDigitArray =0;
52  Set0();
53  }
TRefArray * eEMULDigitArray
Definition: EdbSegP.h:41
void Set0()
Definition: EdbSegP.cxx:29

◆ EdbSegP() [2/3]

EdbSegP::EdbSegP ( int  id,
float  x,
float  y,
float  tx,
float  ty,
float  w = 0,
int  flag = 0 
)
22 {
23  eEMULDigitArray =0;
24  Set0();
25  Set(id,x,y,tx,ty,w,flag);
26 }
void Set(int id, float x, float y, float tx, float ty, float w, int flag)
Definition: EdbSegP.h:86
void w(int rid=2, int nviews=2)
Definition: test.C:27

◆ EdbSegP() [3/3]

EdbSegP::EdbSegP ( const EdbSegP s)
inline
55  {
56  eEMULDigitArray = 0;
57  Set0(); Copy(s);
58  }
void Copy(const EdbSegP &s)
Definition: EdbSegP.cxx:104
EdbSegP * s
Definition: tlg2pattern.C:32

◆ ~EdbSegP()

virtual EdbSegP::~EdbSegP ( )
inlinevirtual
60  {
61  SafeDelete(eCOV);
62  SafeDelete(eEMULDigitArray);
63  }
TMatrixD * eCOV
Definition: EdbSegP.h:46

Member Function Documentation

◆ addEMULDigit()

void EdbSegP::addEMULDigit ( TObject *  a)
inline
76  {
77  if(!eEMULDigitArray) eEMULDigitArray = new TRefArray();
78  eEMULDigitArray->Add(a);
79  }
void a()
Definition: check_aligned.C:59

◆ Aid()

Int_t EdbSegP::Aid ( int  i) const
inline
166 {if(i==0) return eAid[i]; else if(i==1) return eAid[i]%100000; else return -1;}
Int_t eAid[2]
Definition: EdbSegP.h:24

◆ Angle()

Float_t EdbSegP::Angle ( const EdbSegP s1,
const EdbSegP s2 
)
static
471 {
472  return EdbMath::Angle3(s1.TX(),s1.TY(),s2.TX(),s2.TY());
473 }
static double Angle3(float tx1, float ty1, float tx2, float ty2)
Definition: EdbMath.cxx:42
Float_t TX() const
Definition: EdbSegP.h:172
Float_t TY() const
Definition: EdbSegP.h:173
EdbSegP * s1
Definition: tlg2pattern.C:30
EdbSegP * s2
Definition: tlg2pattern.C:31

◆ CheckCOV()

bool EdbSegP::CheckCOV ( ) const
inline
103  { //Check Covariance Matrix, is there?
104  if (eCOV) return true;
105  else return false;
106  }

◆ Chi2()

Float_t EdbSegP::Chi2 ( ) const
inline
154 {return eChi2;}
Float_t eChi2
Definition: EdbSegP.h:32

◆ Clear()

void EdbSegP::Clear ( )
inline
85 { eCOV->Clear(); }

◆ Compare()

int EdbSegP::Compare ( const TObject *  obj) const

447 {
448  const EdbSegP *s=(EdbSegP*)obj;
449  double f1=0, f2=0;
450 
451  if ( Abs(s->Z()- Z()) >0.000001 ) { f1 = Z(); f2 = s->Z(); } // usual case for tracks
452  else if( Abs(s->X()- X()) >0.000001 ) { f1 = X(); f2 = s->X(); }
453  else if( Abs(s->Y()- Y()) >0.000001 ) { f1 = Y(); f2 = s->Y(); }
454  else if( Abs(s->TX()- TX())>0.000001 ) { f1 = TX(); f2 = s->TX(); }
455  else if( Abs(s->TY()- TY())>0.000001 ) { f1 = TY(); f2 = s->TY(); }
456  else if( Abs(s->W()- W()) >0.000001 ) { f1 = W(); f2 = W(); }
457 
458  if (f1>f2) return 1;
459  else if (f1<f2) return -1;
460  else return 0;
461 }
Definition: EdbSegP.h:18
Float_t X() const
Definition: EdbSegP.h:170
Float_t Z() const
Definition: EdbSegP.h:150
Float_t Y() const
Definition: EdbSegP.h:171
Float_t W() const
Definition: EdbSegP.h:148

◆ Copy()

void EdbSegP::Copy ( const EdbSegP s)

105 {
106  SetPID(s.PID());
107  Set(s.ID(),s.X(),s.Y(),s.TX(),s.TY(),s.W(),s.Flag());
108  SetZ(s.Z());
109  if(s.CheckCOV()) SetCOV(s.COV());
110  SetSZ(s.SZ());
111  SetVid(s.Vid(0),s.Vid(1));
112  SetAid(s.Aid(0),s.Aid(1),s.Side());
113  SetProb(s.Prob());
114  SetVolume(s.Volume());
115  SetDZ(s.DZ());
116  SetDZem(s.DZem());
117  SetP(s.P());
118  SetChi2(s.Chi2());
119  SetTrack(s.Track());
120  SetMC( s.MCEvt(), s.MCTrack() );
121  SetScanID(s.ScanID());
122  if(s.eEMULDigitArray) {
123  eEMULDigitArray = new TRefArray(*s.eEMULDigitArray);
124  printf("copy: %d %d\n",s.eEMULDigitArray->GetEntries(),eEMULDigitArray->GetEntries());
125  }
126 }
void SetVolume(float w)
Definition: EdbSegP.h:133
void SetPID(int pid)
Definition: EdbSegP.h:126
Int_t Track() const
Definition: EdbSegP.h:147
Float_t Prob() const
Definition: EdbSegP.h:153
void SetProb(float prob)
Definition: EdbSegP.h:131
TMatrixD & COV() const
Definition: EdbSegP.h:120
void SetScanID(EdbID id)
Definition: EdbSegP.h:140
void SetDZem(float dz)
Definition: EdbSegP.h:124
Float_t DZ() const
Definition: EdbSegP.h:151
Float_t Volume() const
Definition: EdbSegP.h:155
void SetTrack(int trid)
Definition: EdbSegP.h:128
Int_t ID() const
Definition: EdbSegP.h:144
Float_t SZ() const
Definition: EdbSegP.h:164
Float_t Chi2() const
Definition: EdbSegP.h:154
bool CheckCOV() const
Definition: EdbSegP.h:103
Float_t DZem() const
Definition: EdbSegP.h:152
void SetZ(float z)
Definition: EdbSegP.h:122
Float_t P() const
Definition: EdbSegP.h:149
Int_t Side() const
Definition: EdbSegP.h:167
void SetCOV(TMatrixD &cov)
Definition: EdbSegP.h:98
void SetChi2(float chi2)
Definition: EdbSegP.h:132
void SetSZ(float sz)
Definition: EdbSegP.h:121
void SetP(float p)
Definition: EdbSegP.h:130
void SetMC(int mEvt, int mTrack)
Definition: EdbSegP.h:138
void SetDZ(float dz)
Definition: EdbSegP.h:123
Int_t PID() const
Definition: EdbSegP.h:145
void SetVid(int vid, int sid)
Definition: EdbSegP.h:134
EdbID ScanID() const
Definition: EdbSegP.h:157
Int_t MCTrack() const
Definition: EdbSegP.h:143
Int_t Aid(int i) const
Definition: EdbSegP.h:166
Int_t MCEvt() const
Definition: EdbSegP.h:142
Int_t Vid(int i) const
Definition: EdbSegP.h:165
Int_t Flag() const
Definition: EdbSegP.h:146
void SetAid(int a, int v, int side=0)
Definition: EdbSegP.h:135

◆ COV()

TMatrixD& EdbSegP::COV ( ) const
inline
120 {return *eCOV;}

◆ DeltaR()

Float_t EdbSegP::DeltaR ( EdbSegP seg1) const
inline
188  {
189  return TMath::Sqrt( TMath::Power(X()-seg1->X(),2)+TMath::Power(Y()-seg1->Y(),2) );
190  }

◆ DeltaTheta()

Float_t EdbSegP::DeltaTheta ( EdbSegP seg1) const
inline
185  {
186  return TMath::Sqrt( TMath::Power(TX()-seg1->TX(),2)+TMath::Power(TY()-seg1->TY(),2) );
187  }

◆ Distance()

Float_t EdbSegP::Distance ( const EdbSegP s1,
const EdbSegP s2 
)
static
463  {
464  double dx=s1.X()-s2.X();
465  double dy=s1.Y()-s2.Y();
466  double dz=s1.Z()-s2.Z();
467  return TMath::Sqrt(dx*dx+dy*dy+dz*dz);
468 }
brick dz
Definition: RecDispMC.C:107

◆ DZ()

Float_t EdbSegP::DZ ( ) const
inline
151 {return eDZ;}
Float_t eDZ
Definition: EdbSegP.h:36

◆ DZem()

Float_t EdbSegP::DZem ( ) const
inline
152 {return eDZem;}
Float_t eDZem
Definition: EdbSegP.h:37

◆ EMULDigitArray()

TRefArray* EdbSegP::EMULDigitArray ( ) const
inline
81 { return eEMULDigitArray;}

◆ Flag()

Int_t EdbSegP::Flag ( ) const
inline
146 {return eFlag;}
Int_t eFlag
Definition: EdbSegP.h:25

◆ ForceCOV()

void EdbSegP::ForceCOV ( TMatrixD &  cov)
inline
108  { //to correctly copy COV matrices in MakeTracksTree
109  if(eCOV) *eCOV = cov;
110  else eCOV = new TMatrixD(cov);
111  }

◆ ID()

Int_t EdbSegP::ID ( ) const
inline
144 {return eID;}
Int_t eID
Definition: EdbSegP.h:22

◆ IsCompatible()

bool EdbSegP::IsCompatible ( EdbSegP s,
float  nsigx,
float  nsigt 
) const
327 {
328  // return true if segments are closer then nsig sigma in all coordinates
329  // assumed that z is the same
330  float dtx=TX()-s.TX();
331  if( dtx*dtx > STX()*nsigt*nsigt ) return false;
332  float dty=TY()-s.TY();
333  if( dty*dty > STY()*nsigt*nsigt ) return false;
334  float dz=s.Z()-Z();
335  float dx=X()+TX()*dz-s.X();
336  if( dx*dx > SX()*nsigx*nsigx ) return false;
337  float dy=Y()+TY()*dz-s.Y();
338  if( dy*dy > SY()*nsigx*nsigx ) return false;
339  return true;
340 }
Float_t STX() const
Definition: EdbSegP.h:161
Float_t SY() const
Definition: EdbSegP.h:160
Float_t STY() const
Definition: EdbSegP.h:162
Float_t SX() const
Definition: EdbSegP.h:159

◆ IsEqual()

Bool_t EdbSegP::IsEqual ( const TObject *  obj) const

426 {
427  const EdbSegP *s=(EdbSegP*)obj;
428  if(s->ID() != ID()) return false;
429  if(s->PID() != PID()) return false;
430  if(s->Vid(0) != Vid(0)) return false;
431  if(s->Vid(1) != Vid(1)) return false;
432  if(s->Aid(0) != Aid(0)) return false;
433  if(s->Aid(1) != Aid(1)) return false;
434  if(s->Side() != Side()) return false;
435  if( Abs(s->Z()- Z()) >0.000001 ) return false;
436  if( Abs(s->X()- X()) >0.000001 ) return false;
437  if( Abs(s->Y()- Y()) >0.000001 ) return false;
438  if( Abs(s->TX()- TX())>0.000001 ) return false;
439  if( Abs(s->TY()- TY())>0.000001 ) return false;
440  if( Abs(s->W()- W()) >0.000001 ) return false;
441  if(s->Plate() != Plate()) return false;
442  return true;
443 }
Int_t Plate() const
Definition: EdbSegP.h:156

◆ IsInside() [1/2]

bool EdbSegP::IsInside ( float  xmin,
float  xmax,
float  ymin,
float  ymax 
) const
300 {
301  if(xmax<xmin) return false;
302  if(ymax<ymin) return false;
303  if(eX<xmin) return false;
304  if(eX>xmax) return false;
305  if(eY<ymin) return false;
306  if(eY>ymax) return false;
307  return true;
308 }
Float_t eX
Definition: EdbSegP.h:28
Float_t eY
Definition: EdbSegP.h:28
float xmin
Definition: emthickness.cpp:61
float ymin
Definition: emthickness.cpp:63
float xmax
Definition: emthickness.cpp:61
float ymax
Definition: emthickness.cpp:63

◆ IsInside() [2/2]

bool EdbSegP::IsInside ( float  xmin,
float  xmax,
float  ymin,
float  ymax,
float  zmin,
float  zmax 
) const
312 {
313  if(xmax<xmin) return false;
314  if(ymax<ymin) return false;
315  if(zmax<zmin) return false;
316  if(eX<xmin) return false;
317  if(eX>xmax) return false;
318  if(eY<ymin) return false;
319  if(eY>ymax) return false;
320  if(eZ<zmin) return false;
321  if(eZ>zmax) return false;
322  return true;
323 }
Float_t eZ
Definition: EdbSegP.h:28

◆ IsSortable()

Bool_t EdbSegP::IsSortable ( ) const
inline
195 { return kTRUE; }

◆ LinkMT()

void EdbSegP::LinkMT ( const EdbSegP s1,
const EdbSegP s2,
EdbSegP s 
)
static

Segments fit by Andrey Aleksandrov (Jul-2003)

130 {
132 
133  Double_t dz = s2->Z() - s1->Z();
134  Double_t dz2 = dz*dz;
135 
136  Double_t q1,q2,w1,w2;
137  Double_t d1,d2,dxx11,dxx22;
138  Double_t dtt01,dtt02,dtx01,dtx02;
139  Double_t dxx01,dxx02,dxt01,dxt02;
140  Double_t xm1,xm2,sx0,sy0,stx0,sty0;
141 
142  Double_t q;
143 
144  if(dz==0.0) {
145  s->SetZ(s1->Z());
146  s->SetID(s1->ID());
147 
148  q1 = s1->SX();
149  q2 = s2->SX();
150  w1 = s1->STX();
151  w2 = s2->STX();
152 
153  sx0 = q1*q2/(q1+q2);
154  q = (s1->X()/q1+s2->X()/q2)*sx0;
155  s->SetX(q);
156  stx0 = w1*w2/(w1+w2);
157  q = (s1->TX()/w1+s2->TX()/w2)*stx0;
158  s->SetTX(q);
159 
160  q1 = s1->SY();
161  q2 = s2->SY();
162  w1 = s1->STY();
163  w2 = s2->STY();
164 
165  sy0 = q1*q2/(q1+q2);
166  q = (s1->Y()/q1+s2->Y()/q2)*sy0;
167  s->SetY(q);
168  sty0 = w1*w2/(w1+w2);
169  q = (s1->TY()/w1+s2->TY()/w2)*sty0;
170  s->SetTY(q);
171 
172  s->SetErrors(sx0,sy0,0.0,stx0,sty0);
173  s->SetW( s1->W()+s2->W() );
174  return;
175  }
176 
177  q = 0.5*(s1->Z()+s2->Z());
178  Double_t dzr = 1.0/dz;
179 
180  s->SetZ(q);
181  s->SetID(s1->ID());
182 
183  q1 = s1->SX();
184  q2 = s2->SX();
185  w1 = s1->STX();
186  w2 = s2->STX();
187 
188  q = dz2*w2+q2;
189  d1 = 1.0/(q+q1);
190  xm1 = (q*s1->X()+(s2->X()-dz*s2->TX())*q1)*d1;
191 
192  q = dz2*w1+q1;
193  d2 = 1.0/(q+q2);
194  xm2 = (q*s2->X()+(s1->X()+dz*s1->TX())*q2)*d2;
195 
196 
197  dtt01 = q2*d2;
198  dtt02 = q1*d1;
199  dxx11 = 1.0-dtt02;
200  dxx22 = 1.0-dtt01;
201  dxx01 = 0.5*(dxx11+dtt01);
202  dxx02 = 0.5*(dxx22+dtt02);
203  dxt01 = 0.5*dz*dtt01;
204  dxt02 = -0.5*dz*dtt02;
205  dtx01 = dzr*(dtt01-dxx11);
206  dtx02 = dzr*(dxx22-dtt02);
207 
208  q = (xm1+xm2)*0.5;
209  s->SetX(q);
210  q = (xm2-xm1)*dzr;
211  s->SetTX(q);
212  sx0 = dxx01*dxx01*q1+dxx02*dxx02*q2+dxt01*dxt01*w1+dxt02*dxt02*w2;
213  stx0 = dtx01*dtx01*q1+dtx02*dtx02*q2+dtt01*dtt01*w1+dtt02*dtt02*w2;
214 
215  q1 = s1->SY();
216  q2 = s2->SY();
217  w1 = s1->STY();
218  w2 = s2->STY();
219 
220  q = dz2*w2+q2;
221  d1 = 1.0/(q+q1);
222  xm1 = (q*s1->Y()+(s2->Y()-dz*s2->TY())*q1)*d1;
223 
224  q = dz2*w1+q1;
225  d2 = 1.0/(q+q2);
226  xm2 = (q*s2->Y()+(s1->Y()+dz*s1->TY())*q2)*d2;
227 
228  dtt01 = q2*d2;
229  dtt02 = q1*d1;
230  dxx11 = 1.0-dtt02;
231  dxx22 = 1.0-dtt01;
232  dxx01 = 0.5*(dxx11+dtt01);
233  dxx02 = 0.5*(dxx22+dtt02);
234  dxt01 = 0.5*dz*dtt01;
235  dxt02 = -0.5*dz*dtt02;
236  dtx01 = dzr*(dtt01-dxx11);
237  dtx02 = dzr*(dxx22-dtt02);
238 
239  q = (xm1+xm2)*0.5;
240  s->SetY(q);
241  q = (xm2-xm1)*dzr;
242  s->SetTY(q);
243  sy0 = dxx01*dxx01*q1+dxx02*dxx02*q2+dxt01*dxt01*w1+dxt02*dxt02*w2;
244  sty0 = dtx01*dtx01*q1+dtx02*dtx02*q2+dtt01*dtt01*w1+dtt02*dtt02*w2;
245 
246  s->SetErrors(sx0,sy0,0.0,stx0,sty0);
247  s->SetW( s1->W()+s2->W() );
248  s->SetDZ(dz);
249 }
void SetY(Float_t y)
Definition: EdbSegP.h:175
void SetErrors()
Definition: EdbSegP.h:89
void SetTX(Float_t tx)
Definition: EdbSegP.h:176
void SetID(int id)
Definition: EdbSegP.h:125
void SetX(Float_t x)
Definition: EdbSegP.h:174
void SetTY(Float_t ty)
Definition: EdbSegP.h:177
void SetW(float w)
Definition: EdbSegP.h:129
q
Definition: testBGReduction_AllMethods.C:55

◆ MCEvt()

Int_t EdbSegP::MCEvt ( ) const
inline
142 {return eMCEvt;}
Int_t eMCEvt
Definition: EdbSegP.h:40

◆ MCTrack()

Int_t EdbSegP::MCTrack ( ) const
inline
143 {return eMCTrack;}
Int_t eMCTrack
Definition: EdbSegP.h:39

◆ MergeTo()

void EdbSegP::MergeTo ( EdbSegP s)
366 {
367  // create linked segment at Z of s2
368  // TODO - navesti nauku covariantnuiu
369 
370  PropagateTo( s.Z() );
371 
372  float wx1,wx2, wy1,wy2;
373  float wtx1,wtx2, wty1,wty2;
374 
375  wx1 = 1/SX();
376  wx2 = 1/s.SX();
377  wy1 = 1/SY();
378  wy2 = 1/s.SY();
379  wtx1 = 1/STX();
380  wtx2 = 1/s.STX();
381  wty1 = 1/STY();
382  wty2 = 1/s.STY();
383 
384  eX = (X()*wx1 + s.X()*wx2)/(wx1+wx2);
385  eY = (Y()*wy1 + s.Y()*wy2)/(wy1+wy2);
386  (*eCOV)(0,0)= 1./(wx1+wx2);
387  (*eCOV)(1,1)= 1./(wy1+wy2);
388 
389  eTX = (TX()*wtx1 + s.TX()*wtx2)/(wtx1+wtx2);
390  eTY = (TY()*wty1 + s.TY()*wty2)/(wty1+wty2);
391  (*eCOV)(2,2)= 1./(wtx1+wtx2);
392  (*eCOV)(3,3)= 1./(wty1+wty2);
393 
394  eZ = s.Z();
395  eSZ = TMath::Sqrt(( SZ() + s.SZ())/2);
396 
397  eW = W()+s.W();
398 
399  eID = s.ID();
400  ePID = s.PID();
401  eFlag = s.Flag();
402 }
Float_t eTX
Definition: EdbSegP.h:29
Float_t eW
Definition: EdbSegP.h:34
void PropagateTo(float z)
Definition: EdbSegP.cxx:292
Float_t eSZ
Definition: EdbSegP.h:31
Float_t eTY
Definition: EdbSegP.h:29
Int_t ePID
Definition: EdbSegP.h:21

◆ P()

Float_t EdbSegP::P ( ) const
inline
149 {return eP;}
Float_t eP
Definition: EdbSegP.h:38

◆ Phi()

Float_t EdbSegP::Phi ( ) const
inline
180 {return TMath::ATan2(eTY,eTX);}

◆ PID()

Int_t EdbSegP::PID ( ) const
inline
145 {return ePID;}

◆ Plate()

Int_t EdbSegP::Plate ( ) const
inline
156 {return eScanID.ePlate;}
Int_t ePlate
Definition: EdbID.h:11
EdbID eScanID
AM+AC 27/07/07.
Definition: EdbSegP.h:42

◆ Print()

void EdbSegP::Print ( Option_t *  opt = "") const
virtual

Reimplemented from EdbTrack2D.

406 {
407  printf("EdbSegP: ID= %d PID = %d Vid = %d %d \t Aid = %d %d Flag = %d\n",
408  ID(),PID(),eVid[0],eVid[1],eAid[0],eAid[1], Flag() );
409  printf("x,y,z,dz,tx,ty,w,flag = %f %f %f %f %f %f\n",
410  X(),Y(),Z(),DZ(),TX(),TY() );
411  printf("W = %f P= %f \t Prob = %f \t Chi2 = %f \t Track = %d \n",
412  W(),P(),Prob(),Chi2(), Track() );
413 
414  if(eCOV) eCOV->Print();
415 }
Int_t eVid[2]
Definition: EdbSegP.h:23

◆ PrintNice()

void EdbSegP::PrintNice ( ) const

419 {
420  printf( "EdbSegP: ID= %8d PID = %8d, x= %14.3f, y= %14.3f, z= %14.3f, tx= %7.4f, ty= %7.4f, w= %7.4f, chi2= %7.4f Flag= %6d P= %6.1f MCEvt= %6d \n", ID(),PID(),X(),Y(),Z(),TX(),TY(),W(),Chi2(), Flag(), P(), MCEvt() );
421  return;
422 }

◆ Prob()

Float_t EdbSegP::Prob ( ) const
inline
153 {return eProb;}
Float_t eProb
Definition: EdbSegP.h:33

◆ ProbLink()

float EdbSegP::ProbLink ( EdbSegP s1,
EdbSegP s2 
)
344 {
345  // return probability of the correct link in case Up/Down - specifics is
346  // that the position errors are neglected)
347 
348  double dz = s2.Z() - s1.Z();
349 
350  double tx = (s2.X() - s1.X()) / dz;
351  double ty = (s2.Y() - s1.Y()) / dz;
352 
353  double dtx1 = (s1.TX()-tx)*(s1.TX()-tx)/s1.STX();
354  double dty1 = (s1.TY()-ty)*(s1.TY()-ty)/s1.STY();
355  double dtx2 = (s2.TX()-tx)*(s2.TX()-tx)/s2.STX();
356  double dty2 = (s2.TY()-ty)*(s2.TY()-ty)/s2.STY();
357 
358  double chi2 = TMath::Sqrt(dtx1 + dty1 + dtx2 + dty2);
359  double p3 = TMath::Prob(chi2*chi2,4);
360 
361  return s1.Prob()*s2.Prob()*p3;
362 }
T Prob(const T &rhs, int n)
Definition: Prob.hh:37
Float_t chi2
Definition: testBGReduction_By_ANN.C:14

◆ PropagateTo()

void EdbSegP::PropagateTo ( float  z)
293 {
294  float dz = z-Z();
295  PropagateToDZ(dz);
296 }
void PropagateToDZ(float dz)
Definition: EdbSegP.cxx:280

◆ PropagateToCOV()

void EdbSegP::PropagateToCOV ( float  z)
253 {
254  float dz = z-Z();
255  eX = X() + TX()*dz;
256  eY = Y() + TY()*dz;
257  eZ = z;
258 
259  VtSqMatrix pred(4); //propagation matrix for track parameters (x,y,tx,ty)
260  pred.clear();
261  pred(0,0) = 1.;
262  pred(1,1) = 1.;
263  pred(2,2) = 1.;
264  pred(3,3) = 1.;
265  pred(0,2) = dz;
266  pred(1,3) = dz;
267 
268  VtSymMatrix cov(4); // covariance matrix for seg0
269  for(int k=0; k<4; k++)
270  for(int l=0; l<4; l++) cov(k,l) = (COV())(k,l);
271 
272  VtSymMatrix covpred(4); // covariation matrix for prediction
273  covpred = pred*(cov*(pred.T()));
274 
275  for(int k=0; k<4; k++)
276  for(int l=0; l<4; l++) (COV())(k,l) = covpred(k,l);
277 }

◆ PropagateToDZ()

void EdbSegP::PropagateToDZ ( float  dz)
281 {
282  eX = eX + eTX*dz;
283  eY = eY + eTY*dz;
284  eZ += dz;
285  if(eCOV) {
286  (*eCOV)(0,0) = SX() + STX()*dz*dz;
287  (*eCOV)(1,1) = SY() + STY()*dz*dz;
288  }
289 }

◆ ScanID()

EdbID EdbSegP::ScanID ( ) const
inline
157 {return eScanID;}

◆ Set()

void EdbSegP::Set ( int  id,
float  x,
float  y,
float  tx,
float  ty,
float  w,
int  flag 
)
inline
87  { eID=id; eX=x; eY=y; eTX=tx; eTY=ty; eW=w; eFlag=flag; }
UInt_t id
Definition: tlg2pattern.C:118

◆ Set0()

void EdbSegP::Set0 ( )
30 {
31  ePID=0;
32  eID=0;
33  eVid[0]=eVid[1]=0;
34  eAid[0]=eAid[1]=0;
35  eFlag=0;
36  eTrack=-1;
37  eX=eY=eZ=eTX=eTY=eSZ=0;
38  eProb=0;
39  eW=0;
40  eVolume=0;
41  eDZ=0;
42  eP=-999.;
43  eChi2=0;
44  eCOV=0;
45  eMCTrack=-999;
46  eMCEvt=-999;
47 }
Int_t eTrack
Definition: EdbSegP.h:26
Float_t eVolume
Definition: EdbSegP.h:35

◆ SetAid()

void EdbSegP::SetAid ( int  a,
int  v,
int  side = 0 
)
inline
135 { eAid[0]=a; eAid[1]=100000*side+v; }

◆ SetChi2()

void EdbSegP::SetChi2 ( float  chi2)
inline
132 { eChi2=chi2; }

◆ SetCOV() [1/2]

void EdbSegP::SetCOV ( double *  array,
int  dim = 5 
)
inline
113  {
114  if(!array) return;
115  if(!eCOV) eCOV = new TMatrixD(5,5);
116  for(int k=0; k<dim; k++)
117  for(int l=0; l<dim; l++) (*eCOV)(k,l) = array[k*dim + l];
118  }

◆ SetCOV() [2/2]

void EdbSegP::SetCOV ( TMatrixD &  cov)
inline
98  {
99  if(eCOV) eCOV->Copy(cov);
100  else eCOV = new TMatrixD(cov);
101  }

◆ SetDZ()

void EdbSegP::SetDZ ( float  dz)
inline
123 { eDZ=dz; }

◆ SetDZem()

void EdbSegP::SetDZem ( float  dz)
inline
124 { eDZem=dz; }

◆ SetErrorP()

void EdbSegP::SetErrorP ( float  sp2)
inline
93  {
94  if(!eCOV) eCOV = new TMatrixD(5,5);
95  (*eCOV)(4,4) = (double)sp2;
96  }

◆ SetErrors() [1/2]

void EdbSegP::SetErrors ( )
inline
89 {SetErrors( 1.,1.,0.,.0001,.0001,1.);}

◆ SetErrors() [2/2]

void EdbSegP::SetErrors ( float  sx2,
float  sy2,
float  sz2,
float  stx2,
float  sty2,
float  sp2 = 1. 
)
59 {
60  // setting the diagonal elements of covariance matrix
61  SetErrors0();
62  (*eCOV)(0,0) = (double)sx2;
63  (*eCOV)(1,1) = (double)sy2;
64  (*eCOV)(2,2) = (double)stx2;
65  (*eCOV)(3,3) = (double)sty2;
66  (*eCOV)(4,4) = (double)sp2;
67  eSZ = sz2;
68 }
void SetErrors0()
Definition: EdbSegP.cxx:50

◆ SetErrors0()

void EdbSegP::SetErrors0 ( )
51 {
52  // just init covariance matrix
53  if(!eCOV) eCOV = new TMatrixD(5,5);
54  else eCOV->Zero();
55 }

◆ SetErrorsCOV()

void EdbSegP::SetErrorsCOV ( float  sx2,
float  sy2,
float  sz2,
float  stx2,
float  sty2,
float  sp2 = 1. 
)
72 {
73  // calculation of the non-diagonal covariance matrix considering the input
74  // sigma being in the track plane (Y - is transversal axis)
75 
76  SetErrors( sx2, sy2, sz2, stx2, sty2, sp2 );
77 
78  //double Phi = -(TMath::ATan2((double)TY(),(double)TX()));
79  double Phi = (TMath::ATan2((double)TY(),(double)TX()));
80  TMatrixD t(5,5);
81  TMatrixD tt(5,5);
82  t(0,0) = TMath::Cos(Phi);
83  t(0,1) = -(TMath::Sin(Phi));
84  t(1,0) = TMath::Sin(Phi);
85  t(1,1) = TMath::Cos(Phi);
86  t(2,2) = TMath::Cos(Phi);
87  t(2,3) = -(TMath::Sin(Phi));
88  t(3,2) = TMath::Sin(Phi);
89  t(3,3) = TMath::Cos(Phi);
90  t(4,4) = 1.;
91  tt(0,0) = t(0,0);
92  tt(1,0) = t(0,1);
93  tt(0,1) = t(1,0);
94  tt(1,1) = t(1,1);
95  tt(2,2) = t(2,2);
96  tt(3,2) = t(2,3);
97  tt(2,3) = t(3,2);
98  tt(3,3) = t(3,3);
99  tt(4,4) = t(4,4);
100  (*eCOV) = t*((*eCOV)*tt);
101 }
TTree * t
Definition: check_shower.C:4
Float_t Phi() const
Definition: EdbSegP.h:180

◆ SetFlag()

void EdbSegP::SetFlag ( int  flag)
inline
127 { eFlag=flag; }

◆ SetID()

void EdbSegP::SetID ( int  id)
inline
125 { eID=id; }

◆ SetMC()

void EdbSegP::SetMC ( int  mEvt,
int  mTrack 
)
inline
138 { eMCEvt=mEvt; eMCTrack=mTrack; }

◆ SetP()

void EdbSegP::SetP ( float  p)
inline
130 { eP=p; }
p
Definition: testBGReduction_AllMethods.C:8

◆ SetPID()

void EdbSegP::SetPID ( int  pid)
inline
126 { ePID=pid; }
int pid[1000]
Definition: m2track.cpp:13

◆ SetPlate()

void EdbSegP::SetPlate ( int  plateid)
inline
139 { eScanID.ePlate = plateid; }

◆ SetProb()

void EdbSegP::SetProb ( float  prob)
inline
131 { eProb=prob; }

◆ SetProbability()

void EdbSegP::SetProbability ( float  p)
inline
137 { eProb=p; }

◆ SetScanID()

void EdbSegP::SetScanID ( EdbID  id)
inline
140 { eScanID = id; }

◆ SetSide()

void EdbSegP::SetSide ( int  side = 0)
inline
136 { int v=eAid[1]%100000; eAid[1]=100000*side+v; }

◆ SetSZ()

void EdbSegP::SetSZ ( float  sz)
inline
121 { eSZ=sz; }

◆ SetTrack()

void EdbSegP::SetTrack ( int  trid)
inline
128 { eTrack=trid; }

◆ SetTX()

void EdbSegP::SetTX ( Float_t  tx)
inline
176 { eTX=tx; }

◆ SetTY()

void EdbSegP::SetTY ( Float_t  ty)
inline
177 { eTY=ty; }

◆ SetVid()

void EdbSegP::SetVid ( int  vid,
int  sid 
)
inline
134 { eVid[0]=vid; eVid[1]=sid; }

◆ SetVolume()

void EdbSegP::SetVolume ( float  w)
inline
133 { eVolume=w; }

◆ SetW()

void EdbSegP::SetW ( float  w)
inline
129 { eW=w; }

◆ SetX()

void EdbSegP::SetX ( Float_t  x)
inline
174 { eX=x; }

◆ SetY()

void EdbSegP::SetY ( Float_t  y)
inline
175 { eY=y; }

◆ SetZ()

void EdbSegP::SetZ ( float  z)
inlinevirtual

Reimplemented from EdbPoint2D.

122 { eZ=z; }

◆ Side()

Int_t EdbSegP::Side ( ) const
inline
167 {return eAid[1]/100000;}

◆ SP()

Float_t EdbSegP::SP ( ) const
inline
163 { if(!eCOV) return 0; return (Float_t)(*eCOV)(4,4); }

◆ STX()

Float_t EdbSegP::STX ( ) const
inline
161 { if(!eCOV) return 0; return (Float_t)(*eCOV)(2,2); }

◆ STY()

Float_t EdbSegP::STY ( ) const
inline
162 { if(!eCOV) return 0; return (Float_t)(*eCOV)(3,3); }

◆ SX()

Float_t EdbSegP::SX ( ) const
inline
159 { if(!eCOV) return 0; return (Float_t)(*eCOV)(0,0); }

◆ SY()

Float_t EdbSegP::SY ( ) const
inline
160 { if(!eCOV) return 0; return (Float_t)(*eCOV)(1,1); }

◆ SZ()

Float_t EdbSegP::SZ ( ) const
inline
164 { return eSZ; }

◆ Theta()

Float_t EdbSegP::Theta ( ) const
inline
181 {return TMath::Sqrt(eTY*eTY+eTX*eTX);}

◆ Track()

Int_t EdbSegP::Track ( ) const
inline
147 {return eTrack;}

◆ TX()

Float_t EdbSegP::TX ( ) const
inlinevirtual

Implements EdbAngle2D.

172 {return eTX;}

◆ TY()

Float_t EdbSegP::TY ( ) const
inlinevirtual

Implements EdbAngle2D.

173 {return eTY;}

◆ Vid()

Int_t EdbSegP::Vid ( int  i) const
inline
165 {return (i < 0 || i > 1) ? -1 : eVid[i];}

◆ Volume()

Float_t EdbSegP::Volume ( ) const
inline
155 {return eVolume;}

◆ W()

Float_t EdbSegP::W ( ) const
inline
148 {return eW;}

◆ X()

Float_t EdbSegP::X ( ) const
inlinevirtual

Implements EdbPoint2D.

170 {return eX;}

◆ Y()

Float_t EdbSegP::Y ( ) const
inlinevirtual

Implements EdbPoint2D.

171 {return eY;}

◆ Z()

Float_t EdbSegP::Z ( ) const
inlinevirtual

Reimplemented from EdbPoint2D.

150 {return eZ;}

Member Data Documentation

◆ eAid

Int_t EdbSegP::eAid[2]
private

◆ eChi2

Float_t EdbSegP::eChi2
private

◆ eCOV

TMatrixD* EdbSegP::eCOV
protected

◆ eDZ

Float_t EdbSegP::eDZ
private

◆ eDZem

Float_t EdbSegP::eDZem
private

◆ eEMULDigitArray

TRefArray* EdbSegP::eEMULDigitArray
private

◆ eFlag

Int_t EdbSegP::eFlag
private

◆ eID

Int_t EdbSegP::eID
private

◆ eMCEvt

Int_t EdbSegP::eMCEvt
private

◆ eMCTrack

Int_t EdbSegP::eMCTrack
private

◆ eP

Float_t EdbSegP::eP
private

◆ ePID

Int_t EdbSegP::ePID
private

◆ eProb

Float_t EdbSegP::eProb
private

◆ eScanID

EdbID EdbSegP::eScanID
private

AM+AC 27/07/07.

◆ eSZ

Float_t EdbSegP::eSZ
private

◆ eTrack

Int_t EdbSegP::eTrack
private

◆ eTX

Float_t EdbSegP::eTX

◆ eTY

Float_t EdbSegP::eTY

◆ eVid

Int_t EdbSegP::eVid[2]
private

◆ eVolume

Float_t EdbSegP::eVolume
private

◆ eW

Float_t EdbSegP::eW
private

◆ eX

Float_t EdbSegP::eX

◆ eY

Float_t EdbSegP::eY

◆ eZ

Float_t EdbSegP::eZ

The documentation for this class was generated from the following files: