//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= "<GetSeed()<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 "<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 "<Getenv("CONFIG_SEED")) { sseed = atoi(gSystem->Getenv("CONFIG_SEED")); } }