1619a4d3 |
1 | // Config file MUON + ITS (for vertex) for PDC06\r |
2 | // Tuned for p+p min biais and quarkonia production (AliGenMUONCocktailpp)\r |
3 | // Remember to define the directory and option\r |
4 | // gAlice->SetConfigFunction("Config('$HOME','box');");\r |
5 | // april 3rd: added L3 magnet \r |
6 | \r |
7 | enum Run_t\r |
8 | {\r |
9 | \r |
10 | ppMBias, pptrg1mu, pptrg2mu, pptrg2muPolA, pptrg2muPolB, pptrg2muPolC, pptrg2muSecret, kRunMax\r |
11 | \r |
12 | };\r |
13 | \r |
14 | const char* runName[] = {\r |
15 | "ppMBias", "pptrg1mu", "pptrg2mu", "pptrg2muPolA", "pptrg2muPolB", "pptrg2muPolC", "pptrg2muSecret" \r |
16 | };\r |
17 | \r |
18 | static Run_t srun = ppMBias;\r |
19 | static Int_t sseed = 12345;\r |
20 | \r |
21 | void Config()\r |
22 | {\r |
23 | \r |
24 | // Get settings from environment variables\r |
25 | ProcessEnvironmentVars();\r |
26 | \r |
27 | //=====================================================================\r |
28 | // Libraries required by geant321\r |
29 | gSystem->Load("liblhapdf.so"); // Parton density functions\r |
30 | gSystem->Load("libpythia6.so"); // Pythia\r |
31 | gSystem->Load("libgeant321.so");\r |
32 | gSystem->Load("libEG");\r |
33 | gSystem->Load("libEGPythia6");\r |
34 | gSystem->Load("libAliPythia6.so"); // ALICE specific implementations\r |
35 | \r |
36 | new TGeant3TGeo("C++ Interface to Geant3");\r |
37 | \r |
38 | // Create the output file \r |
39 | AliRunLoader* rl=0x0;\r |
40 | rl = AliRunLoader::Open(\r |
41 | "galice.root", AliConfig::GetDefaultEventFolderName(), "recreate");\r |
42 | if (rl == 0x0) {\r |
43 | gAlice->Fatal("Config.C","Can not instatiate the Run Loader");\r |
44 | return;\r |
45 | }\r |
46 | rl->SetCompressionLevel(2);\r |
47 | rl->SetNumberOfEventsPerFile(500);\r |
48 | gAlice->SetRunLoader(rl);\r |
49 | \r |
50 | //=======================================================================\r |
51 | // Set External decayer\r |
52 | TVirtualMCDecayer *decayer = new AliDecayerPythia();\r |
53 | decayer->SetForceDecay(kAll);\r |
54 | decayer->Init();\r |
55 | gMC->SetExternalDecayer(decayer);\r |
56 | \r |
57 | //=======================================================================\r |
58 | // ******* GEANT STEERING parameters FOR ALICE SIMULATION *******\r |
59 | gMC->SetProcess("DCAY",1);\r |
60 | gMC->SetProcess("PAIR",1);\r |
61 | gMC->SetProcess("COMP",1);\r |
62 | gMC->SetProcess("PHOT",1);\r |
63 | gMC->SetProcess("PFIS",0);\r |
64 | gMC->SetProcess("DRAY",0);\r |
65 | gMC->SetProcess("ANNI",1);\r |
66 | gMC->SetProcess("BREM",1);\r |
67 | gMC->SetProcess("MUNU",1);\r |
68 | gMC->SetProcess("CKOV",1);\r |
69 | gMC->SetProcess("HADR",1);\r |
70 | gMC->SetProcess("LOSS",2);\r |
71 | gMC->SetProcess("MULS",1);\r |
72 | gMC->SetProcess("RAYL",1);\r |
73 | \r |
74 | Float_t cut = 1.e-3; // 1MeV cut by default\r |
75 | Float_t tofmax = 1.e10;\r |
76 | \r |
77 | gMC->SetCut("CUTGAM", cut);\r |
78 | gMC->SetCut("CUTELE", cut);\r |
79 | gMC->SetCut("CUTNEU", cut);\r |
80 | gMC->SetCut("CUTHAD", cut);\r |
81 | gMC->SetCut("CUTMUO", cut);\r |
82 | gMC->SetCut("BCUTE", cut); \r |
83 | gMC->SetCut("BCUTM", cut); \r |
84 | gMC->SetCut("DCUTE", cut); \r |
85 | gMC->SetCut("DCUTM", cut); \r |
86 | gMC->SetCut("PPCUTM", cut);\r |
87 | gMC->SetCut("TOFMAX", tofmax); \r |
88 | //\r |
89 | //=======================================================================\r |
90 | // ************* STEERING parameters FOR ALICE SIMULATION **************\r |
91 | // Chamber positions\r |
92 | // From AliMUONConstants class we get :\r |
93 | // Position Z (along beam) of the chambers (in cm) \r |
94 | // (from AliMUONConstants class): \r |
95 | // 533.5, 546.5, 678.5, 693.5, 964.0, 986.0, 1251.5, 1278.5, \r |
96 | // 1416.5, 1443.5, 1610, 1625., 1710., 1725. \r |
97 | // Internal Radius (in cm) \r |
98 | // 36.4, 46.2, 66.0, 80., 80., 100., 100. \r |
99 | // External Radius (in cm)\r |
100 | // 183., 245., 395., 560., 563., 850., 900. \r |
101 | //=======================================================================\r |
102 | \r |
103 | // The internal generator, for minimum bias\r |
104 | \r |
105 | AliGenMUONCocktailpp *gener = new AliGenMUONCocktailpp();\r |
106 | gener->SetPtRange(0.,1000.);\r |
107 | gener->SetYRange(-4.,-2.4);\r |
108 | gener->SetPhiRange(0., 360.);\r |
109 | gener->SetOrigin(0.,0.,0.); \r |
110 | gener->SetSigma(0.,0.,5.3);\r |
111 | gener->SetVertexSmear(kPerEvent);\r |
112 | \r |
113 | // Special generator trigger conditions, etc.\r |
114 | \r |
115 | switch(srun) {\r |
116 | case pptrg1mu:\r |
117 | {\r |
118 | gener->SetMuonMultiplicity(1); \r |
119 | gener->SetMuonPtCut(0.5);\r |
120 | gener->SetMuonThetaRange(171.,178.); \r |
121 | }\r |
122 | break;\r |
123 | case pptrg2mu:\r |
124 | {\r |
125 | gener->SetMuonMultiplicity(2); \r |
126 | gener->SetMuonPtCut(0.5);\r |
127 | gener->SetMuonThetaRange(171.,178.); \r |
128 | }\r |
129 | break;\r |
130 | case pptrg2muPolA:\r |
131 | {\r |
132 | gener->SetMuonMultiplicity(2); \r |
133 | gener->SetMuonPtCut(0.5);\r |
134 | gener->SetMuonThetaRange(171.,178.); \r |
135 | gener->SetResPolarization(0.3,0.3,0.,1.,0.,"kColSop");\r |
136 | }\r |
137 | break;\r |
138 | case pptrg2muPolB:\r |
139 | {\r |
140 | gener->SetMuonMultiplicity(2); \r |
141 | gener->SetMuonPtCut(0.5);\r |
142 | gener->SetMuonThetaRange(171.,178.); \r |
143 | gener->SetResPolarization(-0.3,-0.3,0.,1.,0.,"kColSop");\r |
144 | }\r |
145 | break;\r |
146 | case pptrg2muPolC:\r |
147 | {\r |
148 | gener->SetMuonMultiplicity(2); \r |
149 | gener->SetMuonPtCut(0.5);\r |
150 | gener->SetMuonThetaRange(171.,178.); \r |
151 | gener->SetResPolarization(0.,0.,0.,1.,0.,"kColSop");\r |
152 | }\r |
153 | break;\r |
154 | case pptrg2muSecret:\r |
155 | {\r |
156 | gener->SetMuonMultiplicity(2); \r |
157 | gener->SetMuonPtCut(0.5);\r |
158 | gener->SetMuonThetaRange(171.,178.); \r |
159 | gener->SetCMSEnergy(10);\r |
160 | gener->SetSigmaReaction(0.0695);\r |
161 | gener->SetSigmaJPsi(27.4e-6);\r |
162 | gener->SetSigmaPsiP(6.039e-6);\r |
163 | gener->SetSigmaUpsilon(0.855e-6);\r |
164 | gener->SetSigmaUpsilonP(0.218e-6);\r |
165 | gener->SetSigmaUpsilonPP(0.122e-6);\r |
166 | gener->SetSigmaCCbar(4.5e-3);\r |
167 | gener->SetSigmaBBbar(0.33e-3);\r |
168 | gener->SetSigmaSilent();\r |
169 | }\r |
170 | break;\r |
171 | default: break;\r |
172 | }\r |
173 | \r |
174 | gener->CreateCocktail();\r |
175 | \r |
176 | // The external generator\r |
177 | \r |
178 | AliGenPythia *pythia = new AliGenPythia(1);\r |
179 | pythia->SetProcess(kPyMb);\r |
180 | pythia->SetStrucFunc(kCTEQ5L);\r |
181 | pythia->SetEnergyCMS(10000.);\r |
182 | Decay_t dt = gener->GetDecayModePythia();\r |
183 | pythia->SetForceDecay(dt);\r |
184 | pythia->SetPtRange(0.,1000.);\r |
185 | pythia->SetYRange(-8.,8.);\r |
186 | pythia->SetPhiRange(0.,360.);\r |
187 | pythia->SetPtHard(2.76,-1.0);\r |
188 | pythia->SwitchHFOff();\r |
189 | pythia->Init();\r |
190 | \r |
191 | gener->AddGenerator(pythia,"Pythia",1);\r |
192 | gener->Init();\r |
193 | \r |
194 | //============================================================= \r |
195 | // Field (L3 0.5 T) outside dimuon spectrometer\r |
4642ac4b |
196 | AliMagF *field = new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG);\r |
1619a4d3 |
197 | TGeoGlobalMagField::Instance()->SetField(field);\r |
198 | \r |
199 | Int_t iITS = 1;\r |
200 | Int_t iFMD = 1;\r |
201 | Int_t iVZERO = 1;\r |
202 | Int_t iZDC = 0;\r |
203 | Int_t iT0 = 0;\r |
204 | \r |
205 | rl->CdGAFile();\r |
206 | \r |
207 | //=================== Alice BODY parameters =============================\r |
208 | AliBODY *BODY = new AliBODY("BODY","Alice envelop");\r |
209 | //=================== ABSO parameters ============================\r |
210 | AliABSO *ABSO = new AliABSOv3("ABSO", "Muon Absorber");\r |
211 | //=================== DIPO parameters ============================\r |
212 | AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3");\r |
213 | //================== HALL parameters ============================\r |
214 | AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall");\r |
215 | //================== The L3 Magnet ==============================\r |
216 | AliMAG *MAG = new AliMAG("MAG", "L3 Magnet");\r |
217 | //=================== PIPE parameters ============================\r |
218 | AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe");\r |
219 | //=================== SHIL parameters ============================\r |
220 | AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3");\r |
221 | //=================== ITS parameters =============================\r |
222 | if(iITS) {\r |
223 | AliITS *ITS = new AliITSv11Hybrid("ITS","ITS v11Hybrid");\r |
224 | }\r |
225 | //=================== FMD parameters =============================\r |
226 | if(iFMD) {\r |
227 | AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");\r |
228 | }\r |
229 | //=================== VZERO parameters =============================\r |
230 | if (iVZERO) {\r |
231 | AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");\r |
232 | }\r |
233 | if (iZDC){\r |
234 | //=================== ZDC parameters ============================\r |
235 | AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC");\r |
236 | }\r |
237 | if (iT0) {\r |
238 | //=================== T0 parameters ============================\r |
239 | AliT0 *T0 = new AliT0v1("T0", "T0 Detector");\r |
240 | }\r |
241 | \r |
242 | \r |
243 | //=================== MUON Subsystem ===========================\r |
244 | cout << ">>> Config.C: Creating AliMUONv1 ..."<<endl;\r |
245 | \r |
246 | AliMUON *MUON = new AliMUONv1("MUON","default");\r |
247 | }\r |
248 | \r |
249 | Float_t EtaToTheta(Float_t arg){\r |
250 | return (180./TMath::Pi())*2.*atan(exp(-arg));\r |
251 | }\r |
252 | \r |
253 | void ProcessEnvironmentVars()\r |
254 | {\r |
255 | // Run type\r |
256 | if (gSystem->Getenv("CONFIG_RUN_TYPE")) {\r |
257 | for (Int_t iRun = 0; iRun < kRunMax; iRun++) {\r |
258 | if (strcmp(gSystem->Getenv("CONFIG_RUN_TYPE"), runName[iRun])==0) {\r |
259 | srun = (Run_t)iRun;\r |
260 | cout<<"Run type set to "<<runName[iRun]<<endl;\r |
261 | }\r |
262 | }\r |
263 | }\r |
264 | }\r |