+++ /dev/null
-//Configuration of simulation
-
-enum PprRun_t
-{
- kSTARLIGHT,
- kRunMax
-};
-
-const char* pprRunName[] = {
- "kSTARLIGHT"
-};
-
-enum PprTrigConf_t
-{
- kDefaultPPTrig, kDefaultPbPbTrig
-};
-
-const char * pprTrigConfName[] = {
- "p-p","Pb-Pb"
-};
-
-// This part for configuration
-
-static PprRun_t srun = kSTARLIGHT;
-static AliMagF::BMap_t smag = AliMagF::k5kG;
-static Int_t sseed = 12345; //Set 0 to use the current time
-static PprTrigConf_t strig = kDefaultPPTrig; // default pp trigger configuration
-
-// Comment line
-static TString comment;
-
-// Functions
-Float_t EtaToTheta(Float_t arg);
-void ProcessEnvironmentVars();
-
-void Config()
-{
- // ThetaRange is (0., 180.). It was (0.28,179.72) 7/12/00 09:00
- // Theta range given through pseudorapidity limits 22/6/2001
-
- // Get settings from environment variables
- ProcessEnvironmentVars();
-
- // Set Random Number seed
- gRandom->SetSeed(sseed);
- cout<<"Seed for random number generation= "<<gRandom->GetSeed()<<endl;
-
-
- // libraries required by geant321 and Pythia: loaded in sim.C
-
- new TGeant3TGeo("C++ Interface to Geant3");
-
- // Output every 100 tracks
-
- TVirtualMC * vmc = TVirtualMC::GetMC();
-
-// ((TGeant3*)vmc)->SetSWIT(4,100);
-
- AliRunLoader* rl=0x0;
-
- AliLog::Message(AliLog::kInfo, "Creating Run Loader", "", "", "Config()"," ConfigPPR.C", __LINE__);
-
- rl = AliRunLoader::Open("galice.root",
- AliConfig::GetDefaultEventFolderName(),
- "recreate");
- if (rl == 0x0)
- {
- gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
- return;
- }
- rl->SetCompressionLevel(2);
- rl->SetNumberOfEventsPerFile(100);
- gAlice->SetRunLoader(rl);
-
- // Set the trigger configuration
- AliSimulation::Instance()->SetTriggerConfig(pprTrigConfName[strig]);
- cout<<"Trigger configuration is set to "<<pprTrigConfName[strig]<<endl;
-
- //
- // Set External decayer
- AliDecayer *decayer = new AliDecayerPythia();
-
- decayer->Init();
- vmc->SetExternalDecayer(decayer);
- //
- //
- //=======================================================================
- //
- //=======================================================================
- // ************* STEERING parameters FOR ALICE SIMULATION **************
- // --- Specify event type to be tracked through the ALICE setup
- // --- All positions are in cm, angles in degrees, and P and E in GeV
-
- vmc->SetProcess("DCAY",1);
- vmc->SetProcess("PAIR",1);
- vmc->SetProcess("COMP",1);
- vmc->SetProcess("PHOT",1);
- vmc->SetProcess("PFIS",0);
- vmc->SetProcess("DRAY",0);
- vmc->SetProcess("ANNI",1);
- vmc->SetProcess("BREM",1);
- vmc->SetProcess("MUNU",1);
- vmc->SetProcess("CKOV",1);
- vmc->SetProcess("HADR",1);
- vmc->SetProcess("LOSS",2);
- vmc->SetProcess("MULS",1);
- vmc->SetProcess("RAYL",1);
-
- Float_t cut = 1.e-3; // 1MeV cut by default
- Float_t tofmax = 1.e10;
-
- vmc->SetCut("CUTGAM", cut);
- vmc->SetCut("CUTELE", cut);
- vmc->SetCut("CUTNEU", cut);
- vmc->SetCut("CUTHAD", cut);
- vmc->SetCut("CUTMUO", cut);
- vmc->SetCut("BCUTE", cut);
- vmc->SetCut("BCUTM", cut);
- vmc->SetCut("DCUTE", cut);
- vmc->SetCut("DCUTM", cut);
- vmc->SetCut("PPCUTM", cut);
- vmc->SetCut("TOFMAX", tofmax);
-
- // Generator Configuration
- gSystem->AddDynamicPath("../../objdir/lib/tgt_linux");
- gSystem->Load("libStarLight");
- gSystem->Load("libAliStarLight.so");
-
- AliGenStarLight* sl = new AliGenStarLight(1000*1000);
-
- sl->SetParameter("BEAM_1_Z = 82 #Z of projectile");
- sl->SetParameter("BEAM_1_A = 208 #A of projectile");
- sl->SetParameter("BEAM_2_Z = 82 #Z of target");
- sl->SetParameter("BEAM_2_A = 208 #A of target");
- sl->SetParameter("BEAM_1_GAMMA = 1470 #Gamma of the colliding ions");
- sl->SetParameter("BEAM_2_GAMMA = 1470 #Gamma of the colliding ions");
- sl->SetParameter("W_MAX = 12.0 #Max value of w");
- sl->SetParameter("W_MIN = 2.0 #Min value of w");
- sl->SetParameter("W_N_BINS = 40 #Bins i w");
- sl->SetParameter("RAP_MAX = 8. #max y");
- sl->SetParameter("RAP_N_BINS = 80 #Bins i y");
- sl->SetParameter("CUT_PT = 0 #Cut in pT? 0 = (no, 1 = yes)");
- sl->SetParameter("PT_MIN = 1.0 #Minimum pT in GeV");
- sl->SetParameter("PT_MAX = 3.0 #Maximum pT in GeV");
- sl->SetParameter("CUT_ETA = 0 #Cut in pseudorapidity? (0 = no, 1 = yes)");
- sl->SetParameter("ETA_MIN = -10 #Minimum pseudorapidity");
- sl->SetParameter("ETA_MAX = 10 #Maximum pseudorapidity");
- sl->SetParameter("PROD_MODE = 2 #gg or gP switch (1 = 2-photon, 2 = coherent vector meson (narrow), 3 = coherent vector meson (wide), # 4 = incoherent vector meson, 5 = A+A DPMJet single, 6 = A+A DPMJet double, 7 = p+A DPMJet single, 8 = p+A Pythia single )");
- // is N_EVENTS valid
- sl->SetParameter("N_EVENTS = 10000000 #Number of events");
- sl->SetParameter("PROD_PID = 113 #Channel of interest (not relevant for photonuclear processes)");
- sl->SetParameter(Form("RND_SEED = %d #Random number seed", sseed));
- sl->SetParameter("OUTPUT_FORMAT = 2 #Form of the output");
- sl->SetParameter("BREAKUP_MODE = 5 #Controls the nuclear breakup");
- sl->SetParameter("INTERFERENCE = 0 #Interference (0 = off, 1 = on)");
- sl->SetParameter("IF_STRENGTH = 1. #% of intefernce (0.0 - 0.1)");
- sl->SetParameter("COHERENT = 1 #Coherent=1,Incoherent=0");
- sl->SetParameter("INCO_FACTOR = 1. #percentage of incoherence");
- sl->SetParameter("BFORD = 9.5 #");
- sl->SetParameter("INT_PT_MAX = 0.24 #Maximum pt considered, when interference is turned on");
- sl->SetParameter("INT_PT_N_BINS = 120 #Number of pt bins when interference is turned on");
-
- sl->Init();
- sl->GetTStarLight()->PrintInputs(std::cout);
-
- AliGenerator* gener = sl;
- gener->SetOrigin(0, 0, 0); // vertex position
- gener->SetSigma(0, 0, 5.3); // Sigma in (X,Y,Z) (cm) on IP position
- gener->SetCutVertexZ(1.); // Truncate at 1 sigma
- gener->SetVertexSmear(kPerEvent);
- gener->SetTrackingFlag(1);
- gener->Init();
-
- if (smag == AliMagF::k2kG) {
- comment = comment.Append(" | L3 field 0.2 T");
- } else if (smag == AliMagF::k5kG) {
- comment = comment.Append(" | L3 field 0.5 T");
- }
-
-
- printf("\n \n Comment: %s \n \n", comment.Data());
-
-
-// Field
- TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., smag));
-
- rl->CdGAFile();
-//
- Int_t iABSO = 1;
- Int_t iDIPO = 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 = 1;
- Int_t iPIPE = 1;
- Int_t iPMD = 1;
- Int_t iHMPID = 1;
- Int_t iSHIL = 1;
- Int_t iT0 = 1;
- Int_t iTOF = 1;
- Int_t iTPC = 1;
- Int_t iTRD = 1;
- Int_t iZDC = 1;
- Int_t iEMCAL = 1;
- Int_t iVZERO = 1;
- Int_t iACORDE = 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 AliABSOv3("ABSO", "Muon Absorber");
- }
-
- if (iDIPO)
- {
- //=================== DIPO parameters ============================
-
- AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3");
- }
-
- if (iHALL)
- {
- //=================== HALL parameters ============================
-
- AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall");
- }
-
-
- if (iFRAME)
- {
- //=================== FRAME parameters ============================
-
- AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");
- FRAME->SetHoles(1);
- }
-
- if (iSHIL)
- {
- //=================== SHIL parameters ============================
-
- AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3");
- }
-
-
- if (iPIPE)
- {
- //=================== PIPE parameters ============================
-
- 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 (iTOF) {
- //=================== TOF parameters ============================
- AliTOF *TOF = new AliTOFv6T0("TOF", "normal TOF");
- }
-
-
- if (iHMPID)
- {
- //=================== HMPID parameters ===========================
- AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID");
-
- }
-
-
- if (iZDC)
- {
- //=================== ZDC parameters ============================
-
- AliZDC *ZDC = new AliZDCv4("ZDC", "normal ZDC");
- }
-
- if (iTRD)
- {
- //=================== TRD parameters ============================
-
- AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");
- }
-
- if (iFMD)
- {
- //=================== FMD parameters ============================
- AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
- }
-
- if (iMUON)
- {
- //=================== MUON parameters ===========================
- // New MUONv1 version (geometry defined via builders)
- AliMUON *MUON = new AliMUONv1("MUON", "default");
- }
- //=================== PHOS parameters ===========================
-
- if (iPHOS)
- {
- AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP");
- }
-
-
- if (iPMD)
- {
- //=================== PMD parameters ============================
- AliPMD *PMD = new AliPMDv1("PMD", "normal PMD");
- }
-
- if (iT0)
- {
- //=================== T0 parameters ============================
- AliT0 *T0 = new AliT0v1("T0", "T0 Detector");
- }
-
- if (iEMCAL)
- {
- //=================== EMCAL parameters ============================
- AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETEV1");
- }
-
- if (iACORDE)
- {
- //=================== ACORDE parameters ============================
- AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE");
- }
-
- if (iVZERO)
- {
- //=================== VZERO parameters ============================
- AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
- }
-
-
-}
-
-Float_t EtaToTheta(Float_t arg){
- return (180./TMath::Pi())*2.*atan(exp(-arg));
-}
-
-
-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) {
- srun = (PprRun_t)iRun;
- cout<<"Run type set to "<<pprRunName[iRun]<<endl;
- }
- }
- }
-
- // Random Number seed
- if (gSystem->Getenv("CONFIG_SEED")) {
- sseed = atoi(gSystem->Getenv("CONFIG_SEED"));
- }
-}