In vmctest:
[u/mrichter/AliRoot.git] / test / vmctest / ppbench / genPPbenchConfig.C
1 /// $Id$
2 //
3 // Event generator configuration for ppbench test
4 //
5 // Extracted from G3 specific Config.C in test/ppbench.
6 // by I. Hrivnacova, IPN Orsay
7
8 enum PprRun_t 
9 {
10     test50,
11     kParam_8000,   kParam_4000,  kParam_2000, 
12     kHijing_cent1, kHijing_cent2, 
13     kHijing_per1,  kHijing_per2, kHijing_per3, kHijing_per4,  kHijing_per5,
14     kHijing_jj25,  kHijing_jj50, kHijing_jj75, kHijing_jj100, kHijing_jj200, 
15     kHijing_gj25,  kHijing_gj50, kHijing_gj75, kHijing_gj100, kHijing_gj200,
16     kHijing_pA, kPythia6, 
17     kPythia6Jets20_24,   kPythia6Jets24_29,   kPythia6Jets29_35,
18     kPythia6Jets35_42,   kPythia6Jets42_50,   kPythia6Jets50_60,
19     kPythia6Jets60_72,   kPythia6Jets72_86,   kPythia6Jets86_104,
20     kPythia6Jets104_125, kPythia6Jets125_150, kPythia6Jets150_180,
21     kD0PbPb5500, kCharmSemiElPbPb5500, kBeautySemiElPbPb5500,
22     kCocktailTRD, kPyJJ, kPyGJ, 
23     kMuonCocktailCent1, kMuonCocktailPer1, kMuonCocktailPer4, 
24     kMuonCocktailCent1HighPt, kMuonCocktailPer1HighPt, kMuonCocktailPer4HighPt,
25     kMuonCocktailCent1Single, kMuonCocktailPer1Single, kMuonCocktailPer4Single,
26     kFlow_2_2000, kFlow_10_2000, kFlow_6_2000, kFlow_6_5000,
27     kHIJINGplus, kRunMax
28 };
29
30 const char* pprRunName[] = {
31     "test50",
32     "kParam_8000",   "kParam_4000",  "kParam_2000", 
33     "kHijing_cent1", "kHijing_cent2", 
34     "kHijing_per1",  "kHijing_per2", "kHijing_per3", "kHijing_per4",  
35     "kHijing_per5",
36     "kHijing_jj25",  "kHijing_jj50", "kHijing_jj75", "kHijing_jj100", 
37     "kHijing_jj200", 
38     "kHijing_gj25",  "kHijing_gj50", "kHijing_gj75", "kHijing_gj100", 
39     "kHijing_gj200", "kHijing_pA", "kPythia6", 
40     "kPythia6Jets20_24",   "kPythia6Jets24_29",   "kPythia6Jets29_35",
41     "kPythia6Jets35_42",   "kPythia6Jets42_50",   "kPythia6Jets50_60",
42     "kPythia6Jets60_72",   "kPythia6Jets72_86",   "kPythia6Jets86_104",
43     "kPythia6Jets104_125", "kPythia6Jets125_150", "kPythia6Jets150_180",
44     "kD0PbPb5500", "kCharmSemiElPbPb5500", "kBeautySemiElPbPb5500",
45     "kCocktailTRD", "kPyJJ", "kPyGJ", 
46     "kMuonCocktailCent1", "kMuonCocktailPer1", "kMuonCocktailPer4",  
47     "kMuonCocktailCent1HighPt", "kMuonCocktailPer1HighPt", "kMuonCocktailPer4HighPt",
48     "kMuonCocktailCent1Single", "kMuonCocktailPer1Single", "kMuonCocktailPer4Single",
49     "kFlow_2_2000", "kFlow_10_2000", "kFlow_6_2000", "kFlow_6_5000", "kHIJINGplus"
50 };
51
52 enum PprRad_t
53 {
54     kGluonRadiation, kNoGluonRadiation
55 };
56
57 enum PprTrigConf_t
58 {
59     kDefaultPPTrig, kDefaultPbPbTrig
60 };
61
62 const char * pprTrigConfName[] = {
63     "p-p","Pb-Pb"
64 };
65
66 // This part for configuration    
67
68 static PprRun_t srun = kPythia6;
69 static PprRad_t srad = kGluonRadiation;
70
71 // Comment line 
72 static TString  comment;
73
74 // Functions
75 Float_t EtaToTheta(Float_t arg);
76 AliGenerator* GeneratorFactory(PprRun_t srun);
77 AliGenHijing* HijingStandard();
78 AliGenGeVSim* GeVSimStandard(Float_t, Float_t);
79
80 // Generator 
81 AliGenerator* genPPbenchConfig()
82 {
83   cout << "Running genPPbenchConfig.C ... " << endl;
84
85   AliGenerator* gener = GeneratorFactory(srun);
86   gener->SetOrigin(0, 0, 0);    // vertex position
87   gener->SetSigma(0, 0, 5.3);   // Sigma in (X,Y,Z) (cm) on IP position
88   gener->SetCutVertexZ(1.);     // Truncate at 1 sigma
89   gener->SetVertexSmear(kPerEvent); 
90   gener->SetTrackingFlag(1);
91   gener->Init();
92   
93   if (srad == kGluonRadiation)
94   {
95       comment = comment.Append(" | Gluon Radiation On");
96
97   } else {
98       comment = comment.Append(" | Gluon Radiation Off");
99   }
100
101   printf("\n \n Comment: %s \n \n", comment.Data());
102
103   return gener;
104   
105   cout << "Running genGunConfig.C finished ... " << endl;
106 }
107
108
109 // Functions implementation
110
111 Float_t EtaToTheta(Float_t arg){
112   return (180./TMath::Pi())*2.*atan(exp(-arg));
113 }
114
115
116
117 AliGenerator* GeneratorFactory(PprRun_t srun) {
118     Int_t isw = 3;
119     if (srad == kNoGluonRadiation) isw = 0;
120     
121
122     AliGenerator * gGener = 0x0;
123     switch (srun) {
124     case test50:
125       {
126         comment = comment.Append(":HIJINGparam test 50 particles");
127         AliGenHIJINGpara *gener = new AliGenHIJINGpara(50);
128         gener->SetMomentumRange(0, 999999.);
129         gener->SetPhiRange(0., 360.);
130         // Set pseudorapidity range from -8 to 8.
131         Float_t thmin = EtaToTheta(8);   // theta min. <---> eta max
132         Float_t thmax = EtaToTheta(-8);  // theta max. <---> eta min 
133         gener->SetThetaRange(thmin,thmax);
134         gGener=gener;
135       }
136       break;
137     case kParam_8000:
138       {
139         comment = comment.Append(":HIJINGparam N=8000");
140         AliGenHIJINGpara *gener = new AliGenHIJINGpara(86030);
141         gener->SetMomentumRange(0, 999999.);
142         gener->SetPhiRange(0., 360.);
143         // Set pseudorapidity range from -8 to 8.
144         Float_t thmin = EtaToTheta(8);   // theta min. <---> eta max
145         Float_t thmax = EtaToTheta(-8);  // theta max. <---> eta min 
146         gener->SetThetaRange(thmin,thmax);
147         gGener=gener;
148       }
149       break;
150     case kParam_4000:
151       {
152         comment = comment.Append("HIJINGparam N=4000");
153         AliGenHIJINGpara *gener = new AliGenHIJINGpara(43015);
154         gener->SetMomentumRange(0, 999999.);
155         gener->SetPhiRange(0., 360.);
156         // Set pseudorapidity range from -8 to 8.
157         Float_t thmin = EtaToTheta(8);   // theta min. <---> eta max
158         Float_t thmax = EtaToTheta(-8);  // theta max. <---> eta min 
159         gener->SetThetaRange(thmin,thmax);
160         gGener=gener;
161       }
162         break;
163     case kParam_2000:
164       {
165         comment = comment.Append("HIJINGparam N=2000");
166         AliGenHIJINGpara *gener = new AliGenHIJINGpara(21507);
167         gener->SetMomentumRange(0, 999999.);
168         gener->SetPhiRange(0., 360.);
169         // Set pseudorapidity range from -8 to 8.
170         Float_t thmin = EtaToTheta(8);   // theta min. <---> eta max
171         Float_t thmax = EtaToTheta(-8);  // theta max. <---> eta min 
172         gener->SetThetaRange(thmin,thmax);
173         gGener=gener;
174       }
175       break;
176 //
177 //  Hijing Central
178 //
179     case kHijing_cent1:
180       {
181         comment = comment.Append("HIJING cent1");
182         AliGenHijing *gener = HijingStandard();
183 // impact parameter range
184         gener->SetImpactParameterRange(0., 5.);
185         gGener=gener;
186       }
187       break;
188     case kHijing_cent2:
189       {
190         comment = comment.Append("HIJING cent2");
191         AliGenHijing *gener = HijingStandard();
192 // impact parameter range
193         gener->SetImpactParameterRange(0., 2.);
194         gGener=gener;
195       }
196       break;
197 //
198 // Hijing Peripheral 
199 //
200     case kHijing_per1:
201       {
202         comment = comment.Append("HIJING per1");
203         AliGenHijing *gener = HijingStandard();
204 // impact parameter range
205         gener->SetImpactParameterRange(5., 8.6);
206         gGener=gener;
207       }
208       break;
209     case kHijing_per2:
210       {
211         comment = comment.Append("HIJING per2");
212         AliGenHijing *gener = HijingStandard();
213 // impact parameter range
214         gener->SetImpactParameterRange(8.6, 11.2);
215         gGener=gener;
216       }
217       break;
218     case kHijing_per3:
219       {
220         comment = comment.Append("HIJING per3");
221         AliGenHijing *gener = HijingStandard();
222 // impact parameter range
223         gener->SetImpactParameterRange(11.2, 13.2);
224         gGener=gener;
225       }
226       break;
227     case kHijing_per4:
228       {
229         comment = comment.Append("HIJING per4");
230         AliGenHijing *gener = HijingStandard();
231 // impact parameter range
232         gener->SetImpactParameterRange(13.2, 15.);
233         gGener=gener;
234       }
235       break;
236     case kHijing_per5:
237       {
238         comment = comment.Append("HIJING per5");
239         AliGenHijing *gener = HijingStandard();
240 // impact parameter range
241         gener->SetImpactParameterRange(15., 100.);
242         gGener=gener;
243       }
244       break;
245 //
246 //  Jet-Jet
247 //
248     case kHijing_jj25:
249       {
250         comment = comment.Append("HIJING Jet 25 GeV");
251         AliGenHijing *gener = HijingStandard();
252 // impact parameter range
253         gener->SetImpactParameterRange(0., 5.);
254         // trigger
255         gener->SetTrigger(1);
256         gener->SetPtJet(25.);
257         gener->SetRadiation(isw);
258         gener->SetSimpleJets(!isw);
259         gener->SetJetEtaRange(-0.3,0.3);
260         gener->SetJetPhiRange(75., 165.);   
261         gGener=gener;
262       }
263       break;
264
265     case kHijing_jj50:
266       {
267         comment = comment.Append("HIJING Jet 50 GeV");
268         AliGenHijing *gener = HijingStandard();
269 // impact parameter range
270         gener->SetImpactParameterRange(0., 5.);
271         // trigger
272         gener->SetTrigger(1);
273         gener->SetPtJet(50.);
274         gener->SetRadiation(isw);
275         gener->SetSimpleJets(!isw);
276         gener->SetJetEtaRange(-0.3,0.3);
277         gener->SetJetPhiRange(75., 165.);   
278         gGener=gener;
279       }
280         break;
281
282     case kHijing_jj75:
283       {
284         comment = comment.Append("HIJING Jet 75 GeV");
285         AliGenHijing *gener = HijingStandard();
286 // impact parameter range
287         gener->SetImpactParameterRange(0., 5.);
288         // trigger
289         gener->SetTrigger(1);
290         gener->SetPtJet(75.);
291         gener->SetRadiation(isw);
292         gener->SetSimpleJets(!isw);
293         gener->SetJetEtaRange(-0.3,0.3);
294         gener->SetJetPhiRange(75., 165.);   
295         gGener=gener;
296       }
297       break;
298
299     case kHijing_jj100:
300       {
301         comment = comment.Append("HIJING Jet 100 GeV");
302         AliGenHijing *gener = HijingStandard();
303 // impact parameter range
304         gener->SetImpactParameterRange(0., 5.);
305         // trigger
306         gener->SetTrigger(1);
307         gener->SetPtJet(100.);
308         gener->SetRadiation(isw);
309         gener->SetSimpleJets(!isw);
310         gener->SetJetEtaRange(-0.3,0.3);
311         gener->SetJetPhiRange(75., 165.);   
312         gGener=gener;
313       }
314       break;
315
316     case kHijing_jj200:
317       {
318         comment = comment.Append("HIJING Jet 200 GeV");
319         AliGenHijing *gener = HijingStandard();
320 // impact parameter range
321         gener->SetImpactParameterRange(0., 5.);
322         // trigger
323         gener->SetTrigger(1);
324         gener->SetPtJet(200.);
325         gener->SetRadiation(isw);
326         gener->SetSimpleJets(!isw);
327         gener->SetJetEtaRange(-0.3,0.3);
328         gener->SetJetPhiRange(75., 165.);   
329         gGener=gener;
330       }
331       break;
332 //
333 // Gamma-Jet
334 //
335     case kHijing_gj25:
336       {
337         comment = comment.Append("HIJING Gamma 25 GeV");
338         AliGenHijing *gener = HijingStandard();
339 // impact parameter range
340         gener->SetImpactParameterRange(0., 5.);
341         // trigger
342         gener->SetTrigger(2);
343         gener->SetPtJet(25.);
344         gener->SetRadiation(isw);
345         gener->SetSimpleJets(!isw);
346         gener->SetJetEtaRange(-0.12, 0.12);
347         gener->SetJetPhiRange(220., 320.);
348         gGener=gener;
349       }
350       break;
351
352     case kHijing_gj50:
353       {
354         comment = comment.Append("HIJING Gamma 50 GeV");
355         AliGenHijing *gener = HijingStandard();
356 // impact parameter range
357         gener->SetImpactParameterRange(0., 5.);
358         // trigger
359         gener->SetTrigger(2);
360         gener->SetPtJet(50.);
361         gener->SetRadiation(isw);
362         gener->SetSimpleJets(!isw);
363         gener->SetJetEtaRange(-0.12, 0.12);
364         gener->SetJetPhiRange(220., 320.);
365         gGener=gener;
366       }
367       break;
368
369     case kHijing_gj75:
370       {
371         comment = comment.Append("HIJING Gamma 75 GeV");
372         AliGenHijing *gener = HijingStandard();
373 // impact parameter range
374         gener->SetImpactParameterRange(0., 5.);
375         // trigger
376         gener->SetTrigger(2);
377         gener->SetPtJet(75.);
378         gener->SetRadiation(isw);
379         gener->SetSimpleJets(!isw);
380         gener->SetJetEtaRange(-0.12, 0.12);
381         gener->SetJetPhiRange(220., 320.);
382         gGener=gener;
383       }
384       break;
385
386     case kHijing_gj100:
387       {
388         comment = comment.Append("HIJING Gamma 100 GeV");
389         AliGenHijing *gener = HijingStandard();
390 // impact parameter range
391         gener->SetImpactParameterRange(0., 5.);
392         // trigger
393         gener->SetTrigger(2);
394         gener->SetPtJet(100.);
395         gener->SetRadiation(isw);
396         gener->SetSimpleJets(!isw);
397         gener->SetJetEtaRange(-0.12, 0.12);
398         gener->SetJetPhiRange(220., 320.);
399         gGener=gener;
400       }
401       break;
402
403     case kHijing_gj200:
404       {
405         comment = comment.Append("HIJING Gamma 200 GeV");
406         AliGenHijing *gener = HijingStandard();
407 // impact parameter range
408         gener->SetImpactParameterRange(0., 5.);
409         // trigger
410         gener->SetTrigger(2);
411         gener->SetPtJet(200.);
412         gener->SetRadiation(isw);
413         gener->SetSimpleJets(!isw);
414         gener->SetJetEtaRange(-0.12, 0.12);
415         gener->SetJetPhiRange(220., 320.);
416         gGener=gener;
417       }
418       break;
419     case kHijing_pA:
420       {
421         comment = comment.Append("HIJING pA");
422
423         AliGenCocktail *gener  = new AliGenCocktail();
424
425         AliGenHijing   *hijing = new AliGenHijing(-1);
426 // centre of mass energy 
427         hijing->SetEnergyCMS(TMath::Sqrt(82./208.) * 14000.);
428 // impact parameter range
429         hijing->SetImpactParameterRange(0., 15.);
430 // reference frame
431         hijing->SetReferenceFrame("CMS");
432         hijing->SetBoostLHC(1);
433 // projectile
434         hijing->SetProjectile("P", 1, 1);
435         hijing->SetTarget    ("A", 208, 82);
436 // tell hijing to keep the full parent child chain
437         hijing->KeepFullEvent();
438 // enable jet quenching
439         hijing->SetJetQuenching(0);
440 // enable shadowing
441         hijing->SetShadowing(1);
442 // Don't track spectators
443         hijing->SetSpectators(0);
444 // kinematic selection
445         hijing->SetSelectAll(0);
446 //
447         AliGenSlowNucleons*  gray    = new AliGenSlowNucleons(1);
448         AliSlowNucleonModel* model   = new AliSlowNucleonModelExp();
449         gray->SetSlowNucleonModel(model);
450         gray->SetDebug(1);
451         gener->AddGenerator(hijing,"Hijing pPb", 1);
452         gener->AddGenerator(gray,  "Gray Particles",1);
453         gGener=gener;
454       }
455       break;
456       case kPythia6:
457       {
458         comment = comment.Append(":Pythia p-p @ 14 TeV");
459         AliGenPythia *gener = new AliGenPythia(-1); 
460         gener->SetMomentumRange(0,999999);
461         gener->SetThetaRange(0., 180.);
462         gener->SetYRange(-12,12);
463         gener->SetPtRange(0,1000);
464         gener->SetProcess(kPyMb);
465         gener->SetEnergyCMS(14000.);
466         gener->SetProjectile("p", 1, 1) ; 
467         gener->SetTarget("p", 1, 1) ; 
468         gGener=gener;
469       }
470         break;
471       case kPythia6Jets20_24:
472       {
473         comment = comment.Append(":Pythia jets 20-24 GeV @ 5.5 TeV");
474         AliGenPythia * gener = new AliGenPythia(-1);
475         gener->SetEnergyCMS(5500.);//        Centre of mass energy
476         gener->SetProcess(kPyJets);//        Process type
477         gener->SetJetEtaRange(-0.5, 0.5);//  Final state kinematic cuts
478         gener->SetJetPhiRange(0., 360.);
479         gener->SetJetEtRange(10., 1000.);
480         gener->SetGluonRadiation(1,1);
481         //    gener->SetPtKick(0.);
482         //   Structure function
483         gener->SetStrucFunc(kCTEQ4L);
484         gener->SetPtHard(20., 24.);// Pt transfer of the hard scattering
485         gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
486         gener->SetForceDecay(kAll);//  Decay type (semielectronic, etc.)
487         gener->SetProjectile("p", 1, 1) ; 
488         gener->SetTarget("p", 1, 1) ; 
489         gGener=gener;
490       }
491         break;
492       case kPythia6Jets24_29:
493       {
494         comment = comment.Append(":Pythia jets 24-29 GeV @ 5.5 TeV");
495         AliGenPythia * gener = new AliGenPythia(-1);
496         gener->SetEnergyCMS(5500.);//        Centre of mass energy
497         gener->SetProcess(kPyJets);//        Process type
498         gener->SetJetEtaRange(-0.5, 0.5);//  Final state kinematic cuts
499         gener->SetJetPhiRange(0., 360.);
500         gener->SetJetEtRange(10., 1000.);
501         gener->SetGluonRadiation(1,1);
502         //    gener->SetPtKick(0.);
503         //   Structure function
504         gener->SetStrucFunc(kCTEQ4L);
505         gener->SetPtHard(24., 29.);// Pt transfer of the hard scattering
506         gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
507         gener->SetForceDecay(kAll);//  Decay type (semielectronic, etc.)
508         gener->SetProjectile("p", 1, 1) ; 
509         gener->SetTarget("p", 1, 1) ; 
510         gGener=gener;
511       }
512         break;
513       case kPythia6Jets29_35:
514       {
515         comment = comment.Append(":Pythia jets 29-35 GeV @ 5.5 TeV");
516         AliGenPythia * gener = new AliGenPythia(-1);
517         gener->SetEnergyCMS(5500.);//        Centre of mass energy
518         gener->SetProcess(kPyJets);//        Process type
519         gener->SetJetEtaRange(-0.5, 0.5);//  Final state kinematic cuts
520         gener->SetJetPhiRange(0., 360.);
521         gener->SetJetEtRange(10., 1000.);
522         gener->SetGluonRadiation(1,1);
523         //    gener->SetPtKick(0.);
524         //   Structure function
525         gener->SetStrucFunc(kCTEQ4L);
526         gener->SetPtHard(29., 35.);// Pt transfer of the hard scattering
527         gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
528         gener->SetForceDecay(kAll);//  Decay type (semielectronic, etc.)
529         gener->SetProjectile("p", 1, 1) ; 
530         gener->SetTarget("p", 1, 1) ; 
531         gGener=gener;
532       }
533         break;
534       case kPythia6Jets35_42:
535       {
536         comment = comment.Append(":Pythia jets 35-42 GeV @ 5.5 TeV");
537         AliGenPythia * gener = new AliGenPythia(-1);
538         gener->SetEnergyCMS(5500.);//        Centre of mass energy
539         gener->SetProcess(kPyJets);//        Process type
540         gener->SetJetEtaRange(-0.5, 0.5);//  Final state kinematic cuts
541         gener->SetJetPhiRange(0., 360.);
542         gener->SetJetEtRange(10., 1000.);
543         gener->SetGluonRadiation(1,1);
544         //    gener->SetPtKick(0.);
545         //   Structure function
546         gener->SetStrucFunc(kCTEQ4L);
547         gener->SetPtHard(35., 42.);// Pt transfer of the hard scattering
548         gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
549         gener->SetForceDecay(kAll);//  Decay type (semielectronic, etc.)
550         gener->SetProjectile("p", 1, 1) ; 
551         gener->SetTarget("p", 1, 1) ; 
552         gGener=gener;
553       }
554         break;
555       case kPythia6Jets42_50:
556       {
557         comment = comment.Append(":Pythia jets 42-50 GeV @ 5.5 TeV");
558         AliGenPythia * gener = new AliGenPythia(-1);
559         gener->SetEnergyCMS(5500.);//        Centre of mass energy
560         gener->SetProcess(kPyJets);//        Process type
561         gener->SetJetEtaRange(-0.5, 0.5);//  Final state kinematic cuts
562         gener->SetJetPhiRange(0., 360.);
563         gener->SetJetEtRange(10., 1000.);
564         gener->SetGluonRadiation(1,1);
565         //    gener->SetPtKick(0.);
566         //   Structure function
567         gener->SetStrucFunc(kCTEQ4L);
568         gener->SetPtHard(42., 50.);// Pt transfer of the hard scattering
569         gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
570         gener->SetForceDecay(kAll);//  Decay type (semielectronic, etc.)
571         gener->SetProjectile("p", 1, 1) ; 
572         gener->SetTarget("p", 1, 1) ; 
573         gGener=gener;
574       }
575       break;
576       case kPythia6Jets50_60:
577       {
578         comment = comment.Append(":Pythia jets 50-60 GeV @ 5.5 TeV");
579         AliGenPythia * gener = new AliGenPythia(-1);
580         gener->SetEnergyCMS(5500.);//        Centre of mass energy
581         gener->SetProcess(kPyJets);//        Process type
582         gener->SetJetEtaRange(-0.5, 0.5);//  Final state kinematic cuts
583         gener->SetJetPhiRange(0., 360.);
584         gener->SetJetEtRange(10., 1000.);
585         gener->SetGluonRadiation(1,1);
586         //    gener->SetPtKick(0.);
587         //   Structure function
588         gener->SetStrucFunc(kCTEQ4L);
589         gener->SetPtHard(50., 60.);// Pt transfer of the hard scattering
590         gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
591         gener->SetForceDecay(kAll);//  Decay type (semielectronic, etc.)
592         gGener=gener;
593       }
594         break;
595       case kPythia6Jets60_72:
596       {
597         comment = comment.Append(":Pythia jets 60-72 GeV @ 5.5 TeV");
598         AliGenPythia * gener = new AliGenPythia(-1);
599         gener->SetEnergyCMS(5500.);//        Centre of mass energy
600         gener->SetProcess(kPyJets);//        Process type
601         gener->SetJetEtaRange(-0.5, 0.5);//  Final state kinematic cuts
602         gener->SetJetPhiRange(0., 360.);
603         gener->SetJetEtRange(10., 1000.);
604         gener->SetGluonRadiation(1,1);
605         //    gener->SetPtKick(0.);
606         //   Structure function
607         gener->SetStrucFunc(kCTEQ4L);
608         gener->SetPtHard(60., 72.);// Pt transfer of the hard scattering
609         gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
610         gener->SetForceDecay(kAll);//  Decay type (semielectronic, etc.)
611         gener->SetProjectile("p", 1, 1) ; 
612         gener->SetTarget("p", 1, 1) ; 
613         gGener=gener;
614       }
615         break;
616       case kPythia6Jets72_86:
617       {
618         comment = comment.Append(":Pythia jets 72-86 GeV @ 5.5 TeV");
619         AliGenPythia * gener = new AliGenPythia(-1);
620         gener->SetEnergyCMS(5500.);//        Centre of mass energy
621         gener->SetProcess(kPyJets);//        Process type
622         gener->SetJetEtaRange(-0.5, 0.5);//  Final state kinematic cuts
623         gener->SetJetPhiRange(0., 360.);
624         gener->SetJetEtRange(10., 1000.);
625         gener->SetGluonRadiation(1,1);
626         //    gener->SetPtKick(0.);
627         //   Structure function
628         gener->SetStrucFunc(kCTEQ4L);
629         gener->SetPtHard(72., 86.);// Pt transfer of the hard scattering
630         gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
631         gener->SetForceDecay(kAll);//  Decay type (semielectronic, etc.)
632         gener->SetProjectile("p", 1, 1) ; 
633         gener->SetTarget("p", 1, 1) ; 
634         gGener=gener;
635       }
636       break;
637       case kPythia6Jets86_104:
638       {
639         comment = comment.Append(":Pythia jets 86-104 GeV @ 5.5 TeV");
640         AliGenPythia * gener = new AliGenPythia(-1);
641         gener->SetEnergyCMS(5500.);//        Centre of mass energy
642         gener->SetProcess(kPyJets);//        Process type
643         gener->SetJetEtaRange(-0.5, 0.5);//  Final state kinematic cuts
644         gener->SetJetPhiRange(0., 360.);
645         gener->SetJetEtRange(10., 1000.);
646         gener->SetGluonRadiation(1,1);
647         //    gener->SetPtKick(0.);
648         //   Structure function
649         gener->SetStrucFunc(kCTEQ4L);
650         gener->SetPtHard(86., 104.);// Pt transfer of the hard scattering
651         gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
652         gener->SetForceDecay(kAll);//  Decay type (semielectronic, etc.)
653         gener->SetProjectile("p", 1, 1) ; 
654         gener->SetTarget("p", 1, 1) ; 
655         gGener=gener;
656       }
657       break;
658     case kPythia6Jets104_125:
659       {
660         comment = comment.Append(":Pythia jets 105-125 GeV @ 5.5 TeV");
661         AliGenPythia * gener = new AliGenPythia(-1);
662         gener->SetEnergyCMS(5500.);//        Centre of mass energy
663         gener->SetProcess(kPyJets);//        Process type
664         gener->SetJetEtaRange(-0.5, 0.5);//  Final state kinematic cuts
665         gener->SetJetPhiRange(0., 360.);
666         gener->SetJetEtRange(10., 1000.);
667         gener->SetGluonRadiation(1,1);
668         //    gener->SetPtKick(0.);
669         //   Structure function
670         gener->SetStrucFunc(kCTEQ4L);
671         gener->SetPtHard(104., 125.);// Pt transfer of the hard scattering
672         gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
673         gener->SetForceDecay(kAll);//  Decay type (semielectronic, etc.)
674         gener->SetProjectile("p", 1, 1) ; 
675         gener->SetTarget("p", 1, 1) ; 
676         gGener=gener;
677       }
678         break;
679       case kPythia6Jets125_150:
680       {
681         comment = comment.Append(":Pythia jets 125-150 GeV @ 5.5 TeV");
682         AliGenPythia * gener = new AliGenPythia(-1);
683         gener->SetEnergyCMS(5500.);//        Centre of mass energy
684         gener->SetProcess(kPyJets);//        Process type
685         gener->SetJetEtaRange(-0.5, 0.5);//  Final state kinematic cuts
686         gener->SetJetPhiRange(0., 360.);
687         gener->SetJetEtRange(10., 1000.);
688         gener->SetGluonRadiation(1,1);
689         //    gener->SetPtKick(0.);
690         //   Structure function
691         gener->SetStrucFunc(kCTEQ4L);
692         gener->SetPtHard(125., 150.);// Pt transfer of the hard scattering
693         gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
694         gener->SetForceDecay(kAll);//  Decay type (semielectronic, etc.)
695         gGener=gener;
696       }
697         break;
698       case kPythia6Jets150_180:
699       {
700         comment = comment.Append(":Pythia jets 150-180 GeV @ 5.5 TeV");
701         AliGenPythia * gener = new AliGenPythia(-1);
702         gener->SetEnergyCMS(5500.);//        Centre of mass energy
703         gener->SetProcess(kPyJets);//        Process type
704         gener->SetJetEtaRange(-0.5, 0.5);//  Final state kinematic cuts
705         gener->SetJetPhiRange(0., 360.);
706         gener->SetJetEtRange(10., 1000.);
707         gener->SetGluonRadiation(1,1);
708         //    gener->SetPtKick(0.);
709         //   Structure function
710         gener->SetStrucFunc(kCTEQ4L);
711         gener->SetPtHard(150., 180.);// Pt transfer of the hard scattering
712         gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
713         gener->SetForceDecay(kAll);//  Decay type (semielectronic, etc.)
714         gener->SetProjectile("p", 1, 1) ; 
715         gener->SetTarget("p", 1, 1) ; 
716         gGener=gener;
717       }
718       break;
719       case kD0PbPb5500:
720       {
721         comment = comment.Append(" D0 in Pb-Pb at 5.5 TeV");
722         AliGenPythia * gener = new AliGenPythia(10);
723         gener->SetProcess(kPyD0PbPbMNR);
724         gener->SetStrucFunc(kCTEQ4L);
725         gener->SetPtHard(2.1,-1.0);
726         gener->SetEnergyCMS(5500.);
727         gener->SetNuclei(208,208);
728         gener->SetForceDecay(kHadronicD);
729         gener->SetYRange(-2,2);
730         gener->SetFeedDownHigherFamily(kFALSE);
731         gener->SetStackFillOpt(AliGenPythia::kParentSelection);
732         gener->SetCountMode(AliGenPythia::kCountParents);
733         gener->SetProjectile("A", 208, 82) ; 
734         gener->SetTarget("A", 208, 82) ; 
735         gGener=gener;
736       }
737       break;
738     case kCharmSemiElPbPb5500:
739       {
740         comment = comment.Append(" Charm in Pb-Pb at 5.5 TeV");
741         AliGenPythia * gener = new AliGenPythia(10);
742         gener->SetProcess(kPyCharmPbPbMNR);
743         gener->SetStrucFunc(kCTEQ4L);
744         gener->SetPtHard(2.1,-1.0);
745         gener->SetEnergyCMS(5500.);
746         gener->SetNuclei(208,208);
747         gener->SetForceDecay(kSemiElectronic);
748         gener->SetYRange(-2,2);
749         gener->SetFeedDownHigherFamily(kFALSE);
750         gener->SetCountMode(AliGenPythia::kCountParents);
751         gener->SetProjectile("A", 208, 82) ; 
752         gener->SetTarget("A", 208, 82) ; 
753         gGener=gener;
754       }
755       break;
756       case kBeautySemiElPbPb5500:
757       {
758         comment = comment.Append(" Beauty in Pb-Pb at 5.5 TeV");
759         AliGenPythia *gener = new AliGenPythia(10);
760         gener->SetProcess(kPyBeautyPbPbMNR);
761         gener->SetStrucFunc(kCTEQ4L);
762         gener->SetPtHard(2.75,-1.0);
763         gener->SetEnergyCMS(5500.);
764         gener->SetNuclei(208,208);
765         gener->SetForceDecay(kSemiElectronic);
766         gener->SetYRange(-2,2);
767         gener->SetFeedDownHigherFamily(kFALSE);
768         gener->SetCountMode(AliGenPythia::kCountParents);
769         gener->SetProjectile("A", 208, 82) ; 
770         gener->SetTarget("A", 208, 82) ; 
771         gGener=gener;
772       }
773         break;
774       case kCocktailTRD:
775       {
776         comment = comment.Append(" Cocktail for TRD at 5.5 TeV");
777         AliGenCocktail *gener  = new AliGenCocktail();
778         
779         AliGenParam *phi = new AliGenParam(10,
780                                            new AliGenMUONlib(),
781                                            AliGenMUONlib::kPhi,
782                                            "Vogt PbPb");
783         
784         phi->SetPtRange(0, 100);
785         phi->SetYRange(-1., +1.);
786         phi->SetForceDecay(kDiElectron);
787         
788         AliGenParam *omega = new AliGenParam(10,
789                                              new AliGenMUONlib(),
790                                              AliGenMUONlib::kOmega,
791                                              "Vogt PbPb");
792         
793         omega->SetPtRange(0, 100);
794         omega->SetYRange(-1., +1.);
795         omega->SetForceDecay(kDiElectron);
796         
797         AliGenParam *jpsi = new AliGenParam(10,
798                                             new AliGenMUONlib(),
799                                             AliGenMUONlib::kJpsiFamily,
800                                             "Vogt PbPb");
801         
802         jpsi->SetPtRange(0, 100);
803         jpsi->SetYRange(-1., +1.);
804         jpsi->SetForceDecay(kDiElectron);
805         
806         AliGenParam *ups = new AliGenParam(10,
807                                            new AliGenMUONlib(),
808                                            AliGenMUONlib::kUpsilonFamily,
809                                            "Vogt PbPb");
810         ups->SetPtRange(0, 100);
811         ups->SetYRange(-1., +1.);
812         ups->SetForceDecay(kDiElectron);
813         
814         AliGenParam *charm = new AliGenParam(10,
815                                              new AliGenMUONlib(), 
816                                              AliGenMUONlib::kCharm,
817                                              "central");
818         charm->SetPtRange(0, 100);
819         charm->SetYRange(-1.5, +1.5);
820         charm->SetForceDecay(kSemiElectronic);
821         
822         
823         AliGenParam *beauty = new AliGenParam(10,
824                                               new AliGenMUONlib(), 
825                                               AliGenMUONlib::kBeauty,
826                                               "central");
827         beauty->SetPtRange(0, 100);
828         beauty->SetYRange(-1.5, +1.5);
829         beauty->SetForceDecay(kSemiElectronic);
830         
831         AliGenParam *beautyJ = new AliGenParam(10,
832                                                new AliGenMUONlib(), 
833                                                AliGenMUONlib::kBeauty,
834                                                "central");
835         beautyJ->SetPtRange(0, 100);
836         beautyJ->SetYRange(-1.5, +1.5);
837         beautyJ->SetForceDecay(kBJpsiDiElectron);
838         
839         gener->AddGenerator(phi,"Phi",1);
840         gener->AddGenerator(omega,"Omega",1);
841         gener->AddGenerator(jpsi,"J/psi",1);
842         gener->AddGenerator(ups,"Upsilon",1);
843         gener->AddGenerator(charm,"Charm",1);
844         gener->AddGenerator(beauty,"Beauty",1);
845         gener->AddGenerator(beautyJ,"J/Psi from Beauty",1);
846         gener->SetProjectile("A", 208, 82) ; 
847         gener->SetTarget("A", 208, 82) ; 
848         gGener=gener;
849       }
850       break;
851     case kPyJJ:
852       {
853         comment = comment.Append(" Jet-jet at 5.5 TeV");
854         AliGenPythia *gener = new AliGenPythia(-1);
855         gener->SetEnergyCMS(5500.);
856         gener->SetProcess(kPyJets);
857         Double_t ptHardMin=10.0, ptHardMax=-1.0;
858         gener->SetPtHard(ptHardMin,ptHardMax);
859         gener->SetYHard(-0.7,0.7);
860         gener->SetJetEtaRange(-0.2,0.2);
861         gener->SetEventListRange(0,1);
862         gener->SetProjectile("p", 1, 1) ; 
863         gener->SetTarget("p", 1, 1) ; 
864         gGener=gener;
865       }
866         break;
867       case kPyGJ:
868       {
869         comment = comment.Append(" Gamma-jet at 5.5 TeV");
870         AliGenPythia *gener = new AliGenPythia(-1);
871         gener->SetEnergyCMS(5500.);
872         gener->SetProcess(kPyDirectGamma);
873         Double_t ptHardMin=10.0, ptHardMax=-1.0;
874         gener->SetPtHard(ptHardMin,ptHardMax);
875         gener->SetYHard(-1.0,1.0);
876         gener->SetGammaEtaRange(-0.13,0.13);
877         gener->SetGammaPhiRange(210.,330.);
878         gener->SetEventListRange(0,1);
879         gener->SetProjectile("p", 1, 1) ; 
880         gener->SetTarget("p", 1, 1) ; 
881         gGener=gener;
882       }
883         break;
884       case kMuonCocktailCent1:
885       {
886         comment = comment.Append(" Muon Cocktail Cent1");
887         AliGenMUONCocktail * gener = new AliGenMUONCocktail();
888         gener->SetPtRange(0.4,100.);       // Transverse momentum range   
889         gener->SetPhiRange(0.,360.);    // Azimuthal angle range  
890         gener->SetYRange(-4.0,-2.4);
891         gener->SetMuonPtCut(0.8);
892         gener->SetMuonThetaCut(171.,178.);
893         gener->SetMuonMultiplicity(2);
894         gener->SetImpactParameterRange(0.,5.);  //Centrality class Cent1 for PDC04
895         gGener=gener;
896         gener->SetProjectile("A", 208, 82) ; 
897         gener->SetTarget("A", 208, 82) ; 
898       }
899         break;
900       case kMuonCocktailPer1:
901       {
902         comment = comment.Append(" Muon Cocktail Per1");
903         AliGenMUONCocktail * gener = new AliGenMUONCocktail();
904         gener->SetPtRange(0.0,100.);       // Transverse momentum range   
905         gener->SetPhiRange(0.,360.);    // Azimuthal angle range  
906         gener->SetYRange(-4.0,-2.4);
907         gener->SetMuonPtCut(0.8);
908         gener->SetMuonThetaCut(171.,178.);
909         gener->SetMuonMultiplicity(2);
910         gener->SetImpactParameterRange(5.,8.6);//Centrality class Per1 for PDC04
911         gener->SetProjectile("A", 208, 82) ; 
912         gener->SetTarget("A", 208, 82) ; 
913         gGener=gener;
914       }
915       break;
916     case kMuonCocktailPer4:
917       {
918         comment = comment.Append(" Muon Cocktail Per4");
919         AliGenMUONCocktail * gener = new AliGenMUONCocktail();
920         gener->SetPtRange(0.0,100.);       // Transverse momentum range   
921         gener->SetPhiRange(0.,360.);    // Azimuthal angle range  
922         gener->SetYRange(-4.0,-2.4);
923         gener->SetMuonPtCut(0.8);
924         gener->SetMuonThetaCut(171.,178.);
925         gener->SetMuonMultiplicity(2);
926         gener->SetImpactParameterRange(13.2,15.0);//Centrality class Per4 for PDC04
927         gener->SetProjectile("A", 208, 82) ; 
928         gener->SetTarget("A", 208, 82) ; 
929         gGener=gener;
930       }
931         break;
932       case kMuonCocktailCent1HighPt:
933       {
934         comment = comment.Append(" Muon Cocktail HighPt Cent1");
935         AliGenMUONCocktail * gener = new AliGenMUONCocktail();
936         gener->SetPtRange(0.0,100.);       // Transverse momentum range   
937         gener->SetPhiRange(0.,360.);    // Azimuthal angle range  
938         gener->SetYRange(-4.0,-2.4);
939         gener->SetMuonPtCut(2.5);
940         gener->SetMuonThetaCut(171.,178.);
941         gener->SetMuonMultiplicity(2);
942         gener->SetImpactParameterRange(0.,5.);  //Centrality class Cent1 for PDC04
943         gener->SetProjectile("A", 208, 82) ; 
944         gener->SetTarget("A", 208, 82) ; 
945        gGener=gener;
946       }
947         break;
948       case kMuonCocktailPer1HighPt :
949       {
950         comment = comment.Append(" Muon Cocktail HighPt Per1");
951         AliGenMUONCocktail * gener = new AliGenMUONCocktail();
952         gener->SetPtRange(0.0,100.);       // Transverse momentum range   
953         gener->SetPhiRange(0.,360.);    // Azimuthal angle range  
954         gener->SetYRange(-4.0,-2.4);
955         gener->SetMuonPtCut(2.5);
956         gener->SetMuonThetaCut(171.,178.);
957         gener->SetMuonMultiplicity(2);
958         gener->SetImpactParameterRange(5.,8.6);//Centrality class Per1 for PDC04
959         gener->SetProjectile("A", 208, 82) ; 
960         gener->SetTarget("A", 208, 82) ; 
961         gGener=gener;
962       }
963         break;
964       case kMuonCocktailPer4HighPt:
965       {
966         comment = comment.Append(" Muon Cocktail HighPt Per4");
967         AliGenMUONCocktail * gener = new AliGenMUONCocktail();
968         gener->SetPtRange(0.0,100.);       // Transverse momentum range   
969         gener->SetPhiRange(0.,360.);    // Azimuthal angle range  
970         gener->SetYRange(-4.0,-2.4);
971         gener->SetMuonPtCut(2.5);
972         gener->SetMuonThetaCut(171.,178.);
973         gener->SetMuonMultiplicity(2);
974         gener->SetImpactParameterRange(13.2,15.0);//Centrality class Per4 for PDC04
975         gener->SetProjectile("A", 208, 82) ; 
976         gener->SetTarget("A", 208, 82) ; 
977         gGener=gener;
978       }
979         break;
980       case kMuonCocktailCent1Single:
981       {
982         comment = comment.Append(" Muon Cocktail Single Cent1");
983         AliGenMUONCocktail * gener = new AliGenMUONCocktail();
984         gener->SetPtRange(0.0,100.);       // Transverse momentum range   
985         gener->SetPhiRange(0.,360.);    // Azimuthal angle range  
986         gener->SetYRange(-4.0,-2.4);
987         gener->SetMuonPtCut(0.8);
988         gener->SetMuonThetaCut(171.,178.);
989         gener->SetMuonMultiplicity(1);
990         gener->SetImpactParameterRange(0.,5.);  //Centrality class Cent1 for PDC04
991         gener->SetProjectile("A", 208, 82) ; 
992         gener->SetTarget("A", 208, 82) ; 
993         gGener=gener;
994       }
995         break;
996       case kMuonCocktailPer1Single :
997       {
998         comment = comment.Append(" Muon Cocktail Single Per1");
999         AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1000         gener->SetPtRange(0.0,100.);       // Transverse momentum range   
1001         gener->SetPhiRange(0.,360.);    // Azimuthal angle range  
1002         gener->SetYRange(-4.0,-2.4);
1003         gener->SetMuonPtCut(0.8);
1004         gener->SetMuonThetaCut(171.,178.);
1005         gener->SetMuonMultiplicity(1);
1006         gener->SetImpactParameterRange(5.,8.6);//Centrality class Per1 for PDC04
1007         gener->SetNumberOfParticipants(229.3);//Centrality class Per1 for PDC04
1008         gener->SetProjectile("A", 208, 82) ; 
1009         gener->SetTarget("A", 208, 82) ; 
1010         gGener=gener;
1011       }
1012         break;
1013       case kMuonCocktailPer4Single:
1014       {
1015         comment = comment.Append(" Muon Cocktail Single Per4");
1016         AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1017         gener->SetPtRange(0.0,100.);       // Transverse momentum range   
1018         gener->SetPhiRange(0.,360.);    // Azimuthal angle range  
1019         gener->SetYRange(-4.0,-2.4);
1020         gener->SetMuonPtCut(0.8);
1021         gener->SetMuonThetaCut(171.,178.);
1022         gener->SetMuonMultiplicity(1);
1023         gener->SetImpactParameterRange(13.2,15.0);//Centrality class Per4 for PDC04
1024         gener->SetProjectile("A", 208, 82) ; 
1025         gener->SetTarget("A", 208, 82) ; 
1026         gGener=gener;
1027       }
1028         break;
1029       case kFlow_2_2000:
1030       {
1031         comment = comment.Append(" Flow with dN/deta  = 2000, vn = 2%");
1032         gGener = GeVSimStandard(2000., 2.);
1033       }
1034         break;
1035         
1036       case kFlow_10_2000:
1037       {
1038         comment = comment.Append(" Flow with dN/deta  = 2000, vn = 10%");
1039         gGener = GeVSimStandard(2000., 10.);
1040       }
1041         break;
1042         
1043       case kFlow_6_2000:
1044       {
1045         comment = comment.Append(" Flow with dN/deta  = 2000, vn = 6%");
1046         gGener = GeVSimStandard(2000., 6.);
1047       }
1048         break;
1049         
1050       case kFlow_6_5000:
1051       {
1052         comment = comment.Append(" Flow with dN/deta  = 5000, vn = 6%");
1053         gGener = GeVSimStandard(5000., 6.);
1054       }
1055         break;
1056       case kHIJINGplus:
1057       {
1058         //
1059         // The cocktail
1060         AliGenCocktail *gener  = new AliGenCocktail();
1061         
1062         //
1063         // Charm production by Pythia
1064         AliGenPythia * genpyc = new AliGenPythia(230);
1065         genpyc->SetProcess(kPyCharmPbPbMNR);
1066         genpyc->SetStrucFunc(kCTEQ4L);
1067         genpyc->SetPtHard(2.1,-1.0);
1068         genpyc->SetEnergyCMS(5500.);
1069         genpyc->SetNuclei(208,208);
1070         genpyc->SetYRange(-999,999);
1071         genpyc->SetForceDecay(kAll);
1072         genpyc->SetFeedDownHigherFamily(kFALSE);
1073         genpyc->SetCountMode(AliGenPythia::kCountParents);
1074         //
1075         // Beauty production by Pythia
1076         AliGenPythia * genpyb = new AliGenPythia(9);
1077         genpyb->SetProcess(kPyBeautyPbPbMNR);
1078         genpyb->SetStrucFunc(kCTEQ4L);
1079         genpyb->SetPtHard(2.75,-1.0);
1080         genpyb->SetEnergyCMS(5500.);
1081         genpyb->SetNuclei(208,208);
1082         genpyb->SetYRange(-999,999);
1083         genpyb->SetForceDecay(kAll);
1084         genpyb->SetFeedDownHigherFamily(kFALSE);
1085         genpyb->SetCountMode(AliGenPythia::kCountParents);
1086         //
1087         // Hyperons
1088         //
1089         AliGenSTRANGElib *lib = new AliGenSTRANGElib();
1090         Int_t particle;
1091         // Xi
1092         particle = kXiMinus;
1093         AliGenParam *genXi = new AliGenParam(16,particle,lib->GetPt(particle),lib->GetY(particle),lib->GetIp(particle));
1094         genXi->SetPtRange(0., 12.);
1095         genXi->SetYRange(-1.1, 1.1);
1096         genXi->SetForceDecay(kNoDecay); 
1097         
1098         //
1099         // Omega
1100         particle = kOmegaMinus;
1101         AliGenParam *genOmega = new AliGenParam(10,particle,lib->GetPt(particle),lib->GetY(particle),lib->GetIp(particle));     
1102         genOmega->SetPtRange(0, 12.);
1103         genOmega->SetYRange(-1.1, 1.1);
1104         genOmega->SetForceDecay(kNoDecay);
1105         
1106         //
1107         // Central Hijing 
1108         AliGenHijing *genHi = HijingStandard();
1109         genHi->SwitchOffHeavyQuarks(kTRUE);
1110         genHi->SetImpactParameterRange(0.,5.);
1111         //
1112         // Add everything to the cocktail and shake ...
1113         gener->AddGenerator(genHi,    "Hijing cent1", 1);
1114         gener->AddGenerator(genpyc,   "Extra charm",  1);
1115         gener->AddGenerator(genpyb,   "Extra beauty", 1);
1116         gener->AddGenerator(genXi,    "Xi"          , 1);
1117         gener->AddGenerator(genOmega, "Omega",        1);
1118         gener->SetProjectile("A", 208, 82) ; 
1119         gener->SetTarget("A", 208, 82) ; 
1120         gGener = gener;
1121       }
1122         break;
1123       default: break;
1124     }
1125   
1126   return gGener;
1127 }
1128
1129 AliGenHijing* HijingStandard()
1130 {
1131   AliGenHijing *gener = new AliGenHijing(-1);
1132   // centre of mass energy 
1133   gener->SetEnergyCMS(5500.);
1134   // reference frame
1135   gener->SetReferenceFrame("CMS");
1136   // projectile
1137   gener->SetProjectile("A", 208, 82);
1138   gener->SetTarget    ("A", 208, 82);
1139   // tell hijing to keep the full parent child chain
1140   gener->KeepFullEvent();
1141   // enable jet quenching
1142   gener->SetJetQuenching(1);
1143   // enable shadowing
1144   gener->SetShadowing(1);
1145   // neutral pion and heavy particle decays switched off
1146   gener->SetDecaysOff(1);
1147   // Don't track spectators
1148   gener->SetSpectators(0);
1149   // kinematic selection
1150   gener->SetSelectAll(0);
1151   return gener;
1152 }
1153
1154 AliGenGeVSim* GeVSimStandard(Float_t mult, Float_t vn)
1155 {
1156   AliGenGeVSim* gener = new AliGenGeVSim(0);
1157   //
1158   // Mult is the number of charged particles in |eta| < 0.5
1159   // Vn is in (%)
1160   //
1161   // Sigma of the Gaussian dN/deta
1162   Float_t sigma_eta  = 2.75;
1163   //
1164   // Maximum eta
1165   Float_t etamax     = 7.00;
1166   //
1167   //
1168   // Scale from multiplicity in |eta| < 0.5 to |eta| < |etamax| 
1169   Float_t mm = mult * (TMath::Erf(etamax/sigma_eta/sqrt(2.)) / TMath::Erf(0.5/sigma_eta/sqrt(2.))); 
1170   //
1171   // Scale from charged to total multiplicity
1172   // 
1173   mm *= 1.587;
1174   //
1175   // Vn 
1176   vn /= 100.;            
1177   //
1178   // Define particles
1179   //
1180   //
1181   // 78% Pions (26% pi+, 26% pi-, 26% p0)              T = 250 MeV
1182   AliGeVSimParticle *pp =  new AliGeVSimParticle(kPiPlus,  1, 0.26 * mm, 0.25, sigma_eta) ;
1183   AliGeVSimParticle *pm =  new AliGeVSimParticle(kPiMinus, 1, 0.26 * mm, 0.25, sigma_eta) ;
1184   AliGeVSimParticle *p0 =  new AliGeVSimParticle(kPi0,     1, 0.26 * mm, 0.25, sigma_eta) ;
1185   //
1186   // 12% Kaons (3% K0short, 3% K0long, 3% K+, 3% K-)   T = 300 MeV
1187   AliGeVSimParticle *ks =  new AliGeVSimParticle(kK0Short, 1, 0.03 * mm, 0.30, sigma_eta) ;
1188   AliGeVSimParticle *kl =  new AliGeVSimParticle(kK0Long,  1, 0.03 * mm, 0.30, sigma_eta) ;
1189   AliGeVSimParticle *kp =  new AliGeVSimParticle(kKPlus,   1, 0.03 * mm, 0.30, sigma_eta) ;
1190   AliGeVSimParticle *km =  new AliGeVSimParticle(kKMinus,  1, 0.03 * mm, 0.30, sigma_eta) ;
1191   //
1192   // 10% Protons / Neutrons (5% Protons, 5% Neutrons)  T = 250 MeV
1193   AliGeVSimParticle *pr =  new AliGeVSimParticle(kProton,  1, 0.05 * mm, 0.25, sigma_eta) ;
1194   AliGeVSimParticle *ne =  new AliGeVSimParticle(kNeutron, 1, 0.05 * mm, 0.25, sigma_eta) ;
1195   //
1196   // Set Elliptic Flow properties       
1197   
1198   Float_t pTsaturation = 2. ;
1199   
1200   pp->SetEllipticParam(vn,pTsaturation,0.) ;
1201   pm->SetEllipticParam(vn,pTsaturation,0.) ;
1202   p0->SetEllipticParam(vn,pTsaturation,0.) ;
1203   pr->SetEllipticParam(vn,pTsaturation,0.) ;
1204   ne->SetEllipticParam(vn,pTsaturation,0.) ;
1205   ks->SetEllipticParam(vn,pTsaturation,0.) ;
1206   kl->SetEllipticParam(vn,pTsaturation,0.) ;
1207   kp->SetEllipticParam(vn,pTsaturation,0.) ;
1208   km->SetEllipticParam(vn,pTsaturation,0.) ;
1209   //
1210   // Set Direct Flow properties 
1211   pp->SetDirectedParam(vn,1.0,0.) ;
1212   pm->SetDirectedParam(vn,1.0,0.) ;
1213   p0->SetDirectedParam(vn,1.0,0.) ;
1214   pr->SetDirectedParam(vn,1.0,0.) ;
1215   ne->SetDirectedParam(vn,1.0,0.) ;
1216   ks->SetDirectedParam(vn,1.0,0.) ;
1217   kl->SetDirectedParam(vn,1.0,0.) ;
1218   kp->SetDirectedParam(vn,1.0,0.) ;
1219   km->SetDirectedParam(vn,1.0,0.) ;
1220   //
1221   // Add particles to the list
1222   gener->AddParticleType(pp) ;
1223   gener->AddParticleType(pm) ;
1224   gener->AddParticleType(p0) ;
1225   gener->AddParticleType(pr) ;
1226   gener->AddParticleType(ne) ;
1227   gener->AddParticleType(ks) ;
1228   gener->AddParticleType(kl) ;
1229   gener->AddParticleType(kp) ;
1230   gener->AddParticleType(km) ;
1231   //    
1232   // Random Ev.Plane ----------------------------------
1233   TF1 *rpa = new TF1("gevsimPsiRndm","1", 0, 360);
1234   // --------------------------------------------------
1235   gener->SetPtRange(0., 9.) ; // Use a resonable range! (used for bin size in numerical integration)
1236   gener->SetPhiRange(0, 360);
1237   //
1238   // Set pseudorapidity range 
1239   Float_t thmin = EtaToTheta(+etamax);   
1240   Float_t thmax = EtaToTheta(-etamax);   
1241   gener->SetThetaRange(thmin,thmax);     
1242   return gener;
1243 }
1244