]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESDtrack.cxx
1) Added AliESDtrack and AliAODtrack to GetTOFBunchCrossing(double b=0), to calculate
[u/mrichter/AliRoot.git] / STEER / AliESDtrack.cxx
index b72fda7981bae798604053e283637ba471da0034..03775e68932eebab7f3e294e58d3ada88020ad1b 100644 (file)
@@ -1169,16 +1169,30 @@ Int_t AliESDtrack::GetPID() const
 }
 
 //_______________________________________________________________________
-Int_t AliESDtrack::GetTOFBunchCrossing() const 
+Int_t AliESDtrack::GetTOFBunchCrossing(Double_t b) 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];
+  if (!IsOn(kTOFout) || !IsOn(kESDpid)) return bcid; // no info
+  //
+  double tdif = fTOFsignal;
+  if (IsOn(kTIME)) { // integrated time info is there
+    int pid = GetPID();
+    tdif -= fTrackTime[pid];
+  }
+  else { // assume integrated time info from TOF radius and momentum
+    const double kRTOF = 385.;
+    const double kCSpeed = 3.e-2; // cm/ps
+    double p = GetP();
+    if (p<0.01) return bcid;
+    double m = GetMass();
+    double curv = GetC(b);
+    double path = TMath::Abs(curv)>kAlmost0 ? // account for curvature
+      2./curv*TMath::ASin(kRTOF*curv/2.)*TMath::Sqrt(1.+GetTgl()*GetTgl()) : kRTOF;
+    tdif -= path/kCSpeed*TMath::Sqrt(1.+m*m/(p*p));
+  }
   bcid = TMath::Nint((tdif - kShift)/kSpacing);
   return bcid;
 }