adding TPCFitMap to the AODtrack
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODTrack.cxx
index a8e717c..cb6b060 100644 (file)
@@ -38,6 +38,7 @@ AliAODTrack::AliAODTrack() :
   fLabel(-999),
   fITSMuonClusterMap(0),
   fFilterMap(0),
+  fTPCFitMap(),
   fTPCClusterMap(),
   fTPCSharedMap(),
   fTPCnclsF(0),
@@ -83,6 +84,7 @@ AliAODTrack::AliAODTrack(Short_t id,
   fLabel(label),
   fITSMuonClusterMap(0),
   fFilterMap(selectInfo),
+  fTPCFitMap(),
   fTPCClusterMap(),
   fTPCSharedMap(),
   fTPCnclsF(0),
@@ -132,6 +134,7 @@ AliAODTrack::AliAODTrack(Short_t id,
   fLabel(label),
   fITSMuonClusterMap(0),
   fFilterMap(selectInfo),
+  fTPCFitMap(),
   fTPCClusterMap(),
   fTPCSharedMap(),
   fTPCnclsF(0),
@@ -175,6 +178,7 @@ AliAODTrack::AliAODTrack(const AliAODTrack& trk) :
   fLabel(trk.fLabel),
   fITSMuonClusterMap(trk.fITSMuonClusterMap),
   fFilterMap(trk.fFilterMap),
+  fTPCFitMap(trk.fTPCFitMap),
   fTPCClusterMap(trk.fTPCClusterMap),
   fTPCSharedMap(trk.fTPCSharedMap),
   fTPCnclsF(trk.fTPCnclsF),
@@ -209,40 +213,39 @@ AliAODTrack& AliAODTrack::operator=(const AliAODTrack& trk)
 
     trk.GetP(fMomentum);
     trk.GetPosition(fPosition);
-    trk.GetPID(fPID);
-
     SetXYAtDCA(trk.XAtDCA(), trk.YAtDCA());
     SetPxPyPzAtDCA(trk.PxAtDCA(), trk.PyAtDCA(), trk.PzAtDCA());
-    
-    fRAtAbsorberEnd = trk.fRAtAbsorberEnd;
-    
-    fChi2perNDF = trk.fChi2perNDF;
-    fChi2MatchTrigger = trk.fChi2MatchTrigger;
-
-    fFlags = trk.fFlags;
-    fLabel = trk.fLabel;    
-    
+    fRAtAbsorberEnd    = trk.fRAtAbsorberEnd;
+    fChi2perNDF        = trk.fChi2perNDF;
+    fChi2MatchTrigger  = trk.fChi2MatchTrigger;
+    trk.GetPID(fPID);
+    fFlags             = trk.fFlags;
+    fLabel             = trk.fLabel;    
     fITSMuonClusterMap = trk.fITSMuonClusterMap;
-    fFilterMap = trk.fFilterMap;
-
-    fID = trk.fID;
-
-    fCharge = trk.fCharge;
-    fType = trk.fType;
-
-    fCaloIndex = trk.fCaloIndex;
+    fFilterMap         = trk.fFilterMap;
+    fTPCFitMap         = trk.fTPCFitMap;
+    fTPCClusterMap     = trk.fTPCClusterMap;
+    fTPCSharedMap      = trk.fTPCSharedMap;
+    fTPCnclsF          = trk.fTPCnclsF;
+    fID                = trk.fID;
+    fCharge            = trk.fCharge;
+    fType              = trk.fType;
+    fCaloIndex         = trk.fCaloIndex;
 
     delete fCovMatrix;
     if(trk.fCovMatrix) fCovMatrix=new AliAODRedCov<6>(*trk.fCovMatrix);
     else fCovMatrix=NULL;
-    fProdVertex = trk.fProdVertex;
 
+
+    fProdVertex        = trk.fProdVertex;
     SetUsedForVtxFit(trk.GetUsedForVtxFit());
     SetUsedForPrimVtxFit(trk.GetUsedForPrimVtxFit());
 
     delete fDetPid;
     if(trk.fDetPid) fDetPid=new AliAODPid(*trk.fDetPid);
     else fDetPid=NULL;
+
+
   }
 
   return *this;
@@ -541,7 +544,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.) {
@@ -639,7 +642,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.;
   }
@@ -652,6 +655,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
 {
@@ -659,7 +681,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.;