ROOT logo
/***************************************************************************
 *  Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                         *
 *  Author: ALICE OFFLICE.                                                 *
 *  Contributors are mentioned in the code where appropriate.              *
 *                                                                         *
 *  Permission to use, copy, modify and distribute this software and its   *
 *  documentation strictly for non-commercial purposes is hereby granted   *
 *  without fee, provided that the above copyright notice appears in all   *
 *  copies and that both the copyright notice and this permission notice   *
 *  appear in the supporting documentation. The authors make no claims     *
 *  about the suitability of this software for any purpose. It is          *
 *  provided "as is" without express or implied warranty.                  *
 *                                                                         *
 ***************************************************************************
     $Satyajit Jena || alien:sjena Sun Apr 21 14:05:19 CEST 2013$
                                                                          
       Sterring macro for fast production of MC events - Followed from 
       the original macro of fastGenAmpt.C     
     
     Implemented Generators: (Version 1.0: Sun Apr 21 14:05:19 CEST 2013)
     ----------------------------------------------------------------
      kPythia6,            kPythia8,               kPythia6D6T,       
      kPythiaPerugia0,     kPythia6ATLAS,          
      kPythiaJets,         
      kPhojet,                
      kDPMjet,             kDPMjet_pA, 
      kAmptDefault,        kAmptStringMelting,          kAmptStringMeltingNoART,
      kAmptpA,                kAmptFlow,
      kAmptReducedFlow,

     FIXME: 
     kPythia6ATLAS_Flat, 
     kHijing,             kHijing2000,            kHijing_pA,             

                                                                
 ***************************************************************************/

#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
#include <TStopwatch.h>
#include <TDatime.h>
#include <TRandom.h>
#include <TFile.h>
#include <TTree.h>
#include <TMath.h>
#include <TParticle.h>
#include <TPDGCode.h>
#include <TDatabasePDG.h>
#include <TRandom3.h>
#include <TChain.h>
#include "AliRun.h"
#include "AliRunLoader.h"
#include "AliHeader.h"
#include "AliStack.h"
#include "AliPDG.h"
#include "AliGenAmpt.h"
#include "TAmpt.h"
#include "PYTHIA6/AliDecayerPythia.h"
#include <TVirtualMC.h>
#include <TF1.h>
#include "STEER/AliConfig.h"
#include "STEER/AliGenerator.h"
#include "STEER/AliLog.h"
#include "EVGEN/AliGenHIJINGpara.h"
#include "THijing/AliGenHijing.h"
#include "EVGEN/AliGenCocktail.h"
#include "EVGEN/AliGenSlowNucleons.h"
#include "EVGEN/AliSlowNucleonModelExp.h"
#include "EVGEN/AliGenParam.h"
#include "EVGEN/AliGenMUONlib.h"
#include "EVGEN/AliGenSTRANGElib.h"
#include "EVGEN/AliGenMUONCocktail.h"
#include "EVGEN/AliGenCocktail.h"
#include "EVGEN/AliGenGeVSim.h"
#include "EVGEN/AliGeVSimParticle.h"
#include "PYTHIA6/AliGenPythia.h"
#endif

//___________________________________________________________________________
enum PDC06Proc_t { 
  kPythia6,
  kPythia8, 
  kPythia6D6T, 
  kPythiaPerugia0, 
  kPythia6ATLAS, 
  kPythia6ATLAS_Flat, 
  kPythiaJets,
  kPhojet, 
  kHijing, 
  kHijing2000, 
  kHijing_pA,
  kDPMjet, 
  kDPMjet_pA,
  kAmptDefault,
  kAmpt, 
  kAmptpA,
  kAmptFlowStringMelting,
  kAmptStringMeltingNoART,
  kAmptFlow,
  kAmptReducedFlow,
  kRunMax
};

//___________________________________________________________________________
const char * pprRunName[] = {
  "kPythia6", 
  "kPythia8",
  "kPythia6D6T", 
  "kPythiaPerugia0", 
  "kPythia6ATLAS", 
  "kPythia6ATLAS_Flat", 
  "kPythiaJets", 
  "kPhojet",  
  "kHijing", 
  "kHijing2000", 
  "kHijing_pA",
  "kDPMjet", 
  "kDPMjet_pA", 
  "kAmpt",
  "kAmptpA", 
  "kAmptFlow",
  "kAmptReducedFlow"  
};

enum PprTrigConf_t {kDefaultPPTrig, kDefaultPbPbTrig };
const char * pprTrigConfName[] = {"p-p","Pb-Pb"};

//___________________________________________________________________________
void ProcessEnvironmentVars();
class AliGenPythia;
AliGenerator *MbPythia();
AliGenerator *Pythia8();
AliGenerator *MbPythiaTuneD6T();
AliGenerator *MbPythiaTunePerugia0();
AliGenerator *MbPythiaTuneATLAS();
AliGenerator *MbPythiaTuneATLAS_Flat();
AliGenerator *PythiaJets();
AliGenerator *MbPhojet();
AliGenerator *Hijing();
AliGenerator *Hijing2000();
AliGenerator *Hijing_pA(Bool_t kSlowN);
AliGenerator *DPMjet();
AliGenerator *DPMjet_pA(Bool_t fragments);
AliGenerator *Ampt();
AliGenerator *AmptpA();
AliGenerator* AmptFlow();
AliGenerator *AmptReducedFlow();


//_________________________________________________________________________
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Geterator, field, beam energy

//static Double_t    pBeamEnergy = 4000.0;  // Used during pA runs
//static Double_t  energy  = 2.*pBeamEnergy*TMath::Sqrt(82./208.); //energy in CMS 

static Double_t      energy    = 7000.;
static PDC06Proc_t   proc      = kPythia6;
static Float_t       bMin      = 0.;
static Float_t       bMax      = 100.;
static PprTrigConf_t strig     = kDefaultPPTrig; // default pp trigger configuration


static Double_t  JpsiPol      = 0; // Jpsi polarisation
static Bool_t    JpsiHarderPt = kFALSE; // Jpsi harder pt spectrum (8.8 TeV)
static TString comment;
//static PprTrigConf_t strig    = kDefaultPbPbTrig; // default pp trigger configuration
TDatime dt; 
static UInt_t seed    = dt.Get();

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//_________________________________________________________________________
void fastMcProduction(Int_t nev = 300) {

  ProcessEnvironmentVars();

  gRandom->SetSeed(seed);
  cerr<<" Seed for random number generation = "<<seed<<endl; 
  
#if defined(__CINT__)
  gSystem->Load("liblhapdf");  
  gSystem->Load("libEGPythia6"); 
  
  if (proc == kPythia6 || proc == kPhojet || proc == kDPMjet || proc==kDPMjet_pA) {
    gSystem->Load("libpythia6");        // Pythia 6.2
    gSystem->Load("libAliPythia6");     // ALICE specific implementations
  }
    
  if (proc == kHijing || proc == kHijing2000 || proc == kHijing_pA ) {
    gSystem->Load("libhijing");	
    gSystem->Load("libTHijing");
  } 
  
  else if ( proc == kDPMjet || proc== kDPMjet_pA ) {
    gSystem->Load("libdpmjet"); 
    gSystem->Load("libTDPMjet");
  } 
  
  else if (proc == kAmptDefault || kAmptFlowStringMelting || proc ==  kAmptStringMeltingNoART || proc == kAmptpA || proc == kAmptReducedFlow) {
    gSystem->Load("libampt");  
    gSystem->Load("libTAmpt");
    gSystem->Load("libpythia6.so");
    gSystem->Load("libAliPythia6.so");
  } 

  if (proc == kPythia8) {
    gSystem->Load("libpythia8.so");
    gSystem->Load("libAliPythia8.so");
    gSystem->Setenv("PYTHIA8DATA", gSystem->ExpandPathName("$ALICE_ROOT/PYTHIA8/pythia8145/xmldoc"));
    gSystem->Setenv("LHAPDF",      gSystem->ExpandPathName("$ALICE_ROOT/LHAPDF"));
    gSystem->Setenv("LHAPATH",     gSystem->ExpandPathName("$ALICE_ROOT/LHAPDF/PDFsets"));
  }
#endif


 AliGenerator* gener = 0x0;
 
 cout<<"Run type set to ------------- "<<pprRunName[proc]<<"   " << proc << "    " << kDPMjet_pA<< endl;

 if (proc == kPythia6) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing Mb. PYTHIA >>>>>>>>>>>>>>>>>>>>"); 
   gener = MbPythia();
 } 
 
 else if (proc == kPythia8) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing Mb. Pythia 8 >>>>>>>>>>>>>>>>>>>>"); 
   gener = Pythia8();
 }  
 
 else if (proc == kPythia6D6T) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing Mb. PYTHIA D6T >>>>>>>>>>>>>>>>>>>>"); 
   gener = MbPythiaTuneD6T();
 } 

 else if (proc == kPythiaPerugia0) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing Mb. PYTHIA Perugia0 >>>>>>>>>>>>>>>>>>>>"); 
   gener = MbPythiaTunePerugia0();
 } 
 
 else if (proc == kPythia6ATLAS) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing Mb. PYTHIA ATLAS>>>>>>>>>>>>>>>>>>>>"); 
   gener = MbPythiaTuneATLAS();
 } 
 
 else if (proc == kPythia6ATLAS_Flat) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing Mb. PYTHIA ATLAS_FLAT >>>>>>>>>>>>>>>>>>>>"); 
   gener = MbPythiaTuneATLAS_Flat();
 } 
 
 else if (proc == kPythiaJets ) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing Pythia Jets >>>>>>>>>>>>>>>>>>>>"); 
   gener = PythiaJets();
 } 
 
 else if (proc == kPhojet) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing Mb. PHOJET >>>>>>>>>>>>>>>>>>>>"); 
   gener = MbPhojet();
 } 

 else if (proc == kHijing) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing Mb. HIJING >>>>>>>>>>>>>>>>>>>>"); 
   gener = Hijing();	
 } 
 
 else if (proc == kHijing2000) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing Mb. HIJING 2000 >>>>>>>>>>>>>>>>>>>>"); 
   gener = Hijing2000();	
 }
 
 else if (proc ==kHijing_pA) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing Mb. pA Hijing >>>>>>>>>>>>>>>>>>>>"); 
   gener = Hijing_pA(kTRUE);
 } 
 
 else if (proc == kDPMjet) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing  DMPJet  >>>>>>>>>>>>>>>>>>>>");
   gener = DPMjet();	
 } 

 else if (proc == kDPMjet_pA) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing  DMPJet pA >>>>>>>>>>>>>>>>>>>>");
   gener = DPMjet_pA(kFALSE);	
 } 
 
 else if (proc == kAmptDefault) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing  AMPT Default >>>>>>>>>>>>>>>>>>>>");
   gener = AmptDefault();
 } 

 else if (proc == kAmptStringMelting) {
     Printf("<<<<<<<<<<<<<<<<<<< Processing  AMPT With Flow  >>>>>>>>>>>>>>>>>>>>");
     gener = AmptStringMelting();
 }

 else if (proc == kAmptStringMeltingNoART) {
     Printf("<<<<<<<<<<<<<<<<<<< Processing  AMPT With Flow  >>>>>>>>>>>>>>>>>>>>");
     gener = AmptStringMeltingNoART();
 }

 else if (proc == kAmptpA) {
   Printf("<<<<<<<<<<<<<<<<<<< Processing  AMPT pA  >>>>>>>>>>>>>>>>>>>>");
   gener = AmptpA();
 } 
 

 else if (proc == kAmptReducedFlow) {
   // Specific Fastgen
   Printf("<<<<<<<<<<<<<<<<<<< Processing  AMPT With Reduced Flow >>>>>>>>>>>>>>>>>>>>");
   gener = AmptReducedFlow();
 } 

 else {
   cout << "ERROR : Wrong Procss Selcted !!!" << endl;
   return;
 }


 AliPDG::AddParticlesToPdgDataBase();
 TDatabasePDG::Instance();
 
 const char* filename = "galice.root";
 AliRunLoader* rl = AliRunLoader::Open(filename,"FASTRUN","recreate");
 
 rl->SetCompressionLevel(2);
 rl->SetNumberOfEventsPerFile(nev);
 rl->LoadKinematics("RECREATE");
 rl->MakeTree("E");
 gAlice->SetRunLoader(rl);
 rl->MakeStack();
 AliStack* stack = rl->Stack();
 
 AliHeader* header = rl->GetHeader();
 
 /*
   Float_t sigmaz  = 5.4 / TMath::Sqrt(2.); // [cm]
   Float_t betast  = 3.5;                      // beta* [m]
   Float_t eps     = 3.75e-6;                   // emittance [m]
   Float_t gamma   = energy / 2.0 / 0.938272;  // relativistic gamma [1]
   Float_t sigmaxy = TMath::Sqrt(eps * betast / gamma) / TMath::Sqrt(2.) * 100.;  // [cm]
   printf("\n \n Diamond size x-y: %10.3e z: %10.3e\n \n", sigmaxy, sigmaz);
   gener->SetSigma(sigmaxy, sigmaxy, sigmaz);      // Sigma in (X,Y,Z) (cm) on IP position
   gener->SetVertexSmear(kPerEvent);
 */
 

 gener->Init();
 gener->SetStack(stack);
 
 rl->CdGAFile();
 
 TStopwatch timer;
 timer.Start();
 for (Int_t iev = 0; iev < nev; iev++) {
   cout <<"============================================= Event number "<< iev << endl;
   //  Initialize event
   header->Reset(0,iev);
   rl->SetEventNumber(iev);
   stack->Reset();
   rl->MakeTree("K");
   Int_t nprim = 0;
   Int_t ntrial = 0;
   //  Int_t ndstar = 0;
   stack->Reset();
   stack->ConnectTree(rl->TreeK());
   gener->Generate();
   ntrial++;
   nprim = stack->GetNprimary();
   cout << "Number of particles " << nprim << endl;
   cout << "Number of trials " << ntrial << endl;
   header->SetNprimary(stack->GetNprimary());
   header->SetNtrack(stack->GetNtrack());  
   stack->FinishEvent();
    header->SetStack(stack);
    rl->TreeE()->Fill();
    rl->WriteKinematics("OVERWRITE");
 } // event loop
  timer.Stop();
  timer.Print();
  gener->FinishRun();
  rl->WriteHeader("OVERWRITE");
  gener->Write();
  rl->Write();
}

//___________________________________________________//
void ProcessEnvironmentVars() {
    // Run type
    if (gSystem->Getenv("CONFIG_RUN_TYPE")) {
      for (Int_t iRun = 0; iRun < kRunMax; iRun++) {
        if (strcmp(gSystem->Getenv("CONFIG_RUN_TYPE"), pprRunName[iRun]) == 0) {
          proc = (PDC06Proc_t)iRun;
          cout<<"Run type set to "<<pprRunName[iRun]<<endl;
        }
      }
    }

    
    // Energy
    if (gSystem->Getenv("CONFIG_ENERGY")) {
      energy = atoi(gSystem->Getenv("CONFIG_ENERGY"));
      cout<<"Energy set to "<<energy<<" GeV"<<endl;
    }

    // Random Number seed
    if (gSystem->Getenv("CONFIG_SEED")) {
      seed = atoi(gSystem->Getenv("CONFIG_SEED"));
    }

    // Impact param
    if (gSystem->Getenv("CONFIG_BMIN")) {
      bMin = atof(gSystem->Getenv("CONFIG_BMIN"));
    }

    if (gSystem->Getenv("CONFIG_BMAX")) {
      bMax = atof(gSystem->Getenv("CONFIG_BMAX"));
    }
    cout<<"Impact parameter in ["<<bMin<<","<<bMax<<"]"<<endl;
}



//______________________________________________________________________
AliGenerator* MbPythia() // Mb Pythia
{
      comment = comment.Append(" pp: Pythia low-pt");
      AliGenPythia* pythia = new AliGenPythia(-1); 
      /* pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);*/
      pythia->SetProcess(kPyMb);
      pythia->SetEnergyCMS(energy);
      
      return pythia;
}


//______________________________________________________________________
AliGenerator* Pythia8()
{
  AliGenPythiaPlus* gener = new AliGenPythiaPlus(AliPythia8::Instance());
  gener->SetProcess(kPyMbDefault);
  gener->SetEnergyCMS(energy);
  gener->SetEventListRange(-1, 2);
  return gener;
}



//______________________________________________________________________
AliGenerator* MbPythiaTuneD6T()
{
      comment = comment.Append(" pp: Pythia low-pt");
      AliGenPythia* pythia = new AliGenPythia(-1); 
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyMb);
      pythia->SetEnergyCMS(energy);
//    Tune
//    109     D6T : Rick Field's CDF Tune D6T (NB: needs CTEQ6L pdfs externally)
      pythia->SetTune(109); // F I X 
      pythia->SetStrucFunc(kCTEQ6l);
//
      return pythia;
}

//______________________________________________________________________
AliGenerator* MbPythiaTunePerugia0()
{
      comment = comment.Append(" pp: Pythia low-pt (Perugia0)");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1); 
      /* pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);*/
      pythia->SetProcess(kPyMb);
      pythia->SetEnergyCMS(energy);
//    Tune
//    320     Perugia 0
      pythia->SetTune(320); 
      pythia->UseNewMultipleInteractionsScenario();
//
      return pythia;
}

//______________________________________________________________________
AliGenerator* MbPythiaTuneATLAS()
{
      comment = comment.Append(" pp: Pythia low-pt");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1); 
      /*   pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);*/
      pythia->SetProcess(kPyMb);
      pythia->SetEnergyCMS(energy);
//    Tune
//    C   306 ATLAS-CSC: Arthur Moraes' (new) ATLAS tune (needs CTEQ6L externally)
      pythia->SetTune(306);
      pythia->SetStrucFunc(kCTEQ6l);
//
      return pythia;
}


//______________________________________________________________________
AliGenerator* MbPythiaTuneATLAS_Flat()
{
  AliGenPythia* pythia = MbPythiaTuneATLAS();
  
  comment = comment.Append("; flat multiplicity distribution");
  
  // set high multiplicity trigger
  // this weight achieves a flat multiplicity distribution
  TH1 *weight = new TH1D("weight","weight",201,-0.5,200.5);
  weight->SetBinContent(1,5.49443);
  weight->SetBinContent(2,8.770816);
  weight->SetBinContent(6,0.4568624);
  weight->SetBinContent(7,0.2919915);
  weight->SetBinContent(8,0.6674189);
  weight->SetBinContent(9,0.364737);
  weight->SetBinContent(10,0.8818444);
  weight->SetBinContent(11,0.531885);
  weight->SetBinContent(12,1.035197);
  weight->SetBinContent(13,0.9394057);
  weight->SetBinContent(14,0.9643193);
  weight->SetBinContent(15,0.94543);
  weight->SetBinContent(16,0.9426507);
  weight->SetBinContent(17,0.9423649);
  weight->SetBinContent(18,0.789456);
  weight->SetBinContent(19,1.149026);
  weight->SetBinContent(20,1.100491);
  weight->SetBinContent(21,0.6350525);
  weight->SetBinContent(22,1.351941);
  weight->SetBinContent(23,0.03233504);
  weight->SetBinContent(24,0.9574557);
  weight->SetBinContent(25,0.868133);
  weight->SetBinContent(26,1.030998);
  weight->SetBinContent(27,1.08897);
  weight->SetBinContent(28,1.251382);
  weight->SetBinContent(29,0.1391099);
  weight->SetBinContent(30,1.192876);
  weight->SetBinContent(31,0.448944);
  weight->SetBinContent(32,1);
  weight->SetBinContent(33,1);
  weight->SetBinContent(34,1);
  weight->SetBinContent(35,1);
  weight->SetBinContent(36,0.9999997);
  weight->SetBinContent(37,0.9999997);
  weight->SetBinContent(38,0.9999996);
  weight->SetBinContent(39,0.9999996);
  weight->SetBinContent(40,0.9999995);
  weight->SetBinContent(41,0.9999993);
  weight->SetBinContent(42,1);
  weight->SetBinContent(43,1);
  weight->SetBinContent(44,1);
  weight->SetBinContent(45,1);
  weight->SetBinContent(46,1);
  weight->SetBinContent(47,0.9999999);
  weight->SetBinContent(48,0.9999998);
  weight->SetBinContent(49,0.9999998);
  weight->SetBinContent(50,0.9999999);
  weight->SetBinContent(51,0.9999999);
  weight->SetBinContent(52,0.9999999);
  weight->SetBinContent(53,0.9999999);
  weight->SetBinContent(54,0.9999998);
  weight->SetBinContent(55,0.9999998);
  weight->SetBinContent(56,0.9999998);
  weight->SetBinContent(57,0.9999997);
  weight->SetBinContent(58,0.9999996);
  weight->SetBinContent(59,0.9999995);
  weight->SetBinContent(60,1);
  weight->SetBinContent(61,1);
  weight->SetBinContent(62,1);
  weight->SetBinContent(63,1);
  weight->SetBinContent(64,1);
  weight->SetBinContent(65,0.9999999);
  weight->SetBinContent(66,0.9999998);
  weight->SetBinContent(67,0.9999998);
  weight->SetBinContent(68,0.9999999);
  weight->SetBinContent(69,1);
  weight->SetBinContent(70,1);
  weight->SetBinContent(71,0.9999997);
  weight->SetBinContent(72,0.9999995);
  weight->SetBinContent(73,0.9999994);
  weight->SetBinContent(74,1);
  weight->SetBinContent(75,1);
  weight->SetBinContent(76,1);
  weight->SetBinContent(77,1);
  weight->SetBinContent(78,0.9999999);
  weight->SetBinContent(79,1);
  weight->SetBinContent(80,1);
  weight->SetEntries(526);
  Int_t limit = weight->GetRandom();
  pythia->SetTriggerChargedMultiplicity(limit, 1.4);
  comment = comment.Append(Form("; multiplicity threshold set to %d in |eta| < 1.4", limit));
  return pythia;
}

//______________________________________________________________________
AliGenerator* PythiaJets()
{
      comment = comment.Append(" pp: Pythia low-pt");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1); 
      /*   pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);*/
      pythia->SetProcess(kPyJets);
      pythia->SetEnergyCMS(energy);
      pythia->SetStrucFunc(kCTEQ6l);
      //  pythia->SetPtHard(50, 1000);
//
      return pythia;
}



//___________________________________________________________________
AliGenerator* MbPhojet()
{
  comment = comment.Append(" pp: Pythia low-pt");
#if defined(__CINT__)
  gSystem->Load("libdpmjet");      // Parton density functions
  gSystem->Load("libTDPMjet");      // Parton density functions
#endif
  AliGenDPMjet* dpmjet = new AliGenDPMjet(-1); 

  /*  dpmjet->SetMomentumRange(0, 999999.);
  dpmjet->SetThetaRange(0., 180.);
  dpmjet->SetYRange(-12.,12.);
  dpmjet->SetPtRange(0,1000.);*/

  dpmjet->SetProcess(kDpmMb);
  dpmjet->SetEnergyCMS(energy);
  return dpmjet;
}

//__________________________________________________________________
AliGenerator* Hijing()
{
    AliGenHijing *gener = new AliGenHijing(-1);
    // centre of mass energy 
    gener->SetEnergyCMS(energy);
    gener->SetImpactParameterRange(bMin, bMax);	
    // reference frame
    gener->SetReferenceFrame("CMS");
    // projectile
    gener->SetProjectile("A", 208, 82);
    gener->SetTarget    ("A", 208, 82);
    // tell hijing to keep the full parent child chain
    gener->KeepFullEvent();
    // enable jet quenching
    gener->SetJetQuenching(1);
    // enable shadowing
    gener->SetDecaysOff(0);
    gener->SetShadowing(1);
    // Don't track spectators
    gener->SetSpectators(0);
    // kinematic selection
    gener->SetSelectAll(0);
    return gener;
}


//__________________________________________________________________
AliGenerator* Hijing2000()
{
  AliGenHijing *gener = (AliGenHijing*) Hijing();
  gener->SetJetQuenching(0);	
  gener->SetPtHardMin (2.3);
  return gener;
}



//_____________________________________________________________
AliGenerator* Hijing_pA(Bool_t kSlowN) {
  AliGenCocktail *gener = 0x0;
  if (kSlowN) {
    gener  = new AliGenCocktail();
    gener->SetProjectile("A", 208, 82);
    gener->SetTarget    ("P",   1,  1);
    gener->SetEnergyCMS(energy);
  }
  
  AliGenHijing   *hijing = new AliGenHijing(-1);
  // centre of mass energy 
  hijing->SetEnergyCMS(energy);
  // impact parameter range
  hijing->SetImpactParameterRange(0., 100.);
  // reference frame
  hijing->SetReferenceFrame("CMS");
  hijing->SetBoostLHC(1);
  // projectile
  hijing->SetProjectile("A", 208, 82);
  hijing->SetTarget    ("P", 1, 1);
  // tell hijing to keep the full parent child chain
  hijing->KeepFullEvent();
  // enable jet quenching
  hijing->SetJetQuenching(0);
  // enable shadowing
  hijing->SetShadowing(1);
  // kinematic selection
  hijing->SetSelectAll(0);
  
  if (!kSlowN) {
    // DO track spectators
    hijing->SetSpectators(1);
    return hijing;
  }
  else {
    // Cocktail with slow nucleons generator
    // DO NOT track spectators
    hijing->SetSpectators(0);
    AliGenSlowNucleons* gray   = new AliGenSlowNucleons(1);
    AliCollisionGeometry* coll = hijing->CollisionGeometry();
    AliSlowNucleonModelExp* model = new AliSlowNucleonModelExp();
    //  Not yet in the release...
    //	  model->SetSaturation(kTRUE);
    gray->SetSlowNucleonModel(model);
    gray->SetTarget(208,82);
    gray->SetThetaDist(1);
    gray->SetProtonDirection(1);
    //	  gray->SetDebug(1);
    gray->SetNominalCmsEnergy(2.*pBeamEnergy);
    gray->NeedsCollisionGeometry();
    gray->SetCollisionGeometry(coll);
    
    gener->AddGenerator(hijing, "Hijing pPb", 1);
    gener->AddGenerator(gray, "Gray Particles", 1);
    
    return gener;
  }
}



//__________________________________________________________________
AliGenerator* DPMjet()
{
  AliGenDPMjet* dpmjet = new AliGenDPMjet(-1); 
  dpmjet->SetEnergyCMS(energy);
  dpmjet->SetProjectile("A", 208, 82);
  dpmjet->SetTarget    ("A", 208, 82);
  dpmjet->SetImpactParameterRange(bMin, bMax);
  dpmjet->SetPi0Decay(0);
  return dpmjet;
}


//____________________________________________
AliGenerator* DPMjet_pA(Bool_t fragments)
{
  AliGenDPMjet *gener = new AliGenDPMjet(-1);
  //  A-p
  gener->SetProjectile("A", 208, 82);
  gener->SetTarget("P", 1, 1);
  //
  gener->SetEnergyCMS(energy);
  gener->SetProjectileBeamEnergy(82.*pBeamEnergy/208.);

  //
  gener->SetProcess(kDpmMb);
  gener->SetImpactParameterRange(0., 100.);
  // DO NOT BOOST !
  //  gener->SetBoostLHC(1);
  //
  gener->SetFragmentProd(fragments);
  
  return gener;

}

//__________________________________________________________________
AliGenerator* AmptDefault()
{
  AliGenAmpt *genHi = new AliGenAmpt(-1);
  //=========================================================================
  // THE DECAYER
  AliDecayer *decayer = new AliDecayerPythia();
  cout << "*****************************************" << endl;
  genHi->SetForceDecay( kHadronicD );
  genHi->SetDecayer( decayer );
  //=========================================================================
  genHi->SetEnergyCMS(energy);
  genHi->SetReferenceFrame("CMS");
  genHi->SetProjectile("A",208,82);
  genHi->SetTarget("A",208,82);
    
  genHi->SetIsoft(1); //1: defaul - 4: string melting
  genHi->SetStringFrag(0.5,0.9); //Lund string frgmentation parameters
  genHi->SetPtHardMin (3);
  //genHi->SetImpactParameterRange(9.,9.5);
  genHi->SetImpactParameterRange(bMin,bMax);
    
  // Xmu = 3.2 fm^-1 and as = 0.33 ==> sigma_{partonic} = 1.5mb
  // Ntmax = 150
  // v_2{2} = 0.102105 +/- 0.000266894
  // v_2{4} = 0.0829477 +/- 0.00106158
    
  genHi->SetNtMax(150);        // NTMAX: number of timesteps (D=150)
  genHi->SetXmu(3.2264);        // parton screening mass in fm^(-1) (D=3.2264d0)
    
  genHi->SetJetQuenching(0);  // enable jet quenching
  genHi->SetShadowing(1);     // enable shadowing
  genHi->SetDecaysOff(1);     // neutral pion and heavy particle decays switched off
  genHi->SetSpectators(0);    // track spectators
  //Boost into LHC lab frame
  genHi->SetBoostLHC(1);
  //  genHi->Init();
  genHi->SetRandomReactionPlane(kTRUE);
 
  return genHi;
}

//__________________________________________________________________
AliGenerator* AmptStringMelting()
{
  AliGenAmpt *genHi = new AliGenAmpt(-1);
  //=========================================================================
  // THE DECAYER
  AliDecayer *decayer = new AliDecayerPythia();
  cout << "*****************************************" << endl;
  genHi->SetForceDecay( kHadronicD );
  genHi->SetDecayer( decayer );
  //=========================================================================
  genHi->SetEnergyCMS(energy);
  genHi->SetReferenceFrame("CMS");
  genHi->SetProjectile("A",208,82);
  genHi->SetTarget("A",208,82);
    
  genHi->SetIsoft(4); //1: defaul - 4: string melting
  genHi->SetStringFrag(0.5,0.9); //Lund string frgmentation parameters
  genHi->SetPtHardMin (3);
  //genHi->SetImpactParameterRange(9.,9.5);
  genHi->SetImpactParameterRange(bMin,bMax);

  // Xmu = 3.2 fm^-1 and as = 0.33 ==> sigma_{partonic} = 1.5mb
  // Ntmax = 150
  // v_2{2} = 0.102105 +/- 0.000266894
  // v_2{4} = 0.0829477 +/- 0.00106158

  genHi->SetNtMax(150);        // NTMAX: number of timesteps (D=150)
  genHi->SetXmu(3.2264);        // parton screening mass in fm^(-1) (D=3.2264d0)

  genHi->SetJetQuenching(0);  // enable jet quenching
  genHi->SetShadowing(1);     // enable shadowing
  genHi->SetDecaysOff(1);     // neutral pion and heavy particle decays switched off
  genHi->SetSpectators(0);    // track spectators
  //Boost into LHC lab frame
  genHi->SetBoostLHC(1);
//  genHi->Init();
  genHi->SetRandomReactionPlane(kTRUE);
  return genHi;

}

//__________________________________________________________________
AliGenerator* AmptStringMeltingNoART()
{
    AliGenAmpt *genHi = new AliGenAmpt(-1);
    //=========================================================================
    // THE DECAYER
    AliDecayer *decayer = new AliDecayerPythia();
    cout << "*****************************************" << endl;
    genHi->SetForceDecay( kHadronicD );
    genHi->SetDecayer( decayer );
    //=========================================================================
    genHi->SetEnergyCMS(energy);
    genHi->SetReferenceFrame("CMS");
    genHi->SetProjectile("A",208,82);
    genHi->SetTarget("A",208,82);
    
    genHi->SetIsoft(4); //1: defaul - 4: string melting
    genHi->SetStringFrag(0.5,0.9); //Lund string frgmentation parameters
    genHi->SetPtHardMin (3);
    //genHi->SetImpactParameterRange(9.,9.5);
    genHi->SetImpactParameterRange(bMin,bMax);
    
    // Xmu = 3.2 fm^-1 and as = 0.33 ==> sigma_{partonic} = 1.5mb
    // Ntmax = 150
    // v_2{2} = 0.102105 +/- 0.000266894
    // v_2{4} = 0.0829477 +/- 0.00106158
    
    genHi->SetNtMax(3);        // NTMAX: number of timesteps (D=150)
    genHi->SetXmu(3.2264);        // parton screening mass in fm^(-1) (D=3.2264d0)
    
    genHi->SetJetQuenching(0);  // enable jet quenching
    genHi->SetShadowing(1);     // enable shadowing
    genHi->SetDecaysOff(1);     // neutral pion and heavy particle decays switched off
    genHi->SetSpectators(0);    // track spectators
    //Boost into LHC lab frame
    genHi->SetBoostLHC(1);
    //  genHi->Init();
    genHi->SetRandomReactionPlane(kTRUE);
    return genHi;
    
}


//__________________________________________________________________
AliGenerator* AmptReducedFlow()
{
  AliGenAmpt *genHi = new AliGenAmpt(-1);
  //=========================================================================
  // THE DECAYER
  AliDecayer *decayer = new AliDecayerPythia();
  cout << "*****************************************" << endl;
  genHi->SetForceDecay( kHadronicD );
  genHi->SetDecayer( decayer );
  //=========================================================================
  genHi->SetEnergyCMS(energy);
  genHi->SetReferenceFrame("CMS");
  genHi->SetProjectile("A",208,82);
  genHi->SetTarget("A",208,82);
    
  genHi->SetIsoft(4); //1: defaul - 4: string melting
  genHi->SetStringFrag(0.5,0.9); //Lund string frgmentation parameters
  genHi->SetPtHardMin (3);
  //genHi->SetImpactParameterRange(9.,9.5);
  genHi->SetImpactParameterRange(bMin,bMax);

  // Xmu = 12.4 fm^-1 and as = 0.33 ==> sigma_{partonic} = 0.1mb
  // Ntmax = 20
  // flow estimates from Q-cumulants
  // (POI, without weights)
  // v_2{2} = 0.0549735 +/- 0.000270249
  // v_2{4} = 0.0421905 +/- 0.00189449

  genHi->SetNtMax(20);        // NTMAX: number of timesteps (D=150)
  genHi->SetXmu(12.4);        // parton screening mass in fm^(-1) (D=3.2264d0)

  genHi->SetJetQuenching(0);  // enable jet quenching
  genHi->SetShadowing(1);     // enable shadowing
  genHi->SetDecaysOff(1);     // neutral pion and heavy particle decays switched off
  genHi->SetSpectators(0);    // track spectators
  //Boost into LHC lab frame
  genHi->SetBoostLHC(1);
 // genHi->Init();
  genHi->SetRandomReactionPlane(kTRUE);
  return genHi;

}

//__________________________________________________________________
AliGenerator* AmptpA()
{
    AliGenAmpt *genHi = new AliGenAmpt(-1);
    //=========================================================================
    // THE DECAYER
    AliDecayer *decayer = new AliDecayerPythia();
    cout << "*****************************************" << endl;
    genHi->SetForceDecay( kHadronicD );
    genHi->SetDecayer( decayer );
    //=========================================================================
    genHi->SetEnergyCMS(energy);
    genHi->SetReferenceFrame("CMS");
    genHi->SetProjectile("A", 208, 82);
    genHi->SetTarget    ("P", 1, 1);
    genHi->SetIsoft(4); //1: defaul - 4: string melting
    genHi->SetStringFrag(0.5,0.9); //Lund string frgmentation parameters
    genHi->SetPtHardMin (3);
    //genHi->SetImpactParameterRange(9.,9.5);
    genHi->SetImpactParameterRange(bMin,bMax);
    genHi->SetNtMax(1500); //NTMAX: number of timesteps (D=150)
    genHi->SetXmu(3.2264); //parton screening mass in fm^(-1) (D=3.2264d0)
    genHi->SetJetQuenching(0); // enable jet quenching
    genHi->SetShadowing(1);    // enable shadowing
    genHi->SetDecaysOff(1);    // neutral pion and heavy particle decays switched off
    genHi->SetSpectators(0);   // track spectators
    //Boost into LHC lab frame
    genHi->SetBoostLHC(1);
    //  genHi->Init();
    genHi->SetRandomReactionPlane(kTRUE);
    return genHi;
    
}
 fastMcProduction.C:1
 fastMcProduction.C:2
 fastMcProduction.C:3
 fastMcProduction.C:4
 fastMcProduction.C:5
 fastMcProduction.C:6
 fastMcProduction.C:7
 fastMcProduction.C:8
 fastMcProduction.C:9
 fastMcProduction.C:10
 fastMcProduction.C:11
 fastMcProduction.C:12
 fastMcProduction.C:13
 fastMcProduction.C:14
 fastMcProduction.C:15
 fastMcProduction.C:16
 fastMcProduction.C:17
 fastMcProduction.C:18
 fastMcProduction.C:19
 fastMcProduction.C:20
 fastMcProduction.C:21
 fastMcProduction.C:22
 fastMcProduction.C:23
 fastMcProduction.C:24
 fastMcProduction.C:25
 fastMcProduction.C:26
 fastMcProduction.C:27
 fastMcProduction.C:28
 fastMcProduction.C:29
 fastMcProduction.C:30
 fastMcProduction.C:31
 fastMcProduction.C:32
 fastMcProduction.C:33
 fastMcProduction.C:34
 fastMcProduction.C:35
 fastMcProduction.C:36
 fastMcProduction.C:37
 fastMcProduction.C:38
 fastMcProduction.C:39
 fastMcProduction.C:40
 fastMcProduction.C:41
 fastMcProduction.C:42
 fastMcProduction.C:43
 fastMcProduction.C:44
 fastMcProduction.C:45
 fastMcProduction.C:46
 fastMcProduction.C:47
 fastMcProduction.C:48
 fastMcProduction.C:49
 fastMcProduction.C:50
 fastMcProduction.C:51
 fastMcProduction.C:52
 fastMcProduction.C:53
 fastMcProduction.C:54
 fastMcProduction.C:55
 fastMcProduction.C:56
 fastMcProduction.C:57
 fastMcProduction.C:58
 fastMcProduction.C:59
 fastMcProduction.C:60
 fastMcProduction.C:61
 fastMcProduction.C:62
 fastMcProduction.C:63
 fastMcProduction.C:64
 fastMcProduction.C:65
 fastMcProduction.C:66
 fastMcProduction.C:67
 fastMcProduction.C:68
 fastMcProduction.C:69
 fastMcProduction.C:70
 fastMcProduction.C:71
 fastMcProduction.C:72
 fastMcProduction.C:73
 fastMcProduction.C:74
 fastMcProduction.C:75
 fastMcProduction.C:76
 fastMcProduction.C:77
 fastMcProduction.C:78
 fastMcProduction.C:79
 fastMcProduction.C:80
 fastMcProduction.C:81
 fastMcProduction.C:82
 fastMcProduction.C:83
 fastMcProduction.C:84
 fastMcProduction.C:85
 fastMcProduction.C:86
 fastMcProduction.C:87
 fastMcProduction.C:88
 fastMcProduction.C:89
 fastMcProduction.C:90
 fastMcProduction.C:91
 fastMcProduction.C:92
 fastMcProduction.C:93
 fastMcProduction.C:94
 fastMcProduction.C:95
 fastMcProduction.C:96
 fastMcProduction.C:97
 fastMcProduction.C:98
 fastMcProduction.C:99
 fastMcProduction.C:100
 fastMcProduction.C:101
 fastMcProduction.C:102
 fastMcProduction.C:103
 fastMcProduction.C:104
 fastMcProduction.C:105
 fastMcProduction.C:106
 fastMcProduction.C:107
 fastMcProduction.C:108
 fastMcProduction.C:109
 fastMcProduction.C:110
 fastMcProduction.C:111
 fastMcProduction.C:112
 fastMcProduction.C:113
 fastMcProduction.C:114
 fastMcProduction.C:115
 fastMcProduction.C:116
 fastMcProduction.C:117
 fastMcProduction.C:118
 fastMcProduction.C:119
 fastMcProduction.C:120
 fastMcProduction.C:121
 fastMcProduction.C:122
 fastMcProduction.C:123
 fastMcProduction.C:124
 fastMcProduction.C:125
 fastMcProduction.C:126
 fastMcProduction.C:127
 fastMcProduction.C:128
 fastMcProduction.C:129
 fastMcProduction.C:130
 fastMcProduction.C:131
 fastMcProduction.C:132
 fastMcProduction.C:133
 fastMcProduction.C:134
 fastMcProduction.C:135
 fastMcProduction.C:136
 fastMcProduction.C:137
 fastMcProduction.C:138
 fastMcProduction.C:139
 fastMcProduction.C:140
 fastMcProduction.C:141
 fastMcProduction.C:142
 fastMcProduction.C:143
 fastMcProduction.C:144
 fastMcProduction.C:145
 fastMcProduction.C:146
 fastMcProduction.C:147
 fastMcProduction.C:148
 fastMcProduction.C:149
 fastMcProduction.C:150
 fastMcProduction.C:151
 fastMcProduction.C:152
 fastMcProduction.C:153
 fastMcProduction.C:154
 fastMcProduction.C:155
 fastMcProduction.C:156
 fastMcProduction.C:157
 fastMcProduction.C:158
 fastMcProduction.C:159
 fastMcProduction.C:160
 fastMcProduction.C:161
 fastMcProduction.C:162
 fastMcProduction.C:163
 fastMcProduction.C:164
 fastMcProduction.C:165
 fastMcProduction.C:166
 fastMcProduction.C:167
 fastMcProduction.C:168
 fastMcProduction.C:169
 fastMcProduction.C:170
 fastMcProduction.C:171
 fastMcProduction.C:172
 fastMcProduction.C:173
 fastMcProduction.C:174
 fastMcProduction.C:175
 fastMcProduction.C:176
 fastMcProduction.C:177
 fastMcProduction.C:178
 fastMcProduction.C:179
 fastMcProduction.C:180
 fastMcProduction.C:181
 fastMcProduction.C:182
 fastMcProduction.C:183
 fastMcProduction.C:184
 fastMcProduction.C:185
 fastMcProduction.C:186
 fastMcProduction.C:187
 fastMcProduction.C:188
 fastMcProduction.C:189
 fastMcProduction.C:190
 fastMcProduction.C:191
 fastMcProduction.C:192
 fastMcProduction.C:193
 fastMcProduction.C:194
 fastMcProduction.C:195
 fastMcProduction.C:196
 fastMcProduction.C:197
 fastMcProduction.C:198
 fastMcProduction.C:199
 fastMcProduction.C:200
 fastMcProduction.C:201
 fastMcProduction.C:202
 fastMcProduction.C:203
 fastMcProduction.C:204
 fastMcProduction.C:205
 fastMcProduction.C:206
 fastMcProduction.C:207
 fastMcProduction.C:208
 fastMcProduction.C:209
 fastMcProduction.C:210
 fastMcProduction.C:211
 fastMcProduction.C:212
 fastMcProduction.C:213
 fastMcProduction.C:214
 fastMcProduction.C:215
 fastMcProduction.C:216
 fastMcProduction.C:217
 fastMcProduction.C:218
 fastMcProduction.C:219
 fastMcProduction.C:220
 fastMcProduction.C:221
 fastMcProduction.C:222
 fastMcProduction.C:223
 fastMcProduction.C:224
 fastMcProduction.C:225
 fastMcProduction.C:226
 fastMcProduction.C:227
 fastMcProduction.C:228
 fastMcProduction.C:229
 fastMcProduction.C:230
 fastMcProduction.C:231
 fastMcProduction.C:232
 fastMcProduction.C:233
 fastMcProduction.C:234
 fastMcProduction.C:235
 fastMcProduction.C:236
 fastMcProduction.C:237
 fastMcProduction.C:238
 fastMcProduction.C:239
 fastMcProduction.C:240
 fastMcProduction.C:241
 fastMcProduction.C:242
 fastMcProduction.C:243
 fastMcProduction.C:244
 fastMcProduction.C:245
 fastMcProduction.C:246
 fastMcProduction.C:247
 fastMcProduction.C:248
 fastMcProduction.C:249
 fastMcProduction.C:250
 fastMcProduction.C:251
 fastMcProduction.C:252
 fastMcProduction.C:253
 fastMcProduction.C:254
 fastMcProduction.C:255
 fastMcProduction.C:256
 fastMcProduction.C:257
 fastMcProduction.C:258
 fastMcProduction.C:259
 fastMcProduction.C:260
 fastMcProduction.C:261
 fastMcProduction.C:262
 fastMcProduction.C:263
 fastMcProduction.C:264
 fastMcProduction.C:265
 fastMcProduction.C:266
 fastMcProduction.C:267
 fastMcProduction.C:268
 fastMcProduction.C:269
 fastMcProduction.C:270
 fastMcProduction.C:271
 fastMcProduction.C:272
 fastMcProduction.C:273
 fastMcProduction.C:274
 fastMcProduction.C:275
 fastMcProduction.C:276
 fastMcProduction.C:277
 fastMcProduction.C:278
 fastMcProduction.C:279
 fastMcProduction.C:280
 fastMcProduction.C:281
 fastMcProduction.C:282
 fastMcProduction.C:283
 fastMcProduction.C:284
 fastMcProduction.C:285
 fastMcProduction.C:286
 fastMcProduction.C:287
 fastMcProduction.C:288
 fastMcProduction.C:289
 fastMcProduction.C:290
 fastMcProduction.C:291
 fastMcProduction.C:292
 fastMcProduction.C:293
 fastMcProduction.C:294
 fastMcProduction.C:295
 fastMcProduction.C:296
 fastMcProduction.C:297
 fastMcProduction.C:298
 fastMcProduction.C:299
 fastMcProduction.C:300
 fastMcProduction.C:301
 fastMcProduction.C:302
 fastMcProduction.C:303
 fastMcProduction.C:304
 fastMcProduction.C:305
 fastMcProduction.C:306
 fastMcProduction.C:307
 fastMcProduction.C:308
 fastMcProduction.C:309
 fastMcProduction.C:310
 fastMcProduction.C:311
 fastMcProduction.C:312
 fastMcProduction.C:313
 fastMcProduction.C:314
 fastMcProduction.C:315
 fastMcProduction.C:316
 fastMcProduction.C:317
 fastMcProduction.C:318
 fastMcProduction.C:319
 fastMcProduction.C:320
 fastMcProduction.C:321
 fastMcProduction.C:322
 fastMcProduction.C:323
 fastMcProduction.C:324
 fastMcProduction.C:325
 fastMcProduction.C:326
 fastMcProduction.C:327
 fastMcProduction.C:328
 fastMcProduction.C:329
 fastMcProduction.C:330
 fastMcProduction.C:331
 fastMcProduction.C:332
 fastMcProduction.C:333
 fastMcProduction.C:334
 fastMcProduction.C:335
 fastMcProduction.C:336
 fastMcProduction.C:337
 fastMcProduction.C:338
 fastMcProduction.C:339
 fastMcProduction.C:340
 fastMcProduction.C:341
 fastMcProduction.C:342
 fastMcProduction.C:343
 fastMcProduction.C:344
 fastMcProduction.C:345
 fastMcProduction.C:346
 fastMcProduction.C:347
 fastMcProduction.C:348
 fastMcProduction.C:349
 fastMcProduction.C:350
 fastMcProduction.C:351
 fastMcProduction.C:352
 fastMcProduction.C:353
 fastMcProduction.C:354
 fastMcProduction.C:355
 fastMcProduction.C:356
 fastMcProduction.C:357
 fastMcProduction.C:358
 fastMcProduction.C:359
 fastMcProduction.C:360
 fastMcProduction.C:361
 fastMcProduction.C:362
 fastMcProduction.C:363
 fastMcProduction.C:364
 fastMcProduction.C:365
 fastMcProduction.C:366
 fastMcProduction.C:367
 fastMcProduction.C:368
 fastMcProduction.C:369
 fastMcProduction.C:370
 fastMcProduction.C:371
 fastMcProduction.C:372
 fastMcProduction.C:373
 fastMcProduction.C:374
 fastMcProduction.C:375
 fastMcProduction.C:376
 fastMcProduction.C:377
 fastMcProduction.C:378
 fastMcProduction.C:379
 fastMcProduction.C:380
 fastMcProduction.C:381
 fastMcProduction.C:382
 fastMcProduction.C:383
 fastMcProduction.C:384
 fastMcProduction.C:385
 fastMcProduction.C:386
 fastMcProduction.C:387
 fastMcProduction.C:388
 fastMcProduction.C:389
 fastMcProduction.C:390
 fastMcProduction.C:391
 fastMcProduction.C:392
 fastMcProduction.C:393
 fastMcProduction.C:394
 fastMcProduction.C:395
 fastMcProduction.C:396
 fastMcProduction.C:397
 fastMcProduction.C:398
 fastMcProduction.C:399
 fastMcProduction.C:400
 fastMcProduction.C:401
 fastMcProduction.C:402
 fastMcProduction.C:403
 fastMcProduction.C:404
 fastMcProduction.C:405
 fastMcProduction.C:406
 fastMcProduction.C:407
 fastMcProduction.C:408
 fastMcProduction.C:409
 fastMcProduction.C:410
 fastMcProduction.C:411
 fastMcProduction.C:412
 fastMcProduction.C:413
 fastMcProduction.C:414
 fastMcProduction.C:415
 fastMcProduction.C:416
 fastMcProduction.C:417
 fastMcProduction.C:418
 fastMcProduction.C:419
 fastMcProduction.C:420
 fastMcProduction.C:421
 fastMcProduction.C:422
 fastMcProduction.C:423
 fastMcProduction.C:424
 fastMcProduction.C:425
 fastMcProduction.C:426
 fastMcProduction.C:427
 fastMcProduction.C:428
 fastMcProduction.C:429
 fastMcProduction.C:430
 fastMcProduction.C:431
 fastMcProduction.C:432
 fastMcProduction.C:433
 fastMcProduction.C:434
 fastMcProduction.C:435
 fastMcProduction.C:436
 fastMcProduction.C:437
 fastMcProduction.C:438
 fastMcProduction.C:439
 fastMcProduction.C:440
 fastMcProduction.C:441
 fastMcProduction.C:442
 fastMcProduction.C:443
 fastMcProduction.C:444
 fastMcProduction.C:445
 fastMcProduction.C:446
 fastMcProduction.C:447
 fastMcProduction.C:448
 fastMcProduction.C:449
 fastMcProduction.C:450
 fastMcProduction.C:451
 fastMcProduction.C:452
 fastMcProduction.C:453
 fastMcProduction.C:454
 fastMcProduction.C:455
 fastMcProduction.C:456
 fastMcProduction.C:457
 fastMcProduction.C:458
 fastMcProduction.C:459
 fastMcProduction.C:460
 fastMcProduction.C:461
 fastMcProduction.C:462
 fastMcProduction.C:463
 fastMcProduction.C:464
 fastMcProduction.C:465
 fastMcProduction.C:466
 fastMcProduction.C:467
 fastMcProduction.C:468
 fastMcProduction.C:469
 fastMcProduction.C:470
 fastMcProduction.C:471
 fastMcProduction.C:472
 fastMcProduction.C:473
 fastMcProduction.C:474
 fastMcProduction.C:475
 fastMcProduction.C:476
 fastMcProduction.C:477
 fastMcProduction.C:478
 fastMcProduction.C:479
 fastMcProduction.C:480
 fastMcProduction.C:481
 fastMcProduction.C:482
 fastMcProduction.C:483
 fastMcProduction.C:484
 fastMcProduction.C:485
 fastMcProduction.C:486
 fastMcProduction.C:487
 fastMcProduction.C:488
 fastMcProduction.C:489
 fastMcProduction.C:490
 fastMcProduction.C:491
 fastMcProduction.C:492
 fastMcProduction.C:493
 fastMcProduction.C:494
 fastMcProduction.C:495
 fastMcProduction.C:496
 fastMcProduction.C:497
 fastMcProduction.C:498
 fastMcProduction.C:499
 fastMcProduction.C:500
 fastMcProduction.C:501
 fastMcProduction.C:502
 fastMcProduction.C:503
 fastMcProduction.C:504
 fastMcProduction.C:505
 fastMcProduction.C:506
 fastMcProduction.C:507
 fastMcProduction.C:508
 fastMcProduction.C:509
 fastMcProduction.C:510
 fastMcProduction.C:511
 fastMcProduction.C:512
 fastMcProduction.C:513
 fastMcProduction.C:514
 fastMcProduction.C:515
 fastMcProduction.C:516
 fastMcProduction.C:517
 fastMcProduction.C:518
 fastMcProduction.C:519
 fastMcProduction.C:520
 fastMcProduction.C:521
 fastMcProduction.C:522
 fastMcProduction.C:523
 fastMcProduction.C:524
 fastMcProduction.C:525
 fastMcProduction.C:526
 fastMcProduction.C:527
 fastMcProduction.C:528
 fastMcProduction.C:529
 fastMcProduction.C:530
 fastMcProduction.C:531
 fastMcProduction.C:532
 fastMcProduction.C:533
 fastMcProduction.C:534
 fastMcProduction.C:535
 fastMcProduction.C:536
 fastMcProduction.C:537
 fastMcProduction.C:538
 fastMcProduction.C:539
 fastMcProduction.C:540
 fastMcProduction.C:541
 fastMcProduction.C:542
 fastMcProduction.C:543
 fastMcProduction.C:544
 fastMcProduction.C:545
 fastMcProduction.C:546
 fastMcProduction.C:547
 fastMcProduction.C:548
 fastMcProduction.C:549
 fastMcProduction.C:550
 fastMcProduction.C:551
 fastMcProduction.C:552
 fastMcProduction.C:553
 fastMcProduction.C:554
 fastMcProduction.C:555
 fastMcProduction.C:556
 fastMcProduction.C:557
 fastMcProduction.C:558
 fastMcProduction.C:559
 fastMcProduction.C:560
 fastMcProduction.C:561
 fastMcProduction.C:562
 fastMcProduction.C:563
 fastMcProduction.C:564
 fastMcProduction.C:565
 fastMcProduction.C:566
 fastMcProduction.C:567
 fastMcProduction.C:568
 fastMcProduction.C:569
 fastMcProduction.C:570
 fastMcProduction.C:571
 fastMcProduction.C:572
 fastMcProduction.C:573
 fastMcProduction.C:574
 fastMcProduction.C:575
 fastMcProduction.C:576
 fastMcProduction.C:577
 fastMcProduction.C:578
 fastMcProduction.C:579
 fastMcProduction.C:580
 fastMcProduction.C:581
 fastMcProduction.C:582
 fastMcProduction.C:583
 fastMcProduction.C:584
 fastMcProduction.C:585
 fastMcProduction.C:586
 fastMcProduction.C:587
 fastMcProduction.C:588
 fastMcProduction.C:589
 fastMcProduction.C:590
 fastMcProduction.C:591
 fastMcProduction.C:592
 fastMcProduction.C:593
 fastMcProduction.C:594
 fastMcProduction.C:595
 fastMcProduction.C:596
 fastMcProduction.C:597
 fastMcProduction.C:598
 fastMcProduction.C:599
 fastMcProduction.C:600
 fastMcProduction.C:601
 fastMcProduction.C:602
 fastMcProduction.C:603
 fastMcProduction.C:604
 fastMcProduction.C:605
 fastMcProduction.C:606
 fastMcProduction.C:607
 fastMcProduction.C:608
 fastMcProduction.C:609
 fastMcProduction.C:610
 fastMcProduction.C:611
 fastMcProduction.C:612
 fastMcProduction.C:613
 fastMcProduction.C:614
 fastMcProduction.C:615
 fastMcProduction.C:616
 fastMcProduction.C:617
 fastMcProduction.C:618
 fastMcProduction.C:619
 fastMcProduction.C:620
 fastMcProduction.C:621
 fastMcProduction.C:622
 fastMcProduction.C:623
 fastMcProduction.C:624
 fastMcProduction.C:625
 fastMcProduction.C:626
 fastMcProduction.C:627
 fastMcProduction.C:628
 fastMcProduction.C:629
 fastMcProduction.C:630
 fastMcProduction.C:631
 fastMcProduction.C:632
 fastMcProduction.C:633
 fastMcProduction.C:634
 fastMcProduction.C:635
 fastMcProduction.C:636
 fastMcProduction.C:637
 fastMcProduction.C:638
 fastMcProduction.C:639
 fastMcProduction.C:640
 fastMcProduction.C:641
 fastMcProduction.C:642
 fastMcProduction.C:643
 fastMcProduction.C:644
 fastMcProduction.C:645
 fastMcProduction.C:646
 fastMcProduction.C:647
 fastMcProduction.C:648
 fastMcProduction.C:649
 fastMcProduction.C:650
 fastMcProduction.C:651
 fastMcProduction.C:652
 fastMcProduction.C:653
 fastMcProduction.C:654
 fastMcProduction.C:655
 fastMcProduction.C:656
 fastMcProduction.C:657
 fastMcProduction.C:658
 fastMcProduction.C:659
 fastMcProduction.C:660
 fastMcProduction.C:661
 fastMcProduction.C:662
 fastMcProduction.C:663
 fastMcProduction.C:664
 fastMcProduction.C:665
 fastMcProduction.C:666
 fastMcProduction.C:667
 fastMcProduction.C:668
 fastMcProduction.C:669
 fastMcProduction.C:670
 fastMcProduction.C:671
 fastMcProduction.C:672
 fastMcProduction.C:673
 fastMcProduction.C:674
 fastMcProduction.C:675
 fastMcProduction.C:676
 fastMcProduction.C:677
 fastMcProduction.C:678
 fastMcProduction.C:679
 fastMcProduction.C:680
 fastMcProduction.C:681
 fastMcProduction.C:682
 fastMcProduction.C:683
 fastMcProduction.C:684
 fastMcProduction.C:685
 fastMcProduction.C:686
 fastMcProduction.C:687
 fastMcProduction.C:688
 fastMcProduction.C:689
 fastMcProduction.C:690
 fastMcProduction.C:691
 fastMcProduction.C:692
 fastMcProduction.C:693
 fastMcProduction.C:694
 fastMcProduction.C:695
 fastMcProduction.C:696
 fastMcProduction.C:697
 fastMcProduction.C:698
 fastMcProduction.C:699
 fastMcProduction.C:700
 fastMcProduction.C:701
 fastMcProduction.C:702
 fastMcProduction.C:703
 fastMcProduction.C:704
 fastMcProduction.C:705
 fastMcProduction.C:706
 fastMcProduction.C:707
 fastMcProduction.C:708
 fastMcProduction.C:709
 fastMcProduction.C:710
 fastMcProduction.C:711
 fastMcProduction.C:712
 fastMcProduction.C:713
 fastMcProduction.C:714
 fastMcProduction.C:715
 fastMcProduction.C:716
 fastMcProduction.C:717
 fastMcProduction.C:718
 fastMcProduction.C:719
 fastMcProduction.C:720
 fastMcProduction.C:721
 fastMcProduction.C:722
 fastMcProduction.C:723
 fastMcProduction.C:724
 fastMcProduction.C:725
 fastMcProduction.C:726
 fastMcProduction.C:727
 fastMcProduction.C:728
 fastMcProduction.C:729
 fastMcProduction.C:730
 fastMcProduction.C:731
 fastMcProduction.C:732
 fastMcProduction.C:733
 fastMcProduction.C:734
 fastMcProduction.C:735
 fastMcProduction.C:736
 fastMcProduction.C:737
 fastMcProduction.C:738
 fastMcProduction.C:739
 fastMcProduction.C:740
 fastMcProduction.C:741
 fastMcProduction.C:742
 fastMcProduction.C:743
 fastMcProduction.C:744
 fastMcProduction.C:745
 fastMcProduction.C:746
 fastMcProduction.C:747
 fastMcProduction.C:748
 fastMcProduction.C:749
 fastMcProduction.C:750
 fastMcProduction.C:751
 fastMcProduction.C:752
 fastMcProduction.C:753
 fastMcProduction.C:754
 fastMcProduction.C:755
 fastMcProduction.C:756
 fastMcProduction.C:757
 fastMcProduction.C:758
 fastMcProduction.C:759
 fastMcProduction.C:760
 fastMcProduction.C:761
 fastMcProduction.C:762
 fastMcProduction.C:763
 fastMcProduction.C:764
 fastMcProduction.C:765
 fastMcProduction.C:766
 fastMcProduction.C:767
 fastMcProduction.C:768
 fastMcProduction.C:769
 fastMcProduction.C:770
 fastMcProduction.C:771
 fastMcProduction.C:772
 fastMcProduction.C:773
 fastMcProduction.C:774
 fastMcProduction.C:775
 fastMcProduction.C:776
 fastMcProduction.C:777
 fastMcProduction.C:778
 fastMcProduction.C:779
 fastMcProduction.C:780
 fastMcProduction.C:781
 fastMcProduction.C:782
 fastMcProduction.C:783
 fastMcProduction.C:784
 fastMcProduction.C:785
 fastMcProduction.C:786
 fastMcProduction.C:787
 fastMcProduction.C:788
 fastMcProduction.C:789
 fastMcProduction.C:790
 fastMcProduction.C:791
 fastMcProduction.C:792
 fastMcProduction.C:793
 fastMcProduction.C:794
 fastMcProduction.C:795
 fastMcProduction.C:796
 fastMcProduction.C:797
 fastMcProduction.C:798
 fastMcProduction.C:799
 fastMcProduction.C:800
 fastMcProduction.C:801
 fastMcProduction.C:802
 fastMcProduction.C:803
 fastMcProduction.C:804
 fastMcProduction.C:805
 fastMcProduction.C:806
 fastMcProduction.C:807
 fastMcProduction.C:808
 fastMcProduction.C:809
 fastMcProduction.C:810
 fastMcProduction.C:811
 fastMcProduction.C:812
 fastMcProduction.C:813
 fastMcProduction.C:814
 fastMcProduction.C:815
 fastMcProduction.C:816
 fastMcProduction.C:817
 fastMcProduction.C:818
 fastMcProduction.C:819
 fastMcProduction.C:820
 fastMcProduction.C:821
 fastMcProduction.C:822
 fastMcProduction.C:823
 fastMcProduction.C:824
 fastMcProduction.C:825
 fastMcProduction.C:826
 fastMcProduction.C:827
 fastMcProduction.C:828
 fastMcProduction.C:829
 fastMcProduction.C:830
 fastMcProduction.C:831
 fastMcProduction.C:832
 fastMcProduction.C:833
 fastMcProduction.C:834
 fastMcProduction.C:835
 fastMcProduction.C:836
 fastMcProduction.C:837
 fastMcProduction.C:838
 fastMcProduction.C:839
 fastMcProduction.C:840
 fastMcProduction.C:841
 fastMcProduction.C:842
 fastMcProduction.C:843
 fastMcProduction.C:844
 fastMcProduction.C:845
 fastMcProduction.C:846
 fastMcProduction.C:847
 fastMcProduction.C:848
 fastMcProduction.C:849
 fastMcProduction.C:850
 fastMcProduction.C:851
 fastMcProduction.C:852
 fastMcProduction.C:853
 fastMcProduction.C:854
 fastMcProduction.C:855
 fastMcProduction.C:856
 fastMcProduction.C:857
 fastMcProduction.C:858
 fastMcProduction.C:859
 fastMcProduction.C:860
 fastMcProduction.C:861
 fastMcProduction.C:862
 fastMcProduction.C:863
 fastMcProduction.C:864
 fastMcProduction.C:865
 fastMcProduction.C:866
 fastMcProduction.C:867
 fastMcProduction.C:868
 fastMcProduction.C:869
 fastMcProduction.C:870
 fastMcProduction.C:871
 fastMcProduction.C:872
 fastMcProduction.C:873
 fastMcProduction.C:874
 fastMcProduction.C:875
 fastMcProduction.C:876
 fastMcProduction.C:877
 fastMcProduction.C:878
 fastMcProduction.C:879
 fastMcProduction.C:880
 fastMcProduction.C:881
 fastMcProduction.C:882
 fastMcProduction.C:883
 fastMcProduction.C:884
 fastMcProduction.C:885
 fastMcProduction.C:886
 fastMcProduction.C:887
 fastMcProduction.C:888
 fastMcProduction.C:889
 fastMcProduction.C:890
 fastMcProduction.C:891
 fastMcProduction.C:892
 fastMcProduction.C:893
 fastMcProduction.C:894
 fastMcProduction.C:895
 fastMcProduction.C:896
 fastMcProduction.C:897
 fastMcProduction.C:898
 fastMcProduction.C:899
 fastMcProduction.C:900
 fastMcProduction.C:901
 fastMcProduction.C:902
 fastMcProduction.C:903
 fastMcProduction.C:904
 fastMcProduction.C:905
 fastMcProduction.C:906
 fastMcProduction.C:907
 fastMcProduction.C:908
 fastMcProduction.C:909
 fastMcProduction.C:910
 fastMcProduction.C:911
 fastMcProduction.C:912
 fastMcProduction.C:913
 fastMcProduction.C:914
 fastMcProduction.C:915
 fastMcProduction.C:916
 fastMcProduction.C:917
 fastMcProduction.C:918
 fastMcProduction.C:919
 fastMcProduction.C:920
 fastMcProduction.C:921
 fastMcProduction.C:922
 fastMcProduction.C:923
 fastMcProduction.C:924
 fastMcProduction.C:925
 fastMcProduction.C:926
 fastMcProduction.C:927
 fastMcProduction.C:928
 fastMcProduction.C:929
 fastMcProduction.C:930
 fastMcProduction.C:931
 fastMcProduction.C:932
 fastMcProduction.C:933
 fastMcProduction.C:934
 fastMcProduction.C:935
 fastMcProduction.C:936
 fastMcProduction.C:937
 fastMcProduction.C:938
 fastMcProduction.C:939
 fastMcProduction.C:940
 fastMcProduction.C:941
 fastMcProduction.C:942
 fastMcProduction.C:943
 fastMcProduction.C:944
 fastMcProduction.C:945
 fastMcProduction.C:946
 fastMcProduction.C:947
 fastMcProduction.C:948
 fastMcProduction.C:949
 fastMcProduction.C:950
 fastMcProduction.C:951
 fastMcProduction.C:952
 fastMcProduction.C:953
 fastMcProduction.C:954
 fastMcProduction.C:955
 fastMcProduction.C:956
 fastMcProduction.C:957
 fastMcProduction.C:958
 fastMcProduction.C:959
 fastMcProduction.C:960
 fastMcProduction.C:961
 fastMcProduction.C:962
 fastMcProduction.C:963
 fastMcProduction.C:964
 fastMcProduction.C:965
 fastMcProduction.C:966
 fastMcProduction.C:967
 fastMcProduction.C:968
 fastMcProduction.C:969
 fastMcProduction.C:970
 fastMcProduction.C:971
 fastMcProduction.C:972
 fastMcProduction.C:973
 fastMcProduction.C:974
 fastMcProduction.C:975
 fastMcProduction.C:976
 fastMcProduction.C:977
 fastMcProduction.C:978
 fastMcProduction.C:979
 fastMcProduction.C:980
 fastMcProduction.C:981
 fastMcProduction.C:982
 fastMcProduction.C:983
 fastMcProduction.C:984
 fastMcProduction.C:985
 fastMcProduction.C:986
 fastMcProduction.C:987
 fastMcProduction.C:988