adding TPCFitMap to the AODtrack
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODTrack.cxx
index 4462c58..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.) {
@@ -658,19 +661,17 @@ UChar_t AliAODTrack::GetTRDntrackletsPID() const{
   // return number of tracklets calculated from the slices
   //
   if(!fDetPid) return -1;
+  return fDetPid->GetTRDntrackletsPID();
+}
 
-  Int_t ntracklets = 0,                                           // Number of tracklets / track
-        nSlicesTracklet = fDetPid->GetTRDnSlices()/kTRDnPlanes,   // Number of slices per tracklet
-        nSlicesNonZero = 0;                                       // Number of slices containing a dE/dx measurement
-  for(Int_t ily = 0; ily < kTRDnPlanes; ily++){
-    // a tracklet is found if it has at least one slice containing a dE/dx measurement
-    nSlicesNonZero = 0;
-    for(Int_t islice = 0; islice < nSlicesTracklet; islice++){
-      if(fDetPid->GetTRDsignal()[nSlicesTracklet * ily + islice] > 0.01) nSlicesNonZero++;
-    }
-    if(nSlicesNonZero) ntracklets++;
-  }
-  return ntracklets;
+//______________________________________________________________________________
+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);
 }
 
 //______________________________________________________________________________
@@ -680,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.;