X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FESD%2FAliESDtrack.h;h=1970aed770d1db174dbdab9a8eebec301a67387c;hb=8ef7340c9839bc186ca5879407ff8249b09b86f2;hp=42252dd5627c478b5959da6cf0e1e9d72996b1db;hpb=e546b023ff9f98d42ec24154cbe51f77a5b0feca;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/ESD/AliESDtrack.h b/STEER/ESD/AliESDtrack.h index 42252dd5627..1970aed770d 100644 --- a/STEER/ESD/AliESDtrack.h +++ b/STEER/ESD/AliESDtrack.h @@ -3,7 +3,7 @@ /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ -/* $Id$ */ +/* $Id: AliESDtrack.h 64153 2013-09-09 09:33:47Z akalweit $ */ //------------------------------------------------------------------------- // Class AliESDtrack @@ -30,17 +30,19 @@ #include #include "AliExternalTrackParam.h" #include "AliVTrack.h" +#include "AliESDTOFCluster.h" #include "AliPID.h" #include "AliESDfriendTrack.h" #include "AliTPCdEdxInfo.h" class TParticle; class AliESDVertex; -class AliESDEvent; class AliKalmanTrack; class AliTrackPointArray; class TPolyMarker3D; -class AliPoolsSet; +class AliDetectorPID; +class TTreeSRedirector; +class AliESDEvent; class AliESDtrack : public AliExternalTrackParam { public: @@ -49,7 +51,6 @@ public: // AliESDtrack(); AliESDtrack(const AliESDtrack& track); - AliESDtrack(AliESDtrack* track, Bool_t detach); AliESDtrack(const AliVTrack* track); AliESDtrack(TParticle * part); virtual ~AliESDtrack(); @@ -58,12 +59,11 @@ public: void SetFriendTrack(const AliESDfriendTrack *t) { delete fFriendTrack; fFriendTrack=new AliESDfriendTrack(*t); } - void ReleaseESDfriendTrackGently(); - // void ReleaseESDfriendTrack() {delete fFriendTrack; fFriendTrack=0;} + void ReleaseESDfriendTrack() { delete fFriendTrack; fFriendTrack=0; } void AddCalibObject(TObject * object); // add calib object to the list TObject * GetCalibObject(Int_t index); // return calib objct at given position void MakeMiniESDtrack(); - void SetID(Short_t id) { fID =id;} + void SetID(Short_t id); Int_t GetID() const { return fID;} void SetVertexID(Char_t id) { fVertexID=id;} Char_t GetVertexID() const { return fVertexID;} @@ -84,11 +84,16 @@ public: void GetExternalParameters(Double_t &x, Double_t p[5]) const; void GetExternalCovariance(Double_t cov[15]) const; - Double_t GetIntegratedLength() const {return fTrackLength;} - void GetIntegratedTimes(Double_t *times) const; - Int_t GetPID() const; - Int_t GetTOFBunchCrossing(Double_t b=0) const; - Double_t GetMass() const {return AliPID::ParticleMass(GetPID());} + Double_t GetIntegratedLength() const; + Double_t GetIntegratedLengthOld() const {return fTrackLength;} + void GetIntegratedTimes(Double_t *times, Int_t nspec=AliPID::kSPECIES) const; + Double_t GetIntegratedTimesOld(Int_t i) const {if(fTrackTime) return fTrackTime[i]; else return 0;}; + Int_t GetPID(Bool_t tpcOnly=kFALSE) const; + Int_t GetTOFBunchCrossing(Double_t b=0, Bool_t pidTPConly=kTRUE) const; + Double_t GetMass(Bool_t tpcOnly=kFALSE) const {return AliPID::ParticleMass(GetPID(tpcOnly));} + Double_t GetMassForTracking() const; + void SetPIDForTracking(Int_t pid) {fPIDForTracking = pid;} + Int_t GetPIDForTracking() const {return fPIDForTracking;} Double_t M() const; Double_t E() const; Double_t Y() const; @@ -171,13 +176,15 @@ public: Double_t GetITSsignal() const {return fITSsignal;} void SetITSdEdxSamples(const Double_t s[4]); - void GetITSdEdxSamples(Double_t *s) const; + void GetITSdEdxSamples(Double_t s[4]) const; Double_t GetITSchi2() const {return fITSchi2;} Double_t GetITSchi2Std(Int_t step) const {return (step>-1&&step-1&&stepSetITStrack(track); } @@ -220,13 +228,19 @@ public: void SetTPCsignal(Float_t signal, Float_t sigma, UChar_t npoints){ fTPCsignal = signal; fTPCsignalS = sigma; fTPCsignalN = npoints; } + void SetTPCsignalTunedOnData(Float_t signal){ + fTPCsignalTuned = signal; + } void SetTPCdEdxInfo(AliTPCdEdxInfo * dEdxInfo); + Double_t GetdEdxInfo(Int_t regionID, Int_t calibID, Int_t qID,Int_t valueID); - AliTPCdEdxInfo * GetTPCdEdxInfo(){return fTPCdEdxInfo;} + AliTPCdEdxInfo * GetTPCdEdxInfo() const {return fTPCdEdxInfo;} Double_t GetTPCsignal() const {return fTPCsignal;} + Double_t GetTPCsignalTunedOnData() const {return fTPCsignalTuned;} Double_t GetTPCsignalSigma() const {return fTPCsignalS;} UShort_t GetTPCsignalN() const {return fTPCsignalN;} Double_t GetTPCmomentum() const {return fIp?fIp->GetP():GetP();} + Double_t GetTPCTgl() const {return fIp?fIp->GetTgl():GetTgl();} Double_t GetTPCchi2() const {return fTPCchi2;} Double_t GetTPCchi2Iter1() const {return fTPCchi2Iter1;} UShort_t GetTPCclusters(Int_t *idx) const; @@ -235,16 +249,22 @@ public: Int_t GetKinkIndex(Int_t i) const { return fKinkIndexes[i];} Int_t GetV0Index(Int_t i) const { return fV0Indexes[i];} const TBits& GetTPCFitMap() const {return fTPCFitMap;} + const TBits* GetTPCFitMapPtr() const {return &fTPCFitMap;} const TBits& GetTPCClusterMap() const {return fTPCClusterMap;} + const TBits* GetTPCClusterMapPtr() const {return &fTPCClusterMap;} const TBits& GetTPCSharedMap() const {return fTPCSharedMap;} + const TBits* GetTPCSharedMapPtr() const {return &fTPCSharedMap;} void SetTPCFitMap(const TBits &amap) {fTPCFitMap = amap;} void SetTPCClusterMap(const TBits &amap) {fTPCClusterMap = amap;} void SetTPCSharedMap(const TBits &amap) {fTPCSharedMap = amap;} - Float_t GetTPCClusterInfo(Int_t nNeighbours=3, Int_t type=0, Int_t row0=0, Int_t row1=159) const; + Float_t GetTPCClusterInfo(Int_t nNeighbours=3, Int_t type=0, Int_t row0=0, Int_t row1=159, Int_t bitType=0 ) const; + Float_t GetTPCClusterDensity(Int_t nNeighbours=3, Int_t type=0, Int_t row0=0, Int_t row1=159, Int_t bitType=0 ) const; Float_t GetTPCCrossedRows() const; void SetTRDpid(const Double_t *p); void SetTRDsignal(Double_t sig) {fTRDsignal = sig;} + void SetTRDNchamberdEdx(UChar_t nch) {fTRDNchamberdEdx = nch;} + void SetTRDNclusterdEdx(UChar_t ncls){fTRDNclusterdEdx = ncls;} // A.Bercuci void SetTRDntracklets(UChar_t q){fTRDntracklets = q;} @@ -253,7 +273,10 @@ public: // TEMPORARY alias asked by the HFE group to allow // reading of the v4-16-Release data with TRUNK related software (A.Bercuci@Apr 30th 09) UChar_t GetTRDpidQuality() const {return GetTRDntrackletsPID();} -// end A.Bercuci + UChar_t GetTRDtrkltOccupancy(Int_t ly) const { return ly=0 ? fTRDTimBin[ly] & 0x1F : 0; } + UChar_t GetTRDtrkltClCross(Int_t ly) const { return ly=0 ? (fTRDTimBin[ly] >> 5) & 0x03 : 0; } + Bool_t IsTRDtrkltChmbGood(Int_t ly) const { return ly=0 ? ((fTRDTimBin[ly] >> 7) & 0x01) == 1 : kFALSE;} + // end A.Bercuci void SetNumberOfTRDslices(Int_t n); Int_t GetNumberOfTRDslices() const; @@ -270,7 +293,8 @@ public: void SetTRDTimBin(Int_t timbin, Int_t i) {fTRDTimBin[i]=timbin;} void GetTRDpid(Double_t *p) const; Double_t GetTRDsignal() const {return fTRDsignal;} - + UChar_t GetTRDNchamberdEdx() const {return fTRDNchamberdEdx;} + UChar_t GetTRDNclusterdEdx() const {return fTRDNclusterdEdx;} Char_t GetTRDTimBin(Int_t i) const {return fTRDTimBin[i];} Double_t GetTRDchi2() const {return fTRDchi2;} UChar_t GetTRDclusters(Int_t *idx) const; @@ -288,31 +312,47 @@ public: return fFriendTrack!=NULL?fFriendTrack->GetTRDtrack():NULL; } + // this are methods for manipulating with TOF clusters/matches + void SetTOFclusterArray(Int_t ncluster,Int_t *TOFcluster); + Int_t *GetTOFclusterArray() const {return fTOFcluster;} + Int_t GetNTOFclusters() const {return fNtofClusters;} + void SuppressTOFMatches(); + void ReplaceTOFTrackID(int oldID, int newID); + void ReplaceTOFClusterID(int oldID, int newID); + void ReplaceTOFMatchID(int oldID, int newID); + void AddTOFcluster(Int_t icl); + void SortTOFcluster(); // RS? Not to be used? + void ReMapTOFcluster(Int_t ncl,Int_t *mapping); // RS? Not to be used? + void SetTOFsignal(Double_t tof) {fTOFsignal=tof;} - Double_t GetTOFsignal() const {return fTOFsignal;} + Double_t GetTOFsignal() const; void SetTOFsignalToT(Double_t ToT) {fTOFsignalToT=ToT;} - Double_t GetTOFsignalToT() const {return fTOFsignalToT;} + Double_t GetTOFsignalToT() const; void SetTOFsignalRaw(Double_t tof) {fTOFsignalRaw=tof;} - Double_t GetTOFsignalRaw() const {return fTOFsignalRaw;} + Double_t GetTOFsignalRaw() const; void SetTOFsignalDz(Double_t dz) {fTOFsignalDz=dz;} - Double_t GetTOFsignalDz() const {return fTOFsignalDz;} + Double_t GetTOFsignalDz() const; void SetTOFsignalDx(Double_t dx) {fTOFsignalDx=dx;} - Double_t GetTOFsignalDx() const {return fTOFsignalDx;} + Double_t GetTOFsignalDx() const; void SetTOFDeltaBC(Short_t deltaBC) {fTOFdeltaBC=deltaBC;}; - Short_t GetTOFDeltaBC() const {return fTOFdeltaBC;} + Short_t GetTOFDeltaBC() const; void SetTOFL0L1(Short_t l0l1) {fTOFl0l1=l0l1;}; - Short_t GetTOFL0L1() const {return fTOFl0l1;} - Double_t GetTOFchi2() const {return fTOFchi2;} + Short_t GetTOFL0L1() const; + Double_t GetTOFchi2() const {return fTOFchi2;}; void SetTOFpid(const Double_t *p); void SetTOFLabel(const Int_t *p); void GetTOFpid(Double_t *p) const; void GetTOFLabel(Int_t *p) const; void GetTOFInfo(Float_t *info) const; void SetTOFInfo(Float_t *info); - Int_t GetTOFCalChannel() const {return fTOFCalChannel;} - Int_t GetTOFcluster() const {return fTOFindex;} + Int_t GetTOFCalChannel() const; + Int_t GetTOFcluster() const; void SetTOFcluster(Int_t index) {fTOFindex=index;} void SetTOFCalChannel(Int_t index) {fTOFCalChannel=index;} + Int_t GetTOFclusterN() const; + Bool_t IsTOFHitAlreadyMatched() const; + void SetTOFsignalTunedOnData(Double_t signal){fTOFsignalTuned=signal;} + Double_t GetTOFsignalTunedOnData() const {return fTOFsignalTuned;} // HMPID methodes +++++++++++++++++++++++++++++++++ (kir) void SetHMPIDsignal(Double_t theta) {fHMPIDsignal=theta;} @@ -344,6 +384,12 @@ public: Int_t GetEMCALcluster() const {return fCaloIndex;} void SetEMCALcluster(Int_t index) {fCaloIndex=index;} Bool_t IsEMCAL() const {return fFlags&kEMCALmatch;} + + Double_t GetTrackPhiOnEMCal() const {return fTrackPhiOnEMCal;} + Double_t GetTrackEtaOnEMCal() const {return fTrackEtaOnEMCal;} + Double_t GetTrackPtOnEMCal() const {return fTrackPtOnEMCal;} + Double_t GetTrackPOnEMCal() const {return TMath::Abs(fTrackEtaOnEMCal) < 1 ? fTrackPtOnEMCal*TMath::CosH(fTrackEtaOnEMCal) : -999;} + void SetTrackPhiEtaPtOnEMCal(Double_t phi,Double_t eta,Double_t pt) {fTrackPhiOnEMCal=phi;fTrackEtaOnEMCal=eta;fTrackPtOnEMCal=pt;} Int_t GetPHOScluster() const {return fCaloIndex;} void SetPHOScluster(Int_t index) {fCaloIndex=index;} @@ -379,10 +425,16 @@ public: void GetImpactParameters(Float_t p[2], Float_t cov[3]) const { p[0]=fD; p[1]=fZ; cov[0]=fCdd; cov[1]=fCdz; cov[2]=fCzz; } - virtual void Print(Option_t *opt) const; - virtual void Clear(Option_t *opt=""); + virtual void Print(Option_t * opt) const ; const AliESDEvent* GetESDEvent() const {return fESDEvent;} - void SetESDEvent(const AliESDEvent* evt) {fESDEvent = evt;} + const AliTOFHeader* GetTOFHeader() const; + const AliVEvent* GetEvent() const {return (AliVEvent*)fESDEvent;} + void SetESDEvent(const AliESDEvent* evt) {fESDEvent = evt;} + + // Trasient PID object, is owned by the track + virtual void SetDetectorPID(const AliDetectorPID *pid); + virtual const AliDetectorPID* GetDetectorPID() const { return fDetectorPID; } + // // visualization (M. Ivanov) // @@ -395,12 +447,10 @@ public: // - creation of AliESDfriendTrack // - set lengt of bit fields fTPCClusterMap and fTPCSharedMap to 0 static void OnlineMode(bool mode) {fgkOnlineMode=mode;} - static bool OnlineMode() {return fgkOnlineMode;} - static void SetPools(AliPoolsSet* p) {fgPools = p;} - static AliPoolsSet* GetPools() {return fgPools;} - - void PrintTmp(); - protected: + static bool OnlineMode() {return fgkOnlineMode;} + static Double_t GetLengthInActiveZone(const AliExternalTrackParam *paramT, Double_t deltaY, Double_t deltaZ, Double_t bz, Double_t exbPhi =0 , TTreeSRedirector * pcstream =0 ); + Double_t GetLengthInActiveZone( Int_t mode, Double_t deltaY, Double_t deltaZ, Double_t bz, Double_t exbPhi =0 , TTreeSRedirector * pcstream =0 ) const; +protected: AliExternalTrackParam *fCp; // Track parameters constrained to the primary vertex AliExternalTrackParam *fIp; // Track parameters estimated at the inner wall of TPC @@ -422,8 +472,8 @@ public: Int_t fITSModule[12]; // modules crossed by the track in the ITS Int_t fTPCLabel; // label according TPC Int_t fTRDLabel; // label according TRD - Int_t fTOFLabel[3]; // TOF label - Int_t fTOFCalChannel; // Channel Index of the TOF Signal + Int_t *fTOFLabel; //! TOF label + Int_t fTOFCalChannel; //! Channel Index of the TOF Signal Int_t fTOFindex; // index of the assigned TOF cluster Int_t fHMPIDqn; // 1000000*number of photon clusters + QDC Int_t fHMPIDcluIdx; // 1000000*chamber id + cluster idx of the assigned MIP cluster @@ -433,20 +483,20 @@ public: Int_t fKinkIndexes[3]; // array of indexes of posible kink candidates Int_t fV0Indexes[3]; // array of indexes of posible kink candidates - Double32_t fR[AliPID::kSPECIES]; //[0.,0.,8] combined "detector response probability" - Double32_t fITSr[AliPID::kSPECIES]; //[0.,0.,8] "detector response probabilities" (for the PID) - Double32_t fTPCr[AliPID::kSPECIES]; //[0.,0.,8] "detector response probabilities" (for the PID) - Double32_t fTRDr[AliPID::kSPECIES]; //[0.,0.,8] "detector response probabilities" (for the PID) - Double32_t fTOFr[AliPID::kSPECIES]; //[0.,0.,8] "detector response probabilities" (for the PID) - Double32_t fHMPIDr[AliPID::kSPECIES];//[0.,0.,8] "detector response probabilities" (for the PID) + Double32_t *fR; //! [0.,0.,8] combined "detector response probability" + Double32_t *fITSr; //! [0.,0.,8] "detector response probabilities" (for the PID) + Double32_t *fTPCr; //! [0.,0.,8] "detector response probabilities" (for the PID) + Double32_t *fTRDr; //! [0.,0.,8] "detector response probabilities" (for the PID) + Double32_t *fTOFr; //! [0.,0.,8] "detector response probabilities" (for the PID) + Double32_t *fHMPIDr; //! [0.,0.,8] "detector response probabilities" (for the PID) Double32_t fHMPIDtrkTheta;//[-2*pi,2*pi,16] theta of the track extrapolated to the HMPID, LORS // how much of this is needed? Double32_t fHMPIDtrkPhi; //[-2*pi,2*pi,16] phi of the track extrapolated to the HMPID, LORS Double32_t fHMPIDsignal; // HMPID PID signal (Theta ckov, rad) - Double32_t fTrackTime[AliPID::kSPECIES]; // TOFs estimated by the tracking - Double32_t fTrackLength; // Track length + Double32_t *fTrackTime; //! TOFs estimated by the tracking + Double32_t fTrackLength; //! Track length Double32_t fdTPC; // TPC-only impact parameter in XY plane Double32_t fzTPC; // TPC-only impact parameter in Z @@ -472,6 +522,7 @@ public: Double32_t fITSdEdxSamples[4]; // [0.,0.,10] ITS dE/dx samples Double32_t fTPCsignal; // [0.,0.,10] detector's PID signal + Double32_t fTPCsignalTuned; //! [0.,0.,10] detector's PID signal tuned on data when using MC Double32_t fTPCsignalS; // [0.,0.,10] RMS of dEdx measurement AliTPCdEdxInfo * fTPCdEdxInfo; // object containing dE/dx information for different pad regions Double32_t fTPCPoints[4]; // [0.,0.,10] TPC points -first, max. dens, last and max density @@ -480,14 +531,15 @@ public: Double32_t fTRDQuality; // trd quality factor for TOF Double32_t fTRDBudget; // trd material budget - Double32_t fTOFsignal; // detector's PID signal - Double32_t fTOFsignalToT; // detector's ToT signal - Double32_t fTOFsignalRaw; // detector's uncorrected time signal - Double32_t fTOFsignalDz; // local z of track's impact on the TOF pad - Double32_t fTOFsignalDx; // local x of track's impact on the TOF pad + Double32_t fTOFsignal; //! detector's PID signal [ps] + Double32_t fTOFsignalTuned; //! detector's PID signal tuned on data when using MC + Double32_t fTOFsignalToT; //! detector's ToT signal [ns] + Double32_t fTOFsignalRaw; //! detector's uncorrected time signal [ps] + Double32_t fTOFsignalDz; //! local z of track's impact on the TOF pad [cm] + Double32_t fTOFsignalDx; //! local x of track's impact on the TOF pad [cm] Double32_t fTOFInfo[10]; //! TOF informations - Short_t fTOFdeltaBC; // detector's Delta Bunch Crossing correction - Short_t fTOFl0l1; // detector's L0L1 latency correction + Short_t fTOFdeltaBC; //! detector's Delta Bunch Crossing correction + Short_t fTOFl0l1; //! detector's L0L1 latency correction Double32_t fCaloDx ; // [0.,0.,8] distance to calorimeter cluster in calo plain (phi direction) Double32_t fCaloDz ; // [0.,0.,8] distance to calorimeter cluster in calo plain (z direction) @@ -510,25 +562,39 @@ public: UChar_t fTRDncls; // number of clusters assigned in the TRD UChar_t fTRDncls0; // number of clusters assigned in the TRD before first material cross UChar_t fTRDntracklets; // number of TRD tracklets used for tracking/PID + UChar_t fTRDNchamberdEdx; // number of chambers used to calculated the TRD truncated mean + UChar_t fTRDNclusterdEdx; // number of clusters used to calculated the TRD truncated mean Int_t fTRDnSlices; // number of slices used for PID in the TRD Double32_t *fTRDslices; //[fTRDnSlices] Char_t fTRDTimBin[kTRDnPlanes]; // Time bin of Max cluster from all six planes Char_t fVertexID; // ID of the primary vertex this track belongs to + Char_t fPIDForTracking; // mass used for tracking + mutable const AliESDEvent* fESDEvent; //!Pointer back to event to which the track belongs mutable Float_t fCacheNCrossedRows; //! Cache for the number of crossed rows mutable Float_t fCacheChi2TPCConstrainedVsGlobal; //! Cache for the chi2 of constrained TPC vs global track mutable const AliESDVertex* fCacheChi2TPCConstrainedVsGlobalVertex; //! Vertex for which the cache is valid - static AliPoolsSet* fgPools; // set of pools + mutable const AliDetectorPID* fDetectorPID; //! transient object to cache PID information + + Double_t fTrackPhiOnEMCal; // phi of track after being propagated to the EMCal surface (default r = 440 cm) + Double_t fTrackEtaOnEMCal; // eta of track after being propagated to the EMCal surface (default r = 440 cm) + Double_t fTrackPtOnEMCal; // pt of track after being propagated to the EMCal surface (default r = 440 cm) + + + // new TOF data structure + Int_t fNtofClusters; // number of matchable TOF clusters + Int_t *fTOFcluster; //[fNtofClusters] + // TOF clusters matchable with the track private: static bool fgkOnlineMode; //! indicate the online mode to skip some of the functionality AliESDtrack & operator=(const AliESDtrack & ); - ClassDef(AliESDtrack,63) //ESDtrack + ClassDef(AliESDtrack,71) //ESDtrack };