*****************************************************************************/
#include <TBits.h>
-#include <TObject.h>
+#include "AliExternalTrackParam.h"
#include "AliPID.h"
#include <TVector3.h>
class AliKalmanTrack;
+class AliTrackPointArray;
const Int_t kNPlane = 6;
-class AliESDtrack : public TObject {
+class AliESDtrack : public AliExternalTrackParam {
public:
AliESDtrack();
AliESDtrack(const AliESDtrack& track);
ULong_t GetStatus() const {return fFlags;}
Int_t GetLabel() const {return fLabel;}
- Double_t GetAlpha() const {return fRalpha;}
+ void SetLabel(Int_t label) {fLabel = label;}
+
void GetExternalParameters(Double_t &x, Double_t p[5]) const;
void GetExternalCovariance(Double_t cov[15]) const;
- Bool_t GetExternalParametersAt(Double_t x, Double_t p[5]) const;
- Bool_t GetPxPyPzAt(Double_t x, Double_t p[3]) const;
- Bool_t GetXYZAt(Double_t x, Double_t r[3]) const;
-
void GetImpactParameters(Float_t &xy,Float_t &z) const {xy=fD; z=fZ;}
Double_t GetIntegratedLength() const {return fTrackLength;}
void GetIntegratedTimes(Double_t *times) const;
Double_t GetMass() const;
- Double_t GetP() const;
- Bool_t GetPxPyPz(Double_t *p) const;
TVector3 P3() const {Double_t p[3]; GetPxPyPz(p); return TVector3(p[0],p[1],p[2]);} //running track momentum
- Bool_t GetXYZ(Double_t *r) const;
TVector3 X3() const {Double_t x[3]; GetXYZ(x); return TVector3(x[0],x[1],x[2]);} //running track position
- void GetCovariance(Double_t cov[21]) const;
- Int_t GetSign() const {return (fRp[4]>0) ? 1 : -1;}
void SetConstrainedTrackParams(const AliKalmanTrack *t, Double_t chi2);
- Double_t GetConstrainedAlpha() const {return fCalpha;}
+
+ Bool_t GetConstrainedPxPyPz(Double_t *p) const {
+ if (!fCp) return kFALSE;
+ return fCp->GetPxPyPz(p);
+ }
+ Bool_t GetConstrainedXYZ(Double_t *r) const {
+ if (!fCp) return kFALSE;
+ return fCp->GetXYZ(r);
+ }
+ Bool_t GetConstrainedExternalParameters
+ (Double_t &alpha, Double_t &x, Double_t p[5]) const;
+ Bool_t GetConstrainedExternalCovariance(Double_t cov[15]) const;
Double_t GetConstrainedChi2() const {return fCchi2;}
- void GetConstrainedExternalParameters(Double_t &x, Double_t p[5]) const;
- void GetConstrainedExternalCovariance(Double_t cov[15]) const;
- Bool_t GetConstrainedPxPyPz(Double_t *p) const;
- Bool_t GetConstrainedXYZ(Double_t *r) const;
- Bool_t GetInnerPxPyPz(Double_t *p) const;
- Bool_t GetInnerXYZ(Double_t *r) const;
- void GetInnerExternalParameters(Double_t &x, Double_t p[5]) const;//skowron
- void GetInnerExternalCovariance(Double_t cov[15]) const;//skowron
- Double_t GetInnerAlpha() const {return fIalpha;}
-
+
+ Bool_t GetInnerPxPyPz(Double_t *p) const {
+ if (!fIp) return kFALSE;
+ return fIp->GetPxPyPz(p);
+ }
+ Bool_t GetInnerXYZ(Double_t *r) const {
+ if (!fIp) return kFALSE;
+ return fIp->GetXYZ(r);
+ }
+ Bool_t GetInnerExternalParameters
+ (Double_t &alpha, Double_t &x, Double_t p[5]) const;
+ Bool_t GetInnerExternalCovariance(Double_t cov[15]) const;
+
+
+ Bool_t GetOuterPxPyPz(Double_t *p) const {
+ if (!fOp) return kFALSE;
+ return fOp->GetPxPyPz(p);
+ }
+ Bool_t GetOuterXYZ(Double_t *r) const {
+ if (!fOp) return kFALSE;
+ return fOp->GetXYZ(r);
+ }
+ Bool_t GetOuterExternalParameters
+ (Double_t &alpha, Double_t &x, Double_t p[5]) const;
+ Bool_t GetOuterExternalCovariance(Double_t cov[15]) const;
+
+
+ Int_t GetNcls(Int_t idet) const;
+ Int_t GetClusters(Int_t idet, UInt_t *idx) const;
+
void SetITSpid(const Double_t *p);
void SetITSChi2MIP(const Float_t *chi2mip);
void SetITStrack(AliKalmanTrack * track){fITStrack=track;}
void SetTPCpid(const Double_t *p);
void GetTPCpid(Double_t *p) const;
void SetTPCPoints(Float_t points[4]){for (Int_t i=0;i<4;i++) fTPCPoints[i]=points[i];}
+ Float_t GetTPCPoints(Int_t i){return fTPCPoints[i];}
void SetKinkIndexes(Int_t points[3]) {for (Int_t i=0;i<3;i++) fKinkIndexes[i] = points[i];}
void SetV0Indexes(Int_t points[3]) {for (Int_t i=0;i<3;i++) fV0Indexes[i] = points[i];}
Float_t GetTPCsignal() const {return fTPCsignal;}
Float_t GetTPCchi2() const {return fTPCchi2;}
Int_t GetTPCclusters(Int_t *idx) const;
+ Float_t GetTPCdensity(Int_t row0, Int_t row1) const;
Int_t GetTPCLabel() const {return fTPCLabel;}
Int_t GetKinkIndex(Int_t i) const { return fKinkIndexes[i];}
Int_t GetV0Index(Int_t i) const { return fV0Indexes[i];}
void SetTRDpid(const Double_t *p);
void SetTRDQuality(Float_t quality){fTRDQuality=quality;}
Float_t GetTRDQuality()const {return fTRDQuality;}
+ void SetTRDBudget(Float_t budget){fTRDBudget=budget;}
+ Float_t GetTRDBudget()const {return fTRDBudget;}
void SetTRDtrack(AliKalmanTrack * track){fTRDtrack=track;}
void SetTRDsignals(Float_t dedx, Int_t i) {fTRDsignals[i]=dedx;}
void SetTRDTimBin(Int_t timbin, Int_t i) {fTRDTimBin[i]=timbin;}
void SetTRDpid(Int_t iSpecies, Float_t p);
Float_t GetTRDpid(Int_t iSpecies) const;
Int_t GetTRDLabel() const {return fTRDLabel;}
- void GetTRDExternalParameters(Double_t &x, Double_t &alpha, Double_t p[5], Double_t cov[15]) const;//MI
+
+
AliKalmanTrack * GetTRDtrack(){return fTRDtrack;}
void SetTOFsignal(Double_t tof) {fTOFsignal=tof;}
Bool_t IsPHOS() const {return fFlags&kPHOSpid;}
Bool_t IsEMCAL() const {return fFlags&kEMCALpid;}
+ void SetTrackPointArray(AliTrackPointArray *points) { fPoints = points; }
+ AliTrackPointArray *GetTrackPointArray() const { return fPoints; }
+
virtual void Print(Option_t * opt) const ;
enum {
kTIME=0x80000000
};
protected:
+
+ //AliESDtrack & operator=(const AliESDtrack & );
+
ULong_t fFlags; // Reconstruction status flags
Int_t fLabel; // Track label
Int_t fID; // Unique ID of the track
Float_t fD; // Impact parameter in XY-plane
Float_t fZ; // Impact parameter in Z
Float_t fTrackTime[AliPID::kSPECIES]; // TOFs estimated by the tracking
- Float_t fR[AliPID::kSPECIES]; // combined "detector response probability"
-
- Int_t fStopVertex; // Index of stop vertex
+ Float_t fR[AliPID::kSPECIES]; // combined "detector response probability"
-//Running track parameters
- Double_t fRalpha; // track rotation angle
- Double_t fRx; // X-coordinate of the track reference plane
- Double_t fRp[5]; // external track parameters
- Double_t fRc[15]; // external cov. matrix of the track parameters
+ Int_t fStopVertex; // Index of stop vertex
//Track parameters constrained to the primary vertex
- Double_t fCalpha; // Track rotation angle
- Double_t fCx; // x-coordinate of the track reference plane
- Double_t fCp[5]; // external track parameters
- Double_t fCc[15]; // external cov. matrix of the track parameters
+ AliExternalTrackParam *fCp;
Double_t fCchi2; //chi2 at the primary vertex
//Track parameters at the inner wall of the TPC
- Double_t fIalpha; // Track rotation angle
- Double_t fIx; // x-coordinate of the track reference plane
- Double_t fIp[5]; // external track parameters
- Double_t fIc[15]; // external cov. matrix of the track parameters
+ AliExternalTrackParam *fIp;
//Track parameters at the inner wall of the TRD
- Double_t fTalpha; // Track rotation angle
- Double_t fTx; // x-coordinate of the track reference plane
- Double_t fTp[5]; // external track parameters
- Double_t fTc[15]; // external cov. matrix of the track parameters
+ AliExternalTrackParam *fOp;
// ITS related track information
Float_t fITSchi2; // chi2 in the ITS
Float_t fTRDr[AliPID::kSPECIES]; // "detector response probabilities" (for the PID)
Int_t fTRDLabel; // label according TRD
Float_t fTRDQuality; //trd quality factor for TOF
+ Float_t fTRDBudget; //trd material budget
AliKalmanTrack * fTRDtrack; //! OWNER: pointer to the TRD track -- currently for debug purpose
// TOF related track information
Float_t fRICHphi; // phi of the track extrapolated to the RICH
Float_t fRICHdx; // x of the track impact minus x of the MIP
Float_t fRICHdy; // y of the track impact minus y of the MIP
-
- ClassDef(AliESDtrack,13) //ESDtrack
+
+ AliTrackPointArray *fPoints; // Array which contains the track space points in the global frame
+
+ ClassDef(AliESDtrack,20) //ESDtrack
};
#endif