#ifndef AliVTrack_H
#define AliVTrack_H
#include <TBits.h>
#include "AliVParticle.h"
#include "AliPID.h"
#include "AliVMisc.h"
class AliVEvent;
class AliVVertex;
class AliExternalTrackParam;
class AliTPCdEdxInfo;
class AliDetectorPID;
class AliTOFHeader;
class AliVTrack: public AliVParticle {
public:
enum {
kITSin = 0x1
,kITSout = 0x2
,kITSrefit = 0x4
,kITSpid = 0x8
,kTPCin = 0x10
,kTPCout = 0x20
,kTPCrefit = 0x40
,kTPCpid = 0x80
,kTRDin = 0x100
,kTRDout = 0x200
,kTRDrefit = 0x400
,kTRDpid = 0x800
,kTOFin = 0x1000
,kTOFout = 0x2000
,kTOFrefit = 0x4000
,kTOFpid = 0x8000
,kHMPIDout = 0x10000
,kHMPIDpid = 0x20000
,kEMCALmatch = 0x40000
,kTRDbackup = 0x80000
,kTOFmismatch = 0x100000
,kPHOSmatch = 0x200000
,kITSupg = 0x400000
,kGlobalMerge = 0x1000000
,kMultInV0 = 0x2000000
,kMultSec = 0x4000000
,kEmbedded = 0x8000000
,kITSpureSA = 0x10000000
,kTRDStop = 0x20000000
,kESDpid = 0x40000000
,kTIME = 0x80000000
};
enum {
kTRDnPlanes = 6,
kEMCALNoMatch = -4096,
kTOFBCNA = -100
};
AliVTrack() { }
virtual ~AliVTrack() { }
AliVTrack(const AliVTrack& vTrack);
AliVTrack& operator=(const AliVTrack& vTrack);
AliVTrack( AliVConstructorReinitialisationFlag f) :AliVParticle(f){}
virtual const AliVEvent* GetEvent() const {return 0;}
virtual Int_t GetID() const = 0;
virtual UChar_t GetITSClusterMap() const = 0;
virtual void GetITSdEdxSamples(Double_t s[4]) const {for (int i=4;i--;) s[i]=0;};
virtual const TBits* GetTPCClusterMapPtr() const {return NULL;}
virtual const TBits* GetTPCFitMapPtr() const {return NULL;}
virtual const TBits* GetTPCSharedMapPtr() const {return NULL;}
virtual Float_t GetTPCClusterInfo(Int_t , Int_t , Int_t =0, Int_t =159, Int_t = 0) const {return 0.;}
virtual AliTPCdEdxInfo * GetTPCdEdxInfo() const {return 0x0;}
virtual UShort_t GetTPCNcls() const { return 0;}
virtual UShort_t GetTPCNclsF() const { return 0;}
virtual Double_t GetTRDslice(Int_t , Int_t ) const { return -1.; }
virtual Int_t GetNumberOfTRDslices() const { return 0; }
virtual UChar_t GetTRDncls() const {return 0;}
virtual UChar_t GetTRDntrackletsPID() const { return 0;}
virtual void SetDetectorPID(const AliDetectorPID *) {;}
virtual const AliDetectorPID* GetDetectorPID() const { return 0x0; }
virtual Double_t GetTRDchi2() const { return -1;}
virtual Int_t GetNumberOfClusters() const {return 0;}
virtual Float_t GetTPCCrossedRows() const {return 0;}
virtual void GetImpactParameters(Float_t [], Float_t []) const {;}
virtual void GetImpactParameters(Float_t &,Float_t &) const {;}
virtual void GetImpactParametersTPC(Float_t &,Float_t &) const {;}
virtual void GetImpactParametersTPC(Float_t [] , Float_t [] ) const {;}
virtual Int_t GetEMCALcluster() const {return kEMCALNoMatch;}
virtual void SetEMCALcluster(Int_t) {;}
virtual Bool_t IsEMCAL() const {return kFALSE;}
virtual Double_t GetTrackPhiOnEMCal() const {return -999;}
virtual Double_t GetTrackEtaOnEMCal() const {return -999;}
virtual Double_t GetTrackPtOnEMCal() const {return -999;}
virtual Double_t GetTrackPOnEMCal() const {return -999;}
virtual Bool_t IsExtrapolatedToEMCAL() const {return GetTrackPtOnEMCal()!=-999;}
virtual void SetTrackPhiEtaPtOnEMCal(Double_t,Double_t,Double_t=-999) {;}
virtual Int_t GetPHOScluster() const {return -1;}
virtual void SetPHOScluster(Int_t) {;}
virtual Bool_t IsPHOS() const {return kFALSE;}
virtual void SetPIDForTracking(Int_t ) {}
virtual Int_t GetPIDForTracking() const {return -999;}
virtual void SetStatus(ULong_t ) {;}
virtual void ResetStatus(ULong_t ) {;}
virtual Double_t GetITSsignal() const {return 0.;}
virtual Double_t GetTPCsignal() const {return 0.;}
virtual Double_t GetTPCsignalTunedOnData() const {return 0.;}
virtual UShort_t GetTPCsignalN() const {return 0 ;}
virtual Double_t GetTPCmomentum() const {return 0.;}
virtual Double_t GetTPCTgl() const {return 0.;}
virtual Double_t GetTgl() const {return 0.;}
virtual Double_t GetTOFsignal() const {return 0.;}
virtual Double_t GetTOFsignalTunedOnData() const {return 0.;}
virtual Double_t GetHMPIDsignal() const {return 0.;}
virtual Double_t GetTRDsignal() const {return 0.;}
virtual UChar_t GetTRDNchamberdEdx() const {return 0;}
virtual UChar_t GetTRDNclusterdEdx() const {return 0;}
virtual Double_t GetHMPIDoccupancy() const {return 0.;}
virtual Int_t GetHMPIDcluIdx() const {return 0;}
virtual void GetHMPIDtrk(Float_t &, Float_t &, Float_t &, Float_t &) const {;}
virtual void GetHMPIDmip(Float_t &, Float_t &, Int_t &,Int_t &) const {;}
virtual Bool_t GetOuterHmpPxPyPz(Double_t *) const {return kFALSE;}
virtual const AliExternalTrackParam * GetInnerParam() const { return NULL;}
virtual const AliExternalTrackParam * GetOuterParam() const { return NULL;}
virtual const AliExternalTrackParam * GetTPCInnerParam() const { return NULL;}
virtual const AliExternalTrackParam * GetConstrainedParam() const {return NULL;}
virtual void GetIntegratedTimes(Double_t *, Int_t nspec=AliPID::kSPECIESC) const;
virtual Double_t GetTRDmomentum(Int_t , Double_t *=0x0) const {return 0.;}
virtual void GetHMPIDpid(Double_t *) const {;}
virtual Double_t GetIntegratedLength() const { return 0.;}
virtual ULong_t GetStatus() const = 0;
virtual Bool_t GetXYZ(Double_t *p) const = 0;
virtual Bool_t GetXYZAt(Double_t , Double_t , Double_t* ) const;
virtual Double_t GetBz() const;
virtual void GetBxByBz(Double_t b[3]) const;
virtual Bool_t GetCovarianceXYZPxPyPz(Double_t cv[21]) const = 0;
virtual Bool_t PropagateToDCA(const AliVVertex *vtx,Double_t b,Double_t maxd,Double_t dz[2],Double_t covar[3]) = 0;
virtual Int_t GetNcls(Int_t ) const { return 0; }
virtual Bool_t GetPxPyPz(Double_t *) const { return kFALSE; }
virtual void SetID(Short_t ) {;}
virtual Int_t GetTOFBunchCrossing(Double_t = 0, Bool_t = kFALSE) const { return kTOFBCNA;}
virtual const AliTOFHeader *GetTOFHeader() const {return NULL;};
virtual Int_t GetTrackParam ( AliExternalTrackParam& ) const {return 0;}
virtual Int_t GetTrackParamRefitted ( AliExternalTrackParam& ) const {return 0;}
virtual Int_t GetTrackParamIp ( AliExternalTrackParam& ) const {return 0;}
virtual Int_t GetTrackParamTPCInner ( AliExternalTrackParam& ) const {return 0;}
virtual Int_t GetTrackParamOp ( AliExternalTrackParam& ) const {return 0;}
virtual Int_t GetTrackParamCp ( AliExternalTrackParam& ) const {return 0;}
virtual Int_t GetTrackParamITSOut ( AliExternalTrackParam& ) const {return 0;}
virtual Int_t GetKinkIndex(Int_t ) const { return 0;}
virtual Double_t GetSigned1Pt() const { return 0;}
virtual Bool_t IsOn(Int_t ) const {return 0;}
virtual Double_t GetX() const {return 0;}
virtual Double_t GetY() const {return 0;}
virtual Double_t GetZ() const {return 0;}
virtual const Double_t *GetParameter() const {return 0;}
virtual Double_t GetAlpha() const {return 0;}
virtual UShort_t GetTPCncls(Int_t =0, Int_t =159) const {return 0;}
virtual Double_t GetTOFsignalDz() const {return 0;}
virtual Double_t GetP() const {return 0;}
virtual void GetDirection(Double_t []) const {;}
virtual Double_t GetLinearD(Double_t , Double_t ) const {return 0;}
virtual void GetDZ(Double_t ,Double_t ,Double_t ,Double_t ,Float_t [] ) const {;}
virtual Char_t GetITSclusters(Int_t *) const {return 0;}
virtual UChar_t GetTRDclusters(Int_t *) const {return 0;}
ClassDef(AliVTrack,1)
};
#endif