From b8b98dc222e96ece2926e6d5a3fec7d6e3d690a3 Mon Sep 17 00:00:00 2001 From: mivanov Date: Wed, 12 Feb 2014 14:56:42 +0100 Subject: [PATCH] STEER/STEERBase/AliExternalTrackParam.h,cxx - getter to acces information also in TTree::Draw --- STEER/STEERBase/AliExternalTrackParam.cxx | 66 +++++++++++++++++++++++ STEER/STEERBase/AliExternalTrackParam.h | 2 + 2 files changed, 68 insertions(+) diff --git a/STEER/STEERBase/AliExternalTrackParam.cxx b/STEER/STEERBase/AliExternalTrackParam.cxx index e9e8af95386..fc28c06ca2d 100644 --- a/STEER/STEERBase/AliExternalTrackParam.cxx +++ b/STEER/STEERBase/AliExternalTrackParam.cxx @@ -2657,3 +2657,69 @@ Bool_t AliExternalTrackParam::GetXYZatR(Double_t xr,Double_t bz, Double_t *xyz, return kTRUE; // } + + +Double_t AliExternalTrackParam::GetParameterAtRadius(Double_t r, Double_t bz, Int_t parType) const +{ + // + // Get track parameters at the radius of interest. + // Given function is aimed to be used to interactivelly (tree->Draw()) + // access track properties at different radii + // + // TO BE USED WITH SPECICAL CARE - + // it is aimed to be used for rough calculation as constant field and + // no correction for material is used + // + // r - radius of interest + // bz - magentic field + // retun values dependens on parType: + // parType = 0 -gx + // parType = 1 -gy + // parType = 2 -gz + // + // parType = 3 -pgx + // parType = 4 -pgy + // parType = 5 -pgz + // + // parType = 6 - r + // parType = 7 - global position phi + // parType = 8 - global direction phi + // parType = 9 - direction phi- positionphi + if (parType<0) { + parType=-1; + return 0; + } + Double_t xyz[3]; + Double_t pxyz[3]; + Double_t localX=0; + Bool_t res = GetXatLabR(r,localX,bz,1); + if (!res) { + parType=-1; + return 0; + } + // + // position parameters + // + GetXYZAt(localX,bz,xyz); + if (parType<3) { + return xyz[parType]; + } + + if (parType==6) return TMath::Sqrt(xyz[0]*xyz[0]+xyz[1]*xyz[1]); + if (parType==7) return TMath::ATan2(xyz[1],xyz[0]); + // + // momenta parameters + // + GetPxPyPzAt(localX,bz,pxyz); + if (parType==8) return TMath::ATan2(pxyz[1],pxyz[0]); + if (parType==9) { + Double_t diff = TMath::ATan2(pxyz[1],pxyz[0])-TMath::ATan2(xyz[1],xyz[0]); + if (diff>TMath::Pi()) diff-=TMath::TwoPi(); + if (diff<-TMath::Pi()) diff+=TMath::TwoPi(); + return diff; + } + if (parType>=3&&parType<6) { + return pxyz[parType%3]; + } + return 0; +} diff --git a/STEER/STEERBase/AliExternalTrackParam.h b/STEER/STEERBase/AliExternalTrackParam.h index d3ad96091c4..e087bbf9f65 100644 --- a/STEER/STEERBase/AliExternalTrackParam.h +++ b/STEER/STEERBase/AliExternalTrackParam.h @@ -213,6 +213,8 @@ class AliExternalTrackParam: public AliVTrack { Bool_t GetCovarianceXYZPxPyPz(Double_t cv[21]) const; Bool_t GetPxPyPzAt(Double_t x, Double_t b, Double_t p[3]) const; Bool_t GetXYZAt(Double_t x, Double_t b, Double_t r[3]) const; + Double_t GetParameterAtRadius(Double_t r, Double_t bz, Int_t parType) const; + Bool_t GetYAt(Double_t x, Double_t b, Double_t &y) const; Bool_t GetZAt(Double_t x, Double_t b, Double_t &z) const; void Print(Option_t* option = "") const; -- 2.39.3