]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Andreas Dainese included a parametrization of the momentum distribution
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 4 Mar 2009 21:41:30 +0000 (21:41 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 4 Mar 2009 21:41:30 +0000 (21:41 +0000)
based on the measurement by the TPC from last Summer's data with field.

EVGEN/AliGenCosmicsParam.cxx
EVGEN/AliGenCosmicsParam.h

index 3622700de1dd1507fff750e51e3b6a339a2758f5..a40f84ff2e20cf13ebf804d06f911d1ca50f2ddb 100644 (file)
@@ -33,6 +33,7 @@ AliGenCosmicsParam::AliGenCosmicsParam():
 AliGenerator(),
 fParamMI(kFALSE),
 fParamACORDE(kFALSE),
+fParamDataTPC(kTRUE),
 fYOrigin(600.),
 fMaxAngleWRTVertical(-99.),
 fBkG(0.),
@@ -99,6 +100,12 @@ void AliGenCosmicsParam::Generate()
       ptot = (Double_t)dNdpACORDE->GetRandom();
       delete dNdpACORDE;
       dNdpACORDE = 0;
+    } else if(fParamDataTPC) { // extracted from cosmics in TPC (Summer 08) 
+      // sample total momentum only once (to speed up)
+      TF1 *dNdpTPC = new TF1("dNdpTPC","x/(1.+(x/3.)*(x/3.))^1.",fPMin,fPMax);
+      ptot = (Double_t)dNdpTPC->GetRandom();
+      delete dNdpTPC;
+      dNdpTPC = 0;
     }
 
     while(1) {
@@ -123,7 +130,7 @@ void AliGenCosmicsParam::Generate()
          }
          ptot=TMath::Sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2]);
          pt=TMath::Sqrt(p[0]*p[0]+p[1]*p[1]);
-       } else if(fParamACORDE) { // extracted from AliGenACORDE events
+       } else if(fParamACORDE || fParamDataTPC) {
          Float_t theta,phi;
          while(1) {
            theta = gRandom->Gaus(0.5*TMath::Pi(),0.42);
@@ -138,7 +145,7 @@ void AliGenCosmicsParam::Generate()
          p[1] = pt*TMath::Sin(phi); 
          p[2] = ptot*TMath::Cos(theta);
        } else {
-         AliFatal("Parametrization not set: use SetParamMI or SetParamACORDE");
+         AliFatal("Parametrization not set: use SetParamDataTPC, SetParamMI, or SetParamACORDE");
        }
        
        
@@ -187,10 +194,12 @@ void AliGenCosmicsParam::Init()
   //
   if(TestBit(kPtRange)) 
     AliFatal("You cannot set the pt range for this generator! Only momentum range");
-  if(fPMin<8.) { 
-    fPMin=8.; 
+  Double_t pmin=8.; // fParamACORDE
+  if(fParamDataTPC) pmin=0.5;
+  if(fPMin<pmin) { 
+    fPMin=pmin; 
     if(TestBit(kMomentumRange)) 
-      AliWarning("Minimum momentum cannot be < 8 GeV/c"); 
+      AliWarning(Form("Minimum momentum cannot be < %f GeV/c",pmin)); 
   }
   if(fMaxAngleWRTVertical<0.) 
     AliFatal("You must use SetMaxAngleWRTVertical() instead of SetThetaRange(), SetPhiRange()");
index 1a878d6064a3957e7e720e22732fa3f52b52c72b..ece13a950a4e908daf700ae0a9ec4db498b02ffb 100644 (file)
@@ -19,8 +19,9 @@ public:
   virtual ~AliGenCosmicsParam() {}
   virtual void Generate();
   virtual void Init();
-  void SetParamMI() { fParamMI=kTRUE; fParamACORDE=kFALSE; return; }
-  void SetParamACORDE() { fParamMI=kFALSE; fParamACORDE=kTRUE; return; }
+  void SetParamMI() { fParamMI=kTRUE; fParamACORDE=kFALSE; fParamDataTPC=kFALSE; return; }
+  void SetParamACORDE() { fParamMI=kFALSE; fParamACORDE=kTRUE; fParamDataTPC=kFALSE; return; }
+  void SetParamDataTPC() { fParamDataTPC=kTRUE; fParamACORDE=kFALSE; fParamDataTPC=kFALSE; return; }
   void SetYOrigin(Float_t y=600.) { fYOrigin=y; return; }
   void SetMaxAngleWRTVertical(Float_t max=45.) { 
       if(max<0. || max>90.) AliFatal("angle must be in [0,pi/2]");
@@ -48,6 +49,7 @@ private:
                                     Float_t o[3],Float_t p[3]) const; 
   Bool_t fParamMI;              // parametrization from M.Ivanov
   Bool_t fParamACORDE;          // parametrization from AliGenACORDE 
+  Bool_t fParamDataTPC;         // parametrization from TPC Summer08 cosmics 
                                 // (parametrized at ALICE y)
   Float_t fYOrigin;             // y of muon origin
   Float_t fMaxAngleWRTVertical; // maximum angle between momentum and y axis
@@ -64,7 +66,7 @@ private:
   Bool_t fACORDE4ITS;           // acceptance cuts
   Bool_t fBottomScintillator;   // acceptance cuts
 
-  ClassDef(AliGenCosmicsParam,4) // parametrized cosmics generator
+  ClassDef(AliGenCosmicsParam,5) // parametrized cosmics generator
 };
 
 #endif