New representation of the raw TRD PID signal in ESD (Alex, Yuri)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 9 May 2008 16:23:46 +0000 (16:23 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 9 May 2008 16:23:46 +0000 (16:23 +0000)
STEER/AliESDtrack.cxx
STEER/AliESDtrack.h
TRD/AliTRDQADataMakerRec.cxx
TRD/AliTRDpidESD.cxx
TRD/AliTRDtrack.cxx
TRD/AliTRDtrack.h
TRD/AliTRDtrackV1.cxx
TRD/AliTRDtracker.cxx
TRD/Cal/AliTRDCalPIDRefMaker.cxx
TRD/qaAnalysis/AliTRDqaEnergyDeposit.cxx

index 2c0644a..516694d 100644 (file)
@@ -113,12 +113,15 @@ AliESDtrack::AliESDtrack() :
   fITSClusterMap(0),
   fTRDncls(0),
   fTRDncls0(0),
-  fTRDpidQuality(0)
+  fTRDpidQuality(0),
+  fTRDnSlices(0),
+  fTRDslices(0x0)
+  
 {
   //
   // The default ESD constructor 
   //
-  Int_t i, j;
+  Int_t i;
   for (i=0; i<AliPID::kSPECIES; i++) {
     fTrackTime[i]=0.;
     fR[i]=0.;
@@ -131,10 +134,7 @@ AliESDtrack::AliESDtrack() :
   
   for (i=0; i<3; i++)   { fKinkIndexes[i]=0;}
   for (i=0; i<3; i++)   { fV0Indexes[i]=0;}
-  for (i=0;i<kNPlane;i++) {
-    for (j=0;j<kNSlice;j++) {
-      fTRDsignals[i][j]=0.; 
-    }
+  for (i=0;i<kTRDnPlanes;i++) {
     fTRDTimBin[i]=0;
   }
   for (i=0;i<4;i++) {fTPCPoints[i]=0;}
@@ -197,7 +197,9 @@ AliESDtrack::AliESDtrack(const AliESDtrack& track):
   fITSClusterMap(track.fITSClusterMap),
   fTRDncls(track.fTRDncls),
   fTRDncls0(track.fTRDncls0),
-  fTRDpidQuality(track.fTRDpidQuality)
+  fTRDpidQuality(track.fTRDpidQuality),
+  fTRDnSlices(track.fTRDnSlices),
+  fTRDslices(0x0)
 {
   //
   //copy constructor
@@ -212,12 +214,15 @@ AliESDtrack::AliESDtrack(const AliESDtrack& track):
   for (Int_t i=0; i<3;i++)   { fKinkIndexes[i]=track.fKinkIndexes[i];}
   for (Int_t i=0; i<3;i++)   { fV0Indexes[i]=track.fV0Indexes[i];}
   //
-  for (Int_t i=0;i<kNPlane;i++) {
-    for (Int_t j=0;j<kNSlice;j++) {
-      fTRDsignals[i][j]=track.fTRDsignals[i][j]; 
-    }
+  for (Int_t i=0;i<kTRDnPlanes;i++) {
     fTRDTimBin[i]=track.fTRDTimBin[i];
   }
+
+  if (fTRDnSlices) {
+    fTRDslices=new Double32_t[fTRDnSlices];
+    for (Int_t i=0; i<fTRDnSlices; i++) fTRDslices[i]=track.fTRDslices[i];
+  }
+
   for (Int_t i=0;i<AliPID::kSPECIES;i++) fTRDr[i]=track.fTRDr[i]; 
   for (Int_t i=0;i<AliPID::kSPECIES;i++) fTOFr[i]=track.fTOFr[i];
   for (Int_t i=0;i<3;i++) fTOFLabel[i]=track.fTOFLabel[i];
@@ -287,14 +292,16 @@ AliESDtrack::AliESDtrack(TParticle * part) :
   fITSClusterMap(0),
   fTRDncls(0),
   fTRDncls0(0),
-  fTRDpidQuality(0)
+  fTRDpidQuality(0),
+  fTRDnSlices(0),
+  fTRDslices(0x0)
 {
   //
   // ESD track from TParticle
   //
 
   // Reset all the arrays
-  Int_t i, j;
+  Int_t i;
   for (i=0; i<AliPID::kSPECIES; i++) {
     fTrackTime[i]=0.;
     fR[i]=0.;
@@ -307,10 +314,7 @@ AliESDtrack::AliESDtrack(TParticle * part) :
   
   for (i=0; i<3; i++)   { fKinkIndexes[i]=0;}
   for (i=0; i<3; i++)   { fV0Indexes[i]=-1;}
-  for (i=0;i<kNPlane;i++) {
-    for (j=0;j<kNSlice;j++) {
-      fTRDsignals[i][j]=0.; 
-    }
+  for (i=0;i<kTRDnPlanes;i++) {
     fTRDTimBin[i]=0;
   }
   for (i=0;i<4;i++) {fTPCPoints[i]=0;}
@@ -418,6 +422,8 @@ AliESDtrack::~AliESDtrack(){
   delete fOp;
   delete fCp; 
   delete fFriendTrack;
+  if(fTRDnSlices)
+    delete[] fTRDslices;
 }
 
 AliESDtrack &AliESDtrack::operator=(const AliESDtrack &source){
@@ -548,12 +554,19 @@ AliESDtrack &AliESDtrack::operator=(const AliESDtrack &source){
   }
   fTRDsignal = source.fTRDsignal;
 
-  for(int i = 0;i < kNPlane;++i){
+  for(int i = 0;i < kTRDnPlanes;++i){
     fTRDTimBin[i] = source.fTRDTimBin[i];   
-    for(int j = 0;j < kNSlice;++j){
-      fTRDsignals[i][j] = source.fTRDsignals[i][j];
-    }
   }
+
+  if(fTRDnSlices)
+    delete[] fTRDslices;
+  fTRDslices=0;
+  fTRDnSlices=source.fTRDnSlices;
+  if (fTRDnSlices) {
+    fTRDslices=new Double32_t[fTRDnSlices];
+    for(int j = 0;j < fTRDnSlices;++j) fTRDslices[j] = source.fTRDslices[j];
+  }
+
   fTRDQuality =   source.fTRDQuality;     
   fTRDBudget  =   source.fTRDBudget;      
   fTOFsignal  =   source.fTOFsignal;     
@@ -670,16 +683,17 @@ void AliESDtrack::MakeMiniESDtrack(){
   fTRDncls = 0;       
   fTRDncls0 = 0;       
   fTRDsignal = 0;      
-  for (Int_t i=0;i<kNPlane;i++) {
-    for (Int_t j=0;j<kNSlice;j++) {
-      fTRDsignals[i][j] = 0; 
-    }
+  for (Int_t i=0;i<kTRDnPlanes;i++) {
     fTRDTimBin[i]  = 0;
   }
   for (Int_t i=0;i<AliPID::kSPECIES;i++) fTRDr[i] = 0; 
   fTRDLabel = 0;       
   fTRDQuality  = 0;
   fTRDpidQuality = 0;
+  if(fTRDnSlices)
+    delete[] fTRDslices;
+  fTRDslices=0x0;
+  fTRDnSlices=0;
   fTRDBudget  = 0;
 
   // Reset TOF related track information
@@ -1228,6 +1242,61 @@ Double_t AliESDtrack::GetTRDpid(Int_t iSpecies) const
   return fTRDr[iSpecies];
 }
 
+void  AliESDtrack::SetNumberOfTRDslices(Int_t n) {
+  //Sets the number of slices used for PID 
+  if (fTRDnSlices != 0) return;
+  fTRDnSlices=kTRDnPlanes*n;
+  fTRDslices=new Double32_t[fTRDnSlices];
+  for (Int_t i=0; i<fTRDnSlices; i++) fTRDslices[i]=-1.;
+}
+
+void  AliESDtrack::SetTRDslice(Double_t q, Int_t plane, Int_t slice) {
+  //Sets the charge q in the slice of the plane
+  Int_t ns=GetNumberOfTRDslices();
+  if (ns==0) {
+    AliError("No TRD slices allocated for this track !");
+    return;
+  }
+
+  if ((plane<0) || (plane>=kTRDnPlanes)) {
+    AliError("Wrong TRD plane !");
+    return;
+  }
+  if ((slice<0) || (slice>=ns)) {
+    AliError("Wrong TRD slice !");
+    return;
+  }
+  Int_t n=plane*ns + slice;
+  fTRDslices[n]=q;
+}
+
+Double_t  AliESDtrack::GetTRDslice(Int_t plane, Int_t slice) const {
+  //Gets the charge from the slice of the plane
+  Int_t ns=GetNumberOfTRDslices();
+  if (ns==0) {
+    //AliError("No TRD slices allocated for this track !");
+    return -1.;
+  }
+
+  if ((plane<0) || (plane>=kTRDnPlanes)) {
+    AliError("Wrong TRD plane !");
+    return -1.;
+  }
+  if ((slice<-1) || (slice>=ns)) {
+    //AliError("Wrong TRD slice !");  
+    return -1.;
+  }
+
+  if (slice==-1) {
+    Double_t q=0.;
+    for (Int_t i=0; i<ns; i++) q+=fTRDslices[plane*ns + i];
+    return q/ns;
+  }
+
+  return fTRDslices[plane*ns + slice];
+}
+
+
 //_______________________________________________________________________
 void AliESDtrack::SetTOFpid(const Double_t *p) {  
   // Sets the probability of each particle type (in TOF)
@@ -1364,7 +1433,7 @@ void AliESDtrack::Print(Option_t *) const {
     GetTRDpid(p) ; 
     for(index = 0 ; index < AliPID::kSPECIES; index++) 
       printf("%f, ", p[index]) ;
-    printf("\n           signal = %f\n", GetTRDsignal()) ;
+      printf("\n           signal = %f\n", GetTRDsignal()) ;
   }
   if( IsOn(kTOFpid) ){
     printf("From TOF: ") ; 
index 4f68c21..1dd2920 100644 (file)
@@ -36,6 +36,22 @@ class TPolyMarker3D;
 
 class AliESDtrack : public AliExternalTrackParam {
 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,
+    kHMPIDpid=0x20000,
+    kEMCALmatch=0x40000,
+    kTRDbackup=0x80000,
+    kTRDStop=0x20000000,
+    kESDpid=0x40000000,
+    kTIME=0x80000000
+  }; 
+  enum {
+    kTRDnPlanes = 6,
+    kEMCALNoMatch = -4096
+  };
   AliESDtrack();
   AliESDtrack(const AliESDtrack& track);
   AliESDtrack(TParticle * part);
@@ -171,25 +187,28 @@ public:
   const TBits& GetTPCSharedMap() const {return fTPCSharedMap;}
   void    SetTPCClusterMap(const TBits amap) {fTPCClusterMap = amap;}
   void    SetTPCSharedMap(const TBits amap) {fTPCSharedMap = amap;}
+
   void    SetTRDpid(const Double_t *p);
   
 // A.Bercuci
   void    SetTRDpidQuality(UChar_t q){fTRDpidQuality = q;}
   UChar_t GetTRDpidQuality() const {return fTRDpidQuality;}
 // end A.Bercuci
+
+  void     SetNumberOfTRDslices(Int_t n);
+  Int_t    GetNumberOfTRDslices() const {return fTRDnSlices/kTRDnPlanes;}
+  void     SetTRDslice(Double_t q, Int_t plane, Int_t slice);
+  Double_t GetTRDslice(Int_t plane, Int_t slice=-1) const;
        
-       void    SetTRDQuality(Float_t quality){fTRDQuality=quality;}
+  void    SetTRDQuality(Float_t quality){fTRDQuality=quality;}
   Double_t GetTRDQuality()const {return fTRDQuality;}
   void    SetTRDBudget(Float_t budget){fTRDBudget=budget;}
   Double_t GetTRDBudget()const {return fTRDBudget;}
-  void    SetTRDsignals(Float_t dedx, Int_t i, Int_t j) {fTRDsignals[i][j]=dedx;}
+
   void    SetTRDTimBin(Int_t timbin, Int_t i) {fTRDTimBin[i]=timbin;}
   void    GetTRDpid(Double_t *p) const;
   Double_t GetTRDsignal() const {return fTRDsignal;}
-  Double_t GetTRDsignals(Int_t iPlane, Int_t iSlice=-1) const { if (iSlice == -1) 
-    return (fTRDsignals[iPlane][0] + fTRDsignals[iPlane][1] + fTRDsignals[iPlane][2])/3.0;
-    return fTRDsignals[iPlane][iSlice];
-  }
+
   Char_t   GetTRDTimBin(Int_t i) const {return fTRDTimBin[i];}
   Double_t GetTRDchi2() const {return fTRDchi2;}
   UChar_t   GetTRDclusters(Int_t *idx) const;
@@ -272,23 +291,6 @@ public:
   //
   void FillPolymarker(TPolyMarker3D *pol, Float_t magf, Float_t minR, Float_t maxR, Float_t stepR);
 
-  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,
-    kHMPIDpid=0x20000,
-    kEMCALmatch=0x40000,
-    kTRDbackup=0x80000,
-    kTRDStop=0x20000000,
-    kESDpid=0x40000000,
-    kTIME=0x80000000
-  }; 
-  enum {
-    kNPlane = 6,
-    kNSlice = 3,
-    kEMCALNoMatch = -4096
-  };
 protected:
   
   AliExternalTrackParam *fCp; // Track parameters constrained to the primary vertex
@@ -352,7 +354,6 @@ protected:
   Double32_t  fTPCPoints[4];  // [0.,0.,10] TPC points -first, max. dens, last and max density
 
   Double32_t fTRDsignal;      // detector's PID signal
-  Double32_t fTRDsignals[kNPlane][kNSlice];  //  TRD signals from all six planes in 3 slices each
   Double32_t fTRDQuality;     // trd quality factor for TOF
   Double32_t fTRDBudget;      // trd material budget
 
@@ -368,8 +369,6 @@ protected:
   Double32_t fHMPIDmipY;       // y of the MIP in LORS
 
 
-
-
   UShort_t fTPCncls;       // number of clusters assigned in the TPC
   UShort_t fTPCnclsF;      // number of findable clusters in the TPC
   UShort_t fTPCsignalN;    // number of points used for dEdx
@@ -379,13 +378,17 @@ protected:
   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 fTRDpidQuality;   // TRD PID quality according to number of planes. 6 is the best
-  Char_t  fTRDTimBin[kNPlane];   // Time bin of Max cluster from all six planes
+
+  UChar_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
 
  private:
 
   AliESDtrack & operator=(const AliESDtrack & );
 
-  ClassDef(AliESDtrack,42)  //ESDtrack 
+  ClassDef(AliESDtrack,43)  //ESDtrack 
 };
 
 #endif 
index c3c4af3..0665a0c 100644 (file)
@@ -524,7 +524,7 @@ void AliTRDQADataMakerRec::MakeESDs(AliESDEvent * esd)
     for(Int_t i=0; i<4; i++) {
       Double_t dedx = 0;
       for(Int_t j=0; j<6; j++) {
-       dedx += track->GetTRDsignals(j, i-1);
+       dedx += track->GetTRDslice(j, i-1);
       }
       GetESDsData(41+i)->Fill(paramOut->GetP(), dedx/6.);
     }
index a7935c3..cef2adc 100644 (file)
@@ -168,8 +168,8 @@ Int_t AliTRDpidESD::MakePID(AliESDEvent *event)
                for (Int_t iPlan = 0; iPlan < AliTRDgeometry::kNplan; iPlan++) {
                        // read data for track segment
                        for(int iSlice=0; iSlice<AliTRDtrack::kNslice; iSlice++)
-                               dedx[iSlice] = t->GetTRDsignals(iPlan, iSlice);
-                       dEdx    = t->GetTRDsignals(iPlan, -1);
+                               dedx[iSlice] = t->GetTRDslice(iPlan, iSlice);
+                       dEdx    = t->GetTRDslice(iPlan, -1);
                        timebin = t->GetTRDTimBin(iPlan);
 
                        // check data
index 66b2aa9..3d1c4c7 100644 (file)
@@ -18,7 +18,6 @@
 #include <TVector2.h>
 
 #include "AliTracker.h"
-#include "AliESDtrack.h"
 
 #include "AliTRDgeometry.h" 
 #include "AliTRDcluster.h" 
@@ -335,7 +334,7 @@ AliTRDtrack::AliTRDtrack(const AliESDtrack &t)
 
   for (Int_t i = 0; i < kNplane; i++) {
     for (Int_t j = 0; j < kNslice; j++) {
-      fdEdxPlane[i][j] = t.GetTRDsignals(i,j);
+      fdEdxPlane[i][j] = t.GetTRDslice(i,j);
     }
     fTimBinPlane[i] = t.GetTRDTimBin(i);
     fMom[i]         = -1.;
@@ -491,9 +490,9 @@ void AliTRDtrack::CookdEdxTimBin(const Int_t/* tid*/)
   //
 
   // Max charge in chamber
-  Double_t  maxcharge[AliESDtrack::kNPlane]; 
+  Double_t  maxcharge[kNplane]; 
   // Number of clusters attached to track per chamber and slice
-  Int_t     nCluster[AliESDtrack::kNPlane][AliESDtrack::kNSlice];
+  Int_t     nCluster[kNplane][kNslice];
   // Number of time bins in chamber
   Int_t ntb = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
   Int_t plane;                  // Plane of current cluster
@@ -502,10 +501,10 @@ void AliTRDtrack::CookdEdxTimBin(const Int_t/* tid*/)
   AliTRDcluster *cluster = 0x0; // Pointer to current cluster
 
   // Reset class and local counters/variables
-  for (Int_t iPlane = 0; iPlane < AliESDtrack::kNPlane; iPlane++) {
+  for (Int_t iPlane = 0; iPlane < kNplane; iPlane++) {
     fTimBinPlane[iPlane] = -1;
     maxcharge[iPlane]    =  0.0;
-    for (Int_t iSlice = 0; iSlice < AliESDtrack::kNSlice; iSlice++) {
+    for (Int_t iSlice = 0; iSlice < kNslice; iSlice++) {
       fdEdxPlane[iPlane][iSlice] = 0.0;
       nCluster[iPlane][iSlice]   = 0;
     }
@@ -519,7 +518,7 @@ void AliTRDtrack::CookdEdxTimBin(const Int_t/* tid*/)
 
     // Read info from current cluster
     plane  = AliTRDgeometry::GetPlane(cluster->GetDetector());
-    if (plane < 0 || plane >= AliESDtrack::kNPlane) {
+    if (plane < 0 || plane >= kNplane) {
       AliError(Form("Wrong plane %d", plane));
       continue;
     }
@@ -531,7 +530,7 @@ void AliTRDtrack::CookdEdxTimBin(const Int_t/* tid*/)
       continue;
     }
        
-    slice = tb * AliESDtrack::kNSlice / ntb;
+    slice = tb * kNslice / ntb;
 
     fdEdxPlane[plane][slice] += fdQdl[iClus];
     if (fdQdl[iClus] > maxcharge[plane]) {
@@ -544,8 +543,8 @@ void AliTRDtrack::CookdEdxTimBin(const Int_t/* tid*/)
   } // End of loop over cluster
        
   // Normalize fdEdxPlane to number of clusters and set track segments
-  for (Int_t iPlane = 0; iPlane < AliESDtrack::kNPlane; iPlane++) {
-    for (Int_t iSlice = 0; iSlice < AliESDtrack::kNSlice; iSlice++) {
+  for (Int_t iPlane = 0; iPlane < kNplane; iPlane++) {
+    for (Int_t iSlice = 0; iSlice < kNslice; iSlice++) {
       if (nCluster[iPlane][iSlice]) {
         fdEdxPlane[iPlane][iSlice] /= nCluster[iPlane][iSlice];
       }
@@ -572,7 +571,7 @@ void AliTRDtrack::CookdEdxNN(Float_t *dedx)
   const Int_t kMLPscale  = 16000; // scaling of the MLP input to be smaller than 1
 
   // Reset class and local contors/variables
-  for (Int_t iPlane = 0; iPlane < AliESDtrack::kNPlane; iPlane++){
+  for (Int_t iPlane = 0; iPlane < kNplane; iPlane++){
     for (Int_t iSlice = 0; iSlice < kNMLPslice; iSlice++) {
       *(dedx + (kNMLPslice * iPlane) + iSlice) = 0.0;
     }
@@ -588,7 +587,7 @@ void AliTRDtrack::CookdEdxNN(Float_t *dedx)
          
     // Read info from current cluster
     plane   = AliTRDgeometry::GetPlane(cluster->GetDetector());
-    if (plane < 0 || plane >= AliESDtrack::kNPlane) {
+    if (plane < 0 || plane >= kNplane) {
       AliError(Form("Wrong plane %d",plane));
       continue;
     }
index 8feeb17..e5bd051 100644 (file)
@@ -12,6 +12,7 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
+#include "AliESDtrack.h"
 #include "AliKalmanTrack.h"
 
 #include "AliTRDtracklet.h"
@@ -20,7 +21,6 @@
 #include "AliTRDseedV1.h"
 #endif
 
-class AliESDtrack;
 class AliTrackReference;
 class AliTRDcluster;
 class AliTRDtrack : public AliKalmanTrack {
@@ -31,7 +31,7 @@ class AliTRDtrack : public AliKalmanTrack {
    
   enum { kNdet      = 540
        , kNstacks   =  90
-       , kNplane    =   6
+       , kNplane    =   AliESDtrack::kTRDnPlanes
        , kNcham     =   5
        , kNsect     =  18
        , kNslice    =   3
index 6373053..dacf653 100644 (file)
@@ -158,7 +158,7 @@ Bool_t AliTRDtrackV1::CookLabel(Float_t wrong)
   Bool_t labelAdded;
        Int_t label;
        AliTRDcluster *c    = 0x0;
-  for (Int_t ip = 0; ip < AliESDtrack::kNPlane; ip++) {
+  for (Int_t ip = 0; ip < AliESDtrack::kTRDnPlanes; ip++) {
                if(fTrackletIndex[ip] < 0) continue;
                for (Int_t ic = 0; ic < AliTRDseed::knTimebins; ic++) {
                        if(!(c = fTracklet[ip].GetClusters(ic))) continue;
@@ -215,7 +215,7 @@ Bool_t AliTRDtrackV1::CookPID()
        // steer PID calculation @ tracklet level
        Double_t *prob = 0x0;
        fPIDquality = 0;
-       for(int itrklt=0; itrklt<AliESDtrack::kNPlane; itrklt++){
+       for(int itrklt=0; itrklt<AliESDtrack::kTRDnPlanes; itrklt++){
     //for (Int_t iSlice = 0; iSlice < AliESDtrack::kNSlice; iSlice++) fdEdxPlane[itrklt][iSlice] = -1.;
 
                if(fTrackletIndex[itrklt]<0) continue;
@@ -288,7 +288,7 @@ Bool_t AliTRDtrackV1::IsOwner() const
   // Check whether track owns the tracklets
   //
 
-       for (Int_t ip = 0; ip < AliESDtrack::kNPlane; ip++) {
+       for (Int_t ip = 0; ip < AliESDtrack::kTRDnPlanes; ip++) {
                if(fTrackletIndex[ip] < 0) continue;
                if(!fTracklet[ip].IsOwner()) return kFALSE;
        }
@@ -330,7 +330,7 @@ void AliTRDtrackV1::SetOwner(Bool_t own)
   // Toggle ownership of tracklets
   //
 
-       for (Int_t ip = 0; ip < AliESDtrack::kNPlane; ip++) {
+       for (Int_t ip = 0; ip < AliESDtrack::kTRDnPlanes; ip++) {
                if(fTrackletIndex[ip] < 0) continue;
                //AliInfo(Form("p[%d] index[%d]", ip, fTrackletIndex[ip]));
                fTracklet[ip].SetOwner(own);
@@ -344,7 +344,7 @@ void AliTRDtrackV1::SetTracklet(AliTRDseedV1 *trklt, Int_t plane, Int_t index)
   // Set the tracklets
   //
 
-       if(plane < 0 || plane >= AliESDtrack::kNPlane) return;
+       if(plane < 0 || plane >= AliESDtrack::kTRDnPlanes) return;
        fTracklet[plane]      = (*trklt);
        fTrackletIndex[plane] = index;
 }
@@ -391,20 +391,21 @@ Bool_t  AliTRDtrackV1::Update(AliTRDseedV1 *trklt, Double_t chisq)
 void AliTRDtrackV1::UpdateESDtrack(AliESDtrack *track)
 {
   //
-  // Update the ESD track
+  // Update the TRD PID information in the ESD track
   //
+
+  track->SetNumberOfTRDslices(kNslice);
        
-       // copy dEdx to ESD
-       Float_t *dedx = 0x0;
-       for (Int_t ip = 0; ip < AliESDtrack::kNPlane; ip++) {
-               if(fTrackletIndex[ip] < 0) continue;
-               fTracklet[ip].CookdEdx(AliESDtrack::kNSlice);
-               dedx = fTracklet[ip].GetdEdx();
-               for (Int_t js = 0; js < AliESDtrack::kNSlice; js++) track->SetTRDsignals(dedx[js], ip, js);
-               //track->SetTRDTimBin(fTimBinPlane[i], i);
-       }
+  for (Int_t ip = 0; ip < kNplane; ip++) {
+      if(fTrackletIndex[ip] < 0) continue;
+      fTracklet[ip].CookdEdx(kNslice);
+      Float_t *dedx = fTracklet[ip].GetdEdx();
+      for (Int_t js = 0; js < kNslice; js++) { 
+          track->SetTRDslice(dedx[js], ip, js);
+      }
+  }
 
-       // copy PID to ESD
-       track->SetTRDpid(fPID);
-       track->SetTRDpidQuality(fPIDquality);
+  // copy PID to ESD
+  track->SetTRDpid(fPID);
+  track->SetTRDpidQuality(fPIDquality);
 }
index 6894c26..cdd6b01 100644 (file)
@@ -22,7 +22,6 @@
 //                                                                           //
 //  Authors:                                                                 //
 //     M. Ivanov  (Marian.Ivanov@cern.ch)                                    //
-//     Y. Belikov (Jouri.Belikov@cern.ch)                                    //
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
@@ -598,9 +597,9 @@ Int_t AliTRDtracker::PropagateBack(AliESDEvent *event)
                                seed->UpdateTrackParams(track,AliESDtrack::kTRDout);
                                fHBackfit->Fill(10);
        
-                               for (Int_t i = 0; i < AliESDtrack::kNPlane; i++) {
-                                       for (Int_t j = 0; j < AliESDtrack::kNSlice; j++) {
-                                               seed->SetTRDsignals(track->GetPIDsignals(i,j),i,j);
+                               for (Int_t i = 0; i < AliTRDtrack::kNplane; i++) {
+                                       for (Int_t j = 0; j < AliTRDtrack::kNslice; j++) {
+                                               seed->SetTRDslice(track->GetPIDsignals(i,j),i,j);
                                        }
                                        seed->SetTRDTimBin(track->GetPIDTimBin(i),i);
                                }
@@ -620,9 +619,9 @@ Int_t AliTRDtracker::PropagateBack(AliESDEvent *event)
                                fHBackfit->Fill(13);
        
                                //seed->SetStatus(AliESDtrack::kTRDStop);
-                               for (Int_t i = 0; i < AliESDtrack::kNPlane; i++) {
-                                       for (Int_t j = 0; j <AliESDtrack::kNSlice; j++) {
-                                               seed->SetTRDsignals(track->GetPIDsignals(i,j),i,j);
+                               for (Int_t i = 0; i < AliTRDtrack::kNplane; i++) {
+                                       for (Int_t j = 0; j <AliTRDtrack::kNslice; j++) {
+                                               seed->SetTRDslice(track->GetPIDsignals(i,j),i,j);
                                        }
                                        seed->SetTRDTimBin(track->GetPIDTimBin(i),i);
                                }
@@ -707,8 +706,8 @@ Int_t AliTRDtracker::RefitInward(AliESDEvent *event)
 
     AliTRDtrack *pt = new AliTRDtrack(seed2,seed2.GetAlpha());
     Int_t *indexes2 = seed2.GetIndexes();
-    for (Int_t i = 0; i < AliESDtrack::kNPlane;i++) {
-      for (Int_t j = 0; j < AliESDtrack::kNSlice;j++) {
+    for (Int_t i = 0; i < AliTRDtrack::kNplane;i++) {
+      for (Int_t j = 0; j < AliTRDtrack::kNslice;j++) {
         pt->SetPIDsignals(seed2.GetPIDsignals(i,j),i,j);
       }
       pt->SetPIDTimBin(seed2.GetPIDTimBin(i),i);
@@ -736,9 +735,9 @@ Int_t AliTRDtracker::RefitInward(AliESDEvent *event)
       seed->UpdateTrackParams(pt,AliESDtrack::kTRDrefit);
       fHRefit->Fill(5);
 
-      for (Int_t i = 0; i < AliESDtrack::kNPlane; i++) {
-        for (Int_t j = 0; j < AliESDtrack::kNSlice; j++) {
-          seed->SetTRDsignals(pt->GetPIDsignals(i,j),i,j);
+      for (Int_t i = 0; i < AliTRDtrack::kNplane; i++) {
+        for (Int_t j = 0; j < AliTRDtrack::kNslice; j++) {
+          seed->SetTRDslice(pt->GetPIDsignals(i,j),i,j);
        }
         seed->SetTRDTimBin(pt->GetPIDTimBin(i),i);
       }
@@ -760,9 +759,9 @@ Int_t AliTRDtracker::RefitInward(AliESDEvent *event)
        seed->UpdateTrackParams(pt2,AliESDtrack::kTRDrefit);
        fHRefit->Fill(6);
 
-        for (Int_t i = 0; i < AliESDtrack::kNPlane; i++) {
-          for (Int_t j = 0; j < AliESDtrack::kNSlice; j++) {
-            seed->SetTRDsignals(pt2->GetPIDsignals(i,j),i,j);
+        for (Int_t i = 0; i < AliTRDtrack::kNplane; i++) {
+          for (Int_t j = 0; j < AliTRDtrack::kNslice; j++) {
+            seed->SetTRDslice(pt2->GetPIDsignals(i,j),i,j);
          }
           seed->SetTRDTimBin(pt2->GetPIDTimBin(i),i);
         }
@@ -986,7 +985,7 @@ Int_t AliTRDtracker::FollowBackProlongation(AliTRDtrack &t)
 //   }
 
   // Loop through the TRD planes
-  for (Int_t iplane = 0; iplane < AliESDtrack::kNPlane; iplane++) {
+  for (Int_t iplane = 0; iplane < AliTRDtrack::kNplane; iplane++) {
 
     Int_t hb = iplane * 10;
     fHClSearch->Fill(hb);
index 850fd8e..65e32f1 100644 (file)
@@ -296,8 +296,8 @@ Bool_t AliTRDCalPIDRefMaker::BuildLQReferences(Char_t *File, Char_t *dir)
                                        for (Int_t iPlane=0; iPlane<AliTRDgeometry::kNplan; iPlane++){
                                                // read data for track segment
                                                for(int iSlice=0; iSlice<AliTRDtrack::kNslice; iSlice++)
-                                                       dedx[iSlice] = esdTrack->GetTRDsignals(iPlane, iSlice);
-                                               dEdx    = esdTrack->GetTRDsignals(iPlane, -1);
+                                                       dedx[iSlice] = esdTrack->GetTRDslice(iPlane, iSlice);
+                                               dEdx    = esdTrack->GetTRDslice(iPlane, -1);
                                                timebin = esdTrack->GetTRDTimBin(iPlane);
                        
                                                // check data
index fbe931f..f18eeba 100644 (file)
@@ -186,7 +186,7 @@ void AliTRDqaEnergyDeposit::Exec(Option_t *)
 
     Double_t signal = 0;
     for(Int_t i=0; i<6; i++)
-      signal += track->GetTRDsignals(i, -1);
+      signal += track->GetTRDslice(i, -1);
     signal /= 6;
 
     fSignalPtSum[idx]->Fill(pt, signal);