1 #ifndef ALIEXTERNALTRACKPARAM_H 2 #define ALIEXTERNALTRACKPARAM_H 43 const Double_t param[5],
const Double_t covar[15]);
45 Double_t cv[21],Short_t sign);
54 void Set(T x, T alpha,
const T param[5],
const T covar[15]) {
56 if (alpha < -TMath::Pi()) alpha += 2*TMath::Pi();
57 else if (alpha >= TMath::Pi()) alpha -= 2*TMath::Pi();
59 for (Int_t i = 0; i < 5; i++)
fP[i] = param[i];
60 for (Int_t i = 0; i < 15; i++)
fC[i] = covar[i];
68 if (alpha < -TMath::Pi()) alpha += 2*TMath::Pi();
69 else if (alpha >= TMath::Pi()) alpha -= 2*TMath::Pi();
71 for (Int_t i = 0; i < 5; i++)
fP[i] = param[i];
74 void Set(Double_t xyz[3],Double_t pxpypz[3],Double_t cv[21],Short_t sign);
89 Double_t
GetY()
const {
return fP[0];}
90 Double_t
GetZ()
const {
return fP[1];}
92 virtual Double_t
GetTgl()
const {
return fP[3];}
118 Double_t
P()
const {
return GetP(); }
127 Double_t
Phi()
const;
129 Double_t
Theta()
const;
130 virtual Double_t
E()
const;
131 virtual Double_t
M()
const;
132 Double_t
Eta()
const;
133 virtual Double_t
Y()
const;
135 virtual const Double_t *
PID()
const {
return 0x0; }
138 virtual Int_t
GetID()
const {
return -999; }
143 Double_t
GetP()
const;
147 Double_t
Get1P()
const;
149 void GetDZ(Double_t x,Double_t y,Double_t z,Double_t
b,Float_t dz[2])
const;
150 Double_t
GetD(Double_t xv, Double_t yv, Double_t b)
const;
151 Double_t
GetLinearD(Double_t xv, Double_t yv)
const;
154 Double_t mass, Bool_t anglecorr=kFALSE,
158 Double_t mass, Double_t dEdx, Bool_t anglecorr=kFALSE);
162 Double_t zOverA=0.49848,
163 Double_t density=2.33,
164 Double_t exEnergy=173e-9,
167 Bool_t anglecorr=kFALSE
174 Double_t kp1=0.76176e-1,
176 Double_t kp3=0.13279e-4,
194 GetPredictedChi2(
const Double_t p[3],
const Double_t covyz[3],
const Double_t covxyz[3])
const;
199 PropagateTo(Double_t p[3],Double_t covyz[3],Double_t covxyz[3],Double_t b);
201 Double_t *
GetResiduals(Double_t *p,Double_t *cov,Bool_t updated=kTRUE)
const;
202 Bool_t
Update(
const Double_t p[2],
const Double_t cov[3]);
203 Bool_t
Rotate(Double_t alpha);
208 Bool_t
Propagate(Double_t alpha, Double_t x, Double_t b);
211 void Propagate(Double_t len,Double_t x[3],Double_t p[3],Double_t bz)
const;
212 Bool_t
Intersect(Double_t pnt[3], Double_t norm[3], Double_t bz)
const;
214 static void g3helx3(Double_t qfield, Double_t step, Double_t vect[7]);
221 Double_t &xthis,Double_t &xp)
const;
224 Double_t dz[2]=0, Double_t cov[3]=0);
226 Double_t maxd, Double_t dz[2]=0, Double_t cov[3]=0);
231 Bool_t
GetXYZ(Double_t *p)
const;
233 Bool_t
GetPxPyPzAt(Double_t x, Double_t b, Double_t p[3])
const;
234 Bool_t
GetXYZAt(Double_t x, Double_t b, Double_t r[3])
const;
237 Bool_t
GetYAt(Double_t x, Double_t b, Double_t &y)
const;
238 Bool_t
GetZAt(Double_t x, Double_t b, Double_t &z)
const;
239 Double_t
GetYAtFast(Double_t x, Double_t b)
const {
double y=0;
return GetYAt(x,b,y) ? y : -99999;}
240 Double_t
GetZAtFast(Double_t x, Double_t b)
const {
double z=0;
return GetZAt(x,b,z) ? z : -99999;}
241 Bool_t
GetYZAt(Double_t x, Double_t b, Double_t *yz)
const;
242 void Print(Option_t* option =
"")
const;
243 Double_t
GetSnpAt(Double_t x,Double_t b)
const;
244 Bool_t
GetXatLabR(Double_t r,Double_t &x, Double_t bz, Int_t dir=0)
const;
245 Bool_t
GetXYZatR(Double_t xr,Double_t bz, Double_t *xyz=0, Double_t* alpSect=0)
const;
252 static Int_t
GetIndex(Int_t i, Int_t j);
259 virtual void FillPolymarker(TPolyMarker3D *pol, Float_t magf, Float_t minR, Float_t maxR, Float_t stepR);
260 virtual void DrawTrack(Float_t magF, Float_t minR, Float_t maxR, Float_t stepR);
262 virtual Bool_t
Translate(Double_t *vTrasl,Double_t *covV);
287 Double_t &
Par(Int_t i) {
return fP[i];}
288 Double_t &
Cov(Int_t i) {
return fC[i];}
307 Double_t fC0=
fC[0]*s2,
321 fC[1] = 0.;
fC[2] = fC2;
322 fC[3] = 0.;
fC[4] = 0.;
fC[5] = fC5;
323 fC[6] = 0.;
fC[7] = 0.;
fC[8] = 0.;
fC[9] = fC9;
324 fC[10]= 0.;
fC[11]= 0.;
fC[12]= 0.;
fC[13]= 0.;
fC[14] = fC14;
Double_t GetSigmaZY() const
Bool_t GetPxPyPzAt(Double_t x, Double_t b, Double_t p[3]) const
Bool_t XvYvZv(Double_t x[3]) const
void GetDZ(Double_t x, Double_t y, Double_t z, Double_t b, Float_t dz[2]) const
Bool_t Propagate(Double_t alpha, Double_t x, Double_t b)
Bool_t Intersect(Double_t pnt[3], Double_t norm[3], Double_t bz) const
Double_t GetSigma1PtSnp() const
void Print(Option_t *option="") const
static Double32_t fgMostProbablePt
Double_t GetSigmaZ2() const
Bool_t Rotate(Double_t alpha)
Double_t GetSigmaTglZ() const
virtual void GetImpactParameters(Float_t[], Float_t[]) const
Bool_t Update(const Double_t p[2], const Double_t cov[3])
void Set(T x, T alpha, const T param[5], const T covar[15])
virtual ULong64_t GetStatus() const
Bool_t GetXYZatR(Double_t xr, Double_t bz, Double_t *xyz=0, Double_t *alpSect=0) const
Bool_t GetYAt(Double_t x, Double_t b, Double_t &y) const
Bool_t GetXYZ(Double_t *p) const
static Int_t GetIndex(Int_t i, Int_t j)
virtual void DrawTrack(Float_t magF, Float_t minR, Float_t maxR, Float_t stepR)
virtual Bool_t IsStartedTimeIntegral() const
static Double_t BetheBlochGeant(Double_t bg, Double_t kp0=2.33, Double_t kp1=0.20, Double_t kp2=3.00, Double_t kp3=173e-9, Double_t kp4=0.49848)
Double_t * GetResiduals(Double_t *p, Double_t *cov, Bool_t updated=kTRUE) const
virtual Int_t GetTrackParamIp(AliExternalTrackParam &) const
Bool_t RelateToVVertexBxByBzDCA(const AliVVertex *vtx, Double_t b[3], Double_t maxd, AliExternalTrackParam *cParam=NULL, Double_t dz[2]=NULL, Double_t dzcov[3]=NULL)
static Double_t BetheBlochSolid(Double_t bg)
Double_t OneOverPt() const
static Bool_t GetUseLogTermMS()
virtual Double_t Y() const
virtual UChar_t GetITSClusterMap() const
Double_t GetAlpha() const
Double_t GetSigmaSnpY() const
Bool_t PropagateToDCABxByBz(const AliVVertex *vtx, Double_t b[3], Double_t maxd, Double_t dz[2]=0, Double_t cov[3]=0)
Bool_t GetCovarianceXYZPxPyPz(Double_t cv[21]) const
Bool_t RotateParamOnly(Double_t alpha)
virtual Double_t GetTgl() const
Bool_t PropagateParamOnlyTo(Double_t xk, Double_t b)
virtual ~AliExternalTrackParam()
Double_t PropagateToDCA(AliExternalTrackParam *p, Double_t b)
const Double_t * GetParameter() const
Double_t GetLinearD(Double_t xv, Double_t yv) const
virtual const Double_t * PID() const
void GetHelixParameters(Double_t h[6], Double_t b) const
static Double_t BetheBlochGas(Double_t bg)
static void SetUseLogTermMS(Bool_t v=kTRUE)
virtual Int_t GetTrackParamTPCInner(AliExternalTrackParam &) const
Double_t GetSigmaTglSnp() const
static void g3helx3(Double_t qfield, Double_t step, Double_t vect[7])
void CopyFromVTrack(const AliVTrack *vTrack)
virtual Short_t Charge() const
Bool_t CorrectForMeanMaterialZA(Double_t xOverX0, Double_t xTimesRho, Double_t mass, Double_t zOverA=0.49848, Double_t density=2.33, Double_t exEnergy=173e-9, Double_t jp1=0.20, Double_t jp2=3.00, Bool_t anglecorr=kFALSE)
Bool_t GetXatLabR(Double_t r, Double_t &x, Double_t bz, Int_t dir=0) const
Double_t GetSigned1Pt() const
Double_t GetYAtFast(Double_t x, Double_t b) const
virtual Double_t E() const
virtual Int_t GetTrackParamOp(AliExternalTrackParam &) const
Double_t GetSigmaY2() const
Double_t GetSigma1PtY() const
Bool_t ConstrainToVertex(const AliVVertex *vtx, Double_t b[3])
Double_t GetSigma1Pt2() const
virtual Int_t GetTrackParam(AliExternalTrackParam &) const
AliVConstructorReinitialisationFlag
Double_t GetZAtFast(Double_t x, Double_t b) const
Double_t GetSigmaTglY() const
virtual Int_t GetTrackParamITSOut(AliExternalTrackParam &) const
virtual Bool_t Translate(Double_t *vTrasl, Double_t *covV)
const Double_t * GetCovariance() const
Bool_t PropagateBxByBz(Double_t alpha, Double_t x, Double_t b[3])
Bool_t GetPxPyPz(Double_t *p) const
virtual void AddTimeStep(Double_t)
Double_t GetSigma1PtZ() const
Double_t GetSigma1PtTgl() const
Bool_t PropagateParamOnlyBxByBzTo(Double_t xk, const Double_t b[3])
virtual Double_t M() const
static Double_t GetMostProbablePt()
virtual void GetImpactParameters(Float_t &, Float_t &) const
Bool_t GetZAt(Double_t x, Double_t b, Double_t &z) const
Bool_t CorrectForMaterial(Double_t d, Double_t x0, Double_t mass, Double_t(*f)(Double_t)=AliExternalTrackParam::BetheBlochSolid)
Bool_t GetDistance(AliExternalTrackParam *param2, Double_t x, Double_t dist[3], Double_t b)
AliExternalTrackParam(AliVConstructorReinitialisationFlag f)
Bool_t CorrectForMeanMaterial(Double_t xOverX0, Double_t xTimesRho, Double_t mass, Bool_t anglecorr=kFALSE, Double_t(*f)(Double_t)=AliExternalTrackParam::BetheBlochSolid)
AliExternalTrackParam & operator=(const AliExternalTrackParam &trkPar)
Double_t GetPredictedChi2(const Double_t p[2], const Double_t cov[3]) const
Double_t GetSigmaTgl2() const
static void SetMostProbablePt(Double_t pt)
Double_t GetParameterAtRadius(Double_t r, Double_t bz, Int_t parType) const
virtual Double_t GetC(Double_t b) const
const Double_t kMostProbablePt
virtual Int_t GetTrackParamRefitted(AliExternalTrackParam &) const
void AddCovariance(const Double_t cov[15])
Bool_t PropagateToBxByBz(Double_t x, const Double_t b[3])
virtual void FillPolymarker(TPolyMarker3D *pol, Float_t magf, Float_t minR, Float_t maxR, Float_t stepR)
Double_t GetSigmaSnp2() const
virtual Int_t GetID() const
Double_t GetSignedPt() const
Double_t GetDCA(const AliExternalTrackParam *p, Double_t b, Double_t &xthis, Double_t &xp) const
Double_t GetSnpAt(Double_t x, Double_t b) const
Bool_t PropagateTo(Double_t p[3], Double_t covyz[3], Double_t covxyz[3], Double_t b)
Bool_t CorrectForMeanMaterialdEdx(Double_t xOverX0, Double_t xTimesRho, Double_t mass, Double_t dEdx, Bool_t anglecorr=kFALSE)
static Bool_t fgUseLogTermMS
Double_t GetSigmaSnpZ() const
void SetParamOnly(double x, double alpha, const double param[5])
void GetDirection(Double_t d[3]) const
virtual Int_t GetTrackParamCp(AliExternalTrackParam &) const
static Double_t BetheBlochAleph(Double_t bg, Double_t kp1=0.76176e-1, Double_t kp2=10.632, Double_t kp3=0.13279e-4, Double_t kp4=1.8631, Double_t kp5=1.9479)
Double_t GetD(Double_t xv, Double_t yv, Double_t b) const
Bool_t GetXYZAt(Double_t x, Double_t b, Double_t r[3]) const
Bool_t GetYZAt(Double_t x, Double_t b, Double_t *yz) const
void ResetCovariance(Double_t s2)
Bool_t PxPyPz(Double_t p[3]) const