Moved old AliMagFCheb to AliMagF, small fixes/optimizations in field classes
[u/mrichter/AliRoot.git] / macros / Config_PythiaHeavyFlavours.C
CommitLineData
6ccd5a72 1//*******************************************************************//
2// Configuration file for charm / beauty generation with PYTHIA //
3// //
4// The parameters have been tuned in order to reproduce the inclusive//
5// heavy quark pt distribution given by the NLO pQCD calculation by //
6// Mangano, Nason and Ridolfi. //
7// //
8// For details and for the NORMALIZATION of the yields see: //
72fc043d 9// N.Carrer and A.Dainese, //
10// "Charm and beauty production at the LHC", //
09977179 11// ALICE-INT-2003-019, [arXiv:hep-ph/0311225]; //
12// PPR Chapter 6.6, CERN/LHCC 2005-030 (2005). //
6ccd5a72 13//*******************************************************************//
de78d77f 14#if !defined(__CINT__) || defined(__MAKECINT__)
15#include <Riostream.h>
16#include <TRandom.h>
17#include <TDatime.h>
18#include <TSystem.h>
19#include <TVirtualMC.h>
dcec124d 20#include <TGeant3TGeo.h>
de78d77f 21#include "STEER/AliRunLoader.h"
22#include "STEER/AliRun.h"
23#include "STEER/AliConfig.h"
24#include "PYTHIA6/AliDecayerPythia.h"
25#include "PYTHIA6/AliGenPythia.h"
26#include "STEER/AliMagFMaps.h"
27#include "STRUCT/AliBODY.h"
28#include "STRUCT/AliMAG.h"
96fb3353 29#include "STRUCT/AliABSOv3.h"
30#include "STRUCT/AliDIPOv3.h"
31#include "STRUCT/AliHALLv3.h"
de78d77f 32#include "STRUCT/AliFRAMEv2.h"
96fb3353 33#include "STRUCT/AliSHILv3.h"
34#include "STRUCT/AliPIPEv3.h"
99887042 35#include "ITS/AliITSv11Hybrid.h"
de78d77f 36#include "TPC/AliTPCv2.h"
0d7ef405 37#include "TOF/AliTOFv6T0.h"
99887042 38#include "HMPID/AliHMPIDv3.h"
9d07603a 39#include "ZDC/AliZDCv3.h"
de78d77f 40#include "TRD/AliTRDv1.h"
41#include "FMD/AliFMDv0.h"
42#include "MUON/AliMUONv1.h"
43#include "PHOS/AliPHOSv1.h"
44#include "PMD/AliPMDv1.h"
ababa197 45#include "T0/AliT0v1.h"
b384f8a4 46#include "ACORDE/AliACORDEv1.h"
de78d77f 47#endif
6ccd5a72 48
49//--- Heavy Flavour Production ---
50enum ProcessHvFl_t
51{
09977179 52 kCharmPbPb5500, kCharmpPb8800, kCharmpp14000, kCharmpp14000wmi,
7e35f2ed 53 kCharmSemiElpp14000wmi,
6ccd5a72 54 kD0PbPb5500, kD0pPb8800, kD0pp14000,
09977179 55 kDPlusPbPb5500, kDPluspPb8800, kDPluspp14000,
84388d23 56 kDPlusStrangePbPb5500, kDPlusStrangepPb8800, kDPlusStrangepp14000,
7e35f2ed 57 kBeautyPbPb5500, kBeautypPb8800, kBeautypp14000, kBeautypp14000wmi,
58 kBeautySemiElpp14000wmi
6ccd5a72 59};
60//--- Decay Mode ---
61enum DecayHvFl_t
62{
63 kNature, kHadr, kSemiEl, kSemiMu
64};
65//--- Rapidity Cut ---
66enum YCut_t
67{
68 kFull, kBarrel, kMuonArm
69};
70//--- Magnetic Field ---
71enum Mag_t
72{
73 k2kG, k4kG, k5kG
74};
dcec124d 75//--- Trigger config ---
76enum TrigConf_t
77{
78 kDefaultPPTrig, kDefaultPbPbTrig
79};
80const char * TrigConfName[] = {
81 "p-p","Pb-Pb"
82};
6b612c2d 83
de78d77f 84//--- Functions ---
1faeb480 85class AliGenPythia;
de78d77f 86AliGenPythia *PythiaHVQ(ProcessHvFl_t proc);
ee621efa 87void LoadPythia();
de78d77f 88
6ccd5a72 89
90// This part for configuration
7e35f2ed 91static ProcessHvFl_t procHvFl = kCharmpp14000wmi;
6ccd5a72 92static DecayHvFl_t decHvFl = kNature;
93static YCut_t ycut = kFull;
09977179 94static Mag_t mag = k5kG;
dcec124d 95static TrigConf_t trig = kDefaultPbPbTrig; // default PbPb trigger configuration
6ccd5a72 96// nEvts = -1 : you get 1 QQbar pair and all the fragmentation and
97// decay chain
98// nEvts = N>0 : you get N charm / beauty Hadrons
99Int_t nEvts = -1;
100// stars = kTRUE : all heavy resonances and their decay stored
101// = kFALSE: only final heavy hadrons and their decays stored
102Bool_t stars = kTRUE;
103
09977179 104// To be used only with kCharmppMNRwmi and kBeautyppMNRwmi
105// To get a "reasonable" agreement with MNR results, events have to be
106// generated with the minimum ptHard set to 2.76 GeV.
107// To get a "perfect" agreement with MNR results, events have to be
108// generated in four ptHard bins with the following relative
109// normalizations:
110// CHARM
111// 2.76-3 GeV: 25%
112// 3-4 GeV: 40%
113// 4-8 GeV: 29%
114// >8 GeV: 6%
115// BEAUTY
116// 2.76-4 GeV: 5%
117// 4-6 GeV: 31%
118// 6-8 GeV: 28%
119// >8 GeV: 36%
120Float_t ptHardMin = 2.76;
121Float_t ptHardMax = -1.;
122
6ccd5a72 123
124// Comment line
125static TString comment;
126
127void Config()
128{
129
130 //========================//
131 // Set Random Number seed //
132 //========================//
133 TDatime dt;
134 UInt_t curtime=dt.Get();
135 UInt_t procid=gSystem->GetPid();
136 UInt_t seed=curtime-procid;
137
de78d77f 138 // gRandom->SetSeed(seed);
72fc043d 139 // cerr<<"Seed for random number generation= "<<seed<<endl;
6ccd5a72 140 gRandom->SetSeed(12345);
72fc043d 141
ee621efa 142 // Load Pythia libraries
143 LoadPythia();
6ccd5a72 144 // libraries required by geant321
de78d77f 145#if defined(__CINT__)
6ccd5a72 146 gSystem->Load("libgeant321");
de78d77f 147#endif
6ccd5a72 148
b0470150 149 new TGeant3TGeo("C++ Interface to Geant3");
6ccd5a72 150
458041af 151 if(!AliCDBManager::Instance()->IsDefaultStorageSet()){
152 AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
153 AliCDBManager::Instance()->SetRun(0);
154 }
155
6ccd5a72 156 //=======================================================================
157 // Create the output file
de78d77f 158
159
160 AliRunLoader* rl=0x0;
161
162 cout<<"Config.C: Creating Run Loader ..."<<endl;
163 rl = AliRunLoader::Open("galice.root",
f5a857b2 164 AliConfig::GetDefaultEventFolderName(),
de78d77f 165 "recreate");
166 if (rl == 0x0)
167 {
168 gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
169 return;
170 }
171 rl->SetCompressionLevel(2);
7e35f2ed 172 rl->SetNumberOfEventsPerFile(1000);
de78d77f 173 gAlice->SetRunLoader(rl);
458041af 174 // gAlice->SetGeometryFromFile("geometry.root");
175 // gAlice->SetGeometryFromCDB();
de78d77f 176
dcec124d 177 // Set the trigger configuration
178 gAlice->SetTriggerDescriptor(TrigConfName[trig]);
179 cout<<"Trigger configuration is set to "<<TrigConfName[trig]<<endl;
180
6ccd5a72 181 //
182 //=======================================================================
183 // ************* STEERING parameters FOR ALICE SIMULATION **************
184 // --- Specify event type to be tracked through the ALICE setup
185 // --- All positions are in cm, angles in degrees, and P and E in GeV
6a3df6c9 186
187
188 gMC->SetProcess("DCAY",1);
189 gMC->SetProcess("PAIR",1);
190 gMC->SetProcess("COMP",1);
191 gMC->SetProcess("PHOT",1);
192 gMC->SetProcess("PFIS",0);
193 gMC->SetProcess("DRAY",0);
194 gMC->SetProcess("ANNI",1);
195 gMC->SetProcess("BREM",1);
196 gMC->SetProcess("MUNU",1);
197 gMC->SetProcess("CKOV",1);
198 gMC->SetProcess("HADR",1);
199 gMC->SetProcess("LOSS",2);
200 gMC->SetProcess("MULS",1);
201 gMC->SetProcess("RAYL",1);
202
203 Float_t cut = 1.e-3; // 1MeV cut by default
204 Float_t tofmax = 1.e10;
205
206 gMC->SetCut("CUTGAM", cut);
207 gMC->SetCut("CUTELE", cut);
208 gMC->SetCut("CUTNEU", cut);
209 gMC->SetCut("CUTHAD", cut);
210 gMC->SetCut("CUTMUO", cut);
211 gMC->SetCut("BCUTE", cut);
212 gMC->SetCut("BCUTM", cut);
213 gMC->SetCut("DCUTE", cut);
214 gMC->SetCut("DCUTM", cut);
215 gMC->SetCut("PPCUTM", cut);
216 gMC->SetCut("TOFMAX", tofmax);
217
218
219
220
6ccd5a72 221 // Set External decayer //
222 //======================//
223 TVirtualMCDecayer* decayer = new AliDecayerPythia();
224 // DECAYS
225 //
226 switch(decHvFl) {
227 case kNature:
228 decayer->SetForceDecay(kAll);
229 break;
230 case kHadr:
231 decayer->SetForceDecay(kHadronicD);
232 break;
233 case kSemiEl:
234 decayer->SetForceDecay(kSemiElectronic);
235 break;
236 case kSemiMu:
237 decayer->SetForceDecay(kSemiMuonic);
238 break;
239 }
240 decayer->Init();
241 gMC->SetExternalDecayer(decayer);
242
243 //=========================//
244 // Generator Configuration //
245 //=========================//
246 AliGenPythia *pythia = PythiaHVQ(procHvFl);
247 // FeedDown option
248 pythia->SetFeedDownHigherFamily(kFALSE);
249 // Stack filling option
250 if(!stars) pythia->SetStackFillOpt(AliGenPythia::kParentSelection);
251 // Set Count mode
252 if(nEvts>0) pythia->SetCountMode(AliGenPythia::kCountParents);
253 // DECAYS
254 //
255 switch(decHvFl) {
256 case kNature:
257 pythia->SetForceDecay(kAll);
258 break;
259 case kHadr:
260 pythia->SetForceDecay(kHadronicD);
261 break;
262 case kSemiEl:
263 pythia->SetForceDecay(kSemiElectronic);
264 break;
265 case kSemiMu:
266 pythia->SetForceDecay(kSemiMuonic);
267 break;
268 }
269 // GEOM & KINE CUTS
270 //
271 pythia->SetMomentumRange(0,99999999);
0ac28de4 272 pythia->SetPhiRange(0., 360.);
6ccd5a72 273 pythia->SetThetaRange(0,180);
274 switch(ycut) {
275 case kFull:
276 pythia->SetYRange(-999,999);
277 break;
278 case kBarrel:
279 pythia->SetYRange(-2,2);
280 break;
281 case kMuonArm:
282 pythia->SetYRange(1,6);
283 break;
284 }
285
286 // PRIMARY VERTEX
287 //
288 pythia->SetOrigin(0, 0, 0); // vertex position
289 pythia->SetSigma(0, 0, 5.3); // Sigma in (X,Y,Z) (cm) on IP position
290 pythia->SetCutVertexZ(1.); // Truncate at 1 sigma
291 pythia->SetVertexSmear(kPerEvent);
292
293
294
295 pythia->SetTrackingFlag(0);
296 // Specify GEANT tracking limits (Rmax, Zmax)
e196c4dc 297 //gAlice->GetMCApp()->TrackingLimits(90.,1.0e10);
6ccd5a72 298
299
300 pythia->Init();
301
302 // FIELD
303 //
304 if (mag == k2kG) {
305 comment = comment.Append(" | L3 field 0.2 T");
306 } else if (mag == k4kG) {
307 comment = comment.Append(" | L3 field 0.4 T");
308 } else if (mag == k5kG) {
309 comment = comment.Append(" | L3 field 0.5 T");
310 }
de78d77f 311 printf("\n \n Comment: %s \n \n", comment.Data());
6ccd5a72 312
313 AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., mag);
e196c4dc 314 field->SetL3ConstField(0); //Using const. field in the barrel
de78d77f 315 rl->CdGAFile();
6ccd5a72 316 gAlice->SetField(field);
317
318
319 // By default all ALICE is switched off
320 Int_t iABSO=0;
b384f8a4 321 Int_t iACORDE=0;
6ccd5a72 322 Int_t iDIPO=0;
323 Int_t iFMD=0;
324 Int_t iFRAME=0;
325 Int_t iHALL=0;
326 Int_t iITS=0;
327 Int_t iMAG=0;
328 Int_t iMUON=0;
329 Int_t iPHOS=0;
330 Int_t iPIPE=0;
331 Int_t iPMD=0;
de1857bb 332 Int_t iHMPID=0;
6ccd5a72 333 Int_t iSHIL=0;
ababa197 334 Int_t iT0=0;
6ccd5a72 335 Int_t iTOF=0;
336 Int_t iTPC=0;
337 Int_t iTRD=0;
338 Int_t iZDC=0;
339
340 //=================== Alice BODY parameters =============================
341 AliBODY *BODY = new AliBODY("BODY","Alice envelop");
342
343 if(iMAG) {
344 //=================== MAG parameters ============================
345 // --- Start with Magnet since detector layouts may be depending ---
346 // --- on the selected Magnet dimensions ---
347 AliMAG *MAG = new AliMAG("MAG","Magnet");
348 }
349
350
351 if(iABSO) {
352 //=================== ABSO parameters ============================
96fb3353 353 AliABSO *ABSO = new AliABSOv3("ABSO","Muon Absorber");
6ccd5a72 354 }
355
356 if(iDIPO) {
357 //=================== DIPO parameters ============================
358
96fb3353 359 AliDIPO *DIPO = new AliDIPOv3("DIPO","Dipole version 3");
6ccd5a72 360 }
361
362 if(iHALL) {
363 //=================== HALL parameters ============================
364
96fb3353 365 AliHALL *HALL = new AliHALLv3("HALL","Alice Hall");
6ccd5a72 366 }
367
368
369 if(iFRAME) {
370 //=================== FRAME parameters ============================
371
372 AliFRAME *FRAME = new AliFRAMEv2("FRAME","Space Frame");
bab433b3 373 FRAME->SetHoles(1);
6ccd5a72 374 }
375
376 if(iSHIL) {
377 //=================== SHIL parameters ============================
378
96fb3353 379 AliSHIL *SHIL = new AliSHILv3("SHIL","Shielding");
6ccd5a72 380 }
381
382
383 if(iPIPE) {
384 //=================== PIPE parameters ============================
385
96fb3353 386 AliPIPE *PIPE = new AliPIPEv3("PIPE","Beam Pipe");
6ccd5a72 387 }
388
389
390 if(iITS) {
e89fa83b 391 //=================== ITS parameters ============================
6ccd5a72 392
99887042 393 AliITS *ITS = new AliITSv11Hybrid("ITS","ITS v11Hybrid");
6ccd5a72 394 }
395
396
397 if(iTPC) {
26ca4b4a 398 //============================ TPC parameters ===================
6ccd5a72 399 AliTPC *TPC = new AliTPCv2("TPC","Default");
6ccd5a72 400 }
401
402
403 if(iTOF) {
404 //=================== TOF parameters ============================
0d7ef405 405 AliTOF *TOF = new AliTOFv6T0("TOF","normal TOF");
6ccd5a72 406 }
407
de1857bb 408 if(iHMPID) {
409 //=================== HMPID parameters ===========================
99887042 410 AliHMPID *HMPID = new AliHMPIDv3("HMPID","normal HMPID");
6ccd5a72 411
412 }
413
414
415 if(iZDC) {
416 //=================== ZDC parameters ============================
417
9d07603a 418 AliZDC *ZDC = new AliZDCv3("ZDC","normal ZDC");
6ccd5a72 419 }
420
b384f8a4 421 if(iACORDE) {
422 //=================== ACORDE parameters ============================
6ccd5a72 423
b384f8a4 424 AliACORDE *ACORDE = new AliACORDEv1("ACORDE","normal ACORDE");
6ccd5a72 425 }
426
427 if(iTRD) {
428 //=================== TRD parameters ============================
429
430 AliTRD *TRD = new AliTRDv1("TRD","TRD slow simulator");
6ccd5a72 431 }
432
433 if(iFMD) {
434 //=================== FMD parameters ============================
435
436 AliFMD *FMD = new AliFMDv0("FMD","normal FMD");
437 }
438
439 if(iMUON) {
440 //=================== MUON parameters ===========================
441 AliMUON *MUON = new AliMUONv1("MUON","default");
442 }
443
444 //=================== PHOS parameters ===========================
445
446 if(iPHOS) {
447 AliPHOS *PHOS = new AliPHOSv1("PHOS","GPS2");
448 }
449
450
b384f8a4 451 //=================== ACORDE parameters ===========================
6ccd5a72 452
b384f8a4 453 if(iACORDE) {
454 AliACORDE *ACORDE = new AliACORDEv1("ACORDE","Normal ACORDEGPS2");
6ccd5a72 455 }
456
457
458 if(iPMD) {
459 //=================== PMD parameters ============================
460
461 AliPMD *PMD = new AliPMDv1("PMD","normal PMD");
462 PMD->SetPAR(1., 1., 0.8, 0.02);
463 PMD->SetIN(6., 18., -580., 27., 27.);
464 PMD->SetGEO(0.0, 0.2, 4.);
465 PMD->SetPadSize(0.8, 1.0, 1.0, 1.5);
466
467 }
468
ababa197 469 if(iT0) {
470 //=================== T0 parameters ============================
471 AliT0 *T0 = new AliT0v1("T0","T0 Detector");
6ccd5a72 472 }
473
474
475}
476//
477// PYTHIA
478//
479AliGenPythia *PythiaHVQ(ProcessHvFl_t proc) {
480
de78d77f 481 AliGenPythia * gener = 0x0;
482
6ccd5a72 483 switch(proc) {
484 case kCharmPbPb5500:
485 comment = comment.Append(" Charm in Pb-Pb at 5.5 TeV");
de78d77f 486 gener = new AliGenPythia(nEvts);
6ccd5a72 487 gener->SetProcess(kPyCharmPbPbMNR);
488 gener->SetStrucFunc(kCTEQ4L);
489 gener->SetPtHard(2.1,-1.0);
490 gener->SetEnergyCMS(5500.);
491 gener->SetNuclei(208,208);
492 break;
493 case kCharmpPb8800:
494 comment = comment.Append(" Charm in p-Pb at 8.8 TeV");
de78d77f 495 gener = new AliGenPythia(nEvts);
6ccd5a72 496 gener->SetProcess(kPyCharmpPbMNR);
497 gener->SetStrucFunc(kCTEQ4L);
498 gener->SetPtHard(2.1,-1.0);
499 gener->SetEnergyCMS(8800.);
500 gener->SetProjectile("P",1,1);
501 gener->SetTarget("Pb",208,82);
502 break;
503 case kCharmpp14000:
504 comment = comment.Append(" Charm in pp at 14 TeV");
de78d77f 505 gener = new AliGenPythia(nEvts);
6ccd5a72 506 gener->SetProcess(kPyCharmppMNR);
507 gener->SetStrucFunc(kCTEQ4L);
508 gener->SetPtHard(2.1,-1.0);
509 gener->SetEnergyCMS(14000.);
510 break;
09977179 511 case kCharmpp14000wmi:
512 comment = comment.Append(" Charm in pp at 14 TeV with mult. interactions");
513 gener = new AliGenPythia(-1);
514 gener->SetProcess(kPyCharmppMNRwmi);
515 gener->SetStrucFunc(kCTEQ5L);
516 gener->SetPtHard(ptHardMin,ptHardMax);
517 gener->SetEnergyCMS(14000.);
518 break;
7e35f2ed 519 case kCharmSemiElpp14000wmi:
520 comment = comment.Append(" Charm in pp at 14 TeV with mult. interactions");
521 gener = new AliGenPythia(-1);
522 gener->SetProcess(kPyCharmppMNRwmi);
523 gener->SetStrucFunc(kCTEQ5L);
524 gener->SetPtHard(ptHardMin,ptHardMax);
525 gener->SetEnergyCMS(14000.);
526 gener->SetCutOnChild(1);
527 gener->SetPdgCodeParticleforAcceptanceCut(11);
528 gener->SetChildYRange(-1,1);
529 gener->SetChildPtRange(1,10000.);
530 break;
6ccd5a72 531 case kD0PbPb5500:
532 comment = comment.Append(" D0 in Pb-Pb at 5.5 TeV");
de78d77f 533 gener = new AliGenPythia(nEvts);
6ccd5a72 534 gener->SetProcess(kPyD0PbPbMNR);
535 gener->SetStrucFunc(kCTEQ4L);
536 gener->SetPtHard(2.1,-1.0);
537 gener->SetEnergyCMS(5500.);
538 gener->SetNuclei(208,208);
539 break;
540 case kD0pPb8800:
541 comment = comment.Append(" D0 in p-Pb at 8.8 TeV");
de78d77f 542 gener = new AliGenPythia(nEvts);
6ccd5a72 543 gener->SetProcess(kPyD0pPbMNR);
544 gener->SetStrucFunc(kCTEQ4L);
545 gener->SetPtHard(2.1,-1.0);
546 gener->SetEnergyCMS(8800.);
547 gener->SetProjectile("P",1,1);
548 gener->SetTarget("Pb",208,82);
549 break;
550 case kD0pp14000:
551 comment = comment.Append(" D0 in pp at 14 TeV");
de78d77f 552 gener = new AliGenPythia(nEvts);
6ccd5a72 553 gener->SetProcess(kPyD0ppMNR);
554 gener->SetStrucFunc(kCTEQ4L);
72fc043d 555 gener->SetPtHard(2.1,-1.0);
556 gener->SetEnergyCMS(14000.);
557 break;
558 case kDPlusPbPb5500:
559 comment = comment.Append(" DPlus in Pb-Pb at 5.5 TeV");
560 gener = new AliGenPythia(nEvts);
561 gener->SetProcess(kPyDPlusPbPbMNR);
562 gener->SetStrucFunc(kCTEQ4L);
563 gener->SetPtHard(2.1,-1.0);
564 gener->SetEnergyCMS(5500.);
565 gener->SetNuclei(208,208);
566 break;
567 case kDPluspPb8800:
568 comment = comment.Append(" DPlus in p-Pb at 8.8 TeV");
569 gener = new AliGenPythia(nEvts);
570 gener->SetProcess(kPyDPluspPbMNR);
571 gener->SetStrucFunc(kCTEQ4L);
572 gener->SetPtHard(2.1,-1.0);
573 gener->SetEnergyCMS(8800.);
574 gener->SetProjectile("P",1,1);
575 gener->SetTarget("Pb",208,82);
576 break;
577 case kDPluspp14000:
578 comment = comment.Append(" DPlus in pp at 14 TeV");
579 gener = new AliGenPythia(nEvts);
580 gener->SetProcess(kPyDPlusppMNR);
581 gener->SetStrucFunc(kCTEQ4L);
6ccd5a72 582 gener->SetPtHard(2.1,-1.0);
583 gener->SetEnergyCMS(14000.);
584 break;
84388d23 585 case kDPlusStrangePbPb5500:
586 comment = comment.Append(" DPlusStrange in Pb-Pb at 5.5 TeV");
587 gener = new AliGenPythia(nEvts);
588 gener->SetProcess(kPyDPlusStrangePbPbMNR);
589 gener->SetStrucFunc(kCTEQ4L);
590 gener->SetPtHard(2.1,-1.0);
591 gener->SetEnergyCMS(5500.);
592 gener->SetNuclei(208,208);
593 break;
594 case kDPlusStrangepPb8800:
595 comment = comment.Append(" DPlusStrange in p-Pb at 8.8 TeV");
596 gener = new AliGenPythia(nEvts);
597 gener->SetProcess(kPyDPlusStrangepPbMNR);
598 gener->SetStrucFunc(kCTEQ4L);
599 gener->SetPtHard(2.1,-1.0);
600 gener->SetEnergyCMS(8800.);
601 gener->SetProjectile("P",1,1);
602 gener->SetTarget("Pb",208,82);
603 break;
604 case kDPlusStrangepp14000:
605 comment = comment.Append(" DPlusStrange in pp at 14 TeV");
606 gener = new AliGenPythia(nEvts);
607 gener->SetProcess(kPyDPlusStrangeppMNR);
608 gener->SetStrucFunc(kCTEQ4L);
609 gener->SetPtHard(2.1,-1.0);
610 gener->SetEnergyCMS(14000.);
611 break;
6ccd5a72 612 case kBeautyPbPb5500:
613 comment = comment.Append(" Beauty in Pb-Pb at 5.5 TeV");
7005f584 614 gener = new AliGenPythia(nEvts);
6ccd5a72 615 gener->SetProcess(kPyBeautyPbPbMNR);
616 gener->SetStrucFunc(kCTEQ4L);
617 gener->SetPtHard(2.75,-1.0);
618 gener->SetEnergyCMS(5500.);
619 gener->SetNuclei(208,208);
620 break;
621 case kBeautypPb8800:
622 comment = comment.Append(" Beauty in p-Pb at 8.8 TeV");
de78d77f 623 gener = new AliGenPythia(nEvts);
6ccd5a72 624 gener->SetProcess(kPyBeautypPbMNR);
625 gener->SetStrucFunc(kCTEQ4L);
626 gener->SetPtHard(2.75,-1.0);
627 gener->SetEnergyCMS(8800.);
628 gener->SetProjectile("P",1,1);
629 gener->SetTarget("Pb",208,82);
630 break;
631 case kBeautypp14000:
632 comment = comment.Append(" Beauty in pp at 14 TeV");
de78d77f 633 gener = new AliGenPythia(nEvts);
6ccd5a72 634 gener->SetProcess(kPyBeautyppMNR);
635 gener->SetStrucFunc(kCTEQ4L);
636 gener->SetPtHard(2.75,-1.0);
637 gener->SetEnergyCMS(14000.);
638 break;
09977179 639 case kBeautypp14000wmi:
640 comment = comment.Append(" Beauty in pp at 14 TeV with mult. interactions");
641 gener = new AliGenPythia(-1);
642 gener->SetProcess(kPyBeautyppMNRwmi);
643 gener->SetStrucFunc(kCTEQ5L);
644 gener->SetPtHard(ptHardMin,ptHardMax);
645 gener->SetEnergyCMS(14000.);
646 break;
7e35f2ed 647 case kBeautySemiElpp14000wmi:
648 comment = comment.Append(" Beauty in pp at 14 TeV with mult. interactions");
649 gener = new AliGenPythia(-1);
650 gener->SetProcess(kPyBeautyppMNRwmi);
651 gener->SetStrucFunc(kCTEQ5L);
652 gener->SetPtHard(ptHardMin,ptHardMax);
653 gener->SetEnergyCMS(14000.);
654 gener->SetCutOnChild(1);
655 gener->SetPdgCodeParticleforAcceptanceCut(11);
656 gener->SetChildYRange(-1,1);
657 gener->SetChildPtRange(1,10000.);
658 break;
6ccd5a72 659 }
660
661 return gener;
662}
663
664
665
ee621efa 666void LoadPythia()
667{
668 // Load Pythia related libraries
669 gSystem->Load("liblhapdf.so"); // Parton density functions
670 gSystem->Load("libEGPythia6.so"); // TGenerator interface
671 gSystem->Load("libpythia6.so"); // Pythia
672 gSystem->Load("libAliPythia6.so"); // ALICE specific implementations
673}
674
6ccd5a72 675
676