Added method GetTOFBunchCrossing() to get bunch-crossing id relative
authorshahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 29 Jun 2011 22:01:46 +0000 (22:01 +0000)
committershahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 29 Jun 2011 22:01:46 +0000 (22:01 +0000)
to triggered one.
Separater GetMass() to GetPID() and GetMass()=ParticleMass(GetPID())

STEER/AliESDtrack.cxx
STEER/AliESDtrack.h

index 42ca629..b72fda7 100644 (file)
@@ -1138,36 +1138,49 @@ void AliESDtrack::MakeMiniESDtrack(){
 
   delete fFriendTrack; fFriendTrack = 0;
 } 
-//_______________________________________________________________________
-Double_t AliESDtrack::GetMass() const {
-  // Returns the mass of the most probable particle type
 
+//_______________________________________________________________________
+Int_t AliESDtrack::GetPID() const 
+{
+  // Returns the particle most probable id
   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);
-
+  for (i=0; i<AliPID::kSPECIES-1; i++) if (fR[i] != fR[i+1]) break;
+  //
+  if (i == AliPID::kSPECIES-1) return AliPID::kPion;  // If all the probabilities are equal, return the pion mass
+  //
   Float_t max=0.;
   Int_t k=-1;
-  for (i=0; i<AliPID::kSPECIES; i++) {
-    if (fR[i]>max) {k=i; max=fR[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
-     Double_t p=GetP();
-     if ((p>0.38)&&(p<0.48))
-        if (fR[0]<fR[3]*10.) return AliPID::ParticleMass(AliPID::kKaon);
-     if ((p>0.75)&&(p<0.85))
-        if (fR[0]<fR[4]*10.) return AliPID::ParticleMass(AliPID::kProton);
-     return 0.00051;
-  }
-  if (k==1) return AliPID::ParticleMass(AliPID::kMuon); 
-  if (k==2||k==-1) return AliPID::ParticleMass(AliPID::kPion);
-  if (k==3) return AliPID::ParticleMass(AliPID::kKaon);
-  if (k==4) return AliPID::ParticleMass(AliPID::kProton);
-  AliWarning("Undefined mass !");
-  return AliPID::ParticleMass(AliPID::kPion);
+    Double_t p=GetP();
+    if ((p>0.38)&&(p<0.48))
+      if (fR[0]<fR[3]*10.) return AliPID::kKaon;
+    if ((p>0.75)&&(p<0.85))
+      if (fR[0]<fR[4]*10.) return AliPID::kProton;
+    return AliPID::kElectron;
+  }
+  if (k==1) return AliPID::kMuon; 
+  if (k==2||k==-1) return AliPID::kPion;
+  if (k==3) return AliPID::kKaon;
+  if (k==4) return AliPID::kProton;
+  AliWarning("Undefined PID !");
+  return AliPID::kPion;
+}
+
+//_______________________________________________________________________
+Int_t AliESDtrack::GetTOFBunchCrossing() const 
+{
+  // Returns the number of bunch crossings after trigger (assuming 25ns spacing)
+  const UInt_t kAskBits = kESDpid | kTOFout | kTIME;
+  const double kSpacing = 25e3; // min interbanch spacing
+  const double kShift = 0;
+  Int_t bcid = -1; // defualt one
+  if ( (GetStatus()&kAskBits) != kAskBits) return bcid;
+  int pid = GetPID();
+  double tdif = fTOFsignal - fTrackTime[pid];
+  bcid = TMath::Nint((tdif - kShift)/kSpacing);
+  return bcid;
 }
 
 //______________________________________________________________________________
index 835b39f..49096cc 100644 (file)
@@ -79,7 +79,9 @@ public:
 
   Double_t GetIntegratedLength() const {return fTrackLength;}
   void GetIntegratedTimes(Double_t *times) const;
-  Double_t GetMass() const;
+  Int_t    GetPID()  const;
+  Int_t    GetTOFBunchCrossing() const;
+  Double_t GetMass() const {return AliPID::ParticleMass(GetPID());}
   Double_t M() const;
   Double_t E() const;
   Double_t Y() const;