Completed transfer of AODTrack information to ESDTrack in the AliESDtrack::AliESDtrac...
authorshahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 8 Nov 2012 16:38:06 +0000 (16:38 +0000)
committershahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 8 Nov 2012 16:38:06 +0000 (16:38 +0000)
https://savannah.cern.ch/bugs/?98703

STEER/AOD/AliAODTrack.cxx
STEER/AOD/AliAODTrack.h
STEER/ESD/AliESDtrack.cxx
STEER/ESD/AliESDtrack.h
STEER/STEERBase/AliVTrack.h

index 2b52a861eb2468a7c8867671e1930d79d1fc5293..e35680fcdec77598fa6940681e5fe5337a9af1d4 100644 (file)
@@ -868,4 +868,10 @@ Bool_t AliAODTrack::GetXYZAt(Double_t x, Double_t b, Double_t *r) const
 }
 
 
-
+//_______________________________________________________
+void  AliAODTrack::GetITSdEdxSamples(Double_t s[4]) const
+{
+  // get ITS dedx samples
+  if (!fDetPid) for (int i=4;i--;) s[i]=0;
+  else          for (int i=4;i--;) s[i] = fDetPid->GetITSdEdxSample(i);
+}
index 1a5487e46441cc827c6f70bc00491f6bb5e64cd1..0a98f1c5022460993ca84d3f7bdf7b750c55771e 100644 (file)
@@ -246,9 +246,11 @@ class AliAODTrack : public AliVTrack {
   const TBits& GetTPCClusterMap() const {return fTPCClusterMap;}
   const TBits* GetTPCClusterMapPtr() const {return &fTPCClusterMap;}
   const TBits& GetTPCFitMap() const {return fTPCFitMap;}
+  const TBits* GetTPCFitMapPtr() const {return &fTPCFitMap;}
   Float_t GetTPCClusterInfo(Int_t nNeighbours=3, Int_t type=0, Int_t row0=0, Int_t row1=159, Int_t /*type*/=0) const;
   
   const TBits& GetTPCSharedMap() const {return fTPCSharedMap;}
+  const TBits* GetTPCSharedMapPtr() const {return &fTPCSharedMap;}
   void    SetTPCClusterMap(const TBits amap) {fTPCClusterMap = amap;}
   void    SetTPCSharedMap(const TBits amap) {fTPCSharedMap = amap;}
   void    SetTPCFitMap(const TBits amap) {fTPCFitMap = amap;}
@@ -274,6 +276,7 @@ class AliAODTrack : public AliVTrack {
 
   //pid signal interface
   Double_t  GetITSsignal()       const { return fDetPid?fDetPid->GetITSsignal():0.;    }
+  void      GetITSdEdxSamples(Double_t s[4]) const;
   Double_t  GetTPCsignal()       const { return fDetPid?fDetPid->GetTPCsignal():0.;    }
   Double_t  GetTPCsignalTunedOnData() const { return fTPCsignalTuned;}
   void      SetTPCsignalTunedOnData(Double_t signal) {fTPCsignalTuned = signal;}
@@ -287,7 +290,8 @@ class AliAODTrack : public AliVTrack {
   Double_t  GetTRDslice(Int_t plane, Int_t slice) const;
   Double_t  GetTRDmomentum(Int_t plane, Double_t */*sp*/=0x0) const;
   Double_t  GetTRDchi2()                 const {return fDetPid ? fDetPid->GetTRDChi2() : -1;}
-  UChar_t   GetTRDncls(Int_t layer = -1) const;
+  UChar_t   GetTRDncls(Int_t layer)      const;
+  UChar_t   GetTRDncls()                 const {return GetTRDncls(-1);}
   UChar_t   GetTRDntrackletsPID() const;
   Int_t     GetNumberOfTRDslices() const { return fDetPid?fDetPid->GetTRDnSlices():0; }
   void      GetHMPIDpid(Double_t */*p*/) const { return; } // TODO: To be implemented properly with the new HMPID object
index 68a77bda57d94bf9210de61268017fe945a978f8..2e35251fde4196937f003947911522fb7932bd6f 100644 (file)
@@ -539,14 +539,51 @@ AliESDtrack::AliESDtrack(const AliVTrack *track) :
 
   // Set TPC ncls 
   fTPCncls=track->GetTPCNcls();
-
-
+  fTPCnclsF=track->GetTPCNclsF();
+  // TPC cluster maps
+  const TBits* bmap = track->GetTPCClusterMapPtr();
+  if (bmap) SetTPCClusterMap(*bmap);
+  bmap = GetTPCFitMapPtr();
+  if (bmap) SetTPCFitMap(*bmap);
+  bmap = GetTPCSharedMapPtr();
+  if (bmap) SetTPCSharedMap(*bmap);
+  //
   // Set the combined PID
   const Double_t *pid = track->PID();
-  if(pid){
-    for (i=0; i<AliPID::kSPECIES; i++) fR[i]=pid[i];
-  }
+  if(pid) for (i=0; i<AliPID::kSPECIES; i++) fR[i]=pid[i];
+  //
+  // calo matched cluster id
+  SetEMCALcluster(track->GetEMCALcluster());
   // AliESD track label
+  //
+  // PID info
+  fITSsignal = track->GetITSsignal();
+  double itsdEdx[4];
+  track->GetITSdEdxSamples(itsdEdx);
+  SetITSdEdxSamples(itsdEdx);
+  //
+  SetTPCsignal(track->GetTPCsignal(),fTPCsignalS,track->GetTPCsignalN()); // No signalS in AODPid
+  SetTPCdEdxInfo(track->GetTPCdEdxInfo());
+  //
+  fTRDnSlices = track->GetNumberOfTRDslices();
+  if (fTRDnSlices>0) {
+    fTRDslices = new Double32_t[fTRDnSlices*6];
+    for (int isl=fTRDnSlices;isl--;) 
+      for (int ipl=6;ipl--;) 
+       SetTRDslice(track->GetTRDslice(ipl,isl),ipl,isl);
+  }
+  //
+  fTRDncls = track->GetTRDncls();
+  fTRDntracklets &= 0xff & track->GetTRDntrackletsPID();
+  fTRDchi2 = track->GetTRDchi2();
+  //
+  SetTOFsignal(track->GetTOFsignal());
+  Double_t expt[AliPID::kSPECIES];
+  track->GetIntegratedTimes(expt);
+  SetIntegratedTimes(expt);
+  //
+  SetTrackPhiEtaOnEMCal(track->GetTrackPhiOnEMCal(),track->GetTrackEtaOnEMCal());
+  //
   SetLabel(track->GetLabel());
   // Set the status
   SetStatus(track->GetStatus());
@@ -2534,7 +2571,7 @@ void AliESDtrack::SetITSdEdxSamples(const Double_t s[4]) {
 }
 
 //_______________________________________________________________________
-void AliESDtrack::GetITSdEdxSamples(Double_t *s) const {
+void AliESDtrack::GetITSdEdxSamples(Double_t s[4]) const {
   //
   // Get the dE/dx samples measured by the two SSD and two SDD layers.  
   // These samples are corrected for the track segment length.
index 3f40cb0be9325d138d3dc08bd26de1619dac2720..68177e834baa055da2eef215a17d7664d427ceab 100644 (file)
@@ -169,7 +169,7 @@ 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<kNITSchi2Std) ? fITSchi2Std[step] : -1;}
@@ -237,9 +237,11 @@ 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;}
index bb40010cd6f1792ef236ea9ab439295a68da76cc..f4d63b1b4e07d8e08f0f568df74c448fb11d0e4b 100644 (file)
-#ifndef AliVTrack_H\r
-#define AliVTrack_H\r
-/* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *\r
- * See cxx source for full Copyright notice                               */\r
-\r
-\r
-//-------------------------------------------------------------------------\r
-//     base class for ESD and AOD tracks\r
-//     Author: A. Dainese\r
-//-------------------------------------------------------------------------\r
-\r
-#include <TBits.h>\r
-\r
-#include "AliVParticle.h"\r
-\r
-class AliVVertex;\r
-class AliExternalTrackParam;\r
-class AliTPCdEdxInfo;\r
-class AliDetectorPID;\r
\r
-class AliVTrack: public AliVParticle {\r
-\r
-public:\r
-  enum {\r
-    kITSin=0x0001,kITSout=0x0002,kITSrefit=0x0004,kITSpid=0x0008,\r
-    kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080,\r
-    kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800,\r
-    kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000,\r
-    kTOFmismatch=0x100000,\r
-    kHMPIDout=0x10000,kHMPIDpid=0x20000,\r
-    kEMCALmatch=0x40000,\r
-    kPHOSmatch=0x200000,\r
-    kTRDbackup =0x80000,\r
-    kTRDStop=0x20000000,\r
-    kESDpid=0x40000000,\r
-    kTIME=0x80000000,\r
-    kGlobalMerge=0x08000000,\r
-    kITSpureSA=0x10000000,\r
-    kMultInV0 =0x2000000,    //BIT(25): assumed to be belong to V0 in multiplicity estimates\r
-    kMultSec  =0x4000000,     //BIT(26): assumed to be secondary (due to the DCA) in multiplicity estimates\r
-    kEmbedded =0x8000000     // BIT(27), 1<<27: Is a track that has been embedded into the event\r
-  };\r
-  enum {\r
-    kTRDnPlanes = 6,\r
-    kEMCALNoMatch = -4096,\r
-    kTOFBCNA = -100\r
-  };\r
-\r
-  AliVTrack() { }\r
-  virtual ~AliVTrack() { }\r
-  AliVTrack(const AliVTrack& vTrack); \r
-  AliVTrack& operator=(const AliVTrack& vTrack);\r
-\r
-  virtual Int_t    GetID() const = 0;\r
-  virtual UChar_t  GetITSClusterMap() const = 0;\r
-  virtual const TBits* GetTPCClusterMapPtr() const {return NULL;}\r
-  virtual Float_t  GetTPCClusterInfo(Int_t /*nNeighbours*/, Int_t /*type*/, Int_t /*row0*/=0, Int_t /*row1*/=159, Int_t /*type*/= 0) const {return 0.;}\r
-  virtual AliTPCdEdxInfo * GetTPCdEdxInfo() const {return 0x0;}\r
-  virtual UShort_t GetTPCNcls() const { return 0;}\r
-  virtual UShort_t GetTPCNclsF() const { return 0;}\r
-  virtual Double_t GetTRDslice(Int_t /*plane*/, Int_t /*slice*/) const { return -1.; }\r
-  virtual Int_t    GetNumberOfTRDslices() const { return 0; }\r
-  virtual UChar_t  GetTRDntrackletsPID() const { return 0;}\r
-  virtual void     SetDetectorPID(const AliDetectorPID */*pid*/) {;}\r
-  virtual const    AliDetectorPID* GetDetectorPID() const { return 0x0; }\r
-  virtual Double_t GetTRDchi2()          const { return -1;}\r
-  \r
-  virtual Int_t GetEMCALcluster()     const {return -1;}\r
-  virtual void SetEMCALcluster(Int_t)       {;}\r
-  virtual Bool_t IsEMCAL()            const {return kFALSE;}\r
-\r
-  virtual Double_t GetTrackPhiOnEMCal() const {return -999;}\r
-  virtual Double_t GetTrackEtaOnEMCal() const {return -999;}\r
-  virtual void SetTrackPhiEtaOnEMCal(Double_t,Double_t) {;}\r
-\r
-  virtual Int_t GetPHOScluster()      const {return -1;}\r
-  virtual void SetPHOScluster(Int_t)        {;}\r
-  virtual Bool_t IsPHOS()             const {return kFALSE;}\r
-  \r
-  //pid info\r
-  virtual void     SetStatus(ULong_t /*flags*/) {;}\r
-  virtual void     ResetStatus(ULong_t /*flags*/) {;}\r
-\r
-  virtual Double_t  GetITSsignal()       const {return 0.;}\r
-  virtual Double_t  GetTPCsignal()       const {return 0.;}\r
-  virtual Double_t  GetTPCsignalTunedOnData() const {return 0.;}\r
-  virtual UShort_t  GetTPCsignalN()      const {return 0 ;}\r
-  virtual Double_t  GetTPCmomentum()     const {return 0.;}\r
-  virtual Double_t  GetTOFsignal()       const {return 0.;}\r
-  virtual Double_t  GetHMPIDsignal()     const {return 0.;}\r
-\r
-  virtual void      GetIntegratedTimes(Double_t */*times*/) const { return; }\r
-  virtual Double_t  GetTRDmomentum(Int_t /*plane*/, Double_t */*sp*/=0x0) const {return 0.;}\r
-  virtual void      GetHMPIDpid(Double_t */*p*/) const {;}\r
-    \r
-  virtual ULong_t  GetStatus() const = 0;\r
-  virtual Bool_t   GetXYZ(Double_t *p) const = 0;\r
-  virtual Bool_t   GetXYZAt(Double_t /*x*/, Double_t /*b*/, Double_t* /*r*/ ) const {return kFALSE;}\r
-  virtual Double_t GetBz() const;\r
-  virtual void     GetBxByBz(Double_t b[3]) const;\r
-  virtual Bool_t   GetCovarianceXYZPxPyPz(Double_t cv[21]) const = 0;\r
-  virtual Bool_t   PropagateToDCA(const AliVVertex *vtx,Double_t b,Double_t maxd,Double_t dz[2],Double_t covar[3]) = 0;\r
-  virtual const    AliExternalTrackParam * GetOuterParam() const { return NULL; }\r
-  virtual const    AliExternalTrackParam * GetInnerParam() const { return NULL; }\r
-  virtual Int_t    GetNcls(Int_t /*idet*/) const { return 0; }\r
-  virtual Bool_t   GetPxPyPz(Double_t */*p*/) const { return kFALSE; }\r
-  virtual void     SetID(Short_t /*id*/) {;}\r
-  virtual Int_t    GetTOFBunchCrossing(Double_t = 0, Bool_t = kFALSE) const { return kTOFBCNA;}\r
-\r
-  ClassDef(AliVTrack,1)  // base class for tracks\r
-};\r
-\r
-#endif\r
+#ifndef AliVTrack_H
+#define AliVTrack_H
+/* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+
+//-------------------------------------------------------------------------
+//     base class for ESD and AOD tracks
+//     Author: A. Dainese
+//-------------------------------------------------------------------------
+
+#include <TBits.h>
+
+#include "AliVParticle.h"
+
+class AliVVertex;
+class AliExternalTrackParam;
+class AliTPCdEdxInfo;
+class AliDetectorPID;
+class AliVTrack: public AliVParticle {
+
+public:
+  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,
+    kTOFmismatch=0x100000,
+    kHMPIDout=0x10000,kHMPIDpid=0x20000,
+    kEMCALmatch=0x40000,
+    kPHOSmatch=0x200000,
+    kTRDbackup =0x80000,
+    kTRDStop=0x20000000,
+    kESDpid=0x40000000,
+    kTIME=0x80000000,
+    kGlobalMerge=0x08000000,
+    kITSpureSA=0x10000000,
+    kMultInV0 =0x2000000,    //BIT(25): assumed to be belong to V0 in multiplicity estimates
+    kMultSec  =0x4000000,     //BIT(26): assumed to be secondary (due to the DCA) in multiplicity estimates
+    kEmbedded =0x8000000     // BIT(27), 1<<27: Is a track that has been embedded into the event
+  };
+  enum {
+    kTRDnPlanes = 6,
+    kEMCALNoMatch = -4096,
+    kTOFBCNA = -100
+  };
+
+  AliVTrack() { }
+  virtual ~AliVTrack() { }
+  AliVTrack(const AliVTrack& vTrack); 
+  AliVTrack& operator=(const AliVTrack& vTrack);
+
+  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 /*nNeighbours*/, Int_t /*type*/, Int_t /*row0*/=0, Int_t /*row1*/=159, Int_t /*type*/= 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 /*plane*/, Int_t /*slice*/) 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 */*pid*/) {;}
+  virtual const    AliDetectorPID* GetDetectorPID() const { return 0x0; }
+  virtual Double_t GetTRDchi2()          const { return -1;}
+  
+  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 void SetTrackPhiEtaOnEMCal(Double_t,Double_t) {;}
+
+  virtual Int_t GetPHOScluster()      const {return -1;}
+  virtual void SetPHOScluster(Int_t)        {;}
+  virtual Bool_t IsPHOS()             const {return kFALSE;}
+  
+  //pid info
+  virtual void     SetStatus(ULong_t /*flags*/) {;}
+  virtual void     ResetStatus(ULong_t /*flags*/) {;}
+
+  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  GetTOFsignal()       const {return 0.;}
+  virtual Double_t  GetHMPIDsignal()     const {return 0.;}
+
+  virtual void      GetIntegratedTimes(Double_t */*times*/) const { return; }
+  virtual Double_t  GetTRDmomentum(Int_t /*plane*/, Double_t */*sp*/=0x0) const {return 0.;}
+  virtual void      GetHMPIDpid(Double_t */*p*/) const {;}
+    
+  virtual ULong_t  GetStatus() const = 0;
+  virtual Bool_t   GetXYZ(Double_t *p) const = 0;
+  virtual Bool_t   GetXYZAt(Double_t /*x*/, Double_t /*b*/, Double_t* /*r*/ ) const {return kFALSE;}
+  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 const    AliExternalTrackParam * GetOuterParam() const { return NULL; }
+  virtual const    AliExternalTrackParam * GetInnerParam() const { return NULL; }
+  virtual Int_t    GetNcls(Int_t /*idet*/) const { return 0; }
+  virtual Bool_t   GetPxPyPz(Double_t */*p*/) const { return kFALSE; }
+  virtual void     SetID(Short_t /*id*/) {;}
+  virtual Int_t    GetTOFBunchCrossing(Double_t = 0, Bool_t = kFALSE) const { return kTOFBCNA;}
+
+  ClassDef(AliVTrack,1)  // base class for tracks
+};
+
+#endif