]> git.uio.no Git - u/mrichter/AliRoot.git/blame - FMD/Config.C
Documentation
[u/mrichter/AliRoot.git] / FMD / Config.C
CommitLineData
7684b53c 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//
c2fc1258 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*/
0d0e6995 16
7684b53c 17//____________________________________________________________________
18//
19// Generator types
20//
21enum EG_t {
0d0e6995 22 test50,
7684b53c 23 kParam_8000, //
24 kParam_4000, //
25 kParam_2000, //
824466d5 26 kParam_fmd, //
7684b53c 27 kHijing_cent1, //
28 kHijing_cent2, //
29 kHijing_per1, //
30 kHijing_per2, //
31 kHijing_per3, //
32 kHijing_per4, //
33 kHijing_per5, //
34 kHijing_jj25, //
35 kHijing_jj50, //
36 kHijing_jj75, //
37 kHijing_jj100, //
38 kHijing_jj200, //
39 kHijing_gj25, //
40 kHijing_gj50, //
41 kHijing_gj75, //
42 kHijing_gj100, //
43 kHijing_gj200, //
44 kHijing_pA, //
45 kPythia6, //
46 kPythia6Jets20_24, //
47 kPythia6Jets24_29, //
48 kPythia6Jets29_35, //
49 kPythia6Jets35_42, //
50 kPythia6Jets42_50, //
51 kPythia6Jets50_60, //
52 kPythia6Jets60_72, //
53 kPythia6Jets72_86, //
54 kPythia6Jets86_104, //
55 kPythia6Jets104_125, //
56 kPythia6Jets125_150, //
57 kPythia6Jets150_180, //
58 kD0PbPb5500, //
59 kCharmSemiElPbPb5500, //
60 kBeautySemiElPbPb5500, //
61 kCocktailTRD, //
62 kPyJJ, //
63 kPyGJ, //
64 kMuonCocktailCent1, //
65 kMuonCocktailPer1, //
66 kMuonCocktailPer4, //
67 kMuonCocktailCent1HighPt, //
68 kMuonCocktailPer1HighPt, //
69 kMuonCocktailPer4HighPt, //
70 kMuonCocktailCent1Single, //
71 kMuonCocktailPer1Single, //
72 kMuonCocktailPer4Single,
8f6ee336 73 kFMD1Flat,
74 kFMD2Flat,
75 kFMD3Flat,
76 kFMDFlat,
7684b53c 77 kEgMax
0d0e6995 78};
4347b38f 79
7684b53c 80//____________________________________________________________________
81//
82// Generator types names
83//
84const char* egName[kEgMax] = {
85 "test50",
86 "kParam_8000", //
87 "kParam_4000", //
88 "kParam_2000", //
824466d5 89 "kParam_fmd", //
7684b53c 90 "kHijing_cent1", //
91 "kHijing_cent2", //
92 "kHijing_per1", //
93 "kHijing_per2", //
94 "kHijing_per3", //
95 "kHijing_per4", //
96 "kHijing_per5", //
97 "kHijing_jj25", //
98 "kHijing_jj50", //
99 "kHijing_jj75", //
100 "kHijing_jj100", //
101 "kHijing_jj200", //
102 "kHijing_gj25", //
103 "kHijing_gj50", //
104 "kHijing_gj75", //
105 "kHijing_gj100", //
106 "kHijing_gj200", //
107 "kHijing_pA", //
108 "kPythia6", //
109 "kPythia6Jets20_24", //
110 "kPythia6Jets24_29", //
111 "kPythia6Jets29_35", //
112 "kPythia6Jets35_42", //
113 "kPythia6Jets42_50", //
114 "kPythia6Jets50_60", //
115 "kPythia6Jets60_72", //
116 "kPythia6Jets72_86", //
117 "kPythia6Jets86_104", //
118 "kPythia6Jets104_125", //
119 "kPythia6Jets125_150", //
120 "kPythia6Jets150_180", //
121 "kD0PbPb5500", //
122 "kCharmSemiElPbPb5500", //
123 "kBeautySemiElPbPb5500", //
124 "kCocktailTRD", //
125 "kPyJJ", //
126 "kPyGJ", //
127 "kMuonCocktailCent1", //
128 "kMuonCocktailPer1", //
129 "kMuonCocktailPer4", //
130 "kMuonCocktailCent1HighPt", //
131 "kMuonCocktailPer1HighPt", //
132 "kMuonCocktailPer4HighPt", //
133 "kMuonCocktailCent1Single", //
134 "kMuonCocktailPer1Single", //
088f8e79 135 "kMuonCocktailPer4Single",
136 "kFMD1Flat",
137 "kFMD2Flat",
8f6ee336 138 "kFMD3Flat",
139 "kFMDFlat"
0d0e6995 140};
141
7684b53c 142//____________________________________________________________________
143enum Geo_t {
144 kHoles, //
145 kNoHoles //
0d0e6995 146};
147
7684b53c 148//____________________________________________________________________
149enum Rad_t {
150 kGluonRadiation, //
151 kNoGluonRadiation //
0d0e6995 152};
153
7684b53c 154//____________________________________________________________________
0d0e6995 155enum MC_t {
156 kFLUKA,
157 kGEANT3,
1a1fdef7 158 kGEANT4,
159 kGEANT3TGEO,
4347b38f 160};
0d0e6995 161
7684b53c 162//____________________________________________________________________
0d0e6995 163// Functions
7684b53c 164Float_t EtaToTheta(Float_t eta);
c6b36280 165EG_t LookupEG(const Char_t* name);
faf80567 166AliGenerator* GeneratorFactory(EG_t eg, Rad_t rad);
7684b53c 167AliGenHijing* HijingStandard();
168void ProcessEnvironmentVars(EG_t& eg, Int_t& seed);
42403906 169
7684b53c 170//____________________________________________________________________
171void
172Config()
afddaa11 173{
7684b53c 174 //____________________________________________________________________
175 // This part for configuration
83ad576a 176 EG_t eg = kPythia6;
7684b53c 177 Geo_t geo = kNoHoles;
178 Rad_t rad = kGluonRadiation;
f7a1cc68 179 AliMagF::BMap_t mag = AliMagF::k5kG;
7684b53c 180 Int_t seed = 12345; //Set 0 to use the current time
54e415a8 181 MC_t mc = kGEANT3TGEO;
afddaa11 182
7684b53c 183 //____________________________________________________________________
184 // Get settings from environment variables
185 ProcessEnvironmentVars(eg, seed);
186
187 //____________________________________________________________________
4347b38f 188 // Set Random Number seed
7684b53c 189 gRandom->SetSeed(seed);
190 cout<<"Seed for random number generation= "<<gRandom->GetSeed()<<endl;
0d0e6995 191
7684b53c 192
193 //__________________________________________________________________
194 switch (mc) {
0d0e6995 195 case kFLUKA:
37c4363a 196 //
197 // libraries required by fluka21
198 //
199 gSystem->Load("libGeom");
200 cout << "\t* Loading TFluka..." << endl;
201 gSystem->Load("libTFluka");
9aa0bdc4 202 gSystem->MakeDirectory("peg");
37c4363a 203 //
204 // FLUKA MC
205 //
206 cout << "\t* Instantiating TFluka..." << endl;
207 new TFluka("C++ Interface to Fluka", 0/*verbosity*/);
0d0e6995 208 break;
209 case kGEANT3:
4ac75127 210 {
211 //
212 // Libraries needed by GEANT 3.21
213 //
40076ce1 214 gSystem->Load("$ALICE_ROOT/lib/tgt_$ALICE_TARGET/libpythia6.so");
4ac75127 215 gSystem->Load("libgeant321");
216
217 //
218 // GEANT 3.21 MC
219 //
220 TGeant3* gmc = new TGeant3("C++ Interface to Geant3");
221 gmc->SetSWIT(4, 1000);
222 }
0d0e6995 223 break;
1a1fdef7 224 case kGEANT3TGEO:
4ac75127 225 {
226 //
227 // Libraries needed by GEANT 3.21
228 //
40076ce1 229 gSystem->Load("$ALICE_ROOT/lib/tgt_$ALICE_TARGET/liblhapdf.so");
230 gSystem->Load("$ALICE_ROOT/lib/tgt_$ALICE_TARGET/libpythia6.so");
efad1157 231 gSystem->Load("libEGPythia6.so"); //<- For non-debian (sigh!)
232 // gSystem->Load("EGPythia6.so");
4ac75127 233 gSystem->Load("libgeant321");
1a1fdef7 234
4ac75127 235 //
236 // GEANT 3.21 MC
237 //
238 TGeant3TGeo* gmc = new TGeant3TGeo("C++ Interface to Geant3");
239 gmc->SetSWIT(4, 1000);
240 Printf("Making a TGeant3TGeo objet");
241 }
1a1fdef7 242 break;
0d0e6995 243 default:
244 gAlice->Fatal("Config.C", "No MC type chosen");
245 return;
246 }
7684b53c 247
248 //__________________________________________________________________
249 AliRunLoader* rl = 0;
250
4347b38f 251 cout<<"Config.C: Creating Run Loader ..."<<endl;
7684b53c 252 rl = AliRunLoader::Open("galice.root",
253 AliConfig::GetDefaultEventFolderName(),
254 "recreate");
4347b38f 255 if (!rl) {
256 gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
257 return;
258 }
259 rl->SetCompressionLevel(2);
260 rl->SetNumberOfEventsPerFile(3);
261 gAlice->SetRunLoader(rl);
262
7684b53c 263 //__________________________________________________________________
264 // For FLUKA
265 switch (mc) {
37c4363a 266 case kFLUKA:
267 {
268 //
269 // Use kTRUE as argument to generate alice.pemf first
270 //
271 TString alice_pemf(gSystem->Which(".", "peg/mat17.pemf"));
272 if (!alice_pemf.IsNull())
273 ((TFluka*)gMC)->SetGeneratePemf(kFALSE);
274 else
275 ((TFluka*)gMC)->SetGeneratePemf(kTRUE);
088f8e79 276 TString flupro(gSystem->Getenv("FLUPRO"));
277 if (flupro.IsNull())
278 Fatal("Config.C", "Environment variable FLUPRO not set");
279#if 0
280 char* files[] = { "brems_fin.bin", "cohff.bin", "elasct.bin",
281 "gxsect.bin", "nuclear.bin", "sigmapi.bin",
282 0 };
283 char* file = files[0];
284 while (file) {
285 TString which(gSystem->Which(".", file));
286 if (which.IsNull()) {
287 if (gSystem->Symlink(Form("%s/%s", flupro.Data(), file), file)!=0)
288 Fatal("Config.C", "Couldn't link $(FLUPRO)/%s -> .", file);
289 }
290 file++;
9aa0bdc4 291 }
088f8e79 292#endif
293 TString neuxsc(gSystem->Which(".", "neuxsc.bin"));
294 if (neuxsc.IsNull())
295 gSystem->Symlink(Form("%s/neuxsc_72.bin", flupro.Data()),
296 "neuxsc.bin");
9aa0bdc4 297 gSystem->CopyFile("$(FLUPRO)/random.dat", "old.seed", kTRUE);
37c4363a 298 }
299 break;
300 }
7684b53c 301
302 //__________________________________________________________________
0d0e6995 303 //
304 // Set External decayer
4ac75127 305#if 0
0d0e6995 306 AliDecayer *decayer = new AliDecayerPythia();
7684b53c 307 switch (eg) {
308 case kD0PbPb5500: decayer->SetForceDecay(kHadronicD); break;
309 case kCharmSemiElPbPb5500: decayer->SetForceDecay(kSemiElectronic); break;
310 case kBeautySemiElPbPb5500: decayer->SetForceDecay(kSemiElectronic); break;
311 default: decayer->SetForceDecay(kAll); break;
312 }
4347b38f 313 decayer->Init();
314 gMC->SetExternalDecayer(decayer);
4ac75127 315#endif
4347b38f 316
7684b53c 317 //__________________________________________________________________
bf000c32 318 // *********** STEERING parameters FOR ALICE SIMULATION ************
319 // - Specify event type to be tracked through the ALICE setup
320 // - All positions are in cm, angles in degrees, and P and E in GeV
4347b38f 321 gMC->SetProcess("DCAY",1);
322 gMC->SetProcess("PAIR",1);
323 gMC->SetProcess("COMP",1);
324 gMC->SetProcess("PHOT",1);
325 gMC->SetProcess("PFIS",0);
7684b53c 326 gMC->SetProcess("DRAY",0);
4347b38f 327 gMC->SetProcess("ANNI",1);
328 gMC->SetProcess("BREM",1);
329 gMC->SetProcess("MUNU",1);
7684b53c 330 gMC->SetProcess("CKOV",1);
4347b38f 331 gMC->SetProcess("HADR",1);
83ad576a 332 gMC->SetProcess("LOSS",1); // 0:none 1,3:dray 2:nodray 4:nofluct (def:2)
7684b53c 333 gMC->SetProcess("MULS",1);
4347b38f 334 gMC->SetProcess("RAYL",1);
335
336 Float_t cut = 1.e-3; // 1MeV cut by default
337 Float_t tofmax = 1.e10;
338
339 gMC->SetCut("CUTGAM", cut);
340 gMC->SetCut("CUTELE", cut);
341 gMC->SetCut("CUTNEU", cut);
342 gMC->SetCut("CUTHAD", cut);
343 gMC->SetCut("CUTMUO", cut);
7684b53c 344 gMC->SetCut("BCUTE", cut);
345 gMC->SetCut("BCUTM", cut);
346 gMC->SetCut("DCUTE", cut);
347 gMC->SetCut("DCUTM", cut);
4347b38f 348 gMC->SetCut("PPCUTM", cut);
7684b53c 349 gMC->SetCut("TOFMAX", tofmax);
0d0e6995 350
4ac75127 351
7684b53c 352 //__________________________________________________________________
353 // Generator Configuration
faf80567 354 AliGenerator* gener = GeneratorFactory(eg, rad);
7684b53c 355 gener->SetOrigin(0, 0, 0); // vertex position
356 gener->SetSigma(0, 0, 5.3); // Sigma in (X,Y,Z) (cm) on IP position
357 gener->SetCutVertexZ(1.); // Truncate at 1 sigma
358 gener->SetVertexSmear(kPerEvent);
359 gener->SetTrackingFlag(1);
360 gener->Init();
361
7684b53c 362 //__________________________________________________________________
4347b38f 363 // Field (L3 0.4 T)
4642ac4b 364 AliMagF* field = new AliMagF("Maps","Maps",-1., -1., mag);
f7a1cc68 365 TGeoGlobalMagField::Instance()->SetField(field);
366
0d0e6995 367 rl->CdGAFile();
f7a1cc68 368
ed82d35e 369 TFile* magF = TFile::Open("mag.root", "RECREATE");
370 field->Write("mag");
371 magF->Close();
0d0e6995 372
7684b53c 373 //__________________________________________________________________
0d0e6995 374 //
375 // Used detectors
376 //
0dd3acef 377 Bool_t useABSO = kFALSE;
65af05bc 378 Bool_t useACORDE= kFALSE;
4ac75127 379 Bool_t useDIPO = kFALSE;
0d0e6995 380 Bool_t useFMD = kTRUE;
4ac75127 381 Bool_t useFRAME = kFALSE;
69b696b9 382 Bool_t useHALL = kFALSE;
f567c3ce 383 Bool_t useITS = kTRUE;
4ac75127 384 Bool_t useMAG = kFALSE;
385 Bool_t useMUON = kFALSE;
386 Bool_t usePHOS = kFALSE;
2e0139df 387 Bool_t usePIPE = kTRUE;
83ad576a 388 Bool_t usePMD = kFALSE;
65af05bc 389 Bool_t useHMPID = kFALSE;
4ac75127 390 Bool_t useSHIL = kFALSE;
efad1157 391 Bool_t useT0 = kTRUE;
4ac75127 392 Bool_t useTOF = kFALSE;
393 Bool_t useTPC = kFALSE;
394 Bool_t useTRD = kFALSE;
69b696b9 395 Bool_t useZDC = kFALSE;
4ac75127 396 Bool_t useEMCAL = kFALSE;
efad1157 397 Bool_t useVZERO = kTRUE;
4347b38f 398
0d0e6995 399 cout << "\t* Creating the detectors ..." << endl;
bf000c32 400 // ================= Alice BODY parameters =========================
4347b38f 401 AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
402
0d0e6995 403
f70f588a 404 if (useMAG) AliMAG *MAG = new AliMAG("MAG", "Magnet");
405 if (useABSO) AliABSO *ABSO = new AliABSOv3("ABSO", "Muon Absorber");
406 if (useDIPO) AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3");
407 if (useHALL) AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall");
4347b38f 408 if (useFRAME) {
4347b38f 409 AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");
7684b53c 410 switch (geo) {
0d0e6995 411 case kHoles: FRAME->SetHoles(1); break;
412 default: FRAME->SetHoles(0); break;
4347b38f 413 }
414 }
f70f588a 415 if (useSHIL) AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding v3");
416 if (usePIPE) AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe");
417 if (useITS) AliITS *ITS = new AliITSv11Hybrid("ITS","ITS v11Hybrid");
418 if (useTPC) AliTPC *TPC = new AliTPCv2("TPC", "Default");
419 if (useTOF) AliTOF *TOF = new AliTOFv6T0("TOF", "normal TOF");
420 if (useHMPID) AliHMPID *HMPID = new AliHMPIDv1("HMPID", "normal HMPID");
421 if (useZDC) AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC");
422 if (useTRD) AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");
423 if (useFMD) AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
424 if (useMUON) AliMUON *MUON = new AliMUONv1("MUON", "default");
425 if (usePHOS) AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP");
426 if (usePMD) AliPMD *PMD = new AliPMDv1("PMD", "normal PMD");
427 if (useT0) AliT0 *T0 = new AliT0v1("T0", "T0 Detector");
c76b9217 428 if (useEMCAL) AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETEV1");
f70f588a 429 if (useACORDE) AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE");
430 if (useVZERO) AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
4347b38f 431}
432
7684b53c 433//____________________________________________________________________
0d0e6995 434Float_t EtaToTheta(Float_t arg)
435{
7684b53c 436 return (180./TMath::Pi())*2.*TMath::ATan(TMath::Exp(-arg));
437}
438
439//____________________________________________________________________
440Int_t
441LookupEG(const Char_t* name)
442{
443 TString n(name);
444 for (Int_t i = 0; i < kEgMax; i++) {
445 if (n == egName[i]) return i;
446 }
447 return -1;
448}
449
450//____________________________________________________________________
451AliGenerator*
faf80567 452GeneratorFactory(EG_t eg, Rad_t rad)
7684b53c 453{
454 Int_t isw = 3;
455 if (rad == kNoGluonRadiation) isw = 0;
456
40076ce1 457 // Possibly load libAliPythia6
458 switch (eg) {
459 case kPythia6:
460 case kPythia6Jets20_24:
461 case kPythia6Jets24_29:
462 case kPythia6Jets29_35:
463 case kPythia6Jets35_42:
464 case kPythia6Jets42_50:
465 case kPythia6Jets50_60:
466 case kPythia6Jets60_72:
467 case kPythia6Jets72_86:
468 case kPythia6Jets86_104:
469 case kPythia6Jets104_125:
470 case kPythia6Jets125_150:
471 case kPythia6Jets150_180:
472 gSystem->Load("liblhapdf.so");
473 // gSystem->Load("/usr/lib/libpythia.so");
474 // gSystem->ListLibraries();
475 gSystem->Load("EGPythia6.so");
476 gSystem->Load("libAliPythia6");
477 break;
478 }
7684b53c 479
480 AliGenerator * gGener = 0;
481 switch (eg) {
482 case test50:
483 {
7684b53c 484 AliGenHIJINGpara *gener = new AliGenHIJINGpara(50);
485 gener->SetMomentumRange(0, 999999.);
486 gener->SetPhiRange(0., 360.);
487 // Set pseudorapidity range from -8 to 8.
488 Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
489 Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
490 gener->SetThetaRange(thmin,thmax);
491 gGener=gener;
492 }
493 break;
494 case kParam_8000:
495 {
7684b53c 496 AliGenHIJINGpara *gener = new AliGenHIJINGpara(86030);
497 gener->SetMomentumRange(0, 999999.);
498 gener->SetPhiRange(0., 360.);
499 // Set pseudorapidity range from -8 to 8.
500 Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
501 Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
502 gener->SetThetaRange(thmin,thmax);
503 gGener=gener;
504 }
505 break;
506 case kParam_4000:
507 {
7684b53c 508 AliGenHIJINGpara *gener = new AliGenHIJINGpara(43015);
509 gener->SetMomentumRange(0, 999999.);
510 gener->SetPhiRange(0., 360.);
511 // Set pseudorapidity range from -8 to 8.
512 Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
513 Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
514 gener->SetThetaRange(thmin,thmax);
515 gGener=gener;
516 }
517 break;
518 case kParam_2000:
519 {
7684b53c 520 AliGenHIJINGpara *gener = new AliGenHIJINGpara(21507);
521 gener->SetMomentumRange(0, 999999.);
522 gener->SetPhiRange(0., 360.);
523 // Set pseudorapidity range from -8 to 8.
524 Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
525 Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
824466d5 526 gener->SetThetaRange(thmin,thmax);
527 gGener=gener;
528 }
529 break;
530 case kParam_fmd:
531 {
1a1fdef7 532 AliGenHIJINGpara *gener = new AliGenHIJINGpara(500);
824466d5 533 gener->SetMomentumRange(0, 999999.);
534 gener->SetPhiRange(0., 360.);
535 // Set pseudorapidity range from -8 to 8.
1a1fdef7 536 Float_t thmin = EtaToTheta(6); // theta min. <---> eta max
537 Float_t thmax = EtaToTheta(2); // theta max. <---> eta min
7684b53c 538 gener->SetThetaRange(thmin,thmax);
539 gGener=gener;
540 }
541 break;
542 //
543 // Hijing Central
544 //
545 case kHijing_cent1:
546 {
7684b53c 547 AliGenHijing *gener = HijingStandard();
548 // impact parameter range
549 gener->SetImpactParameterRange(0., 5.);
550 gGener=gener;
551 }
552 break;
553 case kHijing_cent2:
554 {
7684b53c 555 AliGenHijing *gener = HijingStandard();
556 // impact parameter range
557 gener->SetImpactParameterRange(0., 2.);
558 gGener=gener;
559 }
560 break;
561 //
562 // Hijing Peripheral
563 //
564 case kHijing_per1:
565 {
7684b53c 566 AliGenHijing *gener = HijingStandard();
567 // impact parameter range
568 gener->SetImpactParameterRange(5., 8.6);
569 gGener=gener;
570 }
571 break;
572 case kHijing_per2:
573 {
7684b53c 574 AliGenHijing *gener = HijingStandard();
575 // impact parameter range
576 gener->SetImpactParameterRange(8.6, 11.2);
577 gGener=gener;
578 }
579 break;
580 case kHijing_per3:
581 {
7684b53c 582 AliGenHijing *gener = HijingStandard();
583 // impact parameter range
584 gener->SetImpactParameterRange(11.2, 13.2);
585 gGener=gener;
586 }
587 break;
588 case kHijing_per4:
589 {
7684b53c 590 AliGenHijing *gener = HijingStandard();
591 // impact parameter range
592 gener->SetImpactParameterRange(13.2, 15.);
593 gGener=gener;
594 }
595 break;
596 case kHijing_per5:
597 {
7684b53c 598 AliGenHijing *gener = HijingStandard();
599 // impact parameter range
600 gener->SetImpactParameterRange(15., 100.);
601 gGener=gener;
602 }
603 break;
604 //
605 // Jet-Jet
606 //
607 case kHijing_jj25:
608 {
7684b53c 609 AliGenHijing *gener = HijingStandard();
610 // impact parameter range
611 gener->SetImpactParameterRange(0., 5.);
612 // trigger
613 gener->SetTrigger(1);
614 gener->SetPtJet(25.);
615 gener->SetRadiation(isw);
616 gener->SetSimpleJets(!isw);
617 gener->SetJetEtaRange(-0.3,0.3);
618 gener->SetJetPhiRange(75., 165.);
619 gGener=gener;
620 }
621 break;
622
623 case kHijing_jj50:
624 {
7684b53c 625 AliGenHijing *gener = HijingStandard();
626 // impact parameter range
627 gener->SetImpactParameterRange(0., 5.);
628 // trigger
629 gener->SetTrigger(1);
630 gener->SetPtJet(50.);
631 gener->SetRadiation(isw);
632 gener->SetSimpleJets(!isw);
633 gener->SetJetEtaRange(-0.3,0.3);
634 gener->SetJetPhiRange(75., 165.);
635 gGener=gener;
636 }
637 break;
638
639 case kHijing_jj75:
640 {
7684b53c 641 AliGenHijing *gener = HijingStandard();
642 // impact parameter range
643 gener->SetImpactParameterRange(0., 5.);
644 // trigger
645 gener->SetTrigger(1);
646 gener->SetPtJet(75.);
647 gener->SetRadiation(isw);
648 gener->SetSimpleJets(!isw);
649 gener->SetJetEtaRange(-0.3,0.3);
650 gener->SetJetPhiRange(75., 165.);
651 gGener=gener;
652 }
653 break;
654
655 case kHijing_jj100:
656 {
7684b53c 657 AliGenHijing *gener = HijingStandard();
658 // impact parameter range
659 gener->SetImpactParameterRange(0., 5.);
660 // trigger
661 gener->SetTrigger(1);
662 gener->SetPtJet(100.);
663 gener->SetRadiation(isw);
664 gener->SetSimpleJets(!isw);
665 gener->SetJetEtaRange(-0.3,0.3);
666 gener->SetJetPhiRange(75., 165.);
667 gGener=gener;
668 }
669 break;
670
671 case kHijing_jj200:
672 {
7684b53c 673 AliGenHijing *gener = HijingStandard();
674 // impact parameter range
675 gener->SetImpactParameterRange(0., 5.);
676 // trigger
677 gener->SetTrigger(1);
678 gener->SetPtJet(200.);
679 gener->SetRadiation(isw);
680 gener->SetSimpleJets(!isw);
681 gener->SetJetEtaRange(-0.3,0.3);
682 gener->SetJetPhiRange(75., 165.);
683 gGener=gener;
684 }
685 break;
686 //
687 // Gamma-Jet
688 //
689 case kHijing_gj25:
690 {
7684b53c 691 AliGenHijing *gener = HijingStandard();
692 // impact parameter range
693 gener->SetImpactParameterRange(0., 5.);
694 // trigger
695 gener->SetTrigger(2);
696 gener->SetPtJet(25.);
697 gener->SetRadiation(isw);
698 gener->SetSimpleJets(!isw);
699 gener->SetJetEtaRange(-0.12, 0.12);
700 gener->SetJetPhiRange(220., 320.);
701 gGener=gener;
702 }
703 break;
704
705 case kHijing_gj50:
706 {
7684b53c 707 AliGenHijing *gener = HijingStandard();
708 // impact parameter range
709 gener->SetImpactParameterRange(0., 5.);
710 // trigger
711 gener->SetTrigger(2);
712 gener->SetPtJet(50.);
713 gener->SetRadiation(isw);
714 gener->SetSimpleJets(!isw);
715 gener->SetJetEtaRange(-0.12, 0.12);
716 gener->SetJetPhiRange(220., 320.);
717 gGener=gener;
718 }
719 break;
720
721 case kHijing_gj75:
722 {
7684b53c 723 AliGenHijing *gener = HijingStandard();
724 // impact parameter range
725 gener->SetImpactParameterRange(0., 5.);
726 // trigger
727 gener->SetTrigger(2);
728 gener->SetPtJet(75.);
729 gener->SetRadiation(isw);
730 gener->SetSimpleJets(!isw);
731 gener->SetJetEtaRange(-0.12, 0.12);
732 gener->SetJetPhiRange(220., 320.);
733 gGener=gener;
734 }
735 break;
736
737 case kHijing_gj100:
738 {
7684b53c 739 AliGenHijing *gener = HijingStandard();
740 // impact parameter range
741 gener->SetImpactParameterRange(0., 5.);
742 // trigger
743 gener->SetTrigger(2);
744 gener->SetPtJet(100.);
745 gener->SetRadiation(isw);
746 gener->SetSimpleJets(!isw);
747 gener->SetJetEtaRange(-0.12, 0.12);
748 gener->SetJetPhiRange(220., 320.);
749 gGener=gener;
750 }
751 break;
752
753 case kHijing_gj200:
754 {
7684b53c 755 AliGenHijing *gener = HijingStandard();
756 // impact parameter range
757 gener->SetImpactParameterRange(0., 5.);
758 // trigger
759 gener->SetTrigger(2);
760 gener->SetPtJet(200.);
761 gener->SetRadiation(isw);
762 gener->SetSimpleJets(!isw);
763 gener->SetJetEtaRange(-0.12, 0.12);
764 gener->SetJetPhiRange(220., 320.);
765 gGener=gener;
766 }
767 break;
768 case kHijing_pA:
769 {
7684b53c 770
771 AliGenCocktail *gener = new AliGenCocktail();
772
773 AliGenHijing *hijing = new AliGenHijing(-1);
774 // centre of mass energy
775 hijing->SetEnergyCMS(TMath::Sqrt(82./208.) * 14000.);
776 // impact parameter range
777 hijing->SetImpactParameterRange(0., 15.);
778 // reference frame
779 hijing->SetReferenceFrame("CMS");
780 hijing->SetBoostLHC(1);
781 // projectile
782 hijing->SetProjectile("P", 1, 1);
783 hijing->SetTarget ("A", 208, 82);
784 // tell hijing to keep the full parent child chain
785 hijing->KeepFullEvent();
786 // enable jet quenching
787 hijing->SetJetQuenching(0);
788 // enable shadowing
789 hijing->SetShadowing(1);
790 // Don't track spectators
791 hijing->SetSpectators(0);
792 // kinematic selection
793 hijing->SetSelectAll(0);
794 //
795 AliGenSlowNucleons* gray = new AliGenSlowNucleons(1);
796 AliSlowNucleonModel* model = new AliSlowNucleonModelExp();
797 gray->SetSlowNucleonModel(model);
798 gray->SetDebug(1);
799 gener->AddGenerator(hijing,"Hijing pPb", 1);
800 gener->AddGenerator(gray, "Gray Particles",1);
801 gGener=gener;
802 }
803 break;
804 case kPythia6:
805 {
7684b53c 806 AliGenPythia *gener = new AliGenPythia(-1);
807 gener->SetMomentumRange(0,999999);
808 gener->SetThetaRange(0., 180.);
809 gener->SetYRange(-12,12);
810 gener->SetPtRange(0,1000);
811 gener->SetProcess(kPyMb);
812 gener->SetEnergyCMS(14000.);
813 gGener=gener;
814 }
815 break;
816 case kPythia6Jets20_24:
817 {
7684b53c 818 AliGenPythia * gener = new AliGenPythia(-1);
819 gener->SetEnergyCMS(5500.);// Centre of mass energy
820 gener->SetProcess(kPyJets);// Process type
821 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
822 gener->SetJetPhiRange(0., 360.);
823 gener->SetJetEtRange(10., 1000.);
824 gener->SetGluonRadiation(1,1);
825 // gener->SetPtKick(0.);
826 // Structure function
827 gener->SetStrucFunc(kCTEQ4L);
828 gener->SetPtHard(20., 24.);// Pt transfer of the hard scattering
829 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
830 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
831 gGener=gener;
832 }
833 break;
834 case kPythia6Jets24_29:
835 {
7684b53c 836 AliGenPythia * gener = new AliGenPythia(-1);
837 gener->SetEnergyCMS(5500.);// Centre of mass energy
838 gener->SetProcess(kPyJets);// Process type
839 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
840 gener->SetJetPhiRange(0., 360.);
841 gener->SetJetEtRange(10., 1000.);
842 gener->SetGluonRadiation(1,1);
843 // gener->SetPtKick(0.);
844 // Structure function
845 gener->SetStrucFunc(kCTEQ4L);
846 gener->SetPtHard(24., 29.);// Pt transfer of the hard scattering
847 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
848 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
849 gGener=gener;
850 }
851 break;
852 case kPythia6Jets29_35:
853 {
7684b53c 854 AliGenPythia * gener = new AliGenPythia(-1);
855 gener->SetEnergyCMS(5500.);// Centre of mass energy
856 gener->SetProcess(kPyJets);// Process type
857 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
858 gener->SetJetPhiRange(0., 360.);
859 gener->SetJetEtRange(10., 1000.);
860 gener->SetGluonRadiation(1,1);
861 // gener->SetPtKick(0.);
862 // Structure function
863 gener->SetStrucFunc(kCTEQ4L);
864 gener->SetPtHard(29., 35.);// Pt transfer of the hard scattering
865 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
866 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
867 gGener=gener;
868 }
869 break;
870 case kPythia6Jets35_42:
871 {
7684b53c 872 AliGenPythia * gener = new AliGenPythia(-1);
873 gener->SetEnergyCMS(5500.);// Centre of mass energy
874 gener->SetProcess(kPyJets);// Process type
875 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
876 gener->SetJetPhiRange(0., 360.);
877 gener->SetJetEtRange(10., 1000.);
878 gener->SetGluonRadiation(1,1);
879 // gener->SetPtKick(0.);
880 // Structure function
881 gener->SetStrucFunc(kCTEQ4L);
882 gener->SetPtHard(35., 42.);// Pt transfer of the hard scattering
883 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
884 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
885 gGener=gener;
886 }
887 break;
888 case kPythia6Jets42_50:
889 {
7684b53c 890 AliGenPythia * gener = new AliGenPythia(-1);
891 gener->SetEnergyCMS(5500.);// Centre of mass energy
892 gener->SetProcess(kPyJets);// Process type
893 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
894 gener->SetJetPhiRange(0., 360.);
895 gener->SetJetEtRange(10., 1000.);
896 gener->SetGluonRadiation(1,1);
897 // gener->SetPtKick(0.);
898 // Structure function
899 gener->SetStrucFunc(kCTEQ4L);
900 gener->SetPtHard(42., 50.);// Pt transfer of the hard scattering
901 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
902 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
903 gGener=gener;
904 }
905 break;
906 case kPythia6Jets50_60:
907 {
7684b53c 908 AliGenPythia * gener = new AliGenPythia(-1);
909 gener->SetEnergyCMS(5500.);// Centre of mass energy
910 gener->SetProcess(kPyJets);// Process type
911 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
912 gener->SetJetPhiRange(0., 360.);
913 gener->SetJetEtRange(10., 1000.);
914 gener->SetGluonRadiation(1,1);
915 // gener->SetPtKick(0.);
916 // Structure function
917 gener->SetStrucFunc(kCTEQ4L);
918 gener->SetPtHard(50., 60.);// Pt transfer of the hard scattering
919 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
920 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
921 gGener=gener;
922 }
923 break;
924 case kPythia6Jets60_72:
925 {
7684b53c 926 AliGenPythia * gener = new AliGenPythia(-1);
927 gener->SetEnergyCMS(5500.);// Centre of mass energy
928 gener->SetProcess(kPyJets);// Process type
929 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
930 gener->SetJetPhiRange(0., 360.);
931 gener->SetJetEtRange(10., 1000.);
932 gener->SetGluonRadiation(1,1);
933 // gener->SetPtKick(0.);
934 // Structure function
935 gener->SetStrucFunc(kCTEQ4L);
936 gener->SetPtHard(60., 72.);// Pt transfer of the hard scattering
937 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
938 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
939 gGener=gener;
940 }
941 break;
942 case kPythia6Jets72_86:
943 {
7684b53c 944 AliGenPythia * gener = new AliGenPythia(-1);
945 gener->SetEnergyCMS(5500.);// Centre of mass energy
946 gener->SetProcess(kPyJets);// Process type
947 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
948 gener->SetJetPhiRange(0., 360.);
949 gener->SetJetEtRange(10., 1000.);
950 gener->SetGluonRadiation(1,1);
951 // gener->SetPtKick(0.);
952 // Structure function
953 gener->SetStrucFunc(kCTEQ4L);
954 gener->SetPtHard(72., 86.);// Pt transfer of the hard scattering
955 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
956 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
957 gGener=gener;
958 }
959 break;
960 case kPythia6Jets86_104:
961 {
7684b53c 962 AliGenPythia * gener = new AliGenPythia(-1);
963 gener->SetEnergyCMS(5500.);// Centre of mass energy
964 gener->SetProcess(kPyJets);// Process type
965 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
966 gener->SetJetPhiRange(0., 360.);
967 gener->SetJetEtRange(10., 1000.);
968 gener->SetGluonRadiation(1,1);
969 // gener->SetPtKick(0.);
970 // Structure function
971 gener->SetStrucFunc(kCTEQ4L);
972 gener->SetPtHard(86., 104.);// Pt transfer of the hard scattering
973 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
974 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
975 gGener=gener;
976 }
977 break;
978 case kPythia6Jets104_125:
979 {
7684b53c 980 AliGenPythia * gener = new AliGenPythia(-1);
981 gener->SetEnergyCMS(5500.);// Centre of mass energy
982 gener->SetProcess(kPyJets);// Process type
983 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
984 gener->SetJetPhiRange(0., 360.);
985 gener->SetJetEtRange(10., 1000.);
986 gener->SetGluonRadiation(1,1);
987 // gener->SetPtKick(0.);
988 // Structure function
989 gener->SetStrucFunc(kCTEQ4L);
990 gener->SetPtHard(104., 125.);// Pt transfer of the hard scattering
991 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
992 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
993 gGener=gener;
994 }
995 break;
996 case kPythia6Jets125_150:
997 {
7684b53c 998 AliGenPythia * gener = new AliGenPythia(-1);
999 gener->SetEnergyCMS(5500.);// Centre of mass energy
1000 gener->SetProcess(kPyJets);// Process type
1001 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1002 gener->SetJetPhiRange(0., 360.);
1003 gener->SetJetEtRange(10., 1000.);
1004 gener->SetGluonRadiation(1,1);
1005 // gener->SetPtKick(0.);
1006 // Structure function
1007 gener->SetStrucFunc(kCTEQ4L);
1008 gener->SetPtHard(125., 150.);// Pt transfer of the hard scattering
1009 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1010 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1011 gGener=gener;
1012 }
1013 break;
1014 case kPythia6Jets150_180:
1015 {
7684b53c 1016 AliGenPythia * gener = new AliGenPythia(-1);
1017 gener->SetEnergyCMS(5500.);// Centre of mass energy
1018 gener->SetProcess(kPyJets);// Process type
1019 gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1020 gener->SetJetPhiRange(0., 360.);
1021 gener->SetJetEtRange(10., 1000.);
1022 gener->SetGluonRadiation(1,1);
1023 // gener->SetPtKick(0.);
1024 // Structure function
1025 gener->SetStrucFunc(kCTEQ4L);
1026 gener->SetPtHard(150., 180.);// Pt transfer of the hard scattering
1027 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1028 gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1029 gGener=gener;
1030 }
1031 break;
1032 case kD0PbPb5500:
1033 {
7684b53c 1034 AliGenPythia * gener = new AliGenPythia(10);
1035 gener->SetProcess(kPyD0PbPbMNR);
1036 gener->SetStrucFunc(kCTEQ4L);
1037 gener->SetPtHard(2.1,-1.0);
1038 gener->SetEnergyCMS(5500.);
1039 gener->SetNuclei(208,208);
1040 gener->SetForceDecay(kHadronicD);
1041 gener->SetYRange(-2,2);
1042 gener->SetFeedDownHigherFamily(kFALSE);
1043 gener->SetStackFillOpt(AliGenPythia::kParentSelection);
1044 gener->SetCountMode(AliGenPythia::kCountParents);
1045 gGener=gener;
1046 }
1047 break;
1048 case kCharmSemiElPbPb5500:
1049 {
7684b53c 1050 AliGenPythia * gener = new AliGenPythia(10);
1051 gener->SetProcess(kPyCharmPbPbMNR);
1052 gener->SetStrucFunc(kCTEQ4L);
1053 gener->SetPtHard(2.1,-1.0);
1054 gener->SetEnergyCMS(5500.);
1055 gener->SetNuclei(208,208);
1056 gener->SetForceDecay(kSemiElectronic);
1057 gener->SetYRange(-2,2);
1058 gener->SetFeedDownHigherFamily(kFALSE);
1059 gener->SetCountMode(AliGenPythia::kCountParents);
1060 gGener=gener;
1061 }
1062 break;
1063 case kBeautySemiElPbPb5500:
1064 {
7684b53c 1065 AliGenPythia *gener = new AliGenPythia(10);
1066 gener->SetProcess(kPyBeautyPbPbMNR);
1067 gener->SetStrucFunc(kCTEQ4L);
1068 gener->SetPtHard(2.75,-1.0);
1069 gener->SetEnergyCMS(5500.);
1070 gener->SetNuclei(208,208);
1071 gener->SetForceDecay(kSemiElectronic);
1072 gener->SetYRange(-2,2);
1073 gener->SetFeedDownHigherFamily(kFALSE);
1074 gener->SetCountMode(AliGenPythia::kCountParents);
1075 gGener=gener;
1076 }
1077 break;
1078 case kCocktailTRD:
1079 {
7684b53c 1080 AliGenCocktail *gener = new AliGenCocktail();
1081
1082 AliGenParam *jpsi = new AliGenParam(10,
1083 new AliGenMUONlib(),
1084 AliGenMUONlib::kJpsiFamily,
1085 "Vogt PbPb");
1086
1087 jpsi->SetPtRange(0, 100);
1088 jpsi->SetYRange(-1., +1.);
1089 jpsi->SetForceDecay(kDiElectron);
1090
1091 AliGenParam *ups = new AliGenParam(10,
1092 new AliGenMUONlib(),
1093 AliGenMUONlib::kUpsilonFamily,
1094 "Vogt PbPb");
1095 ups->SetPtRange(0, 100);
1096 ups->SetYRange(-1., +1.);
1097 ups->SetForceDecay(kDiElectron);
1098
1099 AliGenParam *charm = new AliGenParam(10,
1100 new AliGenMUONlib(),
1101 AliGenMUONlib::kCharm,
1102 "central");
1103 charm->SetPtRange(0, 100);
1104 charm->SetYRange(-1.5, +1.5);
1105 charm->SetForceDecay(kSemiElectronic);
1106
1107
1108 AliGenParam *beauty = new AliGenParam(10,
1109 new AliGenMUONlib(),
1110 AliGenMUONlib::kBeauty,
1111 "central");
1112 beauty->SetPtRange(0, 100);
1113 beauty->SetYRange(-1.5, +1.5);
1114 beauty->SetForceDecay(kSemiElectronic);
1115
1116 gener->AddGenerator(jpsi,"J/psi",1);
1117 gener->AddGenerator(ups,"Upsilon",1);
1118 gener->AddGenerator(charm,"Charm",1);
1119 gener->AddGenerator(beauty,"Beauty",1);
1120 gGener=gener;
1121 }
1122 break;
1123 case kPyJJ:
1124 {
7684b53c 1125 AliGenPythia *gener = new AliGenPythia(-1);
1126 gener->SetEnergyCMS(5500.);
1127 gener->SetProcess(kPyJets);
1128 Double_t ptHardMin=10.0, ptHardMax=-1.0;
1129 gener->SetPtHard(ptHardMin,ptHardMax);
1130 gener->SetYHard(-0.7,0.7);
1131 gener->SetJetEtaRange(-0.2,0.2);
1132 gener->SetEventListRange(0,1);
1133 gGener=gener;
1134 }
1135 break;
1136 case kPyGJ:
1137 {
7684b53c 1138 AliGenPythia *gener = new AliGenPythia(-1);
1139 gener->SetEnergyCMS(5500.);
1140 gener->SetProcess(kPyDirectGamma);
1141 Double_t ptHardMin=10.0, ptHardMax=-1.0;
1142 gener->SetPtHard(ptHardMin,ptHardMax);
1143 gener->SetYHard(-1.0,1.0);
1144 gener->SetGammaEtaRange(-0.13,0.13);
1145 gener->SetGammaPhiRange(210.,330.);
1146 gener->SetEventListRange(0,1);
1147 gGener=gener;
1148 }
1149 break;
1150 case kMuonCocktailCent1:
1151 {
7684b53c 1152 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1153 gener->SetPtRange(1.0,100.); // Transverse momentum range
1154 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1155 gener->SetYRange(-4.0,-2.4);
1156 gener->SetMuonPtCut(0.8);
1157 gener->SetMuonThetaCut(171.,178.);
1158 gener->SetMuonMultiplicity(2);
1159 gener->SetNumberOfCollisions(1626.); //Centrality class Cent1 for PDC04
1160 gener->SetNumberOfParticipants(359.4);//Centrality class Cent1 for PDC04
1161 gGener=gener;
1162 }
1163 break;
1164 case kMuonCocktailPer1:
1165 {
7684b53c 1166 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1167 gener->SetPtRange(1.0,100.); // Transverse momentum range
1168 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1169 gener->SetYRange(-4.0,-2.4);
1170 gener->SetMuonPtCut(0.8);
1171 gener->SetMuonThetaCut(171.,178.);
1172 gener->SetMuonMultiplicity(2);
1173 gener->SetNumberOfCollisions(820.0);//Centrality class Per1 for PDC04
1174 gener->SetNumberOfParticipants(229.3);//Centrality class Per1 for PDC04
1175 gGener=gener;
1176 }
1177 break;
1178 case kMuonCocktailPer4:
1179 {
7684b53c 1180 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1181 gener->SetPtRange(1.0,100.); // Transverse momentum range
1182 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1183 gener->SetYRange(-4.0,-2.4);
1184 gener->SetMuonPtCut(0.8);
1185 gener->SetMuonThetaCut(171.,178.);
1186 gener->SetMuonMultiplicity(2);
1187 gener->SetNumberOfCollisions(13.6);//Centrality class Per4 for PDC04
1188 gener->SetNumberOfParticipants(13.3);//Centrality class Per4 for PDC04
1189 gGener=gener;
1190 }
1191 break;
1192 case kMuonCocktailCent1HighPt:
1193 {
7684b53c 1194 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1195 gener->SetPtRange(1.0,100.); // Transverse momentum range
1196 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1197 gener->SetYRange(-4.0,-2.4);
1198 gener->SetMuonPtCut(2.5);
1199 gener->SetMuonThetaCut(171.,178.);
1200 gener->SetMuonMultiplicity(2);
1201 gener->SetNumberOfCollisions(1626.); //Centrality class Cent1 for PDC04
1202 gener->SetNumberOfParticipants(359.4);//Centrality class Cent1 for PDC04
1203 gGener=gener;
1204 }
1205 break;
1206 case kMuonCocktailPer1HighPt :
1207 {
7684b53c 1208 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1209 gener->SetPtRange(1.0,100.); // Transverse momentum range
1210 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1211 gener->SetYRange(-4.0,-2.4);
1212 gener->SetMuonPtCut(2.5);
1213 gener->SetMuonThetaCut(171.,178.);
1214 gener->SetMuonMultiplicity(2);
1215 gener->SetNumberOfCollisions(820.0);//Centrality class Per1 for PDC04
1216 gener->SetNumberOfParticipants(229.3);//Centrality class Per1 for PDC04
1217 gGener=gener;
1218 }
1219 break;
1220 case kMuonCocktailPer4HighPt:
1221 {
7684b53c 1222 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1223 gener->SetPtRange(1.0,100.); // Transverse momentum range
1224 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1225 gener->SetYRange(-4.0,-2.4);
1226 gener->SetMuonPtCut(2.5);
1227 gener->SetMuonThetaCut(171.,178.);
1228 gener->SetMuonMultiplicity(2);
1229 gener->SetNumberOfCollisions(13.6);//Centrality class Per4 for PDC04
1230 gener->SetNumberOfParticipants(13.3);//Centrality class Per4 for PDC04
1231 gGener=gener;
1232 }
1233 break;
1234 case kMuonCocktailCent1Single:
1235 {
7684b53c 1236 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1237 gener->SetPtRange(1.0,100.); // Transverse momentum range
1238 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1239 gener->SetYRange(-4.0,-2.4);
1240 gener->SetMuonPtCut(0.8);
1241 gener->SetMuonThetaCut(171.,178.);
1242 gener->SetMuonMultiplicity(1);
1243 gener->SetNumberOfCollisions(1626.); //Centrality class Cent1 for PDC04
1244 gener->SetNumberOfParticipants(359.4);//Centrality class Cent1 for PDC04
1245 gGener=gener;
1246 }
1247 break;
1248 case kMuonCocktailPer1Single :
1249 {
7684b53c 1250 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1251 gener->SetPtRange(1.0,100.); // Transverse momentum range
1252 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1253 gener->SetYRange(-4.0,-2.4);
1254 gener->SetMuonPtCut(0.8);
1255 gener->SetMuonThetaCut(171.,178.);
1256 gener->SetMuonMultiplicity(1);
1257 gener->SetNumberOfCollisions(820.0);//Centrality class Per1 for PDC04
1258 gener->SetNumberOfParticipants(229.3);//Centrality class Per1 for PDC04
1259 gGener=gener;
1260 }
1261 break;
1262 case kMuonCocktailPer4Single:
1263 {
7684b53c 1264 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1265 gener->SetPtRange(1.0,100.); // Transverse momentum range
1266 gener->SetPhiRange(0.,360.); // Azimuthal angle range
1267 gener->SetYRange(-4.0,-2.4);
1268 gener->SetMuonPtCut(0.8);
1269 gener->SetMuonThetaCut(171.,178.);
1270 gener->SetMuonMultiplicity(1);
1271 gener->SetNumberOfCollisions(13.6);//Centrality class Per4 for PDC04
1272 gener->SetNumberOfParticipants(13.3);//Centrality class Per4 for PDC04
1273 gGener=gener;
1274 }
1275 break;
8f6ee336 1276 case kFMD1Flat:
088f8e79 1277 {
8f6ee336 1278 AliGenBox* gener = new AliGenBox(2000);
9bb2665f 1279 gener->SetPart(kPiPlus);
088f8e79 1280 gener->SetMomentumRange(3,4);
1281 gener->SetPhiRange(0, 360);
1282 gener->SetThetaRange(0.77, 3.08);
1283 gGener = gener;
1284 }
1285 break;
8f6ee336 1286 case kFMD2Flat:
088f8e79 1287 {
efad1157 1288 AliGenBox* gener = new AliGenBox(100);
9bb2665f 1289 gener->SetPart(kPiPlus);
088f8e79 1290 gener->SetMomentumRange(3,4);
1291 gener->SetPhiRange(0, 360);
1292 gener->SetThetaRange(2.95, 20.42);
1293 gGener = gener;
1294 }
1295 break;
8f6ee336 1296 case kFMD3Flat:
088f8e79 1297 {
8f6ee336 1298 AliGenBox* gener = new AliGenBox(2000);
9bb2665f 1299 gener->SetPart(kPiPlus);
088f8e79 1300 gener->SetMomentumRange(3,4);
1301 gener->SetPhiRange(0, 360);
1302 gener->SetThetaRange(155.97, 176.73);
1303 gGener = gener;
1304 }
1305 break;
8f6ee336 1306 case kFMDFlat:
1307 {
6169f936 1308 AliGenCocktail* gener = new AliGenCocktail();
8f6ee336 1309 gener->SetMomentumRange(3,4);
1310 gener->SetPhiRange(0, 360);
1311 AliGenBox* gener3 = new AliGenBox(2000);
1312 gener3->SetThetaRange(155.97, 176.73);
9bb2665f 1313 gener3->SetPart(kPiPlus);
8f6ee336 1314 gener->AddGenerator(gener3, "FMD3", .33);
1315 AliGenBox* gener2 = new AliGenBox(2000);
1316 gener2->SetThetaRange(2.95, 20.42);
9bb2665f 1317 gener2->SetPart(kPiPlus);
8f6ee336 1318 gener->AddGenerator(gener2, "FMD2", .33);
1319 AliGenBox* gener1 = new AliGenBox(2000);
1320 gener1->SetThetaRange(0.77, 3.08);
9bb2665f 1321 gener1->SetPart(kPiPlus);
8f6ee336 1322 gener->AddGenerator(gener1, "FMD1", .34);
1323 gGener = gener;
1324 }
1325 break;
088f8e79 1326
7684b53c 1327 default: break;
1328 }
1329 return gGener;
1330}
1331
1332//____________________________________________________________________
1333AliGenHijing*
1334HijingStandard()
1335{
1336 AliGenHijing *gener = new AliGenHijing(-1);
1337 // centre of mass energy
1338 gener->SetEnergyCMS(5500.);
1339 // reference frame
1340 gener->SetReferenceFrame("CMS");
1341 // projectile
1342 gener->SetProjectile("A", 208, 82);
1343 gener->SetTarget ("A", 208, 82);
1344 // tell hijing to keep the full parent child chain
1345 gener->KeepFullEvent();
1346 // enable jet quenching
1347 gener->SetJetQuenching(1);
1348 // enable shadowing
1349 gener->SetShadowing(1);
1350 // neutral pion and heavy particle decays switched off
1351 gener->SetDecaysOff(1);
1352 // Don't track spectators
1353 gener->SetSpectators(0);
1354 // kinematic selection
1355 gener->SetSelectAll(0);
1356 return gener;
1357}
1358
1359
1360//____________________________________________________________________
1361void
1362ProcessEnvironmentVars(EG_t& eg, Int_t& seed)
1363{
1364 // Run type
1365 if (gSystem->Getenv("CONFIG_RUN_TYPE")) {
1366 Int_t eg1 = LookupEG(gSystem->Getenv("CONFIG_RUN_TYPE"));
1367 if (eg1 >= 0) eg = EG_t(eg1);
1368 }
1369 // Random Number seed
1370 if (gSystem->Getenv("CONFIG_SEED")) {
1371 seed = atoi(gSystem->Getenv("CONFIG_SEED"));
1372 }
4347b38f 1373}
0d0e6995 1374
7684b53c 1375//____________________________________________________________________
1376//
1377// EOF
1378//