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