]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESDtrack.cxx
removing obsolete component from libAliHLTTrigger
[u/mrichter/AliRoot.git] / STEER / AliESDtrack.cxx
index 97487b268920752ab7a42c0cc651137cd6a2c4b6..c986a083bef1f3a0064467b4732d3f7d59fe12c2 100644 (file)
@@ -172,7 +172,7 @@ AliESDtrack::AliESDtrack() :
   fITSLabel(0),
   fTPCLabel(0),
   fTRDLabel(0),
-  fTOFCalChannel(0),
+  fTOFCalChannel(-1),
   fTOFindex(-1),
   fHMPIDqn(0),
   fHMPIDcluIdx(-1),
@@ -200,11 +200,13 @@ AliESDtrack::AliESDtrack() :
   fTRDsignal(0),
   fTRDQuality(0),
   fTRDBudget(0),
-  fTOFsignal(0),
-  fTOFsignalToT(0),
-  fTOFsignalRaw(0),
-  fTOFsignalDz(0),
-  fTOFsignalDx(0),
+  fTOFsignal(99999),
+  fTOFsignalToT(99999),
+  fTOFsignalRaw(99999),
+  fTOFsignalDz(999),
+  fTOFsignalDx(999),
+  fTOFdeltaBC(999),
+  fTOFl0l1(999),
   fCaloDx(0),
   fCaloDz(0),
   fHMPIDtrkX(0),
@@ -218,6 +220,7 @@ AliESDtrack::AliESDtrack() :
   fTPCnclsFIter1(0),
   fITSncls(0),
   fITSClusterMap(0),
+  fITSSharedMap(0),
   fTRDncls(0),
   fTRDncls0(0),
   fTRDntracklets(0),
@@ -247,7 +250,7 @@ AliESDtrack::AliESDtrack() :
   }
   for (i=0;i<4;i++) {fITSdEdxSamples[i]=0.;}
   for (i=0;i<4;i++) {fTPCPoints[i]=0;}
-  for (i=0;i<3;i++) {fTOFLabel[i]=0;}
+  for (i=0;i<3;i++) {fTOFLabel[i]=-1;}
   for (i=0;i<10;i++) {fTOFInfo[i]=0;}
   for (i=0;i<12;i++) {fITSModule[i]=-1;}
 }
@@ -302,6 +305,8 @@ AliESDtrack::AliESDtrack(const AliESDtrack& track):
   fTOFsignalRaw(track.fTOFsignalRaw),
   fTOFsignalDz(track.fTOFsignalDz),
   fTOFsignalDx(track.fTOFsignalDx),
+  fTOFdeltaBC(track.fTOFdeltaBC),
+  fTOFl0l1(track.fTOFl0l1),
   fCaloDx(track.fCaloDx),
   fCaloDz(track.fCaloDz),
   fHMPIDtrkX(track.fHMPIDtrkX),
@@ -315,6 +320,7 @@ AliESDtrack::AliESDtrack(const AliESDtrack& track):
   fTPCnclsFIter1(track.fTPCnclsIter1),
   fITSncls(track.fITSncls),
   fITSClusterMap(track.fITSClusterMap),
+  fITSSharedMap(track.fITSSharedMap),
   fTRDncls(track.fTRDncls),
   fTRDncls0(track.fTRDncls0),
   fTRDntracklets(track.fTRDntracklets),
@@ -379,7 +385,7 @@ AliESDtrack::AliESDtrack(const AliVTrack *track) :
   fITSLabel(0),
   fTPCLabel(0),
   fTRDLabel(0),
-  fTOFCalChannel(0),
+  fTOFCalChannel(-1),
   fTOFindex(-1),
   fHMPIDqn(0),
   fHMPIDcluIdx(-1),
@@ -407,11 +413,13 @@ AliESDtrack::AliESDtrack(const AliVTrack *track) :
   fTRDsignal(0),
   fTRDQuality(0),
   fTRDBudget(0),
-  fTOFsignal(0),
-  fTOFsignalToT(0),
-  fTOFsignalRaw(0),
-  fTOFsignalDz(0),
-  fTOFsignalDx(0),
+  fTOFsignal(99999),
+  fTOFsignalToT(99999),
+  fTOFsignalRaw(99999),
+  fTOFsignalDz(999),
+  fTOFsignalDx(999),
+  fTOFdeltaBC(999),
+  fTOFl0l1(999),
   fCaloDx(0),
   fCaloDz(0),
   fHMPIDtrkX(0),
@@ -425,6 +433,7 @@ AliESDtrack::AliESDtrack(const AliVTrack *track) :
   fTPCnclsFIter1(0),
   fITSncls(0),
   fITSClusterMap(0),
+  fITSSharedMap(0),
   fTRDncls(0),
   fTRDncls0(0),
   fTRDntracklets(0),
@@ -464,7 +473,7 @@ AliESDtrack::AliESDtrack(const AliVTrack *track) :
   }
   for (i=0;i<4;i++) {fITSdEdxSamples[i]=0.;}
   for (i=0;i<4;i++) {fTPCPoints[i]=0;}
-  for (i=0;i<3;i++) {fTOFLabel[i]=0;}
+  for (i=0;i<3;i++) {fTOFLabel[i]=-1;}
   for (i=0;i<10;i++) {fTOFInfo[i]=0;}
   for (i=0;i<12;i++) {fITSModule[i]=-1;}
 
@@ -473,12 +482,17 @@ AliESDtrack::AliESDtrack(const AliVTrack *track) :
 
   // Set ITS cluster map
   fITSClusterMap=track->GetITSClusterMap();
+  fITSSharedMap=0;
 
   fITSncls=0;
   for(i=0; i<6; i++) {
     if(HasPointOnITSLayer(i)) fITSncls++;
   }
 
+  // Set TPC ncls 
+  fTPCncls=track->GetTPCNcls();
+
+
   // Set the combined PID
   const Double_t *pid = track->PID();
   if(pid){
@@ -507,7 +521,7 @@ AliESDtrack::AliESDtrack(TParticle * part) :
   fITSLabel(0),
   fTPCLabel(0),
   fTRDLabel(0),
-  fTOFCalChannel(0),
+  fTOFCalChannel(-1),
   fTOFindex(-1),
   fHMPIDqn(0),
   fHMPIDcluIdx(-1),
@@ -535,11 +549,13 @@ AliESDtrack::AliESDtrack(TParticle * part) :
   fTRDsignal(0),
   fTRDQuality(0),
   fTRDBudget(0),
-  fTOFsignal(0),
-  fTOFsignalToT(0),
-  fTOFsignalRaw(0),
-  fTOFsignalDz(0),
-  fTOFsignalDx(0),
+  fTOFsignal(99999),
+  fTOFsignalToT(99999),
+  fTOFsignalRaw(99999),
+  fTOFsignalDz(999),
+  fTOFsignalDx(999),
+  fTOFdeltaBC(999),
+  fTOFl0l1(999),
   fCaloDx(0),
   fCaloDz(0),
   fHMPIDtrkX(0),
@@ -553,6 +569,7 @@ AliESDtrack::AliESDtrack(TParticle * part) :
   fTPCnclsFIter1(0),
   fITSncls(0),
   fITSClusterMap(0),
+  fITSSharedMap(0),
   fTRDncls(0),
   fTRDncls0(0),
   fTRDntracklets(0),
@@ -584,7 +601,7 @@ AliESDtrack::AliESDtrack(TParticle * part) :
   }
   for (i=0;i<4;i++) {fITSdEdxSamples[i]=0.;}
   for (i=0;i<4;i++) {fTPCPoints[i]=0;}
-  for (i=0;i<3;i++) {fTOFLabel[i]=0;}
+  for (i=0;i<3;i++) {fTOFLabel[i]=-1;}
   for (i=0;i<10;i++) {fTOFInfo[i]=0;}
   for (i=0;i<12;i++) {fITSModule[i]=-1;}
 
@@ -864,7 +881,9 @@ AliESDtrack &AliESDtrack::operator=(const AliESDtrack &source){
   fTOFsignalRaw = source.fTOFsignalRaw;  
   fTOFsignalDz  = source.fTOFsignalDz;      
   fTOFsignalDx  = source.fTOFsignalDx;      
-  
+  fTOFdeltaBC   = source.fTOFdeltaBC;
+  fTOFl0l1      = source.fTOFl0l1;
   for(int i = 0;i<10;++i){
     fTOFInfo[i] = source.fTOFInfo[i];    
   }
@@ -882,6 +901,7 @@ AliESDtrack &AliESDtrack::operator=(const AliESDtrack &source){
 
   fITSncls = source.fITSncls;       
   fITSClusterMap = source.fITSClusterMap; 
+  fITSSharedMap = source.fITSSharedMap; 
   fTRDncls   = source.fTRDncls;       
   fTRDncls0  = source.fTRDncls0;      
   fTRDntracklets  = source.fTRDntracklets; 
@@ -950,6 +970,10 @@ Bool_t AliESDtrack::FillTPCOnlyTrack(AliESDtrack &track){
   track.fCdz = fCdzTPC;
   track.fCzz = fCzzTPC;
 
+  // copy the inner params
+  if(track.fIp) *track.fIp = *fIp;
+  else track.fIp = new AliExternalTrackParam(*fIp);
+
   // copy the TPCinner parameters
   if(track.fTPCInner) *track.fTPCInner = *fTPCInner;
   else track.fTPCInner = new AliExternalTrackParam(*fTPCInner);
@@ -960,7 +984,6 @@ Bool_t AliESDtrack::FillTPCOnlyTrack(AliESDtrack &track){
   track.fCzzTPC = fCzzTPC;
   track.fCchi2TPC = fCchi2TPC;
 
-
   // copy all other TPC specific parameters
 
   // replace label by TPC label
@@ -1031,6 +1054,7 @@ void AliESDtrack::MakeMiniESDtrack(){
   fITSchi2 = 0;
   fITSncls = 0;       
   fITSClusterMap=0;
+  fITSSharedMap=0;
   fITSsignal = 0;     
   for (Int_t i=0;i<4;i++) fITSdEdxSamples[i] = 0.;
   for (Int_t i=0;i<AliPID::kSPECIES;i++) fITSr[i]=0; 
@@ -1075,14 +1099,16 @@ void AliESDtrack::MakeMiniESDtrack(){
   // Reset TOF related track information
   fTOFchi2 = 0;        
   fTOFindex = -1;       
-  fTOFsignal = 0;      
-  fTOFCalChannel = 0;
-  fTOFsignalToT = 0;
-  fTOFsignalRaw = 0;
-  fTOFsignalDz = 0;
-  fTOFsignalDx = 0;
+  fTOFsignal = 99999;      
+  fTOFCalChannel = -1;
+  fTOFsignalToT = 99999;
+  fTOFsignalRaw = 99999;
+  fTOFsignalDz = 999;
+  fTOFsignalDx = 999;
+  fTOFdeltaBC = 999;
+  fTOFl0l1 = 999;
   for (Int_t i=0;i<AliPID::kSPECIES;i++) fTOFr[i] = 0;
-  for (Int_t i=0;i<3;i++) fTOFLabel[i] = 0;
+  for (Int_t i=0;i<3;i++) fTOFLabel[i] = -1;
   for (Int_t i=0;i<10;i++) fTOFInfo[i] = 0;
 
   // Reset HMPID related track information
@@ -1109,9 +1135,17 @@ void AliESDtrack::MakeMiniESDtrack(){
 //_______________________________________________________________________
 Double_t AliESDtrack::GetMass() const {
   // Returns the mass of the most probable particle type
+
+  Int_t i;
+  for (i=0; i<AliPID::kSPECIES-1; i++) { 
+      if (fR[i] != fR[i+1]) break;
+  }
+  // If all the probabilities are equal, return the pion mass
+  if (i == AliPID::kSPECIES-1) return AliPID::ParticleMass(AliPID::kPion);
+
   Float_t max=0.;
   Int_t k=-1;
-  for (Int_t i=0; i<AliPID::kSPECIES; i++) {
+  for (i=0; i<AliPID::kSPECIES; i++) {
     if (fR[i]>max) {k=i; max=fR[i];}
   }
   if (k==0) { // dE/dx "crossing points" in the TPC
@@ -1130,6 +1164,16 @@ Double_t AliESDtrack::GetMass() const {
   return AliPID::ParticleMass(AliPID::kPion);
 }
 
+//______________________________________________________________________________
+Double_t AliESDtrack::M() const
+{
+  // Returns the assumed mass
+  // (the pion mass, if the particle can't be identified properly).
+
+  AliWarning("This is the ESD mass. Use it with care !"); 
+  return GetMass(); 
+}
+  
 //______________________________________________________________________________
 Double_t AliESDtrack::E() const
 {
@@ -1659,6 +1703,62 @@ UShort_t AliESDtrack::GetTPCclusters(Int_t *idx) const {
   return fTPCncls;
 }
 
+//_______________________________________________________________________
+Float_t AliESDtrack::GetTPCClusterInfo(Int_t nNeighbours/*=3*/, Int_t type/*=0*/, Int_t row0, Int_t row1) const
+{
+  //
+  // TPC cluster information
+  // type 0: get fraction of found/findable clusters with neighbourhood definition
+  //      1: findable clusters with neighbourhood definition
+  //      2: found clusters
+  //
+  // definition of findable clusters:
+  //            a cluster is defined as findable if there is another cluster
+  //           within +- nNeighbours pad rows. The idea is to overcome threshold
+  //           effects with a very simple algorithm.
+  //
+
+  if (type==2) return fTPCClusterMap.CountBits();
+  
+  Int_t found=0;
+  Int_t findable=0;
+  Int_t last=-nNeighbours;
+  
+  for (Int_t i=row0; i<row1; ++i){
+    //look to current row
+    if (fTPCClusterMap[i]) {
+      last=i;
+      ++found;
+      ++findable;
+      continue;
+    }
+    //look to nNeighbours before
+    if ((i-last)<=nNeighbours) {
+      ++findable;
+      continue;
+    }
+    //look to nNeighbours after
+    for (Int_t j=i+1; j<i+1+nNeighbours; ++j){
+      if (fTPCClusterMap[j]){
+        ++findable;
+        break;
+      }
+    }
+  }
+  if (type==1) return findable;
+  
+  if (type==0){
+    Float_t fraction=0;
+    if (findable>0) 
+      fraction=(Float_t)found/(Float_t)findable;
+    else 
+      fraction=0;
+    return fraction;
+  }  
+  return 0;  // undefined type - default value
+}
+
+//_______________________________________________________________________
 Double_t AliESDtrack::GetTPCdensity(Int_t row0, Int_t row1) const{
   //
   // GetDensity of the clusters on given region between row0 and row1
@@ -1775,11 +1875,11 @@ Double_t AliESDtrack::GetTRDmomentum(Int_t plane, Double_t *sp) const
 // in TRD layer "plane".
 
   if (!fTRDnSlices) {
-    AliError("No TRD info allocated for this track !");
+    AliDebug(2, "No TRD info allocated for this track.");
     return -1.;
   }
   if ((plane<0) || (plane>=kTRDnPlanes)) {
-    AliError("Info for TRD plane not available!");
+    AliWarning(Form("Request for TRD plane[%d] outside range.", plane)); 
     return -1.;
   }
 
@@ -2266,7 +2366,14 @@ void AliESDtrack::GetITSdEdxSamples(Double_t *s) const {
 
 UShort_t   AliESDtrack::GetTPCnclsS(Int_t i0,Int_t i1) const{
   //
-  // get number of shared clusters
+  // get number of shared TPC clusters
   //
   return  fTPCSharedMap.CountBits(i0)-fTPCSharedMap.CountBits(i1);
 }
+
+UShort_t   AliESDtrack::GetTPCncls(Int_t i0,Int_t i1) const{
+  //
+  // get number of TPC clusters
+  //
+  return  fTPCClusterMap.CountBits(i0)-fTPCClusterMap.CountBits(i1);
+}