09f18d236b2605f6e6f24a3a99a4f8b994d45246
[u/mrichter/AliRoot.git] / prod / LHC09c1 / Config.C
1 //\r
2 // Configuration for the first physics production 2008\r
3 //\r
4 \r
5 // One can use the configuration macro in compiled mode by\r
6 // root [0] gSystem->Load("libgeant321");\r
7 // root [0] gSystem->SetIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/include\\r
8 //                   -I$ALICE_ROOT -I$ALICE/geant3/TGeant3");\r
9 // root [0] .x grun.C(1,"Config.C++")\r
10 \r
11 #if !defined(__CINT__) || defined(__MAKECINT__)\r
12 #include <Riostream.h>\r
13 #include <TRandom.h>\r
14 #include <TDatime.h>\r
15 #include <TSystem.h>\r
16 #include <TVirtualMC.h>\r
17 #include <TGeant3TGeo.h>\r
18 #include "STEER/AliRunLoader.h"\r
19 #include "STEER/AliRun.h"\r
20 #include "STEER/AliConfig.h"\r
21 #include "PYTHIA6/AliDecayerPythia.h"\r
22 #include "PYTHIA6/AliGenPythia.h"\r
23 #include "TDPMjet/AliGenDPMjet.h"\r
24 #include "STEER/AliMagFCheb.h"\r
25 #include "STRUCT/AliBODY.h"\r
26 #include "STRUCT/AliMAG.h"\r
27 #include "STRUCT/AliABSOv3.h"\r
28 #include "STRUCT/AliDIPOv3.h"\r
29 #include "STRUCT/AliHALLv3.h"\r
30 #include "STRUCT/AliFRAMEv2.h"\r
31 #include "STRUCT/AliSHILv3.h"\r
32 #include "STRUCT/AliPIPEv3.h"\r
33 #include "ITS/AliITSv11Hybrid.h"\r
34 #include "TPC/AliTPCv2.h"\r
35 #include "TOF/AliTOFv6T0.h"\r
36 #include "HMPID/AliHMPIDv3.h"\r
37 #include "ZDC/AliZDCv3.h"\r
38 #include "TRD/AliTRDv1.h"\r
39 #include "TRD/AliTRDgeometry.h"\r
40 #include "FMD/AliFMDv1.h"\r
41 #include "MUON/AliMUONv1.h"\r
42 #include "PHOS/AliPHOSv1.h"\r
43 #include "PHOS/AliPHOSSimParam.h"\r
44 #include "PMD/AliPMDv1.h"\r
45 #include "T0/AliT0v1.h"\r
46 #include "EMCAL/AliEMCALv2.h"\r
47 #include "ACORDE/AliACORDEv1.h"\r
48 #include "VZERO/AliVZEROv7.h"\r
49 #endif\r
50 \r
51 \r
52 enum PDC06Proc_t \r
53 {\r
54   kPythia6, kPhojet, kRunMax\r
55 };\r
56 \r
57 const char * pprRunName[] = {\r
58   "kPythia6", "kPhojet"\r
59 };\r
60 \r
61 enum Mag_t\r
62 {\r
63   kNoField, k5kG, kFieldMax\r
64 };\r
65 \r
66 const char * pprField[] = {\r
67   "kNoField", "k5kG"\r
68 };\r
69 \r
70 //--- Functions ---\r
71 class AliGenPythia;\r
72 AliGenerator *MbPythia();\r
73 AliGenerator *MbPhojet();\r
74 void ProcessEnvironmentVars();\r
75 \r
76 // Geterator, field, beam energy\r
77 static PDC06Proc_t   proc     = kPythia6;\r
78 static Mag_t         mag      = k5kG;\r
79 static Float_t       energy   = 900; // energy in CMS\r
80 //========================//\r
81 // Set Random Number seed //\r
82 //========================//\r
83 TDatime dt;\r
84 static UInt_t seed    = dt.Get();\r
85 \r
86 // Comment line\r
87 static TString comment;\r
88 \r
89 void Config()\r
90 {\r
91     \r
92 \r
93   // Get settings from environment variables\r
94   ProcessEnvironmentVars();\r
95 \r
96   gRandom->SetSeed(seed);\r
97   cerr<<"Seed for random number generation= "<<seed<<endl; \r
98 \r
99   // Libraries required by geant321\r
100 #if defined(__CINT__)\r
101   gSystem->Load("liblhapdf");      // Parton density functions\r
102   gSystem->Load("libEGPythia6");   // TGenerator interface\r
103   gSystem->Load("libpythia6");     // Pythia\r
104   gSystem->Load("libAliPythia6");  // ALICE specific implementations\r
105   gSystem->Load("libgeant321");\r
106 #endif\r
107 \r
108   new TGeant3TGeo("C++ Interface to Geant3");\r
109 \r
110   //=======================================================================\r
111   //  Create the output file\r
112 \r
113    \r
114   AliRunLoader* rl=0x0;\r
115 \r
116   cout<<"Config.C: Creating Run Loader ..."<<endl;\r
117   rl = AliRunLoader::Open("galice.root",\r
118                           AliConfig::GetDefaultEventFolderName(),\r
119                           "recreate");\r
120   if (rl == 0x0)\r
121     {\r
122       gAlice->Fatal("Config.C","Can not instatiate the Run Loader");\r
123       return;\r
124     }\r
125   rl->SetCompressionLevel(2);\r
126   rl->SetNumberOfEventsPerFile(1000);\r
127   gAlice->SetRunLoader(rl);\r
128   // gAlice->SetGeometryFromFile("geometry.root");\r
129   // gAlice->SetGeometryFromCDB();\r
130   \r
131   // Set the trigger configuration: proton-proton\r
132   gAlice->SetTriggerDescriptor("p-p");\r
133 \r
134   //\r
135   //=======================================================================\r
136   // ************* STEERING parameters FOR ALICE SIMULATION **************\r
137   // --- Specify event type to be tracked through the ALICE setup\r
138   // --- All positions are in cm, angles in degrees, and P and E in GeV\r
139 \r
140 \r
141     gMC->SetProcess("DCAY",1);\r
142     gMC->SetProcess("PAIR",1);\r
143     gMC->SetProcess("COMP",1);\r
144     gMC->SetProcess("PHOT",1);\r
145     gMC->SetProcess("PFIS",0);\r
146     gMC->SetProcess("DRAY",0);\r
147     gMC->SetProcess("ANNI",1);\r
148     gMC->SetProcess("BREM",1);\r
149     gMC->SetProcess("MUNU",1);\r
150     gMC->SetProcess("CKOV",1);\r
151     gMC->SetProcess("HADR",1);\r
152     gMC->SetProcess("LOSS",2);\r
153     gMC->SetProcess("MULS",1);\r
154     gMC->SetProcess("RAYL",1);\r
155 \r
156     Float_t cut = 1.e-3;        // 1MeV cut by default\r
157     Float_t tofmax = 1.e10;\r
158 \r
159     gMC->SetCut("CUTGAM", cut);\r
160     gMC->SetCut("CUTELE", cut);\r
161     gMC->SetCut("CUTNEU", cut);\r
162     gMC->SetCut("CUTHAD", cut);\r
163     gMC->SetCut("CUTMUO", cut);\r
164     gMC->SetCut("BCUTE",  cut); \r
165     gMC->SetCut("BCUTM",  cut); \r
166     gMC->SetCut("DCUTE",  cut); \r
167     gMC->SetCut("DCUTM",  cut); \r
168     gMC->SetCut("PPCUTM", cut);\r
169     gMC->SetCut("TOFMAX", tofmax); \r
170 \r
171 \r
172 \r
173 \r
174   //======================//\r
175   // Set External decayer //\r
176   //======================//\r
177   TVirtualMCDecayer* decayer = new AliDecayerPythia();\r
178   decayer->SetForceDecay(kAll);\r
179   decayer->Init();\r
180   gMC->SetExternalDecayer(decayer);\r
181 \r
182   //=========================//\r
183   // Generator Configuration //\r
184   //=========================//\r
185   AliGenerator* gener = 0x0;\r
186   \r
187   if (proc == kPythia6) {\r
188       gener = MbPythia();\r
189   } else if (proc == kPhojet) {\r
190       gener = MbPhojet();\r
191   }\r
192   \r
193   \r
194 \r
195   // PRIMARY VERTEX\r
196   //\r
197   gener->SetOrigin(0., 0., 0.);    // vertex position\r
198   //\r
199   //\r
200   // Size of the interaction diamond\r
201   // Longitudinal\r
202   Float_t sigmaz  = 5.4 / TMath::Sqrt(2.); // [cm]\r
203   if (energy == 900)\r
204     sigmaz  = 10.5 / TMath::Sqrt(2.); // [cm]\r
205   if (energy == 7000)\r
206     sigmaz  = 6.3 / TMath::Sqrt(2.); // [cm]\r
207   //\r
208   // Transverse\r
209   Float_t betast  = 10;                 // beta* [m]\r
210   Float_t eps     = 3.75e-6;            // emittance [m]\r
211   Float_t gamma   = energy / 2.0 / 0.938272;  // relativistic gamma [1]\r
212   Float_t sigmaxy = TMath::Sqrt(eps * betast / gamma) / TMath::Sqrt(2.) * 100.;  // [cm]\r
213   printf("\n \n Diamond size x-y: %10.3e z: %10.3e\n \n", sigmaxy, sigmaz);\r
214     \r
215   gener->SetSigma(sigmaxy, sigmaxy, sigmaz);      // Sigma in (X,Y,Z) (cm) on IP position\r
216   gener->SetCutVertexZ(3.);        // Truncate at 3 sigma\r
217   gener->SetVertexSmear(kPerEvent);\r
218 \r
219   gener->Init();\r
220 \r
221   // FIELD\r
222   //\r
223   AliMagF* field = 0x0;\r
224   if (mag == kNoField) {\r
225     comment = comment.Append(" | L3 field 0.0 T");\r
226     field = new AliMagF("Maps","Maps", 2, 0., 0., 10., AliMagF::k2kG,\r
227                         "$(ALICE_ROOT)/data/maps/mfchebKGI_sym.root",\r
228                         AliMagF::kBeamTypepp, energy/2.0);\r
229   } else if (mag == k5kG) {\r
230     comment = comment.Append(" | L3 field 0.5 T");\r
231     field = new AliMagF("Maps","Maps", 2, 1., 1., 10., AliMagF::k5kG,\r
232                         "$(ALICE_ROOT)/data/maps/mfchebKGI_sym.root",\r
233                         AliMagF::kBeamTypepp, energy/2.0);\r
234   }\r
235   printf("\n \n Comment: %s \n \n", comment.Data());\r
236 \r
237   TGeoGlobalMagField::Instance()->SetField(field);\r
238     \r
239   rl->CdGAFile();\r
240   \r
241   Int_t iABSO  = 1;\r
242   Int_t iACORDE= 0;\r
243   Int_t iDIPO  = 1;\r
244   Int_t iEMCAL = 1;\r
245   Int_t iFMD   = 1;\r
246   Int_t iFRAME = 1;\r
247   Int_t iHALL  = 1;\r
248   Int_t iITS   = 1;\r
249   Int_t iMAG   = 1;\r
250   Int_t iMUON  = 1;\r
251   Int_t iPHOS  = 1;\r
252   Int_t iPIPE  = 1;\r
253   Int_t iPMD   = 1;\r
254   Int_t iHMPID = 1;\r
255   Int_t iSHIL  = 1;\r
256   Int_t iT0    = 1;\r
257   Int_t iTOF   = 1;\r
258   Int_t iTPC   = 1;\r
259   Int_t iTRD   = 1;\r
260   Int_t iVZERO = 1;\r
261   Int_t iZDC   = 1;\r
262   \r
263 \r
264     //=================== Alice BODY parameters =============================\r
265     AliBODY *BODY = new AliBODY("BODY", "Alice envelop");\r
266 \r
267 \r
268     if (iMAG)\r
269     {\r
270         //=================== MAG parameters ============================\r
271         // --- Start with Magnet since detector layouts may be depending ---\r
272         // --- on the selected Magnet dimensions ---\r
273         AliMAG *MAG = new AliMAG("MAG", "Magnet");\r
274     }\r
275 \r
276 \r
277     if (iABSO)\r
278     {\r
279         //=================== ABSO parameters ============================\r
280         AliABSO *ABSO = new AliABSOv3("ABSO", "Muon Absorber");\r
281     }\r
282 \r
283     if (iDIPO)\r
284     {\r
285         //=================== DIPO parameters ============================\r
286 \r
287         AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3");\r
288     }\r
289 \r
290     if (iHALL)\r
291     {\r
292         //=================== HALL parameters ============================\r
293 \r
294         AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall");\r
295     }\r
296 \r
297 \r
298     if (iFRAME)\r
299     {\r
300         //=================== FRAME parameters ============================\r
301 \r
302         AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");\r
303         FRAME->SetHoles(1);\r
304     }\r
305 \r
306     if (iSHIL)\r
307     {\r
308         //=================== SHIL parameters ============================\r
309 \r
310         AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3");\r
311     }\r
312 \r
313 \r
314     if (iPIPE)\r
315     {\r
316         //=================== PIPE parameters ============================\r
317 \r
318         AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe");\r
319     }\r
320  \r
321     if (iITS)\r
322     {\r
323         //=================== ITS parameters ============================\r
324 \r
325         AliITS *ITS  = new AliITSv11Hybrid("ITS","ITS v11Hybrid");\r
326     }\r
327 \r
328     if (iTPC)\r
329     {\r
330       //============================ TPC parameters =====================\r
331 \r
332         AliTPC *TPC = new AliTPCv2("TPC", "Default");\r
333     }\r
334 \r
335 \r
336     if (iTOF) {\r
337         //=================== TOF parameters ============================\r
338 \r
339         AliTOF *TOF = new AliTOFv6T0("TOF", "normal TOF");\r
340     }\r
341 \r
342 \r
343     if (iHMPID)\r
344     {\r
345         //=================== HMPID parameters ===========================\r
346 \r
347         AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID");\r
348 \r
349     }\r
350 \r
351 \r
352     if (iZDC)\r
353     {\r
354         //=================== ZDC parameters ============================\r
355 \r
356         AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC");\r
357     }\r
358 \r
359     if (iTRD)\r
360     {\r
361         //=================== TRD parameters ============================\r
362 \r
363         AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");\r
364         AliTRDgeometry *geoTRD = TRD->GetGeometry();\r
365         // Partial geometry: modules at 0,1,7,8,9,16,17\r
366         // starting at 3h in positive direction\r
367         geoTRD->SetSMstatus(2,0);\r
368         geoTRD->SetSMstatus(3,0);\r
369         geoTRD->SetSMstatus(4,0);\r
370         geoTRD->SetSMstatus(5,0);\r
371         geoTRD->SetSMstatus(6,0);\r
372         geoTRD->SetSMstatus(10,0);\r
373         geoTRD->SetSMstatus(11,0);\r
374         geoTRD->SetSMstatus(12,0);\r
375         geoTRD->SetSMstatus(13,0);\r
376         geoTRD->SetSMstatus(14,0);\r
377         geoTRD->SetSMstatus(15,0);\r
378     }\r
379 \r
380     if (iFMD)\r
381     {\r
382         //=================== FMD parameters ============================\r
383 \r
384         AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");\r
385    }\r
386 \r
387     if (iMUON)\r
388     {\r
389         //=================== MUON parameters ===========================\r
390         // New MUONv1 version (geometry defined via builders)\r
391 \r
392         AliMUON *MUON = new AliMUONv1("MUON", "default");\r
393     }\r
394 \r
395     if (iPHOS)\r
396     {\r
397         //=================== PHOS parameters ===========================\r
398 \r
399         AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP");\r
400         //Set simulation parameters different from the default ones.\r
401         AliPHOSSimParam* simEmc = AliPHOSSimParam::GetInstance() ;\r
402   \r
403         // APD noise of warm (+20C) PHOS:\r
404         // a2 = a1*(Y1/Y2)*(M1/M2), where a1 = 0.012 is APD noise at -25C,\r
405         // Y1 = 4.3 photo-electrons/MeV, Y2 = 1.7 p.e/MeV - light yields at -25C and +20C,\r
406         // M1 = 50, M2 = 50 - APD gain factors chosen for t1 = -25C and t2 = +20C,\r
407         // Y = MeanLightYield*APDEfficiency.\r
408 \r
409         Float_t apdNoise = 0.012*2.5; \r
410         simEmc->SetAPDNoise(apdNoise);\r
411 \r
412         //Raw Light Yield at +20C\r
413         simEmc->SetMeanLightYield(18800);\r
414 \r
415         //ADC channel width at +18C.\r
416         simEmc->SetADCchannelW(0.0125);\r
417     }\r
418 \r
419 \r
420     if (iPMD)\r
421     {\r
422         //=================== PMD parameters ============================\r
423 \r
424         AliPMD *PMD = new AliPMDv1("PMD", "normal PMD");\r
425     }\r
426 \r
427     if (iT0)\r
428     {\r
429         //=================== T0 parameters ============================\r
430         AliT0 *T0 = new AliT0v1("T0", "T0 Detector");\r
431     }\r
432 \r
433     if (iEMCAL)\r
434     {\r
435         //=================== EMCAL parameters ============================\r
436 \r
437         AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETE");\r
438     }\r
439 \r
440      if (iACORDE)\r
441     {\r
442         //=================== ACORDE parameters ============================\r
443 \r
444         AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE");\r
445     }\r
446 \r
447      if (iVZERO)\r
448     {\r
449         //=================== ACORDE parameters ============================\r
450 \r
451         AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");\r
452     }\r
453 }\r
454 //\r
455 //           PYTHIA\r
456 //\r
457 \r
458 AliGenerator* MbPythia()\r
459 {\r
460       comment = comment.Append(Form(" pp at %d GeV: Pythia low-pt", (Int_t) energy));\r
461 //\r
462 //    Pythia\r
463       AliGenPythia* pythia = new AliGenPythia(-1); \r
464       pythia->SetMomentumRange(0, 999999.);\r
465       pythia->SetThetaRange(0., 180.);\r
466       pythia->SetYRange(-12.,12.);\r
467       pythia->SetPtRange(0,1000.);\r
468       pythia->SetProcess(kPyMb);\r
469       pythia->SetEnergyCMS(energy);\r
470       \r
471       // set high multiplicity trigger\r
472       \r
473       // this weight achieves a flat multiplicity distribution\r
474       TH1 *weight = new TH1D("weight","weight",201,-0.5,200.5);\r
475       weight->SetBinContent(1,5.557943);\r
476       weight->SetBinContent(2,8.987494);\r
477       weight->SetBinContent(5,0.2770979);\r
478       weight->SetBinContent(6,0.1434399);\r
479       weight->SetBinContent(7,0.8892316);\r
480       weight->SetBinContent(8,0.6610603);\r
481       weight->SetBinContent(9,0.5973895);\r
482       weight->SetBinContent(10,1.57095);\r
483       weight->SetBinContent(11,0.8407031);\r
484       weight->SetBinContent(12,1.676689);\r
485       weight->SetBinContent(13,1.381264);\r
486       weight->SetBinContent(14,1.209133);\r
487       weight->SetBinContent(15,1.326467);\r
488       weight->SetBinContent(16,1.248326);\r
489       weight->SetBinContent(17,1.396646);\r
490       weight->SetBinContent(18,0.7155231);\r
491       weight->SetBinContent(19,0.262448);\r
492       weight->SetBinContent(20,1.804454);\r
493       weight->SetBinContent(21,0.5723247);\r
494       weight->SetBinContent(22,1.279835);\r
495       weight->SetBinContent(23,0.285018);\r
496       weight->SetBinContent(24,1.239206);\r
497       weight->SetBinContent(25,0.628233);\r
498       weight->SetBinContent(26,1.91724);\r
499       weight->SetBinContent(28,1.130583);\r
500       weight->SetBinContent(29,0.9052101);\r
501       weight->SetBinContent(31,0.4293885);\r
502       weight->SetBinContent(32,1);\r
503       weight->SetBinContent(33,0.9999998);\r
504       weight->SetBinContent(34,0.9999998);\r
505       weight->SetBinContent(35,0.9999999);\r
506       weight->SetBinContent(36,1);\r
507       weight->SetBinContent(37,1);\r
508       weight->SetBinContent(38,1);\r
509       weight->SetBinContent(39,0.9999999);\r
510       weight->SetBinContent(40,0.9999998);\r
511       weight->SetBinContent(41,0.9999998);\r
512       weight->SetBinContent(42,0.9999998);\r
513       weight->SetBinContent(43,0.9999999);\r
514       weight->SetBinContent(44,0.9999999);\r
515       weight->SetBinContent(45,0.9999997);\r
516       weight->SetBinContent(46,0.9999997);\r
517       weight->SetBinContent(47,0.9999997);\r
518       weight->SetBinContent(48,0.9999997);\r
519       weight->SetBinContent(49,0.9999993);\r
520       weight->SetBinContent(50,0.9999997);\r
521       weight->SetBinContent(51,0.9999997);\r
522       weight->SetBinContent(52,0.9999996);\r
523       weight->SetBinContent(53,0.9999995);\r
524       weight->SetBinContent(54,1);\r
525       weight->SetBinContent(55,1);\r
526       weight->SetBinContent(56,1);\r
527       weight->SetBinContent(57,0.9999999);\r
528       weight->SetBinContent(58,0.9999997);\r
529       weight->SetBinContent(59,1);\r
530       weight->SetBinContent(60,1);\r
531       weight->SetBinContent(61,1);\r
532       weight->SetBinContent(62,1);\r
533       weight->SetBinContent(63,0.9999999);\r
534       weight->SetBinContent(64,0.9999999);\r
535       weight->SetBinContent(65,0.9999998);\r
536       weight->SetBinContent(66,0.9999997);\r
537       weight->SetBinContent(67,0.9999999);\r
538       weight->SetBinContent(68,0.9999997);\r
539       weight->SetBinContent(69,0.9999997);\r
540       weight->SetBinContent(70,0.9999997);\r
541       weight->SetBinContent(71,0.9999995);\r
542       weight->SetBinContent(72,0.9999997);\r
543       weight->SetBinContent(73,0.9999997);\r
544       weight->SetBinContent(74,0.9999997);\r
545       weight->SetBinContent(75,0.9999997);\r
546       weight->SetBinContent(76,0.9999997);\r
547       weight->SetBinContent(77,0.9999998);\r
548       weight->SetBinContent(78,0.9999998);\r
549       weight->SetBinContent(79,0.9999997);\r
550       weight->SetBinContent(80,0.9999998);\r
551       weight->SetBinContent(81,0.9999999);\r
552       weight->SetBinContent(82,0.9999999);\r
553       weight->SetBinContent(83,0.9999999);\r
554       weight->SetBinContent(84,0.9999998);\r
555       weight->SetBinContent(85,0.9999996);\r
556       weight->SetBinContent(86,0.9999998);\r
557       weight->SetBinContent(87,0.9999998);\r
558       weight->SetBinContent(88,0.9999999);\r
559       weight->SetBinContent(89,0.9999997);\r
560       weight->SetBinContent(90,0.9999997);\r
561       weight->SetBinContent(91,0.9999997);\r
562       weight->SetBinContent(92,0.9999996);\r
563       weight->SetBinContent(93,0.9999996);\r
564       weight->SetBinContent(94,0.9999995);\r
565       weight->SetBinContent(95,0.9999999);\r
566       weight->SetBinContent(96,0.9999999);\r
567       weight->SetBinContent(97,0.9999998);\r
568       weight->SetBinContent(98,0.9999998);\r
569       weight->SetBinContent(99,0.9999998);\r
570       weight->SetBinContent(100,0.9999998);\r
571       weight->SetEntries(507);      \r
572         \r
573       Int_t limit = weight->GetRandom();\r
574       pythia->SetTriggerChargedMultiplicity(limit, 1.4);\r
575       \r
576       comment = comment.Append(Form(" multiplicity threshold set to %d in |eta| < 1.4", limit));\r
577           \r
578       return pythia;\r
579 }\r
580 \r
581 AliGenerator* MbPhojet()\r
582 {\r
583       comment = comment.Append(" pp at 14 TeV: Phojet low-pt");\r
584 //\r
585 //    DPMJET\r
586 #if defined(__CINT__)\r
587   gSystem->Load("libdpmjet");      // Parton density functions\r
588   gSystem->Load("libTDPMjet");      // Parton density functions\r
589 #endif\r
590       AliGenDPMjet* dpmjet = new AliGenDPMjet(-1); \r
591       dpmjet->SetMomentumRange(0, 999999.);\r
592       dpmjet->SetThetaRange(0., 180.);\r
593       dpmjet->SetYRange(-12.,12.);\r
594       dpmjet->SetPtRange(0,1000.);\r
595       dpmjet->SetProcess(kDpmMb);\r
596       dpmjet->SetEnergyCMS(energy);\r
597 \r
598       return dpmjet;\r
599 }\r
600 \r
601 void ProcessEnvironmentVars()\r
602 {\r
603     // Run type\r
604     if (gSystem->Getenv("CONFIG_RUN_TYPE")) {\r
605       for (Int_t iRun = 0; iRun < kRunMax; iRun++) {\r
606         if (strcmp(gSystem->Getenv("CONFIG_RUN_TYPE"), pprRunName[iRun])==0) {\r
607           proc = (PDC06Proc_t)iRun;\r
608           cout<<"Run type set to "<<pprRunName[iRun]<<endl;\r
609         }\r
610       }\r
611     }\r
612 \r
613     // Field\r
614     if (gSystem->Getenv("CONFIG_FIELD")) {\r
615       for (Int_t iField = 0; iField < kFieldMax; iField++) {\r
616         if (strcmp(gSystem->Getenv("CONFIG_FIELD"), pprField[iField])==0) {\r
617           mag = (Mag_t)iField;\r
618           cout<<"Field set to "<<pprField[iField]<<endl;\r
619         }\r
620       }\r
621     }\r
622 \r
623     // Energy\r
624     if (gSystem->Getenv("CONFIG_ENERGY")) {\r
625       energy = atoi(gSystem->Getenv("CONFIG_ENERGY"));\r
626       cout<<"Energy set to "<<energy<<" GeV"<<endl;\r
627     }\r
628 \r
629     // Random Number seed\r
630     if (gSystem->Getenv("CONFIG_SEED")) {\r
631       seed = atoi(gSystem->Getenv("CONFIG_SEED"));\r
632     }\r
633 }\r