Correction in efficiency for p < 0.5.
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALFast.cxx
index 40fe953..3e405d0 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/* $Id$ */
+
+/*
+$Log$
+Revision 1.3  2002/02/05 11:32:15  morsch
+Smearing parameters with TRD included added.
+
+Revision 1.2  2002/01/18 03:27:12  morsch
+Acceptance and random rejection added.
+
+*/
+
 
 //*-- Author: Andreas Morsch (CERN)
 
@@ -29,15 +39,26 @@ ClassImp(AliEMCALFast)
 Float_t AliEMCALFast::SmearMomentum(Int_t ind, Float_t p)
 {
 //
-//  The relative momentum error, i.e. (delta p)/p = sqrt (a**2 + (b*p)**2) *
-//  10**-2,
+//  The relative momentum error, i.e. 
+//  (delta p)/p = sqrt (a**2 + (b*p)**2) * 10**-2,
 //  where typically a = 0.75 and b = 0.16 - 0.24 depending on multiplicity
 //  (the lower value is for dn/d(eta) about 2000, and the higher one for 8000)
 //
+//  If we include information from TRD b will be by a factor 2/3 smaller.
+//
+//  ind = 1: high multiplicity
+//  ind = 2: low  multiplicity
+//  ind = 3: high multiplicity + TRD
+//  ind = 4: low  multiplicity + TRD
+
     Float_t pSmeared;
     Float_t a = 0.75;
     Float_t b = 0.24;
+
+    if (ind == 1) b = 0.24;
     if (ind == 2) b = 0.16;
+    if (ind == 3) b = 0.16;    
+    if (ind == 4) b = 0.11;    
     
     Float_t sigma = p*TMath::Sqrt(a*a+b*b*p*p)*0.01;
     pSmeared = p + gRandom->Gaus(0., sigma);
@@ -48,24 +69,44 @@ Float_t AliEMCALFast::SmearMomentum(Int_t ind, Float_t p)
 Float_t AliEMCALFast::Efficiency(Int_t ind, Float_t p)
 {
 // Tracking efficiency:
-// above pt 0.5 GeV practically constant, between 90 and 95 % (agian,
+// above pt 0.5 GeV practically constant, between 90 and 95 % (again,
 // depending on multplicity)
 // below 0.5 GeV goes down to about 70% at 0.2 GeV.
 // On top of that there is 90% geometrical acceptance for tracking due
 // to TPC (dead zones between readout chambers).  
-    Float_t eff = 0.;
 // Tracking 
-    if (p > 0.5) {
-       eff = 0.9;
-       if (ind == 2) eff = 0.95;
-    } else {
-       eff = eff-(0.5-p)*0.2/0.3;
-    }
-    eff*= 0.9;
+//      
+    Float_t eff = 0.9;
+    if (ind == 2) eff  = 0.95;
+    if (p < 0.5) eff -= (0.5-p)*0.2/0.3;
+// Geometry
+    eff *= 0.9;
 // Acceptance    
     return eff;
 }
 
+Bool_t AliEMCALFast::EmcalAcceptance(Float_t eta, Float_t phi)
+{
+//
+// EMCAL eta-phi acceptance
+    Bool_t acc = kFALSE;
+    if (TMath::Abs(eta) < 0.7 &&
+       phi > 0. &&
+       phi < 120.*TMath::Pi()/180.)
+       acc = kTRUE;
+    return acc;
+}
+
+
+Bool_t AliEMCALFast::RandomReject(Float_t eff)
+{
+//
+// Random rejection 
+    Bool_t rej = kFALSE;
+    Float_t ran = gRandom->Rndm();
+    if (ran > eff) rej = kTRUE;
+    return rej;
+}