+++ /dev/null
-// Config file MUON + ITS (for vertex) for PDC06\r
-// Tuned for p+p min biais and quarkonia production (AliGenMUONCocktailpp)\r
-// Remember to define the directory and option\r
-// gAlice->SetConfigFunction("Config('$HOME','box');");\r
-// april 3rd: added L3 magnet \r
-\r
-enum Run_t\r
-{\r
-\r
- ppMBias, pptrg1mu, pptrg2mu, pptrg2muPolA, pptrg2muPolB, pptrg2muPolC, pptrg2muSecret, kRunMax\r
- \r
-};\r
-\r
-const char* runName[] = {\r
- "ppMBias", "pptrg1mu", "pptrg2mu", "pptrg2muPolA", "pptrg2muPolB", "pptrg2muPolC", "pptrg2muSecret" \r
-};\r
-\r
-static Run_t srun = ppMBias;\r
-static Int_t sseed = 12345;\r
-\r
-void Config()\r
-{\r
- \r
- // Get settings from environment variables\r
- ProcessEnvironmentVars();\r
-\r
- //=====================================================================\r
- // Libraries required by geant321\r
- gSystem->Load("liblhapdf.so"); // Parton density functions\r
- gSystem->Load("libpythia6.so"); // Pythia\r
- gSystem->Load("libgeant321.so");\r
- gSystem->Load("libEG");\r
- gSystem->Load("libEGPythia6");\r
- gSystem->Load("libAliPythia6.so"); // ALICE specific implementations\r
- \r
- new TGeant3TGeo("C++ Interface to Geant3");\r
- \r
- // Create the output file \r
- AliRunLoader* rl=0x0;\r
- rl = AliRunLoader::Open(\r
- "galice.root", AliConfig::GetDefaultEventFolderName(), "recreate");\r
- if (rl == 0x0) {\r
- gAlice->Fatal("Config.C","Can not instatiate the Run Loader");\r
- return;\r
- }\r
- rl->SetCompressionLevel(2);\r
- rl->SetNumberOfEventsPerFile(500);\r
- gAlice->SetRunLoader(rl);\r
-\r
- //=======================================================================\r
- // Set External decayer\r
- TVirtualMCDecayer *decayer = new AliDecayerPythia();\r
- decayer->SetForceDecay(kAll);\r
- decayer->Init();\r
- gMC->SetExternalDecayer(decayer);\r
-\r
- //=======================================================================\r
- // ******* GEANT STEERING parameters FOR ALICE SIMULATION *******\r
- gMC->SetProcess("DCAY",1);\r
- gMC->SetProcess("PAIR",1);\r
- gMC->SetProcess("COMP",1);\r
- gMC->SetProcess("PHOT",1);\r
- gMC->SetProcess("PFIS",0);\r
- gMC->SetProcess("DRAY",0);\r
- gMC->SetProcess("ANNI",1);\r
- gMC->SetProcess("BREM",1);\r
- gMC->SetProcess("MUNU",1);\r
- gMC->SetProcess("CKOV",1);\r
- gMC->SetProcess("HADR",1);\r
- gMC->SetProcess("LOSS",2);\r
- gMC->SetProcess("MULS",1);\r
- gMC->SetProcess("RAYL",1);\r
-\r
- Float_t cut = 1.e-3; // 1MeV cut by default\r
- Float_t tofmax = 1.e10;\r
-\r
- gMC->SetCut("CUTGAM", cut);\r
- gMC->SetCut("CUTELE", cut);\r
- gMC->SetCut("CUTNEU", cut);\r
- gMC->SetCut("CUTHAD", cut);\r
- gMC->SetCut("CUTMUO", cut);\r
- gMC->SetCut("BCUTE", cut); \r
- gMC->SetCut("BCUTM", cut); \r
- gMC->SetCut("DCUTE", cut); \r
- gMC->SetCut("DCUTM", cut); \r
- gMC->SetCut("PPCUTM", cut);\r
- gMC->SetCut("TOFMAX", tofmax); \r
- //\r
- //=======================================================================\r
- // ************* STEERING parameters FOR ALICE SIMULATION **************\r
- // Chamber positions\r
- // From AliMUONConstants class we get :\r
- // Position Z (along beam) of the chambers (in cm) \r
- // (from AliMUONConstants class): \r
- // 533.5, 546.5, 678.5, 693.5, 964.0, 986.0, 1251.5, 1278.5, \r
- // 1416.5, 1443.5, 1610, 1625., 1710., 1725. \r
- // Internal Radius (in cm) \r
- // 36.4, 46.2, 66.0, 80., 80., 100., 100. \r
- // External Radius (in cm)\r
- // 183., 245., 395., 560., 563., 850., 900. \r
- //=======================================================================\r
-\r
- // The internal generator, for minimum bias\r
- \r
- AliGenMUONCocktailpp *gener = new AliGenMUONCocktailpp();\r
- gener->SetPtRange(0.,1000.);\r
- gener->SetYRange(-4.,-2.4);\r
- gener->SetPhiRange(0., 360.);\r
- gener->SetOrigin(0.,0.,0.); \r
- gener->SetSigma(0.,0.,5.3);\r
- gener->SetVertexSmear(kPerEvent);\r
-\r
- // Special generator trigger conditions, etc.\r
-\r
- switch(srun) {\r
- case pptrg1mu:\r
- {\r
- gener->SetMuonMultiplicity(1); \r
- gener->SetMuonPtCut(0.5);\r
- gener->SetMuonThetaRange(171.,178.); \r
- }\r
- break;\r
- case pptrg2mu:\r
- {\r
- gener->SetMuonMultiplicity(2); \r
- gener->SetMuonPtCut(0.5);\r
- gener->SetMuonThetaRange(171.,178.); \r
- }\r
- break;\r
- case pptrg2muPolA:\r
- {\r
- gener->SetMuonMultiplicity(2); \r
- gener->SetMuonPtCut(0.5);\r
- gener->SetMuonThetaRange(171.,178.); \r
- gener->SetResPolarization(0.3,0.3,0.,1.,0.,"kColSop");\r
- }\r
- break;\r
- case pptrg2muPolB:\r
- {\r
- gener->SetMuonMultiplicity(2); \r
- gener->SetMuonPtCut(0.5);\r
- gener->SetMuonThetaRange(171.,178.); \r
- gener->SetResPolarization(-0.3,-0.3,0.,1.,0.,"kColSop");\r
- }\r
- break;\r
- case pptrg2muPolC:\r
- {\r
- gener->SetMuonMultiplicity(2); \r
- gener->SetMuonPtCut(0.5);\r
- gener->SetMuonThetaRange(171.,178.); \r
- gener->SetResPolarization(0.,0.,0.,1.,0.,"kColSop");\r
- }\r
- break;\r
- case pptrg2muSecret:\r
- {\r
- gener->SetMuonMultiplicity(2); \r
- gener->SetMuonPtCut(0.5);\r
- gener->SetMuonThetaRange(171.,178.); \r
- gener->SetCMSEnergy(10);\r
- gener->SetSigmaReaction(0.0695);\r
- gener->SetSigmaJPsi(27.4e-6);\r
- gener->SetSigmaPsiP(6.039e-6);\r
- gener->SetSigmaUpsilon(0.855e-6);\r
- gener->SetSigmaUpsilonP(0.218e-6);\r
- gener->SetSigmaUpsilonPP(0.122e-6);\r
- gener->SetSigmaCCbar(4.5e-3);\r
- gener->SetSigmaBBbar(0.33e-3);\r
- gener->SetSigmaSilent();\r
- }\r
- break;\r
- default: break;\r
- }\r
-\r
- gener->CreateCocktail();\r
-\r
- // The external generator\r
-\r
- AliGenPythia *pythia = new AliGenPythia(1);\r
- pythia->SetProcess(kPyMb);\r
- pythia->SetStrucFunc(kCTEQ5L);\r
- pythia->SetEnergyCMS(10000.);\r
- Decay_t dt = gener->GetDecayModePythia();\r
- pythia->SetForceDecay(dt);\r
- pythia->SetPtRange(0.,1000.);\r
- pythia->SetYRange(-8.,8.);\r
- pythia->SetPhiRange(0.,360.);\r
- pythia->SetPtHard(2.76,-1.0);\r
- pythia->SwitchHFOff();\r
- pythia->Init();\r
-\r
- gener->AddGenerator(pythia,"Pythia",1);\r
- gener->Init();\r
- \r
- //============================================================= \r
- // Field (L3 0.5 T) outside dimuon spectrometer\r
- AliMagF *field = new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG);\r
- TGeoGlobalMagField::Instance()->SetField(field);\r
-\r
- Int_t iITS = 1;\r
- Int_t iFMD = 1;\r
- Int_t iVZERO = 1;\r
- Int_t iZDC = 0;\r
- Int_t iT0 = 0;\r
-\r
- rl->CdGAFile();\r
-\r
- //=================== Alice BODY parameters =============================\r
- AliBODY *BODY = new AliBODY("BODY","Alice envelop");\r
- //=================== ABSO parameters ============================\r
- AliABSO *ABSO = new AliABSOv3("ABSO", "Muon Absorber");\r
- //=================== DIPO parameters ============================\r
- AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3");\r
- //================== HALL parameters ============================\r
- AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall");\r
- //================== The L3 Magnet ==============================\r
- AliMAG *MAG = new AliMAG("MAG", "L3 Magnet");\r
- //=================== PIPE parameters ============================\r
- AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe");\r
- //=================== SHIL parameters ============================\r
- AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3");\r
- //=================== ITS parameters =============================\r
- if(iITS) {\r
- AliITS *ITS = new AliITSv11Hybrid("ITS","ITS v11Hybrid");\r
- }\r
- //=================== FMD parameters =============================\r
- if(iFMD) {\r
- AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");\r
- }\r
- //=================== VZERO parameters =============================\r
- if (iVZERO) {\r
- AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");\r
- }\r
- if (iZDC){\r
- //=================== ZDC parameters ============================\r
- AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC");\r
- }\r
- if (iT0) {\r
- //=================== T0 parameters ============================\r
- AliT0 *T0 = new AliT0v1("T0", "T0 Detector");\r
- }\r
-\r
-\r
- //=================== MUON Subsystem ===========================\r
- cout << ">>> Config.C: Creating AliMUONv1 ..."<<endl;\r
-\r
- AliMUON *MUON = new AliMUONv1("MUON","default");\r
-}\r
-\r
-Float_t EtaToTheta(Float_t arg){\r
- return (180./TMath::Pi())*2.*atan(exp(-arg));\r
-}\r
-\r
-void ProcessEnvironmentVars()\r
-{\r
- // Run type\r
- if (gSystem->Getenv("CONFIG_RUN_TYPE")) {\r
- for (Int_t iRun = 0; iRun < kRunMax; iRun++) {\r
- if (strcmp(gSystem->Getenv("CONFIG_RUN_TYPE"), runName[iRun])==0) {\r
- srun = (Run_t)iRun;\r
- cout<<"Run type set to "<<runName[iRun]<<endl;\r
- }\r
- }\r
- }\r
-}\r