]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliPythia.cxx
Modified absorber correction. Added function FieldCorrection() to account
[u/mrichter/AliRoot.git] / EVGEN / AliPythia.cxx
index 5d965a2e577ff83badb90462efa703275c8370c6..cf3c951dd5329c2feec6520e8ec6ba2de2aee65f 100644 (file)
 
 /*
 $Log$
+Revision 1.23  2002/05/06 07:17:29  morsch
+Pyr gives random number r in interval 0 < r < 1.
+
+Revision 1.22  2002/04/26 10:28:48  morsch
+Option kPyBeautyPbMNR added (N. Carrer).
+
+Revision 1.21  2002/03/25 14:46:16  morsch
+Case  kPyD0PbMNR added (N. Carrer).
+
+Revision 1.20  2002/03/03 13:48:50  morsch
+Option  kPyCharmPbMNR added. Produce charm pairs in agreement with MNR
+NLO calculations (Nicola Carrer).
+
+Revision 1.19  2002/02/20 08:52:20  morsch
+Correct documentation of SetNuclei method.
+
+Revision 1.18  2002/02/07 10:43:06  morsch
+Tuned pp-min.bias settings (M.Monteno, R.Ugoccioni and N.Carrer)
+
+Revision 1.17  2001/12/19 15:40:43  morsch
+For kPyJets enforce simple jet topology, i.e no initial or final state
+gluon radiation and no primordial pT.
+
+Revision 1.16  2001/10/12 11:13:59  morsch
+Missing break statements added (thanks to Nicola Carrer)
+
+Revision 1.15  2001/03/27 10:54:50  morsch
+Add ResetDecayTable() and SsetDecayTable() methods.
+
 Revision 1.14  2001/03/09 13:03:40  morsch
 Process_t and Struc_Func_t moved to AliPythia.h
 
@@ -97,7 +126,7 @@ void AliPythia::ProcInit(Process_t process, Float_t energy, StrucFunc_t strucfun
 //  heavy quark masses
 
        SetPMAS(4,1,1.2);
-
+       SetMSTU(16,2);
 //
 //    primordial pT
        SetMSTP(91,1);
@@ -108,6 +137,7 @@ void AliPythia::ProcInit(Process_t process, Float_t energy, StrucFunc_t strucfun
     case kPyBeauty:
        SetMSEL(5);
        SetPMAS(5,1,4.75);
+       SetMSTU(16,2);
        break;
     case kPyJpsi:
        SetMSEL(0);
@@ -124,6 +154,7 @@ void AliPythia::ProcInit(Process_t process, Float_t energy, StrucFunc_t strucfun
        SetMSUB(88,1);
 // gg-> chi_2c g
        SetMSUB(89,1);  
+       break;
     case kPyCharmUnforced:
        SetMSEL(0);
 // gq->qg   
@@ -132,6 +163,7 @@ void AliPythia::ProcInit(Process_t process, Float_t energy, StrucFunc_t strucfun
        SetMSUB(53,1);
 // gg->gg
        SetMSUB(68,1);
+       break;
     case kPyBeautyUnforced:
        SetMSEL(0);
 // gq->qg   
@@ -144,36 +176,131 @@ void AliPythia::ProcInit(Process_t process, Float_t energy, StrucFunc_t strucfun
     case kPyMb:
 // Minimum Bias pp-Collisions
 //
-// Tuning of parameters descibed in G. Ciapetti and A. Di Ciaccio
-// Proc. of the LHC Workshop, Aachen 1990, Vol. II p. 155
 //   
 //      select Pythia min. bias model
        SetMSEL(0);
-       SetMSUB(92,1);
-       SetMSUB(93,1);
-       SetMSUB(94,1);
-       SetMSUB(95,1);  
-//      Multiple interactions switched on
-       SetMSTP(81,1);
-       SetMSTP(82,1);
-//      Low-pT cut-off for hard scattering
-       SetPARP(81,1.9);
-//      model for subsequent non-hardest interaction
-//      90% gg->gg 10% gg->qq
-       SetPARP(86,0.9);
-//      90% of gluon interactions have minimum string length
-       SetPARP(85,0.9);
+       SetMSUB(92,1);      // single diffraction AB-->XB
+       SetMSUB(93,1);      // single diffraction AB-->AX
+       SetMSUB(94,1);      // double diffraction
+       SetMSUB(95,1);      // low pt production
+       SetMSTP(81,1);      // multiple interactions switched on
+       SetMSTP(82,3);      // model with varying impact param. & a single Gaussian
+       SetPARP(82,3.47);   // set value pT_0  for turn-off of the cross section of                  
+                            // multiple interaction at a reference energy = 14000 GeV
+       SetPARP(89,14000.); // reference energy for the above parameter
+       SetPARP(90,0.174);  // set exponent for energy dependence of pT_0
+    case kPyMbNonDiffr:
+// Minimum Bias pp-Collisions
+//
+//   
+//      select Pythia min. bias model
+       SetMSEL(0);
+       SetMSUB(95,1);      // low pt production
+       SetMSTP(81,1);      // multiple interactions switched on
+       SetMSTP(82,3);      // model with varying impact param. & a single Gaussian
+       SetPARP(82,3.47);   // set value pT_0  for turn-off of the cross section of                  
+                            // multiple interaction at a reference energy = 14000 GeV
+       SetPARP(89,14000.); // reference energy for the above parameter
+       SetPARP(90,0.174);  // set exponent for energy dependence of pT_0
        break;
     case kPyJets:
        SetMSEL(1);
+// no initial state radiation   
+       SetMSTP(61,0);
+// no final state radiation
+       SetMSTP(71,0);
+// no primordial pT
+       SetMSTP(91,0);
+//     SetMSTP(111,0); 
+       SetMSTU(16,1);  
+       SetMSTJ(1,1);
+       
        break;
     case kPyDirectGamma:
        SetMSEL(10);
        break;
+    case kPyCharmPbMNR:
+    case kPyD0PbMNR:
+      // Tuning of Pythia parameters aimed to get a resonable agreement
+      // between with the NLO calculation by Mangano, Nason, Ridolfi for the
+      // c-cbar single inclusive and double differential distributions.
+      // This parameter settings are meant to work with Pb-Pb collisions
+      // (AliGenPythia::SetNuclei) and with kCTEQ_4L PDFs.
+      // To get a good agreement the minimum ptHard (AliGenPythia::SetPtHard)
+      // has to be set to 2.1GeV. Example in ConfigCharmPPR.C.
+
+      // All QCD processes
+      SetMSEL(1);
+
+      // No multiple interactions
+      SetMSTP(81,0);
+      SetPARP(81,0.0);
+      SetPARP(82,0.0);
+
+      // Initial/final parton shower on (Pythia default)
+      SetMSTP(61,1);
+      SetMSTP(71,1);
+
+      // 2nd order alpha_s
+      SetMSTP(2,2);
+
+      // QCD scales
+      SetMSTP(32,2);
+      SetPARP(34,1.0);
+
+      // Intrinsic <kT^2>
+      SetMSTP(91,1);
+      SetPARP(91,1.304);
+      SetPARP(93,6.52);
+
+      // Set c-quark mass
+      SetPMAS(4,1,1.2);
+
+      break;
+    case kPyBeautyPbMNR:
+      // Tuning of Pythia parameters aimed to get a resonable agreement
+      // between with the NLO calculation by Mangano, Nason, Ridolfi for the
+      // b-bbar single inclusive and double differential distributions.
+      // This parameter settings are meant to work with Pb-Pb collisions
+      // (AliGenPythia::SetNuclei) and with kCTEQ4L PDFs.
+      // To get a good agreement the minimum ptHard (AliGenPythia::SetPtHard)
+      // has to be set to 2.75GeV. Example in ConfigBeautyPPR.C.
+
+      // All QCD processes
+      SetMSEL(1);
+
+      // No multiple interactions
+      SetMSTP(81,0);
+      SetPARP(81,0.0);
+      SetPARP(82,0.0);
+
+      // Initial/final parton shower on (Pythia default)
+      SetMSTP(61,1);
+      SetMSTP(71,1);
+
+      // 2nd order alpha_s
+      SetMSTP(2,2);
+
+      // QCD scales
+      SetMSTP(32,2);
+      SetPARP(34,1.0);
+      SetPARP(67,1.0);
+      SetPARP(71,1.0);
+
+      // Intrinsic <kT^2>
+      SetMSTP(91,1);
+      SetPARP(91,2.035);
+      SetPARP(93,10.17);
+
+      // Set b-quark mass
+      SetPMAS(5,1,4.75);
+
+      break;
     }
 //
 //  Initialize PYTHIA
-    SetMSTP(41,1);
+    SetMSTP(41,1);   // all resonance decays switched on
 
     Initialize("CMS","p","p",fEcms);
 
@@ -195,14 +322,10 @@ void AliPythia::SetNuclei(Int_t a1, Int_t a2)
 //    MSTP(52)  : (D=1) choice of proton and nuclear structure-function library
 //            =1: internal PYTHIA acording to MSTP(51) 
 //            =2: PDFLIB proton  s.f., with MSTP(51)  = 1000xNGROUP+NSET
-//            =3: PDFLIB proton  s.f. with nuclar correction:
-//                MSTP( 51)  = 1000xNPGROUP+NPSET
-//                MSTP(151)  = 1000xNAGROUP+NASET
+//    If the following mass number both not equal zero, nuclear corrections of the stf are used.
 //    MSTP(192) : Mass number of nucleus side 1
 //    MSTP(193) : Mass number of nucleus side 2
-
-    SetMSTP(52,3);
-    SetMSTP(191, 1001);
+    SetMSTP(52,2);
     SetMSTP(192, a1);
     SetMSTP(193, a2);  
 }
@@ -275,7 +398,12 @@ void  AliPythia::SetDecayTable()
 #endif
 
 extern "C" {
-  Double_t pyr(Int_t*) {return sRandom->Rndm();}
+  Double_t pyr(Int_t*) 
+{
+      Float_t r;
+      do r=sRandom->Rndm(); while(0 >= r || r >= 1);
+      return r;
+}
   void pyrset(Int_t*,Int_t*) {}
   void pyrget(Int_t*,Int_t*) {}
 }