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