]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AOD/AliAODTrack.cxx
Changes for #87282 Request for committing to trunk + port to v5-01 (TRD PID with...
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODTrack.cxx
index b6b5b873f0a2205e9c440f4036930011b2ba0064..eaff40c794865580639508fc0c33850071713531 100644 (file)
@@ -44,6 +44,7 @@ AliAODTrack::AliAODTrack() :
   fID(-999),
   fCharge(-99),
   fType(kUndef),
+  fCaloIndex(kEMCALNoMatch),
   fCovMatrix(NULL),
   fDetPid(NULL),
   fProdVertex(NULL)
@@ -88,6 +89,7 @@ AliAODTrack::AliAODTrack(Short_t id,
   fID(id),
   fCharge(charge),
   fType(ttype),
+  fCaloIndex(kEMCALNoMatch),
   fCovMatrix(NULL),
   fDetPid(NULL),
   fProdVertex(prodVertex)
@@ -136,6 +138,7 @@ AliAODTrack::AliAODTrack(Short_t id,
   fID(id),
   fCharge(charge),
   fType(ttype),
+  fCaloIndex(kEMCALNoMatch),
   fCovMatrix(NULL),
   fDetPid(NULL),
   fProdVertex(prodVertex)
@@ -178,6 +181,7 @@ AliAODTrack::AliAODTrack(const AliAODTrack& trk) :
   fID(trk.fID),
   fCharge(trk.fCharge),
   fType(trk.fType),
+  fCaloIndex(trk.fCaloIndex),
   fCovMatrix(NULL),
   fDetPid(NULL),
   fProdVertex(trk.fProdVertex)
@@ -226,6 +230,8 @@ AliAODTrack& AliAODTrack::operator=(const AliAODTrack& trk)
     fCharge = trk.fCharge;
     fType = trk.fType;
 
+    fCaloIndex = trk.fCaloIndex;
+
     delete fCovMatrix;
     if(trk.fCovMatrix) fCovMatrix=new AliAODRedCov<6>(*trk.fCovMatrix);
     else fCovMatrix=NULL;
@@ -535,7 +541,7 @@ Bool_t AliAODTrack::PropagateToDCA(const AliVVertex *vtx,
   // return kFALSE is something went wrong
 
   // convert to AliExternalTrackParam
-  AliExternalTrackParam etp(this);  
+  AliExternalTrackParam etp; etp.CopyFromVTrack(this);  
 
   Float_t xstart = etp.GetX();
   if(xstart>3.) {
@@ -633,7 +639,7 @@ Double_t  AliAODTrack::GetTRDslice(Int_t plane, Int_t slice) const {
     return -1.;
   }
 
-  Int_t ns=fDetPid->GetTRDnSlices();
+  Int_t ns=fDetPid->GetTRDnSlices()/kTRDnPlanes;
   if ((slice<-1) || (slice>=ns)) {
     return -1.;
   }
@@ -646,6 +652,25 @@ Double_t  AliAODTrack::GetTRDslice(Int_t plane, Int_t slice) const {
   return q/ns;
 }
 
+//______________________________________________________________________________
+UChar_t AliAODTrack::GetTRDntrackletsPID() const{
+  //
+  // return number of tracklets calculated from the slices
+  //
+  if(!fDetPid) return -1;
+  return fDetPid->GetTRDntrackletsPID();
+}
+
+//______________________________________________________________________________
+UChar_t AliAODTrack::GetTRDncls(Int_t layer) const {
+  // 
+  // return number of TRD clusters
+  //
+  if(!fDetPid || layer > 5) return -1;
+  if(layer < 0) return fDetPid->GetTRDncls();
+  else return fDetPid->GetTRDncls(layer);
+}
+
 //______________________________________________________________________________
 Double_t AliAODTrack::GetTRDmomentum(Int_t plane, Double_t */*sp*/) const
 {
@@ -653,7 +678,7 @@ Double_t AliAODTrack::GetTRDmomentum(Int_t plane, Double_t */*sp*/) const
   // in TRD layer "plane".
 
   if (!fDetPid) return -1;
-  Float_t *trdMomentum=fDetPid->GetTRDmomentum();
+  const Float_t *trdMomentum=fDetPid->GetTRDmomentum();
 
   if (!trdMomentum) {
     return -1.;
@@ -671,7 +696,7 @@ Int_t AliAODTrack::GetTOFBunchCrossing(Double_t b) const
   // Returns the number of bunch crossings after trigger (assuming 25ns spacing)
   const double kSpacing = 25e3; // min interbanch spacing
   const double kShift = 0;
-  Int_t bcid = -1; // defualt one
+  Int_t bcid = kTOFBCNA; // defualt one
   if (!IsOn(kTOFout) || !IsOn(kESDpid)) return bcid; // no info
   //
   double tdif = GetTOFsignal();