]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PYTHIA6/AliGenPythia.cxx
Merge branch 'flatdev' of https://git.cern.ch/reps/AliRoot into flatdev
[u/mrichter/AliRoot.git] / PYTHIA6 / AliGenPythia.cxx
index c4e0d113c24f0e883809cbc768825c5d26a0030c..abfcc526a7c9155818b500270c77c2c15e36f0d7 100644 (file)
@@ -46,7 +46,6 @@
 #include "AliMC.h"
 #include "AliLog.h"
 #include "PyquenCommon.h"
-#include "AliLog.h"
 
 ClassImp(AliGenPythia)
 
@@ -77,8 +76,10 @@ AliGenPythia::AliGenPythia():
     fYHardMax(1.e10),
     fGinit(1),
     fGfinal(1),
+    fCRoff(0),
     fHadronisation(1),
     fPatchOmegaDalitz(0), 
+    fDecayerExodus(0),
     fNpartons(0),
     fReadFromFile(0),
     fReadLHEF(0),
@@ -129,6 +130,8 @@ AliGenPythia::AliGenPythia():
     fTriggerMaxPt(1000),  
     fTriggerMultiplicity(0),
     fTriggerMultiplicityEta(0),
+    fTriggerMultiplicityEtaMin(0),
+    fTriggerMultiplicityEtaMax(0),
     fTriggerMultiplicityPtMin(0),
     fCountMode(kCountAll),      
     fHeader(0),  
@@ -193,8 +196,10 @@ AliGenPythia::AliGenPythia(Int_t npart)
      fYHardMax(1.e10),
      fGinit(kTRUE),
      fGfinal(kTRUE),
+     fCRoff(kFALSE),
      fHadronisation(kTRUE),
-     fPatchOmegaDalitz(0), 
+     fPatchOmegaDalitz(0),
+     fDecayerExodus(0), 
      fNpartons(0),
      fReadFromFile(kFALSE),
      fReadLHEF(0),
@@ -245,6 +250,8 @@ AliGenPythia::AliGenPythia(Int_t npart)
      fTriggerMaxPt(1000),      
      fTriggerMultiplicity(0),
      fTriggerMultiplicityEta(0),
+     fTriggerMultiplicityEtaMin(0),
+     fTriggerMultiplicityEtaMax(0),
      fTriggerMultiplicityPtMin(0),
      fCountMode(kCountAll),      
      fHeader(0),  
@@ -403,6 +410,8 @@ void AliGenPythia::Init()
     fPythia->SetMSTP(61,fGinit);
 //  final state radiation
     fPythia->SetMSTP(71,fGfinal);
+    //color reconnection strength
+    if(fCRoff==1)fPythia->SetMSTP(95,0);
 //  pt - kick
     if (fPtKick > 0.) {
        fPythia->SetMSTP(91,1);
@@ -524,9 +533,10 @@ void AliGenPythia::Init()
     case kPyDirectGamma:
     case kPyLhwgMb:    
        break;
-    case kPyWPWHG:   /// !!!!!!!!!! Change done for W prod with POWHEG !!!!!!!!!! :)
+    case kPyWPWHG:
     case kPyW:
     case kPyZ:
+    case kPyZgamma:
     case kPyMBRSingleDiffraction:
     case kPyMBRDoubleDiffraction:
     case kPyMBRCentralDiffraction:
@@ -607,6 +617,11 @@ void AliGenPythia::Init()
        fPythia->SetMSTJ(44, 2);  // option to run alpha_s
        fPythia->SetPARJ(82, 1.); // Cut off for parton showers
     }
+  
+  if ( AliLog::GetDebugLevel("","AliGenPythia") >= 1 ) {
+    fPythia->Pystat(4);
+    fPythia->Pystat(5);
+  }
 }
 
 void AliGenPythia::Generate()
@@ -695,8 +710,29 @@ void AliGenPythia::Generate()
              fPythia->DalitzDecays();
              fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1);
            } 
-           fPythia->Pyexec();
-       }
+         
+      else  if (fDecayerExodus) {
+
+        fPythia->SetMDCY(fPythia->Pycomp(22) ,1, 0);
+        fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 0);
+        fPythia->SetMDCY(fPythia->Pycomp(221) ,1, 0);
+        fPythia->Pyexec();
+        fPythia->OmegaDalitz();
+        fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1);
+        fPythia->PizeroDalitz();
+        fPythia->PhiDalitz();
+        fPythia->SetMDCY(fPythia->Pycomp(221) ,1, 1);
+        fPythia->EtaDalitz();
+        fPythia->EtaprimeDalitz();
+        fPythia->SetMDCY(fPythia->Pycomp(22) ,1, 1);
+        fPythia->RhoDirect();
+        fPythia->OmegaDirect();
+        fPythia->PhiDirect();
+        fPythia->JPsiDirect();
+      }
+    
+      fPythia->Pyexec();
+  }
        fTrials++;
        fPythia->ImportParticles(&fParticles,"All");
        
@@ -737,10 +773,11 @@ void AliGenPythia::Generate()
            fProcess != kPyMbMSEL1     &&
            fProcess != kPyW && 
            fProcess != kPyZ &&
+      fProcess != kPyZgamma &&
            fProcess != kPyCharmppMNRwmi && 
            fProcess != kPyBeautyppMNRwmi &&
            fProcess != kPyBeautyJets &&
-     fProcess != kPyWPWHG &&  /// !!!!!!!!!!!!!!!!! Change done for W with POHWEG !!!!!!!!!!!!!!!!!!! :)
+     fProcess != kPyWPWHG &&
      fProcess != kPyJetsPWHG &&
      fProcess != kPyCharmPWHG &&
      fProcess != kPyBeautyPWHG) {
@@ -1020,6 +1057,10 @@ Int_t  AliGenPythia::GenerateMB()
        // eta cut
        if (fTriggerMultiplicityEta > 0 && TMath::Abs(iparticle->Eta()) > fTriggerMultiplicityEta)
          continue;
+       //multiplicity check for a given eta range
+       if ((fTriggerMultiplicityEtaMin != fTriggerMultiplicityEtaMax) && 
+           (iparticle->Eta() < fTriggerMultiplicityEtaMin || iparticle->Eta() > fTriggerMultiplicityEtaMax))
+         continue;
        // pt cut
        if (iparticle->Pt() < fTriggerMultiplicityPtMin) 
            continue;
@@ -1112,9 +1153,10 @@ Int_t  AliGenPythia::GenerateMB()
 
     //Introducing child cuts in case kPyW, kPyZ, kPyMb, and kPyMbNonDiff
     if ( (
-    fProcess == kPyWPWHG ||  /// !!!!!!!!!!!!!!!! Added for W with POWHEG !!!!!!!!!! :)
+    fProcess == kPyWPWHG ||
     fProcess == kPyW ||
          fProcess == kPyZ ||
+    fProcess == kPyZgamma ||
          fProcess == kPyMbDefault ||
          fProcess == kPyMb ||
          fProcess == kPyMbAtlasTuneMC09 ||
@@ -1322,12 +1364,13 @@ void AliGenPythia::MakeHeader()
            ((AliGenPythiaEventHeader*) fHeader)->SetZQuench(z);
     }
 //
-// Store pt^hard 
+// Store pt^hard and cross-section
     ((AliGenPythiaEventHeader*) fHeader)->SetPtHard(fPythia->GetVINT(47));
+    ((AliGenPythiaEventHeader*) fHeader)->SetXsection(fPythia->GetPARI(1)); 
                
 //
 // Store Event Weight
-               ((AliGenPythiaEventHeader*) fHeader)->SetEventWeight(fPythia->GetPARI(7));
+    ((AliGenPythiaEventHeader*) fHeader)->SetEventWeight(fPythia->GetPARI(7));
                                
 //
 //  Pass header