/////////////////////////////////////////////////////////////////////////// // // // AliFemtoTrack: main class holding all the necessary information // // about a track (before the identification) that is required during // // femtoscopic analysis. This class is filled with information from the // // input stream by the reader. A particle has a link back to the Track // // it was created from, so we do not copy the information. // // // /////////////////////////////////////////////////////////////////////////// #ifndef ALIFEMTOTRACK_H #define ALIFEMTOTRACK_H #include "AliFemtoTypes.h" #include "AliFmPhysicalHelixD.h" #include "TBits.h" /* Th stuff */ #include "AliFemtoHiddenInfo.h" /***/ #ifndef __NO_STAR_DEPENDENCE_ALLOWED__ class StEvent; class StTrack; class StMuDst; class StMuTrack; #endif class AliFemtoTrack{ public: AliFemtoTrack(); AliFemtoTrack(const AliFemtoTrack& aTrack);// copy constructor AliFemtoTrack& operator=(const AliFemtoTrack& aTrack); #ifndef __NO_STAR_DEPENDENCE_ALLOWED__ #ifdef __ROOT__ //AliFemtoTrack(const StTrack*, AliFemtoThreeVector); // c-tor from StTrack of STAR DSTs //AliFemtoTrack(const StMuDst* dst, const StMuTrack* t); #endif //AliFemtoTrack(const StEvent*, const StTrack*); #endif ~AliFemtoTrack(); // ~AliFemtoTrack(){/* no-op*/}; short Charge() const; float PidProbElectron() const; float PidProbPion() const; float PidProbKaon() const; float PidProbProton() const; float PidProbMuon() const; AliFemtoThreeVector P() const; float Pt() const; float InnerMomentum() const; const AliFmPhysicalHelixD& Helix() const; int TrackId() const; long int Flags() const; int Label()const; float ImpactD()const; float ImpactDprim()const; float ImpactDweak()const; float ImpactDmat()const; float ImpactZ()const; float Cdd() const; float Cdz() const; float Czz() const; float ITSchi2() const; int ITSncls() const; float TPCchi2() const; int TPCncls() const; short TPCnclsF() const; float TPCsignal() const; short TPCsignalN() const; float TPCsignalS() const; //new PID float NSigmaTPCPi() const; float NSigmaTPCK() const; float NSigmaTPCP() const; float NSigmaTPCE() const; float VTOF() const; float NSigmaTOFPi() const; float NSigmaTOFK() const; float NSigmaTOFP() const; float NSigmaTOFE() const; float TOFpionTime() const; float TOFkaonTime() const; float TOFprotonTime() const; double XatDCA() const; double YatDCA() const; double ZatDCA() const; const TBits& TPCclusters() const; const TBits& TPCsharing() const; void SetCharge(const short& s); void SetPidProbElectron(const float& x); void SetPidProbPion(const float& x); void SetPidProbKaon(const float& x); void SetPidProbProton(const float& x); void SetPidProbMuon(const float& x); void SetTofExpectedTimes(const float& tpi, const float& tkn, const float& tpr); void SetP(const AliFemtoThreeVector& p); void SetPt(const float& x); void SetInnerMomentum(const float& x); void SetHelix(const AliFmPhysicalHelixD& h); void SetTrackId(const int& s); void SetFlags(const long int& i); void SetLabel(const int& i); void SetImpactD(const float& x); void SetImpactDprim(const float& x); void SetImpactDweak(const float& x); void SetImpactDmat(const float& x); void SetImpactZ(const float& x); void SetCdd(const float& x); void SetCdz(const float& x); void SetCzz(const float& x); void SetITSchi2(const float& x); void SetITSncls(const int& i); void SetTPCchi2(const float& x); void SetTPCncls(const int& i); void SetTPCnclsF(const short& s); void SetTPCsignal(const float& s); void SetTPCsignalN(const short& s); void SetTPCsignalS(const float& x); //new PID void SetNSigmaTPCPi(const float& x); void SetNSigmaTPCK(const float& x); void SetNSigmaTPCP(const float& x); void SetNSigmaTPCE(const float& x); void SetVTOF(const float& x); void SetNSigmaTOFPi(const float& x); void SetNSigmaTOFK(const float& x); void SetNSigmaTOFP(const float& x); void SetNSigmaTOFE(const float& x); void SetTPCcluster(const short& aNBit, const Bool_t& aValue); void SetTPCshared(const short& aNBit, const Bool_t& aValue); void SetTPCClusterMap(const TBits& aBits); void SetTPCSharedMap(const TBits& aBits); void SetKinkIndexes(int points[3]); int KinkIndex(int aIndex) const; void SetITSHitOnLayer(int i, bool val); bool HasPointOnITSLayer(int aIndex) const; // i: 0-5, for 6 layers /* Th stuff */ void SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo); bool ValidHiddenInfo() const; // Fab private : (official : const AliFemtoHiddenInfo* HiddenInfo() const; AliFemtoHiddenInfo* GetHiddenInfo() const; /***/ const AliFemtoThreeVector& NominalTpcExitPoint() const; const AliFemtoThreeVector& NominalTpcPoint(int i) const; const AliFemtoThreeVector& NominalTpcEntrancePoint() const; void SetNominalTPCEntrancePoint(const AliFemtoThreeVector& aXTPC); void SetNominalTPCEntrancePoint(double *aXTPC); void SetNominalTPCPoints(double **aXTPC); void SetNominalTPCExitPoint(const AliFemtoThreeVector& aXTPC); void SetNominalTPCExitPoint(double *aXTPC); void SetSigmaToVertex(const float& Sigma); float SigmaToVertex() const; void SetXatDCA(const double& x); void SetYatDCA(const double& x); void SetZatDCA(const double& x); void SetTrueMomentum(AliFemtoThreeVector *aMom); void SetTrueMomentum(const AliFemtoThreeVector& aMom); void SetTrueMomentum(Double_t aPx, Double_t aPy, Double_t aPz); void SetEmissionPoint(AliFemtoLorentzVector *aPos); void SetEmissionPoint(const AliFemtoLorentzVector& aPos); void SetEmissionPoint(Double_t aRx, Double_t aRy, Double_t aRz, Double_t aT); void SetPDGPid(Int_t aPid); void SetMass(Double_t aMass); AliFemtoThreeVector *GetTrueMomentum() const; AliFemtoLorentzVector *GetEmissionPoint() const; Int_t GetPDGPid() const; Double_t GetMass() const; AliFemtoThreeVector *GetGlobalEmissionPoint() const; void SetGlobalEmissionPoint(const AliFemtoThreeVector& aPos); void SetGlobalEmissionPoint(Double_t aRx, Double_t aRy, Double_t aRz); void SetPrimaryVertex(double *vertex); void GetPrimaryVertex(double *vertex); //Alice stuff enum { kITSin=0x0001,kITSout=0x0002,kITSrefit=0x0004,kITSpid=0x0008, kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080, kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800, kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000, kRICHpid=0x20000, kTRDbackup=0x80000, kTRDStop=0x20000000, kESDpid=0x40000000, kTIME=0x80000000 }; private: char fCharge; // track charge float fPidProbElectron; // electron pid float fPidProbPion; // pion pid float fPidProbKaon; // kaon pid float fPidProbProton; // proton pid float fPidProbMuon; // muon pid int fTrackId; // track unique id float fTofPionTime; // TOF time - pion expected time float fTofKaonTime; // TOF time - kaon expected time float fTofProtonTime; // TOF time - proton expected time AliFemtoThreeVector fP; // track momentum float fPt; // transverse momenta float fInnerMomentum; // *total* momentum at the *inner* wall of the TPC AliFmPhysicalHelixD fHelix; // track helix //alice stuff long int fFlags; //Reconsruction status flags int fLabel; //Track label float fImpactD; //impact parameter in xy plane float fImpactDprim; //impact parameter in xy plane float fImpactDweak; //impact parameter in xy plane float fImpactDmat; //impact parameter in xy plane float fImpactZ;//impacct parameter in z float fCdd,fCdz,fCzz;//covariance matrix of the impact parameters // ITS related track information float fITSchi2; // chi2 in the ITS int fITSncls; // number of clusters assigned in the ITS // TPC related track information float fTPCchi2; // chi2 in the TPC int fTPCncls; // number of clusters assigned in the TPC short fTPCnclsF; // number of findable clusters in the TPC float fTPCsignal; // dEdx TPC value short fTPCsignalN; // number of points used for dEdx float fTPCsignalS; // RMS of dEdx measurement float fVTOF; // v=length/TOF float fNSigmaTPCPi; // nsigma TPC for pion float fNSigmaTPCK; // nsigma TPC for K float fNSigmaTPCP; // nsigma TPC for P float fNSigmaTPCE; // nsigma TPC for electron float fNSigmaTOFPi; // nsigma TPC for pion float fNSigmaTOFK; // nsigma TPC for K float fNSigmaTOFP; // nsigma TPC for P float fNSigmaTOFE; // nsigma TPC for electron float fSigmaToVertex; // Distance from track to vertex in sigmas TBits fClusters; // Cluster per padrow map TBits fShared; // Sharing per padrow map AliFemtoThreeVector fNominalTpcEntrancePoint; // Nominal track entrance point into TPC AliFemtoThreeVector fNominalTpcPoints[9]; AliFemtoThreeVector fNominalTpcExitPoint; // Nominal track exit point from TPC int fKinkIndexes[3]; // Kink Index list bool fHasPointOnITS[6]; // if track has hit on the ITS layer (6 layers: 2 x 3 (SPD, SSD, SDD)) double fXatDCA; double fYatDCA; double fZatDCA; /* Th stuff */ // Fab private : add mutable // mutable AliFemtoHiddenInfo* fHiddenInfo; //! hidden info /***/ AliFemtoThreeVector *fTrueMomentum; // True (simulated) momentum AliFemtoLorentzVector *fEmissionPoint; // Emission point coordinates Int_t fPDGPid; // True PID of the particle Double_t fMass; // True particle mass AliFemtoThreeVector *fGlobalEmissionPoint; double fVertex[3]; }; //inline const float* AliFemtoTrack::NSigma() const //{return &mNSigmaElectron;} // Fab private inline float AliFemtoTrack::PidProbElectron() const {return fPidProbElectron;} inline float AliFemtoTrack::PidProbPion() const {return fPidProbPion;} inline float AliFemtoTrack::PidProbKaon() const {return fPidProbKaon;} inline float AliFemtoTrack::PidProbProton() const {return fPidProbProton;} inline float AliFemtoTrack::PidProbMuon() const {return fPidProbMuon;} #endif