// 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_PDC07.C++")
+// root [1] gSystem->Load("libpythia6.4.25.so");
+// root [2] gSystem->Load("libqpythia.so");
+// root [3] gSystem->SetIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/include\
+// -I$ALICE/geant3/TGeant3");
+// root [4] AliSimulation sim
+// root [5] sim.SetConfigFile("Config.C++")
+// root [6] sim.Run()
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
#include <TSystem.h>
#include <TVirtualMC.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 "STRUCT/AliBODY.h"
-#include "STRUCT/AliMAG.h"
-#include "STRUCT/AliABSOv3.h"
-#include "STRUCT/AliDIPOv3.h"
-#include "STRUCT/AliHALLv3.h"
-#include "STRUCT/AliFRAMEv2.h"
-#include "STRUCT/AliSHILv3.h"
-#include "STRUCT/AliPIPEv3.h"
-#include "ITS/AliITSgeom.h"
-#include "ITS/AliITSvPPRasymmFMD.h"
-#include "TPC/AliTPCv2.h"
-#include "TOF/AliTOFv6T0.h"
-#include "HMPID/AliHMPIDv2.h"
-#include "ZDC/AliZDCv3.h"
-#include "TRD/AliTRDv1.h"
-#include "FMD/AliFMDv1.h"
-#include "MUON/AliMUONv1.h"
-#include "PHOS/AliPHOSv1.h"
-#include "PMD/AliPMDv1.h"
-#include "T0/AliT0v1.h"
-#include "EMCAL/AliEMCALv2.h"
-#include "ACORDE/AliACORDEv0.h"
-#include "VZERO/AliVZEROv7.h"
+#include <TGeoGlobalMagField.h>
+#include "AliGenCocktail.h"
+#include "AliGenParam.h"
+#include "AliGenMUONlib.h"
+#include "AliRunLoader.h"
+#include "AliRun.h"
+#include "AliConfig.h"
+#include "AliDecayerPythia.h"
+#include "AliGenPythia.h"
+#include "AliMagF.h"
+#include "AliBODY.h"
+#include "AliMAG.h"
+#include "AliABSOv3.h"
+#include "AliDIPOv3.h"
+#include "AliHALLv3.h"
+#include "AliFRAMEv2.h"
+#include "AliSHILv3.h"
+#include "AliPIPEv3.h"
+#include "AliITSgeom.h"
+#include "AliITSv11.h"
+#include "AliTPCv2.h"
+#include "AliTOFv6T0.h"
+#include "AliHMPIDv3.h"
+#include "AliZDCv4.h"
+#include "AliTRDv1.h"
+#include "AliFMDv1.h"
+#include "AliMUONv1.h"
+#include "AliPHOSv1.h"
+#include "AliPMDv1.h"
+#include "AliT0v1.h"
+#include "AliEMCALv2.h"
+#include "AliACORDEv1.h"
+#include "AliVZEROv7.h"
+#include "AliSimulation.h"
+#include "AliGenerator.h"
#endif
{
kNature, kHadr, kSemiEl, kSemiMu
};
-//--- Magnetic Field ---
-enum Mag_t
-{
- k2kG, k4kG, k5kG
-};
-
//--- Trigger config ---
enum TrigConf_t
{
kDefaultPPTrig, kDefaultPbPbTrig
};
+//--- U cut ---
+enum YCut_t
+{
+ kFull, kBarrel, kMuonArm
+};
const char * TrigConfName[] = {
"p-p","Pb-Pb"
};
static PprGeo_t geo = kHoles;
-class AliGenPythia ;
+
//--- Functions ---
AliGenPythia *PythiaHard(PDC07Proc_t );
AliGenPythia *PythiaHVQ(PDC07Proc_t );
// This part for configuration
static DecayHvFl_t decHvFl = kNature;
-static Mag_t mag = k5kG;
+static AliMagF::BMap_t mag = AliMagF::k5kG;
static TrigConf_t trig = kDefaultPPTrig; // default pp trigger configuration
+static YCut_t ycut = kFull; // default pp trigger configuration
static Int_t runNumber= 0;
static Int_t eventNumber= 0;
//========================//
void Config()
{
-
-
- // Get settings from environment variables
+ // Get settings from environment variables
ProcessEnvironmentVars();
+ // Random Number seed
+ if (gSystem->Getenv("CONFIG_SEED")) {
+ seed = atoi(gSystem->Getenv("CONFIG_SEED"));
+ }
+ else if(gSystem->Getenv("DC_EVENT") && gSystem->Getenv("DC_RUN")){
+ seed = runNumber * 100000 + eventNumber;
+ }
+ gRandom->SetSeed(seed);
+ cout<<"Seed for random number generation= "<<gRandom->GetSeed()<<endl;
+
// libraries required by geant321
#if defined(__CINT__)
- gSystem->Load("liblhapdf.so"); // Parton density functions
- gSystem->Load("libpythia6.so"); // Pythia
+ gSystem->Load("liblhapdf"); // Parton density functions
+ gSystem->Load("libEGPythia6"); // TGenerator interface
+ gSystem->Load("libpythia6"); // Pythia
+ gSystem->Load("libAliPythia6"); // ALICE specific implementations
gSystem->Load("libgeant321");
- gSystem->Load("libEG");
- gSystem->Load("libEGPythia6.so"); // TGenerator interface
- gSystem->Load("libAliPythia6.so"); // ALICE specific implementations
#endif
new TGeant3TGeo("C++ Interface to Geant3");
//=======================================================================
// Run loader
AliRunLoader* rl=0x0;
+
+ AliLog::Message(AliLog::kInfo, "Creating Run Loader", "", "", "Config()"," ConfigPPR.C", __LINE__);
+
rl = AliRunLoader::Open("galice.root",
AliConfig::GetDefaultEventFolderName(),
"recreate");
return;
}
rl->SetCompressionLevel(2);
- rl->SetNumberOfEventsPerFile(1000);
+ rl->SetNumberOfEventsPerFile(100);
gAlice->SetRunLoader(rl);
- // Run number
- //gAlice->SetRunNumber(runNumber);
-
// Set the trigger configuration
- gAlice->SetTriggerDescriptor(TrigConfName[trig]);
+ AliSimulation::Instance()->SetTriggerConfig(TrigConfName[trig]);
cout<<"Trigger configuration is set to "<<TrigConfName[trig]<<endl;
+ //======================//
+ // Set External decayer //
+ //======================//
+ TVirtualMCDecayer* decayer = new AliDecayerPythia();
+ // DECAYS
+ //
+ switch(decHvFl) {
+ case kNature:
+ decayer->SetForceDecay(kAll);
+ break;
+ case kHadr:
+ decayer->SetForceDecay(kHadronicD);
+ break;
+ case kSemiEl:
+ decayer->SetForceDecay(kSemiElectronic);
+ break;
+ case kSemiMu:
+ decayer->SetForceDecay(kSemiMuonic);
+ break;
+ }
+ decayer->Init();
+ gMC->SetExternalDecayer(decayer);
+ if(proc == kPyJetJetPHOSv2) // in this case we decay the pi0
+ decayer->SetForceDecay(kNeutralPion);
+
//
//=======================================================================
// ************* STEERING parameters FOR ALICE SIMULATION **************
gMC->SetCut("PPCUTM", cut);
gMC->SetCut("TOFMAX", tofmax);
- //======================//
- // Set External decayer //
- //======================//
- TVirtualMCDecayer* decayer = new AliDecayerPythia();
- // DECAYS
- //
- switch(decHvFl) {
- case kNature:
- decayer->SetForceDecay(kAll);
- break;
- case kHadr:
- decayer->SetForceDecay(kHadronicD);
- break;
- case kSemiEl:
- decayer->SetForceDecay(kSemiElectronic);
- break;
- case kSemiMu:
- decayer->SetForceDecay(kSemiMuonic);
- break;
- }
- decayer->Init();
- gMC->SetExternalDecayer(decayer);
- if(proc == kPyJetJetPHOSv2) // in this case we decay the pi0
- decayer->SetForceDecay(kNeutralPion);
//=========================//
// Generator Configuration //
// pythia->SetThetaRange(45,135);
if(proc == kPyJetJetPHOSv2)
- pythia->SetForceDecay(kNeutralPion);
- else
- pythia->SetForceDecay(kAll);
-
- pythia->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
+ pythia->SetForceDecay(kNeutralPion);
+ else
+ pythia->SetForceDecay(kAll);
+
+ pythia->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
pythia->SetPtKick(5); // set the intrinsic kt to 5 GeV/c
gener = pythia;
- }
+ }
// PRIMARY VERTEX
Float_t k = 6e5*(qhat/1.7) ; //qhat=1.7, k = 6e5, default value
AliPythia::Instance()->InitQuenching(0.,0.1,k,0,0.95,6);
- }
+ }
// FIELD
- if (mag == k2kG) {
+ if (mag == AliMagF::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) {
+ } else if (mag == AliMagF::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);
- field->SetL3ConstField(0); //Using const. field in the barrel
+ // to use constant field in the barrel use:
+ // AliMagF* field = new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kGUniform);
+ AliMagF* field = new AliMagF("Maps","Maps", -1., -1., mag);
+ TGeoGlobalMagField::Instance()->SetField(field);
rl->CdGAFile();
- gAlice->SetField(field);
-
-
Int_t iABSO = 1;
Int_t iACORDE= 1;
// --- on the selected Magnet dimensions ---
AliMAG *MAG = new AliMAG("MAG", "Magnet");
}
-
-
+//
+//
if (iABSO)
{
//=================== ABSO parameters ============================
//=================== ITS parameters ============================
//
- AliITSvPPRasymmFMD *ITS = new AliITSvPPRasymmFMD("ITS","New ITS PPR detailed version with asymmetric services");
+
+ AliITS *ITS = new AliITSv11("ITS","ITS v11");
}
+
if (iTPC)
{
//============================ TPC parameters =====================
if (iHMPID)
{
//=================== HMPID parameters ===========================
- AliHMPID *HMPID = new AliHMPIDv2("HMPID", "normal HMPID");
+ AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID");
}
{
//=================== ZDC parameters ============================
- AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC");
+ AliZDC *ZDC = new AliZDCv4("ZDC", "normal ZDC");
}
- if (iTRD)
+ 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
- //Hole on SM 13 and 14 for PHOS
- geoTRD->SetSMstatus(13,0);
- geoTRD->SetSMstatus(14,0);
- geoTRD->SetSMstatus(15,0);
+ AliTRDgeometry *geoTRD = TRD->GetGeometry();
}
if (iFMD)
if (iPHOS)
{
- AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP");
+ AliPHOS *PHOS = new AliPHOSv1("PHOS", "Run1");
}
if (iEMCAL)
{
//=================== EMCAL parameters ============================
- AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "ESHISH_77_TRD1_2X2_FINAL_110DEG scTh=0.176 pbTh=0.144");
+ AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETEV1 scTh=0.176 pbTh=0.144");
}
if (iACORDE)
{
//=================== CRT parameters ============================
- AliACORDE *ACORDE = new AliACORDEv0("CRT", "normal ACORDE");
+ AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE");
}
if (iVZERO)
}
//cout<<"Event number "<<eventNumber<<endl;
- // Random Number seed
- if (gSystem->Getenv("CONFIG_SEED")) {
- seed = atoi(gSystem->Getenv("CONFIG_SEED"));
- }
- else if(gSystem->Getenv("DC_EVENT") && gSystem->Getenv("DC_RUN")){
- seed = runNumber * 100000 + eventNumber;
- }
- gRandom->SetSeed(seed);
cout<<"////////////////////////////////////////////////////////////////////////////////////"<<endl;
cout<<"Seed for random number generation= "<< seed<<" "<< gRandom->GetSeed()<<endl;