3 // Event generator configuration for ppbench test
5 // Extracted from G3 specific Config.C in test/ppbench.
6 // by I. Hrivnacova, IPN Orsay
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,
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,
30 const char* pprRunName[] = {
32 "kParam_8000", "kParam_4000", "kParam_2000",
33 "kHijing_cent1", "kHijing_cent2",
34 "kHijing_per1", "kHijing_per2", "kHijing_per3", "kHijing_per4",
36 "kHijing_jj25", "kHijing_jj50", "kHijing_jj75", "kHijing_jj100",
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"
54 kGluonRadiation, kNoGluonRadiation
59 kDefaultPPTrig, kDefaultPbPbTrig
62 const char * pprTrigConfName[] = {
66 // This part for configuration
68 static PprRun_t srun = kPythia6;
69 static PprRad_t srad = kGluonRadiation;
72 static TString comment;
75 Float_t EtaToTheta(Float_t arg);
76 AliGenerator* GeneratorFactory(PprRun_t srun);
77 AliGenHijing* HijingStandard();
78 AliGenGeVSim* GeVSimStandard(Float_t, Float_t);
81 AliGenerator* genPPbenchConfig()
83 cout << "Running genPPbenchConfig.C ... " << endl;
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);
93 if (srad == kGluonRadiation)
95 comment = comment.Append(" | Gluon Radiation On");
98 comment = comment.Append(" | Gluon Radiation Off");
101 printf("\n \n Comment: %s \n \n", comment.Data());
105 cout << "Running genGunConfig.C finished ... " << endl;
109 // Functions implementation
111 Float_t EtaToTheta(Float_t arg){
112 return (180./TMath::Pi())*2.*atan(exp(-arg));
117 AliGenerator* GeneratorFactory(PprRun_t srun) {
119 if (srad == kNoGluonRadiation) isw = 0;
122 AliGenerator * gGener = 0x0;
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);
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);
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);
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);
181 comment = comment.Append("HIJING cent1");
182 AliGenHijing *gener = HijingStandard();
183 // impact parameter range
184 gener->SetImpactParameterRange(0., 5.);
190 comment = comment.Append("HIJING cent2");
191 AliGenHijing *gener = HijingStandard();
192 // impact parameter range
193 gener->SetImpactParameterRange(0., 2.);
202 comment = comment.Append("HIJING per1");
203 AliGenHijing *gener = HijingStandard();
204 // impact parameter range
205 gener->SetImpactParameterRange(5., 8.6);
211 comment = comment.Append("HIJING per2");
212 AliGenHijing *gener = HijingStandard();
213 // impact parameter range
214 gener->SetImpactParameterRange(8.6, 11.2);
220 comment = comment.Append("HIJING per3");
221 AliGenHijing *gener = HijingStandard();
222 // impact parameter range
223 gener->SetImpactParameterRange(11.2, 13.2);
229 comment = comment.Append("HIJING per4");
230 AliGenHijing *gener = HijingStandard();
231 // impact parameter range
232 gener->SetImpactParameterRange(13.2, 15.);
238 comment = comment.Append("HIJING per5");
239 AliGenHijing *gener = HijingStandard();
240 // impact parameter range
241 gener->SetImpactParameterRange(15., 100.);
250 comment = comment.Append("HIJING Jet 25 GeV");
251 AliGenHijing *gener = HijingStandard();
252 // impact parameter range
253 gener->SetImpactParameterRange(0., 5.);
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.);
267 comment = comment.Append("HIJING Jet 50 GeV");
268 AliGenHijing *gener = HijingStandard();
269 // impact parameter range
270 gener->SetImpactParameterRange(0., 5.);
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.);
284 comment = comment.Append("HIJING Jet 75 GeV");
285 AliGenHijing *gener = HijingStandard();
286 // impact parameter range
287 gener->SetImpactParameterRange(0., 5.);
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.);
301 comment = comment.Append("HIJING Jet 100 GeV");
302 AliGenHijing *gener = HijingStandard();
303 // impact parameter range
304 gener->SetImpactParameterRange(0., 5.);
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.);
318 comment = comment.Append("HIJING Jet 200 GeV");
319 AliGenHijing *gener = HijingStandard();
320 // impact parameter range
321 gener->SetImpactParameterRange(0., 5.);
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.);
337 comment = comment.Append("HIJING Gamma 25 GeV");
338 AliGenHijing *gener = HijingStandard();
339 // impact parameter range
340 gener->SetImpactParameterRange(0., 5.);
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.);
354 comment = comment.Append("HIJING Gamma 50 GeV");
355 AliGenHijing *gener = HijingStandard();
356 // impact parameter range
357 gener->SetImpactParameterRange(0., 5.);
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.);
371 comment = comment.Append("HIJING Gamma 75 GeV");
372 AliGenHijing *gener = HijingStandard();
373 // impact parameter range
374 gener->SetImpactParameterRange(0., 5.);
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.);
388 comment = comment.Append("HIJING Gamma 100 GeV");
389 AliGenHijing *gener = HijingStandard();
390 // impact parameter range
391 gener->SetImpactParameterRange(0., 5.);
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.);
405 comment = comment.Append("HIJING Gamma 200 GeV");
406 AliGenHijing *gener = HijingStandard();
407 // impact parameter range
408 gener->SetImpactParameterRange(0., 5.);
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.);
421 comment = comment.Append("HIJING pA");
423 AliGenCocktail *gener = new AliGenCocktail();
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.);
431 hijing->SetReferenceFrame("CMS");
432 hijing->SetBoostLHC(1);
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);
441 hijing->SetShadowing(1);
442 // Don't track spectators
443 hijing->SetSpectators(0);
444 // kinematic selection
445 hijing->SetSelectAll(0);
447 AliGenSlowNucleons* gray = new AliGenSlowNucleons(1);
448 AliSlowNucleonModel* model = new AliSlowNucleonModelExp();
449 gray->SetSlowNucleonModel(model);
451 gener->AddGenerator(hijing,"Hijing pPb", 1);
452 gener->AddGenerator(gray, "Gray Particles",1);
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) ;
471 case kPythia6Jets20_24:
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) ;
492 case kPythia6Jets24_29:
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) ;
513 case kPythia6Jets29_35:
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) ;
534 case kPythia6Jets35_42:
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) ;
555 case kPythia6Jets42_50:
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) ;
576 case kPythia6Jets50_60:
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.)
595 case kPythia6Jets60_72:
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) ;
616 case kPythia6Jets72_86:
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) ;
637 case kPythia6Jets86_104:
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) ;
658 case kPythia6Jets104_125:
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) ;
679 case kPythia6Jets125_150:
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.)
698 case kPythia6Jets150_180:
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) ;
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) ;
738 case kCharmSemiElPbPb5500:
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) ;
756 case kBeautySemiElPbPb5500:
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) ;
776 comment = comment.Append(" Cocktail for TRD at 5.5 TeV");
777 AliGenCocktail *gener = new AliGenCocktail();
779 AliGenParam *phi = new AliGenParam(10,
784 phi->SetPtRange(0, 100);
785 phi->SetYRange(-1., +1.);
786 phi->SetForceDecay(kDiElectron);
788 AliGenParam *omega = new AliGenParam(10,
790 AliGenMUONlib::kOmega,
793 omega->SetPtRange(0, 100);
794 omega->SetYRange(-1., +1.);
795 omega->SetForceDecay(kDiElectron);
797 AliGenParam *jpsi = new AliGenParam(10,
799 AliGenMUONlib::kJpsiFamily,
802 jpsi->SetPtRange(0, 100);
803 jpsi->SetYRange(-1., +1.);
804 jpsi->SetForceDecay(kDiElectron);
806 AliGenParam *ups = new AliGenParam(10,
808 AliGenMUONlib::kUpsilonFamily,
810 ups->SetPtRange(0, 100);
811 ups->SetYRange(-1., +1.);
812 ups->SetForceDecay(kDiElectron);
814 AliGenParam *charm = new AliGenParam(10,
816 AliGenMUONlib::kCharm,
818 charm->SetPtRange(0, 100);
819 charm->SetYRange(-1.5, +1.5);
820 charm->SetForceDecay(kSemiElectronic);
823 AliGenParam *beauty = new AliGenParam(10,
825 AliGenMUONlib::kBeauty,
827 beauty->SetPtRange(0, 100);
828 beauty->SetYRange(-1.5, +1.5);
829 beauty->SetForceDecay(kSemiElectronic);
831 AliGenParam *beautyJ = new AliGenParam(10,
833 AliGenMUONlib::kBeauty,
835 beautyJ->SetPtRange(0, 100);
836 beautyJ->SetYRange(-1.5, +1.5);
837 beautyJ->SetForceDecay(kBJpsiDiElectron);
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) ;
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) ;
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) ;
884 case kMuonCocktailCent1:
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
896 gener->SetProjectile("A", 208, 82) ;
897 gener->SetTarget("A", 208, 82) ;
900 case kMuonCocktailPer1:
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) ;
916 case kMuonCocktailPer4:
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) ;
932 case kMuonCocktailCent1HighPt:
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) ;
948 case kMuonCocktailPer1HighPt :
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) ;
964 case kMuonCocktailPer4HighPt:
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) ;
980 case kMuonCocktailCent1Single:
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) ;
996 case kMuonCocktailPer1Single :
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) ;
1013 case kMuonCocktailPer4Single:
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) ;
1031 comment = comment.Append(" Flow with dN/deta = 2000, vn = 2%");
1032 gGener = GeVSimStandard(2000., 2.);
1038 comment = comment.Append(" Flow with dN/deta = 2000, vn = 10%");
1039 gGener = GeVSimStandard(2000., 10.);
1045 comment = comment.Append(" Flow with dN/deta = 2000, vn = 6%");
1046 gGener = GeVSimStandard(2000., 6.);
1052 comment = comment.Append(" Flow with dN/deta = 5000, vn = 6%");
1053 gGener = GeVSimStandard(5000., 6.);
1060 AliGenCocktail *gener = new AliGenCocktail();
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);
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);
1089 AliGenSTRANGElib *lib = new AliGenSTRANGElib();
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);
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);
1108 AliGenHijing *genHi = HijingStandard();
1109 genHi->SwitchOffHeavyQuarks(kTRUE);
1110 genHi->SetImpactParameterRange(0.,5.);
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) ;
1129 AliGenHijing* HijingStandard()
1131 AliGenHijing *gener = new AliGenHijing(-1);
1132 // centre of mass energy
1133 gener->SetEnergyCMS(5500.);
1135 gener->SetReferenceFrame("CMS");
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);
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);
1154 AliGenGeVSim* GeVSimStandard(Float_t mult, Float_t vn)
1156 AliGenGeVSim* gener = new AliGenGeVSim(0);
1158 // Mult is the number of charged particles in |eta| < 0.5
1161 // Sigma of the Gaussian dN/deta
1162 Float_t sigma_eta = 2.75;
1165 Float_t etamax = 7.00;
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.)));
1171 // Scale from charged to total multiplicity
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) ;
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) ;
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) ;
1196 // Set Elliptic Flow properties
1198 Float_t pTsaturation = 2. ;
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.) ;
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.) ;
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) ;
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);
1238 // Set pseudorapidity range
1239 Float_t thmin = EtaToTheta(+etamax);
1240 Float_t thmax = EtaToTheta(-etamax);
1241 gener->SetThetaRange(thmin,thmax);