//_____________________________________________________________________________
AliExternalTrackParam::AliExternalTrackParam() :
- TObject(),
+ AliVParticle(),
fX(0),
fAlpha(0)
{
//_____________________________________________________________________________
AliExternalTrackParam::AliExternalTrackParam(const AliExternalTrackParam &track):
- TObject(track),
+ AliVParticle(track),
fX(track.fX),
fAlpha(track.fAlpha)
{
for (Int_t i = 0; i < 15; i++) fC[i] = track.fC[i];
}
+//_____________________________________________________________________________
+AliExternalTrackParam& AliExternalTrackParam::operator=(const AliExternalTrackParam &trkPar)
+{
+ //
+ // assignment operator
+ //
+
+ if (this!=&trkPar) {
+ AliVParticle::operator=(trkPar);
+ fX = trkPar.fX;
+ fAlpha = trkPar.fAlpha;
+
+ for (Int_t i = 0; i < 5; i++) fP[i] = trkPar.fP[i];
+ for (Int_t i = 0; i < 15; i++) fC[i] = trkPar.fC[i];
+ }
+
+ return *this;
+}
+
//_____________________________________________________________________________
AliExternalTrackParam::AliExternalTrackParam(Double_t x, Double_t alpha,
const Double_t param[5],
const Double_t covar[15]) :
- TObject(),
+ AliVParticle(),
fX(x),
fAlpha(alpha)
{
//+++++++++++++++++++++++++++++++++++++++++
GetXYZ(x);
- if (TMath::Abs(Get1Pt()) < kAlmost0 || TMath::Abs(bz) < kAlmost0Field ){ //straight-line tracks
+ if (OneOverPt() < kAlmost0 || TMath::Abs(bz) < kAlmost0Field ){ //straight-line tracks
Double_t unit[3]; GetDirection(unit);
x[0]+=unit[0]*len;
x[1]+=unit[1]*len;
return Local2GlobalMomentum(p,fAlpha);
}
+Double_t AliExternalTrackParam::Px() const {
+ // return x-component of momentum
+
+ Double_t p[3];
+ GetPxPyPz(p);
+
+ return p[0];
+}
+
+Double_t AliExternalTrackParam::Py() const {
+ // return y-component of momentum
+
+ Double_t p[3];
+ GetPxPyPz(p);
+
+ return p[1];
+}
+
+Double_t AliExternalTrackParam::Pz() const {
+ // return z-component of momentum
+
+ Double_t p[3];
+ GetPxPyPz(p);
+
+ return p[2];
+}
+
+Double_t AliExternalTrackParam::Theta() const {
+ // return theta angle of momentum
+
+ return TMath::ATan2(Pt(), Pz());
+}
+
+Double_t AliExternalTrackParam::Phi() const {
+ // return phi angle of momentum
+
+ Double_t p[3];
+ GetPxPyPz(p);
+
+ return TMath::ATan2(p[1], p[0]);
+}
+
+Double_t AliExternalTrackParam::M() const {
+ // return particle mass
+
+ // No mass information available so far.
+ // Redifine in derived class!
+
+ return -999.;
+}
+
+Double_t AliExternalTrackParam::E() const {
+ // return particle energy
+
+ // No PID information available so far.
+ // Redifine in derived class!
+
+ return -999.;
+}
+
+Double_t AliExternalTrackParam::Eta() const {
+ // return pseudorapidity
+
+ return -TMath::Log(TMath::Tan(0.5 * Theta()));
+}
+
+Double_t AliExternalTrackParam::Y() const {
+ // return rapidity
+
+ // No PID information available so far.
+ // Redifine in derived class!
+
+ return -999.;
+}
+
Bool_t AliExternalTrackParam::GetXYZ(Double_t *r) const {
//---------------------------------------------------------------------
// This function returns the global track position
* system rotated by angle alpha with respect to the global coord.system. *
* Origin: I.Belikov, CERN, Jouri.Belikov@cern.ch *
*****************************************************************************/
-#include "TObject.h"
#include "TMath.h"
+#include "AliVParticle.h"
+
const Double_t kAlmost1=0.999;
const Double_t kAlmost0=1e-33;
const Double_t kVeryBig=1./kAlmost0;
Double_t ApproximateBetheBloch(Double_t);
-class AliExternalTrackParam: public TObject {
+class AliExternalTrackParam: public AliVParticle {
public:
AliExternalTrackParam();
AliExternalTrackParam(const AliExternalTrackParam &);
+ AliExternalTrackParam& operator=(const AliExternalTrackParam & trkPar);
AliExternalTrackParam(Double_t x, Double_t alpha,
const Double_t param[5], const Double_t covar[15]);
virtual ~AliExternalTrackParam(){}
Double_t GetZ() const {return fP[1];}
Double_t GetSnp() const {return fP[2];}
Double_t GetTgl() const {return fP[3];}
- Double_t Get1Pt() const {return fP[4];}
+ Double_t GetSigned1Pt() const {return fP[4];}
Double_t GetSigmaY2() const {return fC[0];}
Double_t GetSigmaZY() const {return fC[1];}
Double_t GetSigma1PtTgl() const {return fC[13];}
Double_t GetSigma1Pt2() const {return fC[14];}
+ // additional functions for AliVParticle
+ Double_t Px() const;
+ Double_t Py() const;
+ Double_t Pz() const;
+ Double_t Pt() const { return TMath::Abs(GetSignedPt()); }
+ Double_t P() const { return GetP(); }
+ Double_t OneOverPt() const { return 1./Pt(); }
+ Double_t Phi() const;
+ Double_t Theta() const;
+ virtual Double_t E() const;
+ virtual Double_t M() const;
+ Double_t Eta() const;
+ virtual Double_t Y() const;
+ Short_t Charge() const { return (Short_t)GetSign(); }
+ const Double_t *PID() const { return 0x0; }
+
Double_t GetSign() const {return (fP[4]>0) ? 1 : -1;}
Double_t GetP() const;
- Double_t GetPt() const {
+ Double_t GetSignedPt() const {
return (TMath::Abs(fP[4])>kAlmost0) ? 1./fP[4]:TMath::Sign(kVeryBig,fP[4]);
}
Double_t Get1P() const;
static Double32_t fgMostProbablePt; // "Most probable" pt
// (to be used if Bz=0)
- ClassDef(AliExternalTrackParam, 6)
+ ClassDef(AliExternalTrackParam, 7)
};
inline void AliExternalTrackParam::ResetCovariance(Double_t s2) {