]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - macros/Config_PDC06.C
Addinig THijing to the native cmake
[u/mrichter/AliRoot.git] / macros / Config_PDC06.C
index b103191475a4734d083b583ea3bdbfd6b0fb1300..9e17d319a5cd27b6c038b52b11f98261ae91d244 100644 (file)
@@ -2,39 +2,51 @@
 // Configuration for the Physics Data Challenge 2006
 //
 
+// One can use the configuration macro in compiled mode by
+// root [0] gSystem->Load("libgeant321");
+// root [0] gSystem->SetIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/include\
+//                   -I$ALICE_ROOT -I$ALICE/geant3/TGeant3");
+// root [0] .x grun.C(1,"Config_PDC06.C++")
+
 #if !defined(__CINT__) || defined(__MAKECINT__)
 #include <Riostream.h>
 #include <TRandom.h>
 #include <TDatime.h>
 #include <TSystem.h>
 #include <TVirtualMC.h>
-#include <TGeant3.h>
+#include <TGeant3TGeo.h>
+#include "EVGEN/AliGenCocktail.h"
+#include "EVGEN/AliGenParam.h"
+#include "EVGEN/AliGenMUONlib.h"
 #include "STEER/AliRunLoader.h"
 #include "STEER/AliRun.h"
 #include "STEER/AliConfig.h"
 #include "PYTHIA6/AliDecayerPythia.h"
 #include "PYTHIA6/AliGenPythia.h"
-#include "STEER/AliMagFMaps.h"
+#include "STEER/AliMagF.h"
 #include "STRUCT/AliBODY.h"
 #include "STRUCT/AliMAG.h"
-#include "STRUCT/AliABSOv0.h"
-#include "STRUCT/AliDIPOv2.h"
-#include "STRUCT/AliHALL.h"
+#include "STRUCT/AliABSOv3.h"
+#include "STRUCT/AliDIPOv3.h"
+#include "STRUCT/AliHALLv3.h"
 #include "STRUCT/AliFRAMEv2.h"
-#include "STRUCT/AliSHILv2.h"
-#include "STRUCT/AliPIPEv0.h"
-#include "ITS/AliITSvPPRasymmFMD.h"
+#include "STRUCT/AliSHILv3.h"
+#include "STRUCT/AliPIPEv3.h"
+#include "ITS/AliITSgeom.h"
+#include "ITS/AliITSv11.h"
 #include "TPC/AliTPCv2.h"
-#include "TOF/AliTOFv4T0.h"
-#include "RICH/AliRICHv1.h"
-#include "ZDC/AliZDCv1.h"
+#include "TOF/AliTOFv6T0.h"
+#include "HMPID/AliHMPIDv3.h"
+#include "ZDC/AliZDCv3.h"
 #include "TRD/AliTRDv1.h"
-#include "FMD/AliFMDv0.h"
+#include "FMD/AliFMDv1.h"
 #include "MUON/AliMUONv1.h"
 #include "PHOS/AliPHOSv1.h"
 #include "PMD/AliPMDv1.h"
-#include "START/AliSTARTv1.h"
-#include "CRT/AliCRTv1.h"
+#include "T0/AliT0v1.h"
+#include "EMCAL/AliEMCALv2.h"
+#include "ACORDE/AliACORDEv1.h"
+#include "VZERO/AliVZEROv7.h"
 #endif
 
 
@@ -46,7 +58,15 @@ enum PDC06Proc_t
   kDPlusPbPb5500,  kDPluspPb8800,  kDPluspp14000,
   kBeautyPbPb5500, kBeautypPb8800, kBeautypp14000, kBeautypp14000wmi, 
 // -- Pythia Mb
-  kPyMbNoHvq, kPyOmegaPlus, kPyOmegaMinus
+  kPyMbNoHvq, kPyOmegaPlus, kPyOmegaMinus, kRunMax
+};
+
+const char * pprRunName[] = {
+  "kCharmPbPb5500",  "kCharmpPb8800",  "kCharmpp14000",  "kCharmpp14000wmi",
+  "kD0PbPb5500",     "kD0pPb8800",     "kD0pp14000",
+  "kDPlusPbPb5500",  "kDPluspPb8800",  "kDPluspp14000",
+  "kBeautyPbPb5500", "kBeautypPb8800", "kBeautypp14000", "kBeautypp14000wmi", 
+  "kPyMbNoHvq", "kPyOmegaPlus", "kPyOmegaMinus"
 };
 
 
@@ -60,21 +80,36 @@ enum YCut_t
 {
   kFull, kBarrel, kMuonArm
 };
-//--- Magnetic Field ---
-enum Mag_t
+//--- Trigger config ---
+enum TrigConf_t
 {
-    k2kG, k4kG, k5kG
+    kDefaultPPTrig, kDefaultPbPbTrig
 };
+
+const char * TrigConfName[] = {
+    "p-p","Pb-Pb"
+};
+
 //--- Functions ---
+class AliGenPythia;
 AliGenPythia *PythiaHVQ(PDC06Proc_t proc);
 AliGenerator *MbCocktail();
 AliGenerator *PyMbTriggered(Int_t pdg);
+void ProcessEnvironmentVars();
+void LoadPythia();
 
 // This part for configuration
-static PDC06Proc_t   proc     = kPyOmegaPlus;
+static PDC06Proc_t   proc     = kPyMbNoHvq;
 static DecayHvFl_t   decHvFl  = kNature; 
 static YCut_t        ycut     = kFull;
-static Mag_t         mag      = k5kG; 
+static AliMagF::BMap_t mag    = AliMagF::k5kG; 
+static TrigConf_t    trig     = kDefaultPPTrig; // default pp trigger configuration
+//========================//
+// Set Random Number seed //
+//========================//
+TDatime dt;
+static UInt_t seed    = dt.Get();
+
 // nEvts = -1  : you get 1 QQbar pair and all the fragmentation and 
 //               decay chain
 // nEvts = N>0 : you get N charm / beauty Hadrons 
@@ -108,19 +143,16 @@ static TString comment;
 
 void Config()
 {
-  //========================//
-  // Set Random Number seed //
-  //========================//
-  TDatime dt;
-  UInt_t curtime = dt.Get();
-  UInt_t procid  = gSystem->GetPid();
-  UInt_t seed    = curtime-procid;
-
-  //  gRandom->SetSeed(seed);
-  //  cerr<<"Seed for random number generation= "<<seed<<endl; 
-  gRandom->SetSeed(12345);
-  
+    
+
+  // Get settings from environment variables
+  ProcessEnvironmentVars();
+  // Load pythia libraries
+  LoadPythia();
+  //
+
+  gRandom->SetSeed(seed);
+  cerr<<"Seed for random number generation= "<<seed<<endl; 
 
   // libraries required by geant321
 #if defined(__CINT__)
@@ -129,6 +161,11 @@ void Config()
 
   new TGeant3TGeo("C++ Interface to Geant3");
 
+  if(!AliCDBManager::Instance()->IsDefaultStorageSet()){
+    AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
+    AliCDBManager::Instance()->SetRun(0);
+  }
+
   //=======================================================================
   //  Create the output file
 
@@ -147,6 +184,12 @@ void Config()
   rl->SetCompressionLevel(2);
   rl->SetNumberOfEventsPerFile(1000);
   gAlice->SetRunLoader(rl);
+  // gAlice->SetGeometryFromFile("geometry.root");
+  // gAlice->SetGeometryFromCDB();
+  
+  // Set the trigger configuration
+  AliSimulation::Instance()->SetTriggerConfig(TrigConfName[trig]);
+  cout<<"Trigger configuration is set to  "<<TrigConfName[trig]<<endl;
 
   //
   //=======================================================================
@@ -213,7 +256,7 @@ void Config()
   //=========================//
   // Generator Configuration //
   //=========================//
-  AliGenerator* gener;
+  AliGenerator* gener = 0x0;
   
   if (proc <=   kBeautypp14000wmi) {
       AliGenPythia *pythia = PythiaHVQ(proc);
@@ -285,261 +328,210 @@ void Config()
   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->SetCutVertexZ(1.);        // Truncate at 1 sigma
+  gener->SetCutVertexZ(3.);        // Truncate at 3 sigma
   gener->SetVertexSmear(kPerEvent);
 
-  gener->SetTrackingFlag(0);
-  // Specify GEANT tracking limits (Rmax, Zmax)
-  //gAlice->GetMCApp()->TrackingLimits(90.,1.0e10);
-
-
   gener->Init();
 
   // FIELD
   //    
   if (mag == k2kG) {
     comment = comment.Append(" | L3 field 0.2 T");
-  } else if (mag == k4kG) {
-    comment = comment.Append(" | L3 field 0.4 T");
   } else if (mag == k5kG) {
     comment = comment.Append(" | L3 field 0.5 T");
   }
   printf("\n \n Comment: %s \n \n", comment.Data());
     
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., mag);
+  AliMagF* field = new AliMagF("Maps","Maps",1.,1.,,mag);
   field->SetL3ConstField(0); //Using const. field in the barrel
-  rl->CdGAFile();
-  gAlice->SetField(field);    
-
+  TGeoGlobalMagField::Instance()->SetField(field);
 
+  rl->CdGAFile();
 
   Int_t iABSO  = 1;
-  Int_t iCRT   = 1;
+  Int_t iACORDE   = 0;
   Int_t iDIPO  = 1;
+  Int_t iEMCAL = 1;
   Int_t iFMD   = 1;
   Int_t iFRAME = 1;
   Int_t iHALL  = 1;
   Int_t iITS   = 1;
   Int_t iMAG   = 1;
   Int_t iMUON  = 1;
-  Int_t iPHOS  = 0;
+  Int_t iPHOS  = 1;
   Int_t iPIPE  = 1;
   Int_t iPMD   = 1;
-  Int_t iRICH  = 1;
+  Int_t iHMPID  = 1;
   Int_t iSHIL  = 1;
-  Int_t iSTART = 1;
-  Int_t iTOF   = 0;
+  Int_t iT0 = 1;
+  Int_t iTOF   = 1;
   Int_t iTPC   = 1;
   Int_t iTRD   = 1;
+  Int_t iVZERO = 1;
   Int_t iZDC   = 1;
+  
 
-  //=================== Alice BODY parameters =============================
-  AliBODY *BODY = new AliBODY("BODY","Alice envelop");
-
-  if(iMAG) {
-    //=================== MAG parameters ============================
-    // --- Start with Magnet since detector layouts may be depending ---
-    // --- on the selected Magnet dimensions ---
-    AliMAG *MAG  = new AliMAG("MAG","Magnet");
-  }
-
-
-  if(iABSO) {
-    //=================== ABSO parameters ============================
-    AliABSO *ABSO  = new AliABSOv0("ABSO","Muon Absorber");
-  }
-
-  if(iDIPO) {
-    //=================== DIPO parameters ============================
-
-    AliDIPO *DIPO  = new AliDIPOv2("DIPO","Dipole version 2");
-  }
+    //=================== Alice BODY parameters =============================
+    AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
 
-  if(iHALL) {
-    //=================== HALL parameters ============================
-
-    AliHALL *HALL  = new AliHALL("HALL","Alice Hall");
-  }
 
+    if (iMAG)
+    {
+        //=================== MAG parameters ============================
+        // --- Start with Magnet since detector layouts may be depending ---
+        // --- on the selected Magnet dimensions ---
+        AliMAG *MAG = new AliMAG("MAG", "Magnet");
+    }
 
-  if(iFRAME) {
-    //=================== FRAME parameters ============================
 
-    AliFRAME *FRAME  = new AliFRAMEv2("FRAME","Space Frame");
+    if (iABSO)
+    {
+        //=================== ABSO parameters ============================
+        AliABSO *ABSO = new AliABSOv3("ABSO", "Muon Absorber");
+    }
 
-  }
+    if (iDIPO)
+    {
+        //=================== DIPO parameters ============================
 
-  if(iSHIL) {
-    //=================== SHIL parameters ============================
+        AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3");
+    }
 
-    AliSHIL *SHIL  = new AliSHILv2("SHIL","Shielding");
-  }
+    if (iHALL)
+    {
+        //=================== HALL parameters ============================
 
+        AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall");
+    }
 
-  if(iPIPE) {
-    //=================== PIPE parameters ============================
 
-    AliPIPE *PIPE  = new AliPIPEv0("PIPE","Beam Pipe");
-  }
+    if (iFRAME)
+    {
+        //=================== FRAME parameters ============================
 
+        AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");
+       FRAME->SetHoles(1);
+    }
 
-  if(iITS) {
-
-//=================== ITS parameters ============================
-    //
-    // As the innermost detector in ALICE, the Inner Tracking System "impacts" on
-    // almost all other detectors. This involves the fact that the ITS geometry
-    // still has several options to be followed in parallel in order to determine
-    // the best set-up which minimizes the induced background. All the geometries
-    // available to date are described in the following. Read carefully the comments
-    // and use the default version (the only one uncommented) unless you are making
-    // comparisons and you know what you are doing. In this case just uncomment the
-    // ITS geometry you want to use and run Aliroot.
-    //
-    // Detailed geometries:         
-    //
-    //
-    //AliITS *ITS  = new AliITSv5symm("ITS","Updated ITS TDR detailed version with symmetric services");
-    //
-    //AliITS *ITS  = new AliITSv5asymm("ITS","Updates ITS TDR detailed version with asymmetric services");
-    //
-    AliITSvPPRasymmFMD *ITS  = new AliITSvPPRasymmFMD("ITS","New ITS PPR detailed version with asymmetric services");
-    ITS->SetMinorVersion(2);                                         // don't touch this parameter if you're not an ITS developer
-    ITS->SetReadDet(kFALSE);                                         // don't touch this parameter if you're not an ITS developer
-    ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det");  // don't touch this parameter if you're not an ITS developer
-    ITS->SetThicknessDet1(200.);   // detector thickness on layer 1 must be in the range [150,300]
-    ITS->SetThicknessDet2(200.);   // detector thickness on layer 2 must be in the range [150,300]
-    ITS->SetThicknessChip1(200.);  // chip thickness on layer 1 must be in the range [100,300]
-    ITS->SetThicknessChip2(200.);  // chip thickness on layer 2 must be in the range [100,300]
-    ITS->SetRails(1);             // 1 --> rails in ; 0 --> rails out
-    ITS->SetCoolingFluid(1);       // 1 --> water ; 0 --> freon
-    //
-    //AliITSvPPRsymm *ITS  = new AliITSvPPRsymm("ITS","New ITS PPR detailed version with symmetric services");
-    //ITS->SetMinorVersion(2);                                       // don't touch this parameter if you're not an ITS developer
-    //ITS->SetReadDet(kFALSE);                                       // don't touch this parameter if you're not an ITS developer
-    //ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRsymm2.det"); // don't touch this parameter if you're not an ITS developer
-    //ITS->SetThicknessDet1(300.);   // detector thickness on layer 1 must be in the range [150,300]
-    //ITS->SetThicknessDet2(300.);   // detector thickness on layer 2 must be in the range [150,300]
-    //ITS->SetThicknessChip1(300.);  // chip thickness on layer 1 must be in the range [100,300]
-    //ITS->SetThicknessChip2(300.);  // chip thickness on layer 2 must be in the range [100,300]
-    //ITS->SetRails(1);              // 1 --> rails in ; 0 --> rails out
-    //ITS->SetCoolingFluid(1);       // 1 --> water ; 0 --> freon
-    //
-    //
-    // Coarse geometries (warning: no hits are produced with these coarse geometries and they unuseful 
-    // for reconstruction !):
-    //                                                     
-    //
-    //AliITSvPPRcoarseasymm *ITS  = new AliITSvPPRcoarseasymm("ITS","New ITS PPR coarse version with asymmetric services");
-    //ITS->SetRails(1);                // 1 --> rails in ; 0 --> rails out
-    //ITS->SetSupportMaterial(0);      // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon
-    //
-    //AliITS *ITS  = new AliITSvPPRcoarsesymm("ITS","New ITS PPR coarse version with symmetric services");
-    //ITS->SetRails(1);                // 1 --> rails in ; 0 --> rails out
-    //ITS->SetSupportMaterial(0);      // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon
-    //                      
-    //
-    //
-    // Geant3 <-> EUCLID conversion
-    // ============================
-    //
-    // SetEUCLID is a flag to output (=1) or not to output (=0) both geometry and
-    // media to two ASCII files (called by default ITSgeometry.euc and
-    // ITSgeometry.tme) in a format understandable to the CAD system EUCLID.
-    // The default (=0) means that you dont want to use this facility.
-    //
-    ITS->SetEUCLID(0);  
-  }
-  
+    if (iSHIL)
+    {
+        //=================== SHIL parameters ============================
 
-  if(iTPC) {
-    //============================ TPC parameters ===================
-    AliTPC *TPC  = new AliTPCv2("TPC","Default");
-  }
+        AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3");
+    }
 
 
-  if(iTOF) {
-    //=================== TOF parameters ============================
-    AliTOF *TOF  = new AliTOFv4T0("TOF","normal TOF");
-  }
+    if (iPIPE)
+    {
+        //=================== PIPE parameters ============================
 
-  if(iRICH) {
-    //=================== RICH parameters ===========================
-    AliRICH *RICH  = new AliRICHv1("RICH","normal RICH");    
+        AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe");
+    }
+    if (iITS)
+    {
+        //=================== ITS parameters ============================
 
-  }
+       AliITS *ITS  = new AliITSv11("ITS","ITS v11");
+    }
 
+    if (iTPC)
+    {
+      //============================ TPC parameters =====================
+        AliTPC *TPC = new AliTPCv2("TPC", "Default");
+    }
 
-  if(iZDC) {
-    //=================== ZDC parameters ============================
 
-    AliZDC *ZDC  = new AliZDCv1("ZDC","normal ZDC");
-  }
+    if (iTOF) {
+        //=================== TOF parameters ============================
+       AliTOF *TOF = new AliTOFv6T0("TOF", "normal TOF");
+    }
 
-  if(iCRT) {
-    //=================== CRT parameters ============================
 
-    AliCRT *CRT  = new AliCRTv1("CRT","normal CRT");
-  }
+    if (iHMPID)
+    {
+        //=================== HMPID parameters ===========================
+        AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID");
 
-  if(iTRD) {
-    //=================== TRD parameters ============================
-  
-    AliTRD *TRD  = new AliTRDv1("TRD","TRD slow simulator");
-  
-    // Select the gas mixture (0: 97% Xe + 3% isobutane, 1: 90% Xe + 10% CO2)
-    TRD->SetGasMix(1);
-  
-    // With hole in front of PHOS
-    TRD->SetPHOShole();
-    // With hole in front of RICH
-    TRD->SetRICHhole();
-    // Switch on TR
-    AliTRDsim *TRDsim = TRD->CreateTR();
-  }
+    }
 
-  if(iFMD) {
-    //=================== FMD parameters ============================
 
-    AliFMD *FMD  = new AliFMDv0("FMD","normal FMD");
-  }
+    if (iZDC)
+    {
+        //=================== ZDC parameters ============================
 
-  if(iMUON) {
-    //=================== MUON parameters ===========================
-    AliMUON *MUON  = new AliMUONv1("MUON","default");
-  }
-  //=================== PHOS parameters ===========================
+        AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC");
+    }
 
-  if(iPHOS) {
-    AliPHOS *PHOS  = new AliPHOSv1("PHOS","GPS2");
-  }
+    if (iTRD)
+    {
+        //=================== TRD parameters ============================
+
+        AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");
+        AliTRDgeometry *geoTRD = TRD->GetGeometry();
+       // Partial geometry: modules at 2,3,4,6,11,12,14,15
+       // starting at 6h in positive direction
+       geoTRD->SetSMstatus(0,0);
+        geoTRD->SetSMstatus(1,0);
+        geoTRD->SetSMstatus(5,0);
+        geoTRD->SetSMstatus(7,0);
+        geoTRD->SetSMstatus(8,0);
+        geoTRD->SetSMstatus(9,0);
+        geoTRD->SetSMstatus(10,0);
+        geoTRD->SetSMstatus(13,0);
+        geoTRD->SetSMstatus(16,0);
+        geoTRD->SetSMstatus(17,0);
+    }
 
+    if (iFMD)
+    {
+        //=================== FMD parameters ============================
+       AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
+   }
 
-  //=================== CRT parameters ===========================
+    if (iMUON)
+    {
+        //=================== MUON parameters ===========================
+        // New MUONv1 version (geometry defined via builders)
+        AliMUON *MUON = new AliMUONv1("MUON", "default");
+    }
+    //=================== PHOS parameters ===========================
 
-  if(iCRT) {
-    AliCRT *CRT  = new AliCRTv1("CRT","Normal CRTGPS2");
-  }
+    if (iPHOS)
+    {
+        AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP");
+    }
 
 
-  if(iPMD) {
-    //=================== PMD parameters ============================
+    if (iPMD)
+    {
+        //=================== PMD parameters ============================
+        AliPMD *PMD = new AliPMDv1("PMD", "normal PMD");
+    }
 
-    AliPMD *PMD  = new AliPMDv1("PMD","normal PMD");
-    PMD->SetPAR(1., 1., 0.8, 0.02);
-    PMD->SetIN(6., 18., -580., 27., 27.);
-    PMD->SetGEO(0.0, 0.2, 4.);
-    PMD->SetPadSize(0.8, 1.0, 1.0, 1.5);
+    if (iT0)
+    {
+        //=================== T0 parameters ============================
+        AliT0 *T0 = new AliT0v1("T0", "T0 Detector");
+    }
 
-  }
+    if (iEMCAL)
+    {
+        //=================== EMCAL parameters ============================
+        AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETE");
+    }
 
-  if(iSTART) {
-    //=================== START parameters ============================
-    AliSTART *START  = new AliSTARTv1("START","START Detector");
-  }
+     if (iACORDE)
+    {
+        //=================== ACORDE parameters ============================
+        AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE");
+    }
 
-         
+     if (iVZERO)
+    {
+        //=================== ACORDE parameters ============================
+        AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
+    }
 }
 //
 //           PYTHIA
@@ -693,10 +685,8 @@ AliGenPythia *PythiaHVQ(PDC06Proc_t proc) {
 AliGenerator* MbCocktail()
 {
       comment = comment.Append(" pp at 14 TeV: Pythia low-pt, no heavy quarks + J/Psi from parameterisation");
-      gener = new AliGenCocktail();
+      AliGenCocktail * gener = new AliGenCocktail();
       gener->UsePerEventRates();
-      gener->SetTrackingFlag(0);
-      
  
 //
 //    Pythia
@@ -718,9 +708,10 @@ AliGenerator* MbCocktail()
       jpsi->SetPhiRange(0., 360.);
       jpsi->SetForceDecay(kAll);
 //
-//        
+//
+      gener->AddGenerator(jpsi,   "J/Psi", 8.e-4);              
       gener->AddGenerator(pythia, "Pythia", 1.);
-      gener->AddGenerator(jpsi,   "J/Psi", 8.e-4);      
+
       
       return gener;
 }
@@ -738,6 +729,31 @@ AliGenerator* PyMbTriggered(Int_t pdg)
     return pythia;
 }
 
+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;
+       }
+      }
+    }
+
+    // Random Number seed
+    if (gSystem->Getenv("CONFIG_SEED")) {
+      seed = atoi(gSystem->Getenv("CONFIG_SEED"));
+    }
+}
 
 
 
+void LoadPythia()
+{
+    // Load Pythia related libraries
+    gSystem->Load("liblhapdf.so");      // Parton density functions
+    gSystem->Load("libEGPythia6.so");   // TGenerator interface
+    gSystem->Load("libpythia6.so");     // Pythia
+    gSystem->Load("libAliPythia6.so");  // ALICE specific implementations
+}