Static method in the AliTOFPIDresponse to provide the TOF mismatch time distribution.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 26 Jul 2013 06:33:40 +0000 (06:33 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 26 Jul 2013 06:33:40 +0000 (06:33 +0000)
F. Noferini

STEER/STEERBase/AliTOFPIDResponse.cxx
STEER/STEERBase/AliTOFPIDResponse.h

index eab4615..5d22244 100644 (file)
 #include "TMath.h"
 #include "AliLog.h"
 #include "TF1.h"
+#include "TH1F.h"
+#include "TH1D.h"
+#include "TFile.h"
 
 #include "AliTOFPIDResponse.h"
 
 ClassImp(AliTOFPIDResponse)
 
 TF1 *AliTOFPIDResponse::fTOFtailResponse = NULL; // function to generate a TOF tail
+TH1F *AliTOFPIDResponse::fHmismTOF = NULL; // TOF mismatch distribution
+TH1D *AliTOFPIDResponse::fHchannelTOFdistr=NULL;  // TOF channel distance distribution
 
 //_________________________________________________________________________
 AliTOFPIDResponse::AliTOFPIDResponse(): 
@@ -217,10 +222,36 @@ Int_t AliTOFPIDResponse::GetStartTimeMask(Float_t mom) const {
 
 }
 //_________________________________________________________________________
-Double_t AliTOFPIDResponse::GetTailRandomValue() const // generate a random value to add a tail to TOF time (for MC analyses)
+Double_t AliTOFPIDResponse::GetTailRandomValue() // generate a random value to add a tail to TOF time (for MC analyses)
 {
   if(fTOFtailResponse)
     return fTOFtailResponse->GetRandom();
   else
     return 0.0;
 }
+//_________________________________________________________________________
+Double_t AliTOFPIDResponse::GetMismatchRandomValue(Float_t eta) // generate a random value for mismatched tracks (for MC analyses)
+{
+  if(!fHmismTOF){
+    TFile *fmism = new TFile("$ALICE_ROOT/TOF/data/TOFmismatchDistr.root");
+    if(fmism) fHmismTOF = (TH1F *) fmism->Get("TOFmismDistr");
+    if(!fHmismTOF){
+      printf("I cannot retrive TOF mismatch histos... skipped!");
+      return -10000.;
+    }
+
+    TFile *fchDist = new TFile("$ALICE_ROOT/TOF/data/TOFchannelDist.root");
+    if(fchDist) fHchannelTOFdistr = (TH1D *) fchDist->Get("hTOFchanDist"); 
+    if(!fHchannelTOFdistr){
+      printf("I cannot retrive TOF channel distance distribution... skipped!");
+      return -10000.;
+    }
+  }
+
+  Float_t etaAbs = TMath::Abs(eta);
+  Int_t channel = Int_t(4334.09 - 4758.36 * etaAbs -1989.71 * etaAbs*etaAbs + 1957.62*etaAbs*etaAbs*etaAbs);
+  if(channel < 1 || etaAbs > 1) channel = 1; 
+  Float_t distIP = fHchannelTOFdistr->GetBinContent(channel);
+          
+  return fHmismTOF->GetRandom() + distIP*3.35655419905265973e+01;
+}
index 6e7cdd2..c1d5132 100644 (file)
@@ -16,6 +16,8 @@
 
 class AliTOFPIDParams;
 class TF1;
+class TH1F;
+class TH1D;
 
 class AliTOFPIDResponse : public TObject {
 public:
@@ -37,7 +39,8 @@ public:
 
   Double_t GetMismatchProbability(Double_t p,Double_t mass) const;
 
-  Double_t GetTailRandomValue() const; // generate a random value to add a tail to TOF time (for MC analyses)
+  static Double_t GetTailRandomValue(); // generate a random value to add a tail to TOF time (for MC analyses)
+  static Double_t GetMismatchRandomValue(Float_t eta); // generate a random value for mismatched tracks (for MC analyses)
 
   void     SetT0event(Float_t *t0event){for(Int_t i=0;i < fNmomBins;i++) fT0event[i] = t0event[i];};
   void     SetT0resolution(Float_t *t0resolution){for(Int_t i=0;i < fNmomBins;i++) fT0resolution[i] = t0resolution[i];};
@@ -80,6 +83,8 @@ public:
   Float_t fPar[4]; // parameter for expected times resolution
 
   static TF1 *fTOFtailResponse; // function to generate a TOF tail
+  static TH1F *fHmismTOF; // TOF mismatch distribution
+  static TH1D *fHchannelTOFdistr;// TOF channel distance distribution
 
   ClassDef(AliTOFPIDResponse,5)   // TOF PID class
 };