]> git.uio.no Git - u/mrichter/AliRoot.git/blame - FMD/scripts/DummyConfig.C
Updating info for ACORDE and TRD
[u/mrichter/AliRoot.git] / FMD / scripts / DummyConfig.C
CommitLineData
a9579262 1//____________________________________________________________________
2//
3// $Id$
4//
5// One can use the configuration macro in compiled mode by
6// root [0] gSystem->Load("libgeant321");
7// root [0] gSystem->SetIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/include\
8// -I$ALICE_ROOT -I$ALICE/geant3/TGeant3");
9// root [0] .x grun.C(1,"ConfigPPR.C++")
10//
11/** @file Config.C
12 @author Christian Holm Christensen <cholm@nbi.dk>
13 @date Mon Mar 27 12:50:29 2006
14 @brief Simulation configuration script
15*/
16//____________________________________________________________________
17//
18// Generator types
19//
20enum EG_t {
21 test50,
22 kParam_8000, //
23 kParam_4000, //
24 kParam_2000, //
25 kParam_fmd, //
26 kHijing_cent1, //
27 kHijing_cent2, //
28 kHijing_per1, //
29 kHijing_per2, //
30 kHijing_per3, //
31 kHijing_per4, //
32 kHijing_per5, //
33 kHijing_jj25, //
34 kHijing_jj50, //
35 kHijing_jj75, //
36 kHijing_jj100, //
37 kHijing_jj200, //
38 kHijing_gj25, //
39 kHijing_gj50, //
40 kHijing_gj75, //
41 kHijing_gj100, //
42 kHijing_gj200, //
43 kHijing_pA, //
44 kPythia6, //
45 kPythia6Jets20_24, //
46 kPythia6Jets24_29, //
47 kPythia6Jets29_35, //
48 kPythia6Jets35_42, //
49 kPythia6Jets42_50, //
50 kPythia6Jets50_60, //
51 kPythia6Jets60_72, //
52 kPythia6Jets72_86, //
53 kPythia6Jets86_104, //
54 kPythia6Jets104_125, //
55 kPythia6Jets125_150, //
56 kPythia6Jets150_180, //
57 kD0PbPb5500, //
58 kCharmSemiElPbPb5500, //
59 kBeautySemiElPbPb5500, //
60 kCocktailTRD, //
61 kPyJJ, //
62 kPyGJ, //
63 kMuonCocktailCent1, //
64 kMuonCocktailPer1, //
65 kMuonCocktailPer4, //
66 kMuonCocktailCent1HighPt, //
67 kMuonCocktailPer1HighPt, //
68 kMuonCocktailPer4HighPt, //
69 kMuonCocktailCent1Single, //
70 kMuonCocktailPer1Single, //
71 kMuonCocktailPer4Single,
72 kFMD1Flat,
73 kFMD2Flat,
74 kFMD3Flat,
75 kFMDFlat,
76 kEgMax
77};
78
79//____________________________________________________________________
80//
81// Generator types names
82//
83const char* egName[kEgMax] = {
84 "test50",
85 "kParam_8000", //
86 "kParam_4000", //
87 "kParam_2000", //
88 "kParam_fmd", //
89 "kHijing_cent1", //
90 "kHijing_cent2", //
91 "kHijing_per1", //
92 "kHijing_per2", //
93 "kHijing_per3", //
94 "kHijing_per4", //
95 "kHijing_per5", //
96 "kHijing_jj25", //
97 "kHijing_jj50", //
98 "kHijing_jj75", //
99 "kHijing_jj100", //
100 "kHijing_jj200", //
101 "kHijing_gj25", //
102 "kHijing_gj50", //
103 "kHijing_gj75", //
104 "kHijing_gj100", //
105 "kHijing_gj200", //
106 "kHijing_pA", //
107 "kPythia6", //
108 "kPythia6Jets20_24", //
109 "kPythia6Jets24_29", //
110 "kPythia6Jets29_35", //
111 "kPythia6Jets35_42", //
112 "kPythia6Jets42_50", //
113 "kPythia6Jets50_60", //
114 "kPythia6Jets60_72", //
115 "kPythia6Jets72_86", //
116 "kPythia6Jets86_104", //
117 "kPythia6Jets104_125", //
118 "kPythia6Jets125_150", //
119 "kPythia6Jets150_180", //
120 "kD0PbPb5500", //
121 "kCharmSemiElPbPb5500", //
122 "kBeautySemiElPbPb5500", //
123 "kCocktailTRD", //
124 "kPyJJ", //
125 "kPyGJ", //
126 "kMuonCocktailCent1", //
127 "kMuonCocktailPer1", //
128 "kMuonCocktailPer4", //
129 "kMuonCocktailCent1HighPt", //
130 "kMuonCocktailPer1HighPt", //
131 "kMuonCocktailPer4HighPt", //
132 "kMuonCocktailCent1Single", //
133 "kMuonCocktailPer1Single", //
134 "kMuonCocktailPer4Single",
135 "kFMD1Flat",
136 "kFMD2Flat",
137 "kFMD3Flat",
138 "kFMDFlat"
139};
140
141//____________________________________________________________________
142enum Geo_t {
143 kHoles, //
144 kNoHoles //
145};
146
147//____________________________________________________________________
148enum Rad_t {
149 kGluonRadiation, //
150 kNoGluonRadiation //
151};
152
a9579262 153//____________________________________________________________________
154enum MC_t {
155 kFLUKA,
156 kGEANT3,
157 kGEANT4,
158 kGEANT3TGEO,
159};
160
161//____________________________________________________________________
162// Functions
163Float_t EtaToTheta(Float_t eta);
164Eg_t LookupEG(const Char_t* name);
165AliGenerator* GeneratorFactory(EG_t eg, Rad_t rad, TString& comment);
166AliGenHijing* HijingStandard();
167void ProcessEnvironmentVars(EG_t& eg, Int_t& seed);
168
169//____________________________________________________________________
170void
171Config()
172{
173 //____________________________________________________________________
174 // This part for configuration
175 // EG_t eg = test50;
176 // EG_t eg = kParam_fmd;
177 EG_t eg = kParam_2000; // kPythia;
178 // EG_t eg = kFMDFlat;
179 Geo_t geo = kNoHoles;
180 Rad_t rad = kGluonRadiation;
f7a1cc68 181 AliMagF::BMap_t mag = AliMagF::k5kG;
a9579262 182 Int_t seed = 12345; //Set 0 to use the current time
183 MC_t mc = kGEANT3TGEO;
184
185 //____________________________________________________________________
186 // Comment line
187 static TString comment;
188
189 //____________________________________________________________________
190 // Get settings from environment variables
191 ProcessEnvironmentVars(eg, seed);
192
193 //____________________________________________________________________
194 // Set Random Number seed
195 gRandom->SetSeed(seed);
196 cout<<"Seed for random number generation= "<<gRandom->GetSeed()<<endl;
197
198
199 //__________________________________________________________________
200 switch (mc) {
201 case kFLUKA:
202 //
203 // libraries required by fluka21
204 //
205 gSystem->Load("libGeom");
206 cout << "\t* Loading TFluka..." << endl;
207 gSystem->Load("libTFluka");
208 gSystem->MakeDirectory("peg");
209 //
210 // FLUKA MC
211 //
212 cout << "\t* Instantiating TFluka..." << endl;
213 new TFluka("C++ Interface to Fluka", 0/*verbosity*/);
214 break;
215 case kGEANT3:
216 {
217 //
218 // Libraries needed by GEANT 3.21
219 //
220 gSystem->Load("libgeant321");
221
222 //
223 // GEANT 3.21 MC
224 //
225 TGeant3* gmc = new TGeant3("C++ Interface to Geant3");
226 gmc->SetSWIT(4, 1000);
227 }
228 break;
229 case kGEANT3TGEO:
230 {
231 //
232 // Libraries needed by GEANT 3.21
233 //
234 gSystem->Load("libgeant321");
235
236 //
237 // GEANT 3.21 MC
238 //
239 TGeant3TGeo* gmc = new TGeant3TGeo("C++ Interface to Geant3");
240 gmc->SetSWIT(4, 1000);
241 Printf("Making a TGeant3TGeo objet");
242 }
243 break;
244 default:
245 gAlice->Fatal("Config.C", "No MC type chosen");
246 return;
247 }
248
249 //__________________________________________________________________
250 AliRunLoader* rl = 0;
251
252 cout<<"Config.C: Creating Run Loader ..."<<endl;
253 rl = AliRunLoader::Open("galice.root",
254 AliConfig::GetDefaultEventFolderName(),
255 "recreate");
256 if (!rl) {
257 gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
258 return;
259 }
260 rl->SetCompressionLevel(2);
261 rl->SetNumberOfEventsPerFile(3);
262 gAlice->SetRunLoader(rl);
263
264 //__________________________________________________________________
265 // For FLUKA
266 switch (mc) {
267 case kFLUKA:
268 {
269 //
270 // Use kTRUE as argument to generate alice.pemf first
271 //
272 TString alice_pemf(gSystem->Which(".", "peg/mat17.pemf"));
273 if (!alice_pemf.IsNull())
274 ((TFluka*)gMC)->SetGeneratePemf(kFALSE);
275 else
276 ((TFluka*)gMC)->SetGeneratePemf(kTRUE);
277 TString flupro(gSystem->Getenv("FLUPRO"));
278 if (flupro.IsNull())
279 Fatal("Config.C", "Environment variable FLUPRO not set");
280#if 0
281 char* files[] = { "brems_fin.bin", "cohff.bin", "elasct.bin",
282 "gxsect.bin", "nuclear.bin", "sigmapi.bin",
283 0 };
284 char* file = files[0];
285 while (file) {
286 TString which(gSystem->Which(".", file));
287 if (which.IsNull()) {
288 if (gSystem->Symlink(Form("%s/%s", flupro.Data(), file), file)!=0)
289 Fatal("Config.C", "Couldn't link $(FLUPRO)/%s -> .", file);
290 }
291 file++;
292 }
293#endif
294 TString neuxsc(gSystem->Which(".", "neuxsc.bin"));
295 if (neuxsc.IsNull())
296 gSystem->Symlink(Form("%s/neuxsc_72.bin", flupro.Data()),
297 "neuxsc.bin");
298 gSystem->CopyFile("$(FLUPRO)/random.dat", "old.seed", kTRUE);
299 }
300 break;
301 }
302
303 //__________________________________________________________________
304 //
305 // Set External decayer
306#if 0
307 AliDecayer *decayer = new AliDecayerPythia();
308 switch (eg) {
309 case kD0PbPb5500: decayer->SetForceDecay(kHadronicD); break;
310 case kCharmSemiElPbPb5500: decayer->SetForceDecay(kSemiElectronic); break;
311 case kBeautySemiElPbPb5500: decayer->SetForceDecay(kSemiElectronic); break;
312 default: decayer->SetForceDecay(kAll); break;
313 }
314 decayer->Init();
315 gMC->SetExternalDecayer(decayer);
316#endif
317
318 //__________________________________________________________________
319 // *********** STEERING parameters FOR ALICE SIMULATION ************
320 // - Specify event type to be tracked through the ALICE setup
321 // - All positions are in cm, angles in degrees, and P and E in GeV
322 gMC->SetProcess("DCAY",1);
323 gMC->SetProcess("PAIR",1);
324 gMC->SetProcess("COMP",1);
325 gMC->SetProcess("PHOT",1);
326 gMC->SetProcess("PFIS",0);
327 gMC->SetProcess("DRAY",0);
328 gMC->SetProcess("ANNI",1);
329 gMC->SetProcess("BREM",1);
330 gMC->SetProcess("MUNU",1);
331 gMC->SetProcess("CKOV",1);
332 gMC->SetProcess("HADR",1);
333 gMC->SetProcess("LOSS",2);
334 gMC->SetProcess("MULS",1);
335 gMC->SetProcess("RAYL",1);
336
337 Float_t cut = 1.e-3; // 1MeV cut by default
338 Float_t tofmax = 1.e10;
339
340 gMC->SetCut("CUTGAM", cut);
341 gMC->SetCut("CUTELE", cut);
342 gMC->SetCut("CUTNEU", cut);
343 gMC->SetCut("CUTHAD", cut);
344 gMC->SetCut("CUTMUO", cut);
345 gMC->SetCut("BCUTE", cut);
346 gMC->SetCut("BCUTM", cut);
347 gMC->SetCut("DCUTE", cut);
348 gMC->SetCut("DCUTM", cut);
349 gMC->SetCut("PPCUTM", cut);
350 gMC->SetCut("TOFMAX", tofmax);
351
352
353 //__________________________________________________________________
354 // Generator Configuration
355 AliGenerator* gener = GeneratorFactory(eg, rad, comment);
356 gener->SetOrigin(0, 0, 0); // vertex position
357 gener->SetSigma(0, 0, 5.3); // Sigma in (X,Y,Z) (cm) on IP position
358 gener->SetCutVertexZ(1.); // Truncate at 1 sigma
359 gener->SetVertexSmear(kPerEvent);
360 gener->SetTrackingFlag(1);
361 gener->Init();
362
363 //__________________________________________________________________
364 //
365 // Comments
366 //
367 switch (mag) {
f7a1cc68 368 case AliMagF::k2kG: comment = comment.Append(" | L3 field 0.2 T"); break;
369 case AliMagF::k5kG: comment = comment.Append(" | L3 field 0.5 T"); break;
a9579262 370 }
371
372 switch (rad) {
373 case kGluonRadiation:
374 comment = comment.Append(" | Gluon Radiation On"); break;
375 default:
376 comment = comment.Append(" | Gluon Radiation Off"); break;
377 }
378
379 switch(geo) {
380 case kHoles: comment = comment.Append(" | Holes for PHOS/HMPID"); break;
381 default: comment = comment.Append(" | No holes for PHOS/HMPID"); break;
382 }
383
384 std::cout << "\n\n Comment: " << comment << "\n" << std::endl;
385
386 //__________________________________________________________________
387 // Field (L3 0.4 T)
4642ac4b 388 AliMagF* field = new AliMagF("Maps","Maps",1.,1.,AliMagF::k5kG);
a9579262 389 field->SetL3ConstField(0); //Using const. field in the barrel
f7a1cc68 390 TGeoGlobalMagField::Instance()->SetField(field);
391
a9579262 392 rl->CdGAFile();
a9579262 393
394 //__________________________________________________________________
395 //
396 // Used detectors
397 //
398 Bool_t useABSO = kTRUE;
399 Bool_t useACORDE= kFALSE;
400 Bool_t useDIPO = kFALSE;
401 Bool_t useFMD = kTRUE;
402 Bool_t useFRAME = kFALSE;
403 Bool_t useHALL = kFALSE;
404 Bool_t useITS = kTRUE;
405 Bool_t useMAG = kFALSE;
406 Bool_t useMUON = kFALSE;
407 Bool_t usePHOS = kFALSE;
408 Bool_t usePIPE = kFALSE;
409 Bool_t usePMD = kFALSE;
410 Bool_t useHMPID = kFALSE;
411 Bool_t useSHIL = kFALSE;
412 Bool_t useT0 = kTRUE;
413 Bool_t useTOF = kFALSE;
414 Bool_t useTPC = kFALSE;
415 Bool_t useTRD = kFALSE;
416 Bool_t useZDC = kFALSE;
417 Bool_t useEMCAL = kFALSE;
418 Bool_t useVZERO = kTRUE;
419
420 gROOT->LoadMacro("LoadDummy.C");
421 cout << "\t* Creating the detectors ..." << endl;
422 // ================= Alice BODY parameters =========================
423 AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
424
425
426 if (useMAG) {
427 // =================== MAG parameters ============================
428 // Start with Magnet since detector layouts may be depending on
429 // the selected Magnet dimensions
430 AliMAG *MAG = new AliMAG("MAG", "Magnet");
431 }
432
433 if (useABSO) {
434 // =================== ABSO parameters ===========================
435 AliABSO *ABSO = new AliABSOv0("ABSO", "Muon Absorber");
436 }
437
438 if (useDIPO) {
439 // =================== DIPO parameters ===========================
440 AliDIPO *DIPO = new DummyABSO("DIPO");
441 }
442
443 if (useHALL) {
444 // =================== HALL parameters ===========================
445 AliHALL *HALL = new AliHALL("HALL", "Alice Hall");
446 }
447
448
449 if (useFRAME) {
450 // ================== FRAME parameters ===========================
451 AliFRAMEv2 *FRAME = new DummyFRAME("FRAME");
452 switch (geo) {
453 case kHoles: FRAME->SetHoles(1); break;
454 default: FRAME->SetHoles(0); break;
455 }
456 }
457
458 if (useSHIL) {
459 // ================== SHIL parameters ============================
460 AliSHIL *SHIL = new DummySHIl("SHIL");
461 }
462
463
464 if (usePIPE) {
465 // ================== PIPE parameters ============================
466 AliPIPE *PIPE = new AliPIPEv0("PIPE", "Beam Pipe");
467 }
468
469 if (useITS) {
470 // =================== ITS parameters ============================
471 //
472 // As the innermost detector in ALICE, the Inner Tracking System
473 // "impacts" on almost all other detectors. This involves the fact
474 // that the ITS geometry still has several options to be followed
475 // in parallel in order to determine the best set-up which
476 // minimizes the induced background. All the geometries available
477 // to date are described in the following. Read carefully the
478 // comments and use the default version (the only one uncommented)
479 // unless you are making comparisons and you know what you are
480 // doing. In this case just uncomment the ITS geometry you want to
481 // use and run Aliroot.
482 //
483 // Detailed geometries:
484 //
485 //
486 // AliITS *ITS =
487 // new AliITSv5symm("ITS", "Updated ITS TDR detailed version "
488 // "with symmetric services");
489 // AliITS *ITS =
490 // new AliITSv5asymm("ITS","Updates ITS TDR detailed version "
491 // "with asymmetric services");
492 //
493 AliITSvPPRasymmFMD *ITS = new DummyITS("ITS");
494 // new AliITSvPPRasymmFMD("ITS","New ITS PPR detailed version "
495 // "with asymmetric services")
496 // don't touch this parameter if you're not an ITS developer
497 ITS->SetMinorVersion(2);
498 // don't touch this parameter if you're not an ITS developer
499 ITS->SetReadDet(kTRUE);
500 // don't touch this parameter if you're not an ITS developer
501 // ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det");
502 // detector thickness on layer 1 must be in the range [100,300]
503 ITS->SetThicknessDet1(200.);
504 // detector thickness on layer 2 must be in the range [100,300]
505 ITS->SetThicknessDet2(200.);
506 // chip thickness on layer 1 must be in the range [150,300]
507 ITS->SetThicknessChip1(200.);
508 // chip thickness on layer 2 must be in the range [150,300]
509 ITS->SetThicknessChip2(200.);
510 // 1 --> rails in ; 0 --> rails out
511 ITS->SetRails(0);
512 // 1 --> water ; 0 --> freon
513 ITS->SetCoolingFluid(1);
514
515 // Coarse geometries (warning: no hits are produced with these
516 // coarse geometries and they unuseful for reconstruction !):
517 //
518 //
519 // AliITSvPPRcoarseasymm *ITS =
520 // new AliITSvPPRcoarseasymm("ITS","New ITS PPR coarse version "
521 // "with asymmetric services");
522 // 1 --> rails in ; 0 --> rails out
523 // ITS->SetRails(0);
524 // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon
525 // ITS->SetSupportMaterial(0);
526 //
527 // AliITS *ITS =
528 // new AliITSvPPRcoarsesymm("ITS","New ITS PPR coarse version "
529 // "with symmetric services");
530 // 1 --> rails in ; 0 --> rails out
531 // ITS->SetRails(0);
532 // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon
533 // ITS->SetSupportMaterial(0);
534 //
535 // Geant3 <-> EUCLID conversion
536 // ============================
537 //
538 // SetEUCLID is a flag to output (=1) or not to output (=0) both
539 // geometry and media to two ASCII files (called by default
540 // ITSgeometry.euc and ITSgeometry.tme) in a format understandable
541 // to the CAD system EUCLID. The default (=0) means that you dont
542 // want to use this facility.
543 //
544 ITS->SetEUCLID(0);
545 }
546
547 if (useTPC) {
548 // =================== TPC parameters ============================
549 //
550 // This allows the user to specify sectors for the SLOW (TPC
551 // geometry 2) Simulator. SecAL (SecAU) <0 means that ALL lower
552 // (upper) sectors are specified, any value other than that
553 // requires at least one sector (lower or upper)to be specified!
554 //
555 // Reminder:
556 // sectors 1-24 are lower sectors (1-12 -> z>0, 13-24 -> z<0)
557 // sectors 25-72 are the upper ones (25-48 -> z>0, 49-72 -> z<0)
558 //
559 // SecLows - number of lower sectors specified (up to 6)
560 // SecUps - number of upper sectors specified (up to 12)
561 // Sens - sensitive strips for the Slow Simulator !!!
562 //
563 // This does NOT work if all S or L-sectors are specified, i.e.
564 // if SecAL or SecAU < 0
565 //
566 //
567 //----------------------------------------------------------------
568 // gROOT->LoadMacro("SetTPCParam.C");
569 // AliTPCParam *param = SetTPCParam();
570 AliTPC *TPC = new DummyTPC("TPC");
571 }
572
573 if (useTOF) {
574 // ================== TOF parameters =============================
575 AliTOF *TOF = new DummyTOF("TOF");
576 }
577
578 if (useHMPID) {
579 // ================== HMPID parameters ============================
580 AliHMPID *HMPID = new DummyHMPID("HMPID");
581
582 }
583
584 if (useZDC) {
585 // ================== ZDC parameters =============================
586 AliZDC *ZDC = new DummyZDC("ZDC");
587 }
588
589 if (useTRD) {
590 // ================== TRD parameters =============================
591 AliTRD *TRD = new DummyTRD("TRD");
592
593 // Select the gas mixture (0: 97% Xe + 3% isobutane, 1: 90% Xe + 10% CO2)
594 TRD->SetGasMix(1);
595 if (geo == kHoles) {
596 // With hole in front of PHOS
597 TRD->SetPHOShole();
598 // With hole in front of HMPID
599 TRD->SetHMPIDhole();
600 }
601 // Switch on TR
602 AliTRDsim *TRDsim = TRD->CreateTR();
603 }
604
605 if (useFMD) {
606 // =================== FMD parameters ============================
607 // AliLog::SetModuleDebugLevel("FMD", 15);
608 AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
609 // FMD->UseDetailed(kFALSE);
610 // FMD->UseAssembly();
611 // FMD->UseOld();
612 }
613
614 if (useMUON) {
615 // =================== MUON parameters ===========================
616 AliMUON *MUON = new DummyMUON("MUON");
617 // MUON->AddGeometryBuilder(new AliMUONSt1GeometryBuilder(MUON));
618 // MUON->AddGeometryBuilder(new AliMUONSt2GeometryBuilder(MUON));
619 // MUON->AddGeometryBuilder(new AliMUONSlatGeometryBuilder(MUON));
620 // MUON->AddGeometryBuilder(new AliMUONTriggerGeometryBuilder(MUON));
621 }
622
623 if (usePHOS) {
624 // =================== PHOS parameters ===========================
625 AliPHOS *PHOS = new DummyPHOS("PHOS");
626 }
627
628 if (usePMD) {
629 // =================== PMD parameters ============================
630 AliPMD *PMD = new DummyPMD("PMD");
631 }
632
633 if (useT0) {
634 // =================== T0 parameters ==========================
635 AliT0 *T0 = new DummyT0("T0");
636 }
637
638 if (useEMCAL) {
639 // =================== EMCAL parameters ==========================
640 AliEMCAL *EMCAL = new DummyEMCAL("EMCAL");
641 }
642
643 if (useACORDE) {
644 // =================== ACORDE parameters ============================
f7882672 645 AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE");
a9579262 646 }
647
648 if (useVZERO) {
649 // =================== V0 parameters =============================
650 AliVZERO *VZERO = new DummyVZERO("VZERO");
651 }
652}
653
654//____________________________________________________________________
655Float_t EtaToTheta(Float_t arg)
656{
657 return (180./TMath::Pi())*2.*TMath::ATan(TMath::Exp(-arg));
658}
659
660//____________________________________________________________________
661Int_t
662LookupEG(const Char_t* name)
663{
664 TString n(name);
665 for (Int_t i = 0; i < kEgMax; i++) {
666 if (n == egName[i]) return i;
667 }
668 return -1;
669}
670
671//____________________________________________________________________
672AliGenerator*
673GeneratorFactory(EG_t eg, Rad_t rad, TString& comment)
674{
675 Int_t isw = 3;
676 if (rad == kNoGluonRadiation) isw = 0;
677
678
679 AliGenerator * gGener = 0;
680 switch (eg) {
681 case test50:
682 {
683 comment = comment.Append(":HIJINGparam test 50 particles");
684 AliGenHIJINGpara *gener = new AliGenHIJINGpara(50);
685 gener->SetMomentumRange(0, 999999.);
686 gener->SetPhiRange(0., 360.);
687 // Set pseudorapidity range from -8 to 8.
688 Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
689 Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
690 gener->SetThetaRange(thmin,thmax);
691 gGener=gener;
692 }
693 break;
694 case kParam_8000:
695 {
696 comment = comment.Append(":HIJINGparam N=8000");
697 AliGenHIJINGpara *gener = new AliGenHIJINGpara(86030);
698 gener->SetMomentumRange(0, 999999.);
699 gener->SetPhiRange(0., 360.);
700 // Set pseudorapidity range from -8 to 8.
701 Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
702 Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
703 gener->SetThetaRange(thmin,thmax);
704 gGener=gener;
705 }
706 break;
707 case kParam_4000:
708 {
709 comment = comment.Append("HIJINGparam N=4000");
710 AliGenHIJINGpara *gener = new AliGenHIJINGpara(43015);
711 gener->SetMomentumRange(0, 999999.);
712 gener->SetPhiRange(0., 360.);
713 // Set pseudorapidity range from -8 to 8.
714 Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
715 Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
716 gener->SetThetaRange(thmin,thmax);
717 gGener=gener;
718 }
719 break;
720 case kParam_2000:
721 {
722 comment = comment.Append("HIJINGparam N=2000");
723 AliGenHIJINGpara *gener = new AliGenHIJINGpara(21507);
724 gener->SetMomentumRange(0, 999999.);
725 gener->SetPhiRange(0., 360.);
726 // Set pseudorapidity range from -8 to 8.
727 Float_t thmin = EtaToTheta(9); // theta min. <---> eta max
728 Float_t thmax = EtaToTheta(-9); // theta max. <---> eta min
729 gener->SetThetaRange(thmin,thmax);
730 gGener=gener;
731 }
732 break;
733 case kParam_fmd:
734 {
735 comment = comment.Append("HIJINGparam N=100");
736 AliGenHIJINGpara *gener = new AliGenHIJINGpara(500);
737 gener->SetMomentumRange(0, 999999.);
738 gener->SetPhiRange(0., 360.);
739 // Set pseudorapidity range from -8 to 8.
740 Float_t thmin = EtaToTheta(6); // theta min. <---> eta max
741 Float_t thmax = EtaToTheta(2); // theta max. <---> eta min
742 gener->SetThetaRange(thmin,thmax);
743 gGener=gener;
744 }
745 break;
746 //
747 // Hijing Central
748 //
749 case kHijing_cent1:
750 {
751 comment = comment.Append("HIJING cent1");
752 AliGenHijing *gener = HijingStandard();
753 // impact parameter range
754 gener->SetImpactParameterRange(0., 5.);
755 gGener=gener;
756 }
757 break;
758 case kHijing_cent2:
759 {
760 comment = comment.Append("HIJING cent2");
761 AliGenHijing *gener = HijingStandard();
762 // impact parameter range
763 gener->SetImpactParameterRange(0., 2.);
764 gGener=gener;
765 }
766 break;
767 //
768 // Hijing Peripheral
769 //
770 case kHijing_per1:
771 {
772 comment = comment.Append("HIJING per1");
773 AliGenHijing *gener = HijingStandard();
774 // impact parameter range
775 gener->SetImpactParameterRange(5., 8.6);
776 gGener=gener;
777 }
778 break;
779 case kHijing_per2:
780 {
781 comment = comment.Append("HIJING per2");
782 AliGenHijing *gener = HijingStandard();
783 // impact parameter range
784 gener->SetImpactParameterRange(8.6, 11.2);
785 gGener=gener;
786 }
787 break;
788 case kHijing_per3:
789 {
790 comment = comment.Append("HIJING per3");
791 AliGenHijing *gener = HijingStandard();
792 // impact parameter range
793 gener->SetImpactParameterRange(11.2, 13.2);
794 gGener=gener;
795 }
796 break;
797 case kHijing_per4:
798 {
799 comment = comment.Append("HIJING per4");
800 AliGenHijing *gener = HijingStandard();
801 // impact parameter range
802 gener->SetImpactParameterRange(13.2, 15.);
803 gGener=gener;
804 }
805 break;
806 case kHijing_per5:
807 {
808 comment = comment.Append("HIJING per5");
809 AliGenHijing *gener = HijingStandard();
810 // impact parameter range
811 gener->SetImpactParameterRange(15., 100.);
812 gGener=gener;
813 }
814 break;
815 //
816 // Jet-Jet
817 //
818 case kHijing_jj25:
819 {
820 comment = comment.Append("HIJING Jet 25 GeV");
821 AliGenHijing *gener = HijingStandard();
822 // impact parameter range
823 gener->SetImpactParameterRange(0., 5.);
824 // trigger
825 gener->SetTrigger(1);
826 gener->SetPtJet(25.);
827 gener->SetRadiation(isw);
828 gener->SetSimpleJets(!isw);
829 gener->SetJetEtaRange(-0.3,0.3);
830 gener->SetJetPhiRange(75., 165.);
831 gGener=gener;
832 }
833 break;
834
835 case kHijing_jj50:
836 {
837 comment = comment.Append("HIJING Jet 50 GeV");
838 AliGenHijing *gener = HijingStandard();
839 // impact parameter range
840 gener->SetImpactParameterRange(0., 5.);
841 // trigger
842 gener->SetTrigger(1);
843 gener->SetPtJet(50.);
844 gener->SetRadiation(isw);
845 gener->SetSimpleJets(!isw);
846 gener->SetJetEtaRange(-0.3,0.3);
847 gener->SetJetPhiRange(75., 165.);
848 gGener=gener;
849 }
850 break;
851
852 case kHijing_jj75:
853 {
854 comment = comment.Append("HIJING Jet 75 GeV");
855 AliGenHijing *gener = HijingStandard();
856 // impact parameter range
857 gener->SetImpactParameterRange(0., 5.);
858 // trigger
859 gener->SetTrigger(1);
860 gener->SetPtJet(75.);
861 gener->SetRadiation(isw);
862 gener->SetSimpleJets(!isw);
863 gener->SetJetEtaRange(-0.3,0.3);
864 gener->SetJetPhiRange(75., 165.);
865 gGener=gener;
866 }
867 break;
868
869 case kHijing_jj100:
870 {
871 comment = comment.Append("HIJING Jet 100 GeV");
872 AliGenHijing *gener = HijingStandard();
873 // impact parameter range
874 gener->SetImpactParameterRange(0., 5.);
875 // trigger
876 gener->SetTrigger(1);
877 gener->SetPtJet(100.);
878 gener->SetRadiation(isw);
879 gener->SetSimpleJets(!isw);
880 gener->SetJetEtaRange(-0.3,0.3);
881 gener->SetJetPhiRange(75., 165.);
882 gGener=gener;
883 }
884 break;
885
886 case kHijing_jj200:
887 {
888 comment = comment.Append("HIJING Jet 200 GeV");
889 AliGenHijing *gener = HijingStandard();
890 // impact parameter range
891 gener->SetImpactParameterRange(0., 5.);
892 // trigger
893 gener->SetTrigger(1);
894 gener->SetPtJet(200.);
895 gener->SetRadiation(isw);
896 gener->SetSimpleJets(!isw);
897 gener->SetJetEtaRange(-0.3,0.3);
898 gener->SetJetPhiRange(75., 165.);
899 gGener=gener;
900 }
901 break;
902 //
903 // Gamma-Jet
904 //
905 case kHijing_gj25:
906 {
907 comment = comment.Append("HIJING Gamma 25 GeV");
908 AliGenHijing *gener = HijingStandard();
909 // impact parameter range
910 gener->SetImpactParameterRange(0., 5.);
911 // trigger
912 gener->SetTrigger(2);
913 gener->SetPtJet(25.);
914 gener->SetRadiation(isw);
915 gener->SetSimpleJets(!isw);
916 gener->SetJetEtaRange(-0.12, 0.12);
917 gener->SetJetPhiRange(220., 320.);
918 gGener=gener;
919 }
920 break;
921
922 case kHijing_gj50:
923 {
924 comment = comment.Append("HIJING Gamma 50 GeV");
925 AliGenHijing *gener = HijingStandard();
926 // impact parameter range
927 gener->SetImpactParameterRange(0., 5.);
928 // trigger
929 gener->SetTrigger(2);
930 gener->SetPtJet(50.);
931 gener->SetRadiation(isw);
932 gener->SetSimpleJets(!isw);
933 gener->SetJetEtaRange(-0.12, 0.12);
934 gener->SetJetPhiRange(220., 320.);
935 gGener=gener;
936 }
937 break;
938
939 case kHijing_gj75:
940 {
941 comment = comment.Append("HIJING Gamma 75 GeV");
942 AliGenHijing *gener = HijingStandard();
943 // impact parameter range
944 gener->SetImpactParameterRange(0., 5.);
945 // trigger
946 gener->SetTrigger(2);
947 gener->SetPtJet(75.);
948 gener->SetRadiation(isw);
949 gener->SetSimpleJets(!isw);
950 gener->SetJetEtaRange(-0.12, 0.12);
951 gener->SetJetPhiRange(220., 320.);
952 gGener=gener;
953 }
954 break;
955
956 case kHijing_gj100:
957 {
958 comment = comment.Append("HIJING Gamma 100 GeV");
959 AliGenHijing *gener = HijingStandard();
960 // impact parameter range
961 gener->SetImpactParameterRange(0., 5.);
962 // trigger
963 gener->SetTrigger(2);
964 gener->SetPtJet(100.);
965 gener->SetRadiation(isw);
966 gener->SetSimpleJets(!isw);
967 gener->SetJetEtaRange(-0.12, 0.12);
968 gener->SetJetPhiRange(220., 320.);
969 gGener=gener;
970 }
971 break;
972
973 case kHijing_gj200:
974 {
975 comment = comment.Append("HIJING Gamma 200 GeV");
976 AliGenHijing *gener = HijingStandard();
977 // impact parameter range
978 gener->SetImpactParameterRange(0., 5.);
979 // trigger
980 gener->SetTrigger(2);
981 gener->SetPtJet(200.);
982 gener->SetRadiation(isw);
983 gener->SetSimpleJets(!isw);
984 gener->SetJetEtaRange(-0.12, 0.12);
985 gener->SetJetPhiRange(220., 320.);
986 gGener=gener;
987 }
988 break;
989 case kHijing_pA:
990 {
991 comment = comment.Append("HIJING pA");
992
993 AliGenCocktail *gener = new AliGenCocktail();
994
995 AliGenHijing *hijing = new AliGenHijing(-1);
996 // centre of mass energy
997 hijing->SetEnergyCMS(TMath::Sqrt(82./208.) * 14000.);
998 // impact parameter range
999 hijing->SetImpactParameterRange(0., 15.);
1000 // reference frame
1001 hijing->SetReferenceFrame("CMS");
1002 hijing->SetBoostLHC(1);
1003 // projectile
1004 hijing->SetProjectile("P", 1, 1);
1005 hijing->SetTarget ("A", 208, 82);
1006 // tell hijing to keep the full parent child chain
1007 hijing->KeepFullEvent();
1008 // enable jet quenching
1009 hijing->SetJetQuenching(0);
1010 // enable shadowing
1011 hijing->SetShadowing(1);
1012 // Don't track spectators
1013 hijing->SetSpectators(0);
1014 // kinematic selection
1015 hijing->SetSelectAll(0);
1016 //
1017 AliGenSlowNucleons* gray = new AliGenSlowNucleons(1);
1018 AliSlowNucleonModel* model = new AliSlowNucleonModelExp();
1019 gray->SetSlowNucleonModel(model);
1020 gray->SetDebug(1);
1021 gener->AddGenerator(hijing,"Hijing pPb", 1);
1022 gener->AddGenerator(gray, "Gray Particles",1);
1023 gGener=gener;
1024 }
1025 break;
1026 case kPythia6:
1027 {
1028 comment = comment.Append(":Pythia p-p @ 14 TeV");
1029 AliGenPythia *gener = new AliGenPythia(-1);
1030 gener->SetMomentumRange(0,999999);
1031 gener->SetThetaRange(0., 180.);
1032 gener->SetYRange(-12,12);
1033 gener->SetPtRange(0,1000);
1034 gener->SetProcess(kPyMb);
1035 gener->SetEnergyCMS(14000.);
1036 gGener=gener;
1037 }
1038 break;
1039 case kPythia6Jets20_24:
1040 {
1041 comment = comment.Append(":Pythia jets 20-24 GeV @ 5.5 TeV");
1042 AliGenPythia * gener = new AliGenPythia(-1);
1043 gener->SetEnergyCMS(5500.);// Centre of mass energy
1044 gener->SetProcess(kPyJets);// Process type
1045 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1046 gener->SetJetPhiRange(0., 360.);
1047 gener->SetJetEtRange(10., 1000.);
1048 gener->SetGluonRadiation(1,1);
1049 // gener->SetPtKick(0.);
1050 // Structure function
1051 gener->SetStrucFunc(kCTEQ4L);
1052 gener->SetPtHard(20., 24.);// Pt transfer of the hard scattering
1053 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1054 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1055 gGener=gener;
1056 }
1057 break;
1058 case kPythia6Jets24_29:
1059 {
1060 comment = comment.Append(":Pythia jets 24-29 GeV @ 5.5 TeV");
1061 AliGenPythia * gener = new AliGenPythia(-1);
1062 gener->SetEnergyCMS(5500.);// Centre of mass energy
1063 gener->SetProcess(kPyJets);// Process type
1064 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1065 gener->SetJetPhiRange(0., 360.);
1066 gener->SetJetEtRange(10., 1000.);
1067 gener->SetGluonRadiation(1,1);
1068 // gener->SetPtKick(0.);
1069 // Structure function
1070 gener->SetStrucFunc(kCTEQ4L);
1071 gener->SetPtHard(24., 29.);// Pt transfer of the hard scattering
1072 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1073 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1074 gGener=gener;
1075 }
1076 break;
1077 case kPythia6Jets29_35:
1078 {
1079 comment = comment.Append(":Pythia jets 29-35 GeV @ 5.5 TeV");
1080 AliGenPythia * gener = new AliGenPythia(-1);
1081 gener->SetEnergyCMS(5500.);// Centre of mass energy
1082 gener->SetProcess(kPyJets);// Process type
1083 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1084 gener->SetJetPhiRange(0., 360.);
1085 gener->SetJetEtRange(10., 1000.);
1086 gener->SetGluonRadiation(1,1);
1087 // gener->SetPtKick(0.);
1088 // Structure function
1089 gener->SetStrucFunc(kCTEQ4L);
1090 gener->SetPtHard(29., 35.);// Pt transfer of the hard scattering
1091 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1092 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1093 gGener=gener;
1094 }
1095 break;
1096 case kPythia6Jets35_42:
1097 {
1098 comment = comment.Append(":Pythia jets 35-42 GeV @ 5.5 TeV");
1099 AliGenPythia * gener = new AliGenPythia(-1);
1100 gener->SetEnergyCMS(5500.);// Centre of mass energy
1101 gener->SetProcess(kPyJets);// Process type
1102 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1103 gener->SetJetPhiRange(0., 360.);
1104 gener->SetJetEtRange(10., 1000.);
1105 gener->SetGluonRadiation(1,1);
1106 // gener->SetPtKick(0.);
1107 // Structure function
1108 gener->SetStrucFunc(kCTEQ4L);
1109 gener->SetPtHard(35., 42.);// Pt transfer of the hard scattering
1110 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1111 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1112 gGener=gener;
1113 }
1114 break;
1115 case kPythia6Jets42_50:
1116 {
1117 comment = comment.Append(":Pythia jets 42-50 GeV @ 5.5 TeV");
1118 AliGenPythia * gener = new AliGenPythia(-1);
1119 gener->SetEnergyCMS(5500.);// Centre of mass energy
1120 gener->SetProcess(kPyJets);// Process type
1121 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1122 gener->SetJetPhiRange(0., 360.);
1123 gener->SetJetEtRange(10., 1000.);
1124 gener->SetGluonRadiation(1,1);
1125 // gener->SetPtKick(0.);
1126 // Structure function
1127 gener->SetStrucFunc(kCTEQ4L);
1128 gener->SetPtHard(42., 50.);// Pt transfer of the hard scattering
1129 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1130 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1131 gGener=gener;
1132 }
1133 break;
1134 case kPythia6Jets50_60:
1135 {
1136 comment = comment.Append(":Pythia jets 50-60 GeV @ 5.5 TeV");
1137 AliGenPythia * gener = new AliGenPythia(-1);
1138 gener->SetEnergyCMS(5500.);// Centre of mass energy
1139 gener->SetProcess(kPyJets);// Process type
1140 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1141 gener->SetJetPhiRange(0., 360.);
1142 gener->SetJetEtRange(10., 1000.);
1143 gener->SetGluonRadiation(1,1);
1144 // gener->SetPtKick(0.);
1145 // Structure function
1146 gener->SetStrucFunc(kCTEQ4L);
1147 gener->SetPtHard(50., 60.);// Pt transfer of the hard scattering
1148 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1149 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1150 gGener=gener;
1151 }
1152 break;
1153 case kPythia6Jets60_72:
1154 {
1155 comment = comment.Append(":Pythia jets 60-72 GeV @ 5.5 TeV");
1156 AliGenPythia * gener = new AliGenPythia(-1);
1157 gener->SetEnergyCMS(5500.);// Centre of mass energy
1158 gener->SetProcess(kPyJets);// Process type
1159 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1160 gener->SetJetPhiRange(0., 360.);
1161 gener->SetJetEtRange(10., 1000.);
1162 gener->SetGluonRadiation(1,1);
1163 // gener->SetPtKick(0.);
1164 // Structure function
1165 gener->SetStrucFunc(kCTEQ4L);
1166 gener->SetPtHard(60., 72.);// Pt transfer of the hard scattering
1167 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1168 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1169 gGener=gener;
1170 }
1171 break;
1172 case kPythia6Jets72_86:
1173 {
1174 comment = comment.Append(":Pythia jets 72-86 GeV @ 5.5 TeV");
1175 AliGenPythia * gener = new AliGenPythia(-1);
1176 gener->SetEnergyCMS(5500.);// Centre of mass energy
1177 gener->SetProcess(kPyJets);// Process type
1178 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1179 gener->SetJetPhiRange(0., 360.);
1180 gener->SetJetEtRange(10., 1000.);
1181 gener->SetGluonRadiation(1,1);
1182 // gener->SetPtKick(0.);
1183 // Structure function
1184 gener->SetStrucFunc(kCTEQ4L);
1185 gener->SetPtHard(72., 86.);// Pt transfer of the hard scattering
1186 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1187 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1188 gGener=gener;
1189 }
1190 break;
1191 case kPythia6Jets86_104:
1192 {
1193 comment = comment.Append(":Pythia jets 86-104 GeV @ 5.5 TeV");
1194 AliGenPythia * gener = new AliGenPythia(-1);
1195 gener->SetEnergyCMS(5500.);// Centre of mass energy
1196 gener->SetProcess(kPyJets);// Process type
1197 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1198 gener->SetJetPhiRange(0., 360.);
1199 gener->SetJetEtRange(10., 1000.);
1200 gener->SetGluonRadiation(1,1);
1201 // gener->SetPtKick(0.);
1202 // Structure function
1203 gener->SetStrucFunc(kCTEQ4L);
1204 gener->SetPtHard(86., 104.);// Pt transfer of the hard scattering
1205 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1206 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1207 gGener=gener;
1208 }
1209 break;
1210 case kPythia6Jets104_125:
1211 {
1212 comment = comment.Append(":Pythia jets 105-125 GeV @ 5.5 TeV");
1213 AliGenPythia * gener = new AliGenPythia(-1);
1214 gener->SetEnergyCMS(5500.);// Centre of mass energy
1215 gener->SetProcess(kPyJets);// Process type
1216 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1217 gener->SetJetPhiRange(0., 360.);
1218 gener->SetJetEtRange(10., 1000.);
1219 gener->SetGluonRadiation(1,1);
1220 // gener->SetPtKick(0.);
1221 // Structure function
1222 gener->SetStrucFunc(kCTEQ4L);
1223 gener->SetPtHard(104., 125.);// Pt transfer of the hard scattering
1224 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1225 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1226 gGener=gener;
1227 }
1228 break;
1229 case kPythia6Jets125_150:
1230 {
1231 comment = comment.Append(":Pythia jets 125-150 GeV @ 5.5 TeV");
1232 AliGenPythia * gener = new AliGenPythia(-1);
1233 gener->SetEnergyCMS(5500.);// Centre of mass energy
1234 gener->SetProcess(kPyJets);// Process type
1235 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1236 gener->SetJetPhiRange(0., 360.);
1237 gener->SetJetEtRange(10., 1000.);
1238 gener->SetGluonRadiation(1,1);
1239 // gener->SetPtKick(0.);
1240 // Structure function
1241 gener->SetStrucFunc(kCTEQ4L);
1242 gener->SetPtHard(125., 150.);// Pt transfer of the hard scattering
1243 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1244 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1245 gGener=gener;
1246 }
1247 break;
1248 case kPythia6Jets150_180:
1249 {
1250 comment = comment.Append(":Pythia jets 150-180 GeV @ 5.5 TeV");
1251 AliGenPythia * gener = new AliGenPythia(-1);
1252 gener->SetEnergyCMS(5500.);// Centre of mass energy
1253 gener->SetProcess(kPyJets);// Process type
1254 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1255 gener->SetJetPhiRange(0., 360.);
1256 gener->SetJetEtRange(10., 1000.);
1257 gener->SetGluonRadiation(1,1);
1258 // gener->SetPtKick(0.);
1259 // Structure function
1260 gener->SetStrucFunc(kCTEQ4L);
1261 gener->SetPtHard(150., 180.);// Pt transfer of the hard scattering
1262 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1263 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1264 gGener=gener;
1265 }
1266 break;
1267 case kD0PbPb5500:
1268 {
1269 comment = comment.Append(" D0 in Pb-Pb at 5.5 TeV");
1270 AliGenPythia * gener = new AliGenPythia(10);
1271 gener->SetProcess(kPyD0PbPbMNR);
1272 gener->SetStrucFunc(kCTEQ4L);
1273 gener->SetPtHard(2.1,-1.0);
1274 gener->SetEnergyCMS(5500.);
1275 gener->SetNuclei(208,208);
1276 gener->SetForceDecay(kHadronicD);
1277 gener->SetYRange(-2,2);
1278 gener->SetFeedDownHigherFamily(kFALSE);
1279 gener->SetStackFillOpt(AliGenPythia::kParentSelection);
1280 gener->SetCountMode(AliGenPythia::kCountParents);
1281 gGener=gener;
1282 }
1283 break;
1284 case kCharmSemiElPbPb5500:
1285 {
1286 comment = comment.Append(" Charm in Pb-Pb at 5.5 TeV");
1287 AliGenPythia * gener = new AliGenPythia(10);
1288 gener->SetProcess(kPyCharmPbPbMNR);
1289 gener->SetStrucFunc(kCTEQ4L);
1290 gener->SetPtHard(2.1,-1.0);
1291 gener->SetEnergyCMS(5500.);
1292 gener->SetNuclei(208,208);
1293 gener->SetForceDecay(kSemiElectronic);
1294 gener->SetYRange(-2,2);
1295 gener->SetFeedDownHigherFamily(kFALSE);
1296 gener->SetCountMode(AliGenPythia::kCountParents);
1297 gGener=gener;
1298 }
1299 break;
1300 case kBeautySemiElPbPb5500:
1301 {
1302 comment = comment.Append(" Beauty in Pb-Pb at 5.5 TeV");
1303 AliGenPythia *gener = new AliGenPythia(10);
1304 gener->SetProcess(kPyBeautyPbPbMNR);
1305 gener->SetStrucFunc(kCTEQ4L);
1306 gener->SetPtHard(2.75,-1.0);
1307 gener->SetEnergyCMS(5500.);
1308 gener->SetNuclei(208,208);
1309 gener->SetForceDecay(kSemiElectronic);
1310 gener->SetYRange(-2,2);
1311 gener->SetFeedDownHigherFamily(kFALSE);
1312 gener->SetCountMode(AliGenPythia::kCountParents);
1313 gGener=gener;
1314 }
1315 break;
1316 case kCocktailTRD:
1317 {
1318 comment = comment.Append(" Cocktail for TRD at 5.5 TeV");
1319 AliGenCocktail *gener = new AliGenCocktail();
1320
1321 AliGenParam *jpsi = new AliGenParam(10,
1322 new AliGenMUONlib(),
1323 AliGenMUONlib::kJpsiFamily,
1324 "Vogt PbPb");
1325
1326 jpsi->SetPtRange(0, 100);
1327 jpsi->SetYRange(-1., +1.);
1328 jpsi->SetForceDecay(kDiElectron);
1329
1330 AliGenParam *ups = new AliGenParam(10,
1331 new AliGenMUONlib(),
1332 AliGenMUONlib::kUpsilonFamily,
1333 "Vogt PbPb");
1334 ups->SetPtRange(0, 100);
1335 ups->SetYRange(-1., +1.);
1336 ups->SetForceDecay(kDiElectron);
1337
1338 AliGenParam *charm = new AliGenParam(10,
1339 new AliGenMUONlib(),
1340 AliGenMUONlib::kCharm,
1341 "central");
1342 charm->SetPtRange(0, 100);
1343 charm->SetYRange(-1.5, +1.5);
1344 charm->SetForceDecay(kSemiElectronic);
1345
1346
1347 AliGenParam *beauty = new AliGenParam(10,
1348 new AliGenMUONlib(),
1349 AliGenMUONlib::kBeauty,
1350 "central");
1351 beauty->SetPtRange(0, 100);
1352 beauty->SetYRange(-1.5, +1.5);
1353 beauty->SetForceDecay(kSemiElectronic);
1354
1355 gener->AddGenerator(jpsi,"J/psi",1);
1356 gener->AddGenerator(ups,"Upsilon",1);
1357 gener->AddGenerator(charm,"Charm",1);
1358 gener->AddGenerator(beauty,"Beauty",1);
1359 gGener=gener;
1360 }
1361 break;
1362 case kPyJJ:
1363 {
1364 comment = comment.Append(" Jet-jet at 5.5 TeV");
1365 AliGenPythia *gener = new AliGenPythia(-1);
1366 gener->SetEnergyCMS(5500.);
1367 gener->SetProcess(kPyJets);
1368 Double_t ptHardMin=10.0, ptHardMax=-1.0;
1369 gener->SetPtHard(ptHardMin,ptHardMax);
1370 gener->SetYHard(-0.7,0.7);
1371 gener->SetJetEtaRange(-0.2,0.2);
1372 gener->SetEventListRange(0,1);
1373 gGener=gener;
1374 }
1375 break;
1376 case kPyGJ:
1377 {
1378 comment = comment.Append(" Gamma-jet at 5.5 TeV");
1379 AliGenPythia *gener = new AliGenPythia(-1);
1380 gener->SetEnergyCMS(5500.);
1381 gener->SetProcess(kPyDirectGamma);
1382 Double_t ptHardMin=10.0, ptHardMax=-1.0;
1383 gener->SetPtHard(ptHardMin,ptHardMax);
1384 gener->SetYHard(-1.0,1.0);
1385 gener->SetGammaEtaRange(-0.13,0.13);
1386 gener->SetGammaPhiRange(210.,330.);
1387 gener->SetEventListRange(0,1);
1388 gGener=gener;
1389 }
1390 break;
1391 case kMuonCocktailCent1:
1392 {
1393 comment = comment.Append(" Muon Cocktail Cent1");
1394 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1395 gener->SetPtRange(1.0,100.); // Transverse momentum range
1396 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1397 gener->SetYRange(-4.0,-2.4);
1398 gener->SetMuonPtCut(0.8);
1399 gener->SetMuonThetaCut(171.,178.);
1400 gener->SetMuonMultiplicity(2);
1401 gener->SetNumberOfCollisions(1626.); //Centrality class Cent1 for PDC04
1402 gener->SetNumberOfParticipants(359.4);//Centrality class Cent1 for PDC04
1403 gGener=gener;
1404 }
1405 break;
1406 case kMuonCocktailPer1:
1407 {
1408 comment = comment.Append(" Muon Cocktail Per1");
1409 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1410 gener->SetPtRange(1.0,100.); // Transverse momentum range
1411 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1412 gener->SetYRange(-4.0,-2.4);
1413 gener->SetMuonPtCut(0.8);
1414 gener->SetMuonThetaCut(171.,178.);
1415 gener->SetMuonMultiplicity(2);
1416 gener->SetNumberOfCollisions(820.0);//Centrality class Per1 for PDC04
1417 gener->SetNumberOfParticipants(229.3);//Centrality class Per1 for PDC04
1418 gGener=gener;
1419 }
1420 break;
1421 case kMuonCocktailPer4:
1422 {
1423 comment = comment.Append(" Muon Cocktail Per4");
1424 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1425 gener->SetPtRange(1.0,100.); // Transverse momentum range
1426 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1427 gener->SetYRange(-4.0,-2.4);
1428 gener->SetMuonPtCut(0.8);
1429 gener->SetMuonThetaCut(171.,178.);
1430 gener->SetMuonMultiplicity(2);
1431 gener->SetNumberOfCollisions(13.6);//Centrality class Per4 for PDC04
1432 gener->SetNumberOfParticipants(13.3);//Centrality class Per4 for PDC04
1433 gGener=gener;
1434 }
1435 break;
1436 case kMuonCocktailCent1HighPt:
1437 {
1438 comment = comment.Append(" Muon Cocktail HighPt Cent1");
1439 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1440 gener->SetPtRange(1.0,100.); // Transverse momentum range
1441 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1442 gener->SetYRange(-4.0,-2.4);
1443 gener->SetMuonPtCut(2.5);
1444 gener->SetMuonThetaCut(171.,178.);
1445 gener->SetMuonMultiplicity(2);
1446 gener->SetNumberOfCollisions(1626.); //Centrality class Cent1 for PDC04
1447 gener->SetNumberOfParticipants(359.4);//Centrality class Cent1 for PDC04
1448 gGener=gener;
1449 }
1450 break;
1451 case kMuonCocktailPer1HighPt :
1452 {
1453 comment = comment.Append(" Muon Cocktail HighPt Per1");
1454 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1455 gener->SetPtRange(1.0,100.); // Transverse momentum range
1456 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1457 gener->SetYRange(-4.0,-2.4);
1458 gener->SetMuonPtCut(2.5);
1459 gener->SetMuonThetaCut(171.,178.);
1460 gener->SetMuonMultiplicity(2);
1461 gener->SetNumberOfCollisions(820.0);//Centrality class Per1 for PDC04
1462 gener->SetNumberOfParticipants(229.3);//Centrality class Per1 for PDC04
1463 gGener=gener;
1464 }
1465 break;
1466 case kMuonCocktailPer4HighPt:
1467 {
1468 comment = comment.Append(" Muon Cocktail HighPt Per4");
1469 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1470 gener->SetPtRange(1.0,100.); // Transverse momentum range
1471 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1472 gener->SetYRange(-4.0,-2.4);
1473 gener->SetMuonPtCut(2.5);
1474 gener->SetMuonThetaCut(171.,178.);
1475 gener->SetMuonMultiplicity(2);
1476 gener->SetNumberOfCollisions(13.6);//Centrality class Per4 for PDC04
1477 gener->SetNumberOfParticipants(13.3);//Centrality class Per4 for PDC04
1478 gGener=gener;
1479 }
1480 break;
1481 case kMuonCocktailCent1Single:
1482 {
1483 comment = comment.Append(" Muon Cocktail Single Cent1");
1484 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1485 gener->SetPtRange(1.0,100.); // Transverse momentum range
1486 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1487 gener->SetYRange(-4.0,-2.4);
1488 gener->SetMuonPtCut(0.8);
1489 gener->SetMuonThetaCut(171.,178.);
1490 gener->SetMuonMultiplicity(1);
1491 gener->SetNumberOfCollisions(1626.); //Centrality class Cent1 for PDC04
1492 gener->SetNumberOfParticipants(359.4);//Centrality class Cent1 for PDC04
1493 gGener=gener;
1494 }
1495 break;
1496 case kMuonCocktailPer1Single :
1497 {
1498 comment = comment.Append(" Muon Cocktail Single Per1");
1499 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1500 gener->SetPtRange(1.0,100.); // Transverse momentum range
1501 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1502 gener->SetYRange(-4.0,-2.4);
1503 gener->SetMuonPtCut(0.8);
1504 gener->SetMuonThetaCut(171.,178.);
1505 gener->SetMuonMultiplicity(1);
1506 gener->SetNumberOfCollisions(820.0);//Centrality class Per1 for PDC04
1507 gener->SetNumberOfParticipants(229.3);//Centrality class Per1 for PDC04
1508 gGener=gener;
1509 }
1510 break;
1511 case kMuonCocktailPer4Single:
1512 {
1513 comment = comment.Append(" Muon Cocktail Single Per4");
1514 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1515 gener->SetPtRange(1.0,100.); // Transverse momentum range
1516 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1517 gener->SetYRange(-4.0,-2.4);
1518 gener->SetMuonPtCut(0.8);
1519 gener->SetMuonThetaCut(171.,178.);
1520 gener->SetMuonMultiplicity(1);
1521 gener->SetNumberOfCollisions(13.6);//Centrality class Per4 for PDC04
1522 gener->SetNumberOfParticipants(13.3);//Centrality class Per4 for PDC04
1523 gGener=gener;
1524 }
1525 break;
1526 case kFMD1Flat:
1527 {
1528 comment = comment.Append(" Flat in FMD1 range");
1529 AliGenBox* gener = new AliGenBox(2000);
1530 gener->SetPart(211);
1531 gener->SetMomentumRange(3,4);
1532 gener->SetPhiRange(0, 360);
1533 gener->SetThetaRange(0.77, 3.08);
1534 gGener = gener;
1535 }
1536 break;
1537 case kFMD2Flat:
1538 {
1539 comment = comment.Append(" Flat in FMD2 range");
1540 AliGenBox* gener = new AliGenBox(2000);
1541 gener->SetPart(211);
1542 gener->SetMomentumRange(3,4);
1543 gener->SetPhiRange(0, 360);
1544 gener->SetThetaRange(2.95, 20.42);
1545 gGener = gener;
1546 }
1547 break;
1548 case kFMD3Flat:
1549 {
1550 comment = comment.Append(" Flat in FMD3 range");
1551 AliGenBox* gener = new AliGenBox(2000);
1552 gener->SetPart(211);
1553 gener->SetMomentumRange(3,4);
1554 gener->SetPhiRange(0, 360);
1555 gener->SetThetaRange(155.97, 176.73);
1556 gGener = gener;
1557 }
1558 break;
1559 case kFMDFlat:
1560 {
1561 comment = comment.Append(" Flat in FMD range");
1562 AliGenCocktail* gener = new AliGenCocktail();
1563 gener->SetMomentumRange(3,4);
1564 gener->SetPhiRange(0, 360);
1565 AliGenBox* gener3 = new AliGenBox(2000);
1566 gener3->SetThetaRange(155.97, 176.73);
1567 gener3->SetPart(211);
1568 gener->AddGenerator(gener3, "FMD3", .33);
1569 AliGenBox* gener2 = new AliGenBox(2000);
1570 gener2->SetThetaRange(2.95, 20.42);
1571 gener2->SetPart(211);
1572 gener->AddGenerator(gener2, "FMD2", .33);
1573 AliGenBox* gener1 = new AliGenBox(2000);
1574 gener1->SetThetaRange(0.77, 3.08);
1575 gener1->SetPart(211);
1576 gener->AddGenerator(gener1, "FMD1", .34);
1577 gGener = gener;
1578 }
1579 break;
1580
1581 default: break;
1582 }
1583 return gGener;
1584}
1585
1586//____________________________________________________________________
1587AliGenHijing*
1588HijingStandard()
1589{
1590 AliGenHijing *gener = new AliGenHijing(-1);
1591 // centre of mass energy
1592 gener->SetEnergyCMS(5500.);
1593 // reference frame
1594 gener->SetReferenceFrame("CMS");
1595 // projectile
1596 gener->SetProjectile("A", 208, 82);
1597 gener->SetTarget ("A", 208, 82);
1598 // tell hijing to keep the full parent child chain
1599 gener->KeepFullEvent();
1600 // enable jet quenching
1601 gener->SetJetQuenching(1);
1602 // enable shadowing
1603 gener->SetShadowing(1);
1604 // neutral pion and heavy particle decays switched off
1605 gener->SetDecaysOff(1);
1606 // Don't track spectators
1607 gener->SetSpectators(0);
1608 // kinematic selection
1609 gener->SetSelectAll(0);
1610 return gener;
1611}
1612
1613
1614//____________________________________________________________________
1615void
1616ProcessEnvironmentVars(EG_t& eg, Int_t& seed)
1617{
1618 // Run type
1619 if (gSystem->Getenv("CONFIG_RUN_TYPE")) {
1620 Int_t eg1 = LookupEG(gSystem->Getenv("CONFIG_RUN_TYPE"));
1621 if (eg1 >= 0) eg = EG_t(eg1);
1622 }
1623 // Random Number seed
1624 if (gSystem->Getenv("CONFIG_SEED")) {
1625 seed = atoi(gSystem->Getenv("CONFIG_SEED"));
1626 }
1627}
1628
1629//____________________________________________________________________
1630//
1631// EOF
1632//