#include <TBits.h>
#include <TObject.h>
+#include "AliPID.h"
+#include <TVector3.h>
+
class AliKalmanTrack;
const Int_t kNPlane = 6;
AliESDtrack();
AliESDtrack(const AliESDtrack& track);
virtual ~AliESDtrack();
+ void MakeMiniESDtrack();
void SetID(Int_t id) { fID =id;}
Int_t GetID(){ return fID;}
void SetStatus(ULong_t flags) {fFlags|=flags;}
ULong_t GetStatus() const {return fFlags;}
Int_t GetLabel() const {return fLabel;}
+ void SetLabel(Int_t label) {fLabel = label;}
Double_t GetAlpha() const {return fRalpha;}
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;
+ Bool_t GetExternalParametersAt(Double_t x, Double_t b, Double_t p[5]) 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;
void GetImpactParameters(Float_t &xy,Float_t &z) const {xy=fD; z=fZ;}
+ Double_t GetD(Double_t b, Double_t x=0, Double_t y=0) const;
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;}
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];}
const TBits& GetTPCClusterMap() const {return fTPCClusterMap;}
void SetTRDpid(const Double_t *p);
+ void SetTRDQuality(Float_t quality){fTRDQuality=quality;}
+ Float_t GetTRDQuality()const {return fTRDQuality;}
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;}
Float_t GetRICHsignal() const {return fRICHsignal;}
void SetRICHpid(const Double_t *p);
void GetRICHpid(Double_t *p) const;
+ void SetRICHchi2(Double_t chi2) {fRICHchi2=chi2;}
+ Float_t GetRICHchi2() const {return fRICHchi2;}
+ void SetRICHcluster(UInt_t index) {fRICHindex=index;}
+ UInt_t GetRICHcluster() const {return fRICHindex;}
+ void SetRICHnclusters(Int_t n) {fRICHncls=n;}
+ Int_t GetRICHnclusters() const {return fRICHncls;}
+ void SetRICHthetaPhi(Double_t theta, Double_t phi) {
+ fRICHtheta=theta; fRICHphi=phi;
+ }
+ void GetRICHthetaPhi(Double_t &theta, Double_t &phi) const {
+ theta=fRICHtheta; phi=fRICHphi;
+ }
+ void SetRICHdxdy(Double_t dx, Double_t dy) {
+ fRICHdx=dx; fRICHdy=dy;
+ }
+ void GetRICHdxdy(Double_t &dx, Double_t &dy) const {
+ dx=fRICHdx; dy=fRICHdy;
+ }
void SetPHOSposition(const Double_t *pos) {
fPHOSpos[0] = pos[0]; fPHOSpos[1]=pos[1]; fPHOSpos[2]=pos[2];
kESDpid=0x40000000,
kTIME=0x80000000
};
- enum {
- kSPECIES=5, // Number of particle species recognized by the PID
- kSPECIESN=10, // Number of charged+neutral particle species recognized by the PHOS/EMCAL PID
- kElectron=0, kMuon=1, kPion=2, kKaon=3, kProton=4, kPhoton=5,
- kPi0=6, kNeutron=7, kKaon0=8, kEleCon=9 // PHOS/EMCAL definition
- };
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 fTrackLength; // Track length
Float_t fD; // Impact parameter in XY-plane
Float_t fZ; // Impact parameter in Z
- Float_t fTrackTime[kSPECIES]; // TOFs estimated by the tracking
- Float_t fR[kSPECIES]; // combined "detector response probability"
+ 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
Int_t fITSncls; // number of clusters assigned in the ITS
UInt_t fITSindex[6]; //! indices of the assigned ITS clusters
Float_t fITSsignal; // detector's PID signal
- Float_t fITSr[kSPECIES]; // "detector response probabilities" (for the PID)
+ Float_t fITSr[AliPID::kSPECIES]; // "detector response probabilities" (for the PID)
Int_t fITSLabel; // label according TPC
Float_t fITSFakeRatio; // ration of fake tracks
AliKalmanTrack * fITStrack; //! OWNER: pointer to the ITS track -- currently for debug purpose
Int_t fTPCindex[180]; //! indices of the assigned TPC clusters
TBits fTPCClusterMap; // Map of clusters, one bit per padrow; 1 if has a cluster on given padrow
Float_t fTPCsignal; // detector's PID signal
- Float_t fTPCr[kSPECIES]; // "detector response probabilities" (for the PID)
+ Float_t fTPCr[AliPID::kSPECIES]; // "detector response probabilities" (for the PID)
Int_t fTPCLabel; // label according TPC
Float_t fTPCPoints[4]; // TPC points -first, max. dens, last and max density
Int_t fKinkIndexes[3]; // array of indexes of posible kink candidates
Float_t fTRDsignal; // detector's PID signal
Float_t fTRDsignals[kNPlane]; // TRD signals from all six planes
Int_t fTRDTimBin[kNPlane]; // Time bin of Max cluster from all six planes
- Float_t fTRDr[kSPECIES]; // "detector response probabilities" (for the PID)
+ 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
AliKalmanTrack * fTRDtrack; //! OWNER: pointer to the TRD track -- currently for debug purpose
// TOF related track information
Float_t fTOFchi2; // chi2 in the TOF
UInt_t fTOFindex; // index of the assigned TOF cluster
Float_t fTOFsignal; // detector's PID signal
- Float_t fTOFr[kSPECIES]; // "detector response probabilities" (for the PID)
+ Float_t fTOFr[AliPID::kSPECIES]; // "detector response probabilities" (for the PID)
Int_t fTOFLabel[3]; // TOF label
Float_t fTOFInfo[10]; //! TOF informations
// PHOS related track information
Float_t fPHOSpos[3]; // position localised by PHOS in global coordinate system
Float_t fPHOSsignal; // energy measured by PHOS
- Float_t fPHOSr[kSPECIESN]; // PID information from PHOS
+ Float_t fPHOSr[AliPID::kSPECIESN]; // PID information from PHOS
// EMCAL related track information
Float_t fEMCALpos[3]; //position localised by EMCAL in global coordinate system
Float_t fEMCALsignal; // energy measured by EMCAL
- Float_t fEMCALr[kSPECIESN]; // PID information from EMCAL
+ Float_t fEMCALr[AliPID::kSPECIESN]; // PID information from EMCAL
// HMPID related track information
- Float_t fRICHsignal; // detector's PID signal (beta for RICH)
- Float_t fRICHr[kSPECIES];// "detector response probabilities" (for the PID)
+ Float_t fRICHchi2; // chi2 in the RICH
+ Int_t fRICHncls; // number of photon clusters
+ UInt_t fRICHindex; // index of the assigned MIP cluster
+ Float_t fRICHsignal; // RICH PID signal
+ Float_t fRICHr[AliPID::kSPECIES];// "detector response probabilities" (for the PID)
+ Float_t fRICHtheta; // theta of the track extrapolated to the RICH
+ 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,11) //ESDtrack
+ ClassDef(AliESDtrack,15) //ESDtrack
};
#endif