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" |
29 | #include "STRUCT/AliABSOv0.h" |
30 | #include "STRUCT/AliDIPOv2.h" |
31 | #include "STRUCT/AliHALL.h" |
32 | #include "STRUCT/AliFRAMEv2.h" |
33 | #include "STRUCT/AliSHILv2.h" |
34 | #include "STRUCT/AliPIPEv0.h" |
7005f584 |
35 | #include "ITS/AliITSvPPRasymmFMD.h" |
de78d77f |
36 | #include "TPC/AliTPCv2.h" |
50655693 |
37 | #include "TOF/AliTOFv5T0.h" |
de78d77f |
38 | #include "RICH/AliRICHv1.h" |
39 | #include "ZDC/AliZDCv1.h" |
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" |
45 | #include "START/AliSTARTv1.h" |
46 | #include "CRT/AliCRTv1.h" |
47 | #endif |
6ccd5a72 |
48 | |
49 | //--- Heavy Flavour Production --- |
50 | enum 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 --- |
59 | enum DecayHvFl_t |
60 | { |
61 | kNature, kHadr, kSemiEl, kSemiMu |
62 | }; |
63 | //--- Rapidity Cut --- |
64 | enum YCut_t |
65 | { |
66 | kFull, kBarrel, kMuonArm |
67 | }; |
68 | //--- Magnetic Field --- |
69 | enum Mag_t |
70 | { |
71 | k2kG, k4kG, k5kG |
72 | }; |
dcec124d |
73 | //--- Trigger config --- |
74 | enum TrigConf_t |
75 | { |
76 | kDefaultPPTrig, kDefaultPbPbTrig |
77 | }; |
78 | const char * TrigConfName[] = { |
79 | "p-p","Pb-Pb" |
80 | }; |
de78d77f |
81 | //--- Functions --- |
82 | AliGenPythia *PythiaHVQ(ProcessHvFl_t proc); |
83 | |
6ccd5a72 |
84 | |
85 | // This part for configuration |
86 | static ProcessHvFl_t procHvFl = kCharmPbPb5500; |
87 | static DecayHvFl_t decHvFl = kNature; |
88 | static YCut_t ycut = kFull; |
09977179 |
89 | static Mag_t mag = k5kG; |
dcec124d |
90 | static TrigConf_t trig = kDefaultPbPbTrig; // default PbPb trigger configuration |
6ccd5a72 |
91 | // nEvts = -1 : you get 1 QQbar pair and all the fragmentation and |
92 | // decay chain |
93 | // nEvts = N>0 : you get N charm / beauty Hadrons |
94 | Int_t nEvts = -1; |
95 | // stars = kTRUE : all heavy resonances and their decay stored |
96 | // = kFALSE: only final heavy hadrons and their decays stored |
97 | Bool_t stars = kTRUE; |
98 | |
09977179 |
99 | // To be used only with kCharmppMNRwmi and kBeautyppMNRwmi |
100 | // To get a "reasonable" agreement with MNR results, events have to be |
101 | // generated with the minimum ptHard set to 2.76 GeV. |
102 | // To get a "perfect" agreement with MNR results, events have to be |
103 | // generated in four ptHard bins with the following relative |
104 | // normalizations: |
105 | // CHARM |
106 | // 2.76-3 GeV: 25% |
107 | // 3-4 GeV: 40% |
108 | // 4-8 GeV: 29% |
109 | // >8 GeV: 6% |
110 | // BEAUTY |
111 | // 2.76-4 GeV: 5% |
112 | // 4-6 GeV: 31% |
113 | // 6-8 GeV: 28% |
114 | // >8 GeV: 36% |
115 | Float_t ptHardMin = 2.76; |
116 | Float_t ptHardMax = -1.; |
117 | |
6ccd5a72 |
118 | |
119 | // Comment line |
120 | static TString comment; |
121 | |
122 | void Config() |
123 | { |
124 | |
125 | //========================// |
126 | // Set Random Number seed // |
127 | //========================// |
128 | TDatime dt; |
129 | UInt_t curtime=dt.Get(); |
130 | UInt_t procid=gSystem->GetPid(); |
131 | UInt_t seed=curtime-procid; |
132 | |
de78d77f |
133 | // gRandom->SetSeed(seed); |
72fc043d |
134 | // cerr<<"Seed for random number generation= "<<seed<<endl; |
6ccd5a72 |
135 | gRandom->SetSeed(12345); |
72fc043d |
136 | |
6ccd5a72 |
137 | |
138 | // libraries required by geant321 |
de78d77f |
139 | #if defined(__CINT__) |
6ccd5a72 |
140 | gSystem->Load("libgeant321"); |
de78d77f |
141 | #endif |
6ccd5a72 |
142 | |
b0470150 |
143 | new TGeant3TGeo("C++ Interface to Geant3"); |
6ccd5a72 |
144 | |
145 | //======================================================================= |
146 | // Create the output file |
de78d77f |
147 | |
148 | |
149 | AliRunLoader* rl=0x0; |
150 | |
151 | cout<<"Config.C: Creating Run Loader ..."<<endl; |
152 | rl = AliRunLoader::Open("galice.root", |
f5a857b2 |
153 | AliConfig::GetDefaultEventFolderName(), |
de78d77f |
154 | "recreate"); |
155 | if (rl == 0x0) |
156 | { |
157 | gAlice->Fatal("Config.C","Can not instatiate the Run Loader"); |
158 | return; |
159 | } |
160 | rl->SetCompressionLevel(2); |
161 | rl->SetNumberOfEventsPerFile(3); |
162 | gAlice->SetRunLoader(rl); |
163 | |
dcec124d |
164 | // Set the trigger configuration |
165 | gAlice->SetTriggerDescriptor(TrigConfName[trig]); |
166 | cout<<"Trigger configuration is set to "<<TrigConfName[trig]<<endl; |
167 | |
6ccd5a72 |
168 | // |
169 | //======================================================================= |
170 | // ************* STEERING parameters FOR ALICE SIMULATION ************** |
171 | // --- Specify event type to be tracked through the ALICE setup |
172 | // --- All positions are in cm, angles in degrees, and P and E in GeV |
6a3df6c9 |
173 | |
174 | |
175 | gMC->SetProcess("DCAY",1); |
176 | gMC->SetProcess("PAIR",1); |
177 | gMC->SetProcess("COMP",1); |
178 | gMC->SetProcess("PHOT",1); |
179 | gMC->SetProcess("PFIS",0); |
180 | gMC->SetProcess("DRAY",0); |
181 | gMC->SetProcess("ANNI",1); |
182 | gMC->SetProcess("BREM",1); |
183 | gMC->SetProcess("MUNU",1); |
184 | gMC->SetProcess("CKOV",1); |
185 | gMC->SetProcess("HADR",1); |
186 | gMC->SetProcess("LOSS",2); |
187 | gMC->SetProcess("MULS",1); |
188 | gMC->SetProcess("RAYL",1); |
189 | |
190 | Float_t cut = 1.e-3; // 1MeV cut by default |
191 | Float_t tofmax = 1.e10; |
192 | |
193 | gMC->SetCut("CUTGAM", cut); |
194 | gMC->SetCut("CUTELE", cut); |
195 | gMC->SetCut("CUTNEU", cut); |
196 | gMC->SetCut("CUTHAD", cut); |
197 | gMC->SetCut("CUTMUO", cut); |
198 | gMC->SetCut("BCUTE", cut); |
199 | gMC->SetCut("BCUTM", cut); |
200 | gMC->SetCut("DCUTE", cut); |
201 | gMC->SetCut("DCUTM", cut); |
202 | gMC->SetCut("PPCUTM", cut); |
203 | gMC->SetCut("TOFMAX", tofmax); |
204 | |
205 | |
206 | |
207 | |
6ccd5a72 |
208 | // Set External decayer // |
209 | //======================// |
210 | TVirtualMCDecayer* decayer = new AliDecayerPythia(); |
211 | // DECAYS |
212 | // |
213 | switch(decHvFl) { |
214 | case kNature: |
215 | decayer->SetForceDecay(kAll); |
216 | break; |
217 | case kHadr: |
218 | decayer->SetForceDecay(kHadronicD); |
219 | break; |
220 | case kSemiEl: |
221 | decayer->SetForceDecay(kSemiElectronic); |
222 | break; |
223 | case kSemiMu: |
224 | decayer->SetForceDecay(kSemiMuonic); |
225 | break; |
226 | } |
227 | decayer->Init(); |
228 | gMC->SetExternalDecayer(decayer); |
229 | |
230 | //=========================// |
231 | // Generator Configuration // |
232 | //=========================// |
233 | AliGenPythia *pythia = PythiaHVQ(procHvFl); |
234 | // FeedDown option |
235 | pythia->SetFeedDownHigherFamily(kFALSE); |
236 | // Stack filling option |
237 | if(!stars) pythia->SetStackFillOpt(AliGenPythia::kParentSelection); |
238 | // Set Count mode |
239 | if(nEvts>0) pythia->SetCountMode(AliGenPythia::kCountParents); |
240 | // DECAYS |
241 | // |
242 | switch(decHvFl) { |
243 | case kNature: |
244 | pythia->SetForceDecay(kAll); |
245 | break; |
246 | case kHadr: |
247 | pythia->SetForceDecay(kHadronicD); |
248 | break; |
249 | case kSemiEl: |
250 | pythia->SetForceDecay(kSemiElectronic); |
251 | break; |
252 | case kSemiMu: |
253 | pythia->SetForceDecay(kSemiMuonic); |
254 | break; |
255 | } |
256 | // GEOM & KINE CUTS |
257 | // |
258 | pythia->SetMomentumRange(0,99999999); |
0ac28de4 |
259 | pythia->SetPhiRange(0., 360.); |
6ccd5a72 |
260 | pythia->SetThetaRange(0,180); |
261 | switch(ycut) { |
262 | case kFull: |
263 | pythia->SetYRange(-999,999); |
264 | break; |
265 | case kBarrel: |
266 | pythia->SetYRange(-2,2); |
267 | break; |
268 | case kMuonArm: |
269 | pythia->SetYRange(1,6); |
270 | break; |
271 | } |
272 | |
273 | // PRIMARY VERTEX |
274 | // |
275 | pythia->SetOrigin(0, 0, 0); // vertex position |
276 | pythia->SetSigma(0, 0, 5.3); // Sigma in (X,Y,Z) (cm) on IP position |
277 | pythia->SetCutVertexZ(1.); // Truncate at 1 sigma |
278 | pythia->SetVertexSmear(kPerEvent); |
279 | |
280 | |
281 | |
282 | pythia->SetTrackingFlag(0); |
283 | // Specify GEANT tracking limits (Rmax, Zmax) |
e196c4dc |
284 | //gAlice->GetMCApp()->TrackingLimits(90.,1.0e10); |
6ccd5a72 |
285 | |
286 | |
287 | pythia->Init(); |
288 | |
289 | // FIELD |
290 | // |
291 | if (mag == k2kG) { |
292 | comment = comment.Append(" | L3 field 0.2 T"); |
293 | } else if (mag == k4kG) { |
294 | comment = comment.Append(" | L3 field 0.4 T"); |
295 | } else if (mag == k5kG) { |
296 | comment = comment.Append(" | L3 field 0.5 T"); |
297 | } |
de78d77f |
298 | printf("\n \n Comment: %s \n \n", comment.Data()); |
6ccd5a72 |
299 | |
300 | AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., mag); |
e196c4dc |
301 | field->SetL3ConstField(0); //Using const. field in the barrel |
de78d77f |
302 | rl->CdGAFile(); |
6ccd5a72 |
303 | gAlice->SetField(field); |
304 | |
305 | |
306 | // By default all ALICE is switched off |
307 | Int_t iABSO=0; |
308 | Int_t iCRT=0; |
309 | Int_t iDIPO=0; |
310 | Int_t iFMD=0; |
311 | Int_t iFRAME=0; |
312 | Int_t iHALL=0; |
313 | Int_t iITS=0; |
314 | Int_t iMAG=0; |
315 | Int_t iMUON=0; |
316 | Int_t iPHOS=0; |
317 | Int_t iPIPE=0; |
318 | Int_t iPMD=0; |
319 | Int_t iRICH=0; |
320 | Int_t iSHIL=0; |
321 | Int_t iSTART=0; |
322 | Int_t iTOF=0; |
323 | Int_t iTPC=0; |
324 | Int_t iTRD=0; |
325 | Int_t iZDC=0; |
326 | |
327 | //=================== Alice BODY parameters ============================= |
328 | AliBODY *BODY = new AliBODY("BODY","Alice envelop"); |
329 | |
330 | if(iMAG) { |
331 | //=================== MAG parameters ============================ |
332 | // --- Start with Magnet since detector layouts may be depending --- |
333 | // --- on the selected Magnet dimensions --- |
334 | AliMAG *MAG = new AliMAG("MAG","Magnet"); |
335 | } |
336 | |
337 | |
338 | if(iABSO) { |
339 | //=================== ABSO parameters ============================ |
340 | AliABSO *ABSO = new AliABSOv0("ABSO","Muon Absorber"); |
341 | } |
342 | |
343 | if(iDIPO) { |
344 | //=================== DIPO parameters ============================ |
345 | |
346 | AliDIPO *DIPO = new AliDIPOv2("DIPO","Dipole version 2"); |
347 | } |
348 | |
349 | if(iHALL) { |
350 | //=================== HALL parameters ============================ |
351 | |
352 | AliHALL *HALL = new AliHALL("HALL","Alice Hall"); |
353 | } |
354 | |
355 | |
356 | if(iFRAME) { |
357 | //=================== FRAME parameters ============================ |
358 | |
359 | AliFRAME *FRAME = new AliFRAMEv2("FRAME","Space Frame"); |
360 | |
361 | } |
362 | |
363 | if(iSHIL) { |
364 | //=================== SHIL parameters ============================ |
365 | |
366 | AliSHIL *SHIL = new AliSHILv2("SHIL","Shielding"); |
367 | } |
368 | |
369 | |
370 | if(iPIPE) { |
371 | //=================== PIPE parameters ============================ |
372 | |
373 | AliPIPE *PIPE = new AliPIPEv0("PIPE","Beam Pipe"); |
374 | } |
375 | |
376 | |
377 | if(iITS) { |
378 | |
379 | //=================== ITS parameters ============================ |
380 | // |
381 | // As the innermost detector in ALICE, the Inner Tracking System "impacts" on |
382 | // almost all other detectors. This involves the fact that the ITS geometry |
383 | // still has several options to be followed in parallel in order to determine |
384 | // the best set-up which minimizes the induced background. All the geometries |
385 | // available to date are described in the following. Read carefully the comments |
386 | // and use the default version (the only one uncommented) unless you are making |
387 | // comparisons and you know what you are doing. In this case just uncomment the |
388 | // ITS geometry you want to use and run Aliroot. |
389 | // |
390 | // Detailed geometries: |
391 | // |
392 | // |
393 | //AliITS *ITS = new AliITSv5symm("ITS","Updated ITS TDR detailed version with symmetric services"); |
394 | // |
395 | //AliITS *ITS = new AliITSv5asymm("ITS","Updates ITS TDR detailed version with asymmetric services"); |
396 | // |
7005f584 |
397 | AliITSvPPRasymmFMD *ITS = new AliITSvPPRasymmFMD("ITS","New ITS PPR detailed version with asymmetric services"); |
6ccd5a72 |
398 | ITS->SetMinorVersion(2); // don't touch this parameter if you're not an ITS developer |
399 | ITS->SetReadDet(kFALSE); // don't touch this parameter if you're not an ITS developer |
400 | ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det"); // don't touch this parameter if you're not an ITS developer |
401 | ITS->SetThicknessDet1(200.); // detector thickness on layer 1 must be in the range [150,300] |
402 | ITS->SetThicknessDet2(200.); // detector thickness on layer 2 must be in the range [150,300] |
403 | ITS->SetThicknessChip1(200.); // chip thickness on layer 1 must be in the range [100,300] |
404 | ITS->SetThicknessChip2(200.); // chip thickness on layer 2 must be in the range [100,300] |
405 | ITS->SetRails(1); // 1 --> rails in ; 0 --> rails out |
406 | ITS->SetCoolingFluid(1); // 1 --> water ; 0 --> freon |
407 | // |
408 | //AliITSvPPRsymm *ITS = new AliITSvPPRsymm("ITS","New ITS PPR detailed version with symmetric services"); |
409 | //ITS->SetMinorVersion(2); // don't touch this parameter if you're not an ITS developer |
410 | //ITS->SetReadDet(kFALSE); // don't touch this parameter if you're not an ITS developer |
411 | //ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRsymm2.det"); // don't touch this parameter if you're not an ITS developer |
412 | //ITS->SetThicknessDet1(300.); // detector thickness on layer 1 must be in the range [150,300] |
413 | //ITS->SetThicknessDet2(300.); // detector thickness on layer 2 must be in the range [150,300] |
414 | //ITS->SetThicknessChip1(300.); // chip thickness on layer 1 must be in the range [100,300] |
415 | //ITS->SetThicknessChip2(300.); // chip thickness on layer 2 must be in the range [100,300] |
416 | //ITS->SetRails(1); // 1 --> rails in ; 0 --> rails out |
417 | //ITS->SetCoolingFluid(1); // 1 --> water ; 0 --> freon |
418 | // |
419 | // |
420 | // Coarse geometries (warning: no hits are produced with these coarse geometries and they unuseful |
421 | // for reconstruction !): |
422 | // |
423 | // |
424 | //AliITSvPPRcoarseasymm *ITS = new AliITSvPPRcoarseasymm("ITS","New ITS PPR coarse version with asymmetric services"); |
425 | //ITS->SetRails(1); // 1 --> rails in ; 0 --> rails out |
426 | //ITS->SetSupportMaterial(0); // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon |
427 | // |
428 | //AliITS *ITS = new AliITSvPPRcoarsesymm("ITS","New ITS PPR coarse version with symmetric services"); |
429 | //ITS->SetRails(1); // 1 --> rails in ; 0 --> rails out |
430 | //ITS->SetSupportMaterial(0); // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon |
431 | // |
432 | // |
433 | // |
434 | // Geant3 <-> EUCLID conversion |
435 | // ============================ |
436 | // |
437 | // SetEUCLID is a flag to output (=1) or not to output (=0) both geometry and |
438 | // media to two ASCII files (called by default ITSgeometry.euc and |
439 | // ITSgeometry.tme) in a format understandable to the CAD system EUCLID. |
440 | // The default (=0) means that you dont want to use this facility. |
441 | // |
442 | ITS->SetEUCLID(0); |
443 | } |
444 | |
445 | |
446 | if(iTPC) { |
26ca4b4a |
447 | //============================ TPC parameters =================== |
6ccd5a72 |
448 | AliTPC *TPC = new AliTPCv2("TPC","Default"); |
6ccd5a72 |
449 | } |
450 | |
451 | |
452 | if(iTOF) { |
453 | //=================== TOF parameters ============================ |
50655693 |
454 | AliTOF *TOF = new AliTOFv5T0("TOF","normal TOF"); |
6ccd5a72 |
455 | } |
456 | |
457 | if(iRICH) { |
458 | //=================== RICH parameters =========================== |
459 | AliRICH *RICH = new AliRICHv1("RICH","normal RICH"); |
460 | |
461 | } |
462 | |
463 | |
464 | if(iZDC) { |
465 | //=================== ZDC parameters ============================ |
466 | |
467 | AliZDC *ZDC = new AliZDCv1("ZDC","normal ZDC"); |
468 | } |
469 | |
470 | if(iCRT) { |
471 | //=================== CRT parameters ============================ |
472 | |
473 | AliCRT *CRT = new AliCRTv1("CRT","normal CRT"); |
474 | } |
475 | |
476 | if(iTRD) { |
477 | //=================== TRD parameters ============================ |
478 | |
479 | AliTRD *TRD = new AliTRDv1("TRD","TRD slow simulator"); |
6ccd5a72 |
480 | } |
481 | |
482 | if(iFMD) { |
483 | //=================== FMD parameters ============================ |
484 | |
485 | AliFMD *FMD = new AliFMDv0("FMD","normal FMD"); |
486 | } |
487 | |
488 | if(iMUON) { |
489 | //=================== MUON parameters =========================== |
490 | AliMUON *MUON = new AliMUONv1("MUON","default"); |
491 | } |
492 | |
493 | //=================== PHOS parameters =========================== |
494 | |
495 | if(iPHOS) { |
496 | AliPHOS *PHOS = new AliPHOSv1("PHOS","GPS2"); |
497 | } |
498 | |
499 | |
500 | //=================== CRT parameters =========================== |
501 | |
502 | if(iCRT) { |
503 | AliCRT *CRT = new AliCRTv1("CRT","Normal CRTGPS2"); |
504 | } |
505 | |
506 | |
507 | if(iPMD) { |
508 | //=================== PMD parameters ============================ |
509 | |
510 | AliPMD *PMD = new AliPMDv1("PMD","normal PMD"); |
511 | PMD->SetPAR(1., 1., 0.8, 0.02); |
512 | PMD->SetIN(6., 18., -580., 27., 27.); |
513 | PMD->SetGEO(0.0, 0.2, 4.); |
514 | PMD->SetPadSize(0.8, 1.0, 1.0, 1.5); |
515 | |
516 | } |
517 | |
518 | if(iSTART) { |
519 | //=================== START parameters ============================ |
520 | AliSTART *START = new AliSTARTv1("START","START Detector"); |
521 | } |
522 | |
523 | |
524 | } |
525 | // |
526 | // PYTHIA |
527 | // |
528 | AliGenPythia *PythiaHVQ(ProcessHvFl_t proc) { |
529 | |
de78d77f |
530 | AliGenPythia * gener = 0x0; |
531 | |
6ccd5a72 |
532 | switch(proc) { |
533 | case kCharmPbPb5500: |
534 | comment = comment.Append(" Charm in Pb-Pb at 5.5 TeV"); |
de78d77f |
535 | gener = new AliGenPythia(nEvts); |
6ccd5a72 |
536 | gener->SetProcess(kPyCharmPbPbMNR); |
537 | gener->SetStrucFunc(kCTEQ4L); |
538 | gener->SetPtHard(2.1,-1.0); |
539 | gener->SetEnergyCMS(5500.); |
540 | gener->SetNuclei(208,208); |
541 | break; |
542 | case kCharmpPb8800: |
543 | comment = comment.Append(" Charm in p-Pb at 8.8 TeV"); |
de78d77f |
544 | gener = new AliGenPythia(nEvts); |
6ccd5a72 |
545 | gener->SetProcess(kPyCharmpPbMNR); |
546 | gener->SetStrucFunc(kCTEQ4L); |
547 | gener->SetPtHard(2.1,-1.0); |
548 | gener->SetEnergyCMS(8800.); |
549 | gener->SetProjectile("P",1,1); |
550 | gener->SetTarget("Pb",208,82); |
551 | break; |
552 | case kCharmpp14000: |
553 | comment = comment.Append(" Charm in pp at 14 TeV"); |
de78d77f |
554 | gener = new AliGenPythia(nEvts); |
6ccd5a72 |
555 | gener->SetProcess(kPyCharmppMNR); |
556 | gener->SetStrucFunc(kCTEQ4L); |
557 | gener->SetPtHard(2.1,-1.0); |
558 | gener->SetEnergyCMS(14000.); |
559 | break; |
09977179 |
560 | case kCharmpp14000wmi: |
561 | comment = comment.Append(" Charm in pp at 14 TeV with mult. interactions"); |
562 | gener = new AliGenPythia(-1); |
563 | gener->SetProcess(kPyCharmppMNRwmi); |
564 | gener->SetStrucFunc(kCTEQ5L); |
565 | gener->SetPtHard(ptHardMin,ptHardMax); |
566 | gener->SetEnergyCMS(14000.); |
567 | break; |
6ccd5a72 |
568 | case kD0PbPb5500: |
569 | comment = comment.Append(" D0 in Pb-Pb at 5.5 TeV"); |
de78d77f |
570 | gener = new AliGenPythia(nEvts); |
6ccd5a72 |
571 | gener->SetProcess(kPyD0PbPbMNR); |
572 | gener->SetStrucFunc(kCTEQ4L); |
573 | gener->SetPtHard(2.1,-1.0); |
574 | gener->SetEnergyCMS(5500.); |
575 | gener->SetNuclei(208,208); |
576 | break; |
577 | case kD0pPb8800: |
578 | comment = comment.Append(" D0 in p-Pb at 8.8 TeV"); |
de78d77f |
579 | gener = new AliGenPythia(nEvts); |
6ccd5a72 |
580 | gener->SetProcess(kPyD0pPbMNR); |
581 | gener->SetStrucFunc(kCTEQ4L); |
582 | gener->SetPtHard(2.1,-1.0); |
583 | gener->SetEnergyCMS(8800.); |
584 | gener->SetProjectile("P",1,1); |
585 | gener->SetTarget("Pb",208,82); |
586 | break; |
587 | case kD0pp14000: |
588 | comment = comment.Append(" D0 in pp at 14 TeV"); |
de78d77f |
589 | gener = new AliGenPythia(nEvts); |
6ccd5a72 |
590 | gener->SetProcess(kPyD0ppMNR); |
591 | gener->SetStrucFunc(kCTEQ4L); |
72fc043d |
592 | gener->SetPtHard(2.1,-1.0); |
593 | gener->SetEnergyCMS(14000.); |
594 | break; |
595 | case kDPlusPbPb5500: |
596 | comment = comment.Append(" DPlus in Pb-Pb at 5.5 TeV"); |
597 | gener = new AliGenPythia(nEvts); |
598 | gener->SetProcess(kPyDPlusPbPbMNR); |
599 | gener->SetStrucFunc(kCTEQ4L); |
600 | gener->SetPtHard(2.1,-1.0); |
601 | gener->SetEnergyCMS(5500.); |
602 | gener->SetNuclei(208,208); |
603 | break; |
604 | case kDPluspPb8800: |
605 | comment = comment.Append(" DPlus in p-Pb at 8.8 TeV"); |
606 | gener = new AliGenPythia(nEvts); |
607 | gener->SetProcess(kPyDPluspPbMNR); |
608 | gener->SetStrucFunc(kCTEQ4L); |
609 | gener->SetPtHard(2.1,-1.0); |
610 | gener->SetEnergyCMS(8800.); |
611 | gener->SetProjectile("P",1,1); |
612 | gener->SetTarget("Pb",208,82); |
613 | break; |
614 | case kDPluspp14000: |
615 | comment = comment.Append(" DPlus in pp at 14 TeV"); |
616 | gener = new AliGenPythia(nEvts); |
617 | gener->SetProcess(kPyDPlusppMNR); |
618 | gener->SetStrucFunc(kCTEQ4L); |
6ccd5a72 |
619 | gener->SetPtHard(2.1,-1.0); |
620 | gener->SetEnergyCMS(14000.); |
621 | break; |
84388d23 |
622 | case kDPlusStrangePbPb5500: |
623 | comment = comment.Append(" DPlusStrange in Pb-Pb at 5.5 TeV"); |
624 | gener = new AliGenPythia(nEvts); |
625 | gener->SetProcess(kPyDPlusStrangePbPbMNR); |
626 | gener->SetStrucFunc(kCTEQ4L); |
627 | gener->SetPtHard(2.1,-1.0); |
628 | gener->SetEnergyCMS(5500.); |
629 | gener->SetNuclei(208,208); |
630 | break; |
631 | case kDPlusStrangepPb8800: |
632 | comment = comment.Append(" DPlusStrange in p-Pb at 8.8 TeV"); |
633 | gener = new AliGenPythia(nEvts); |
634 | gener->SetProcess(kPyDPlusStrangepPbMNR); |
635 | gener->SetStrucFunc(kCTEQ4L); |
636 | gener->SetPtHard(2.1,-1.0); |
637 | gener->SetEnergyCMS(8800.); |
638 | gener->SetProjectile("P",1,1); |
639 | gener->SetTarget("Pb",208,82); |
640 | break; |
641 | case kDPlusStrangepp14000: |
642 | comment = comment.Append(" DPlusStrange in pp at 14 TeV"); |
643 | gener = new AliGenPythia(nEvts); |
644 | gener->SetProcess(kPyDPlusStrangeppMNR); |
645 | gener->SetStrucFunc(kCTEQ4L); |
646 | gener->SetPtHard(2.1,-1.0); |
647 | gener->SetEnergyCMS(14000.); |
648 | break; |
6ccd5a72 |
649 | case kBeautyPbPb5500: |
650 | comment = comment.Append(" Beauty in Pb-Pb at 5.5 TeV"); |
7005f584 |
651 | gener = new AliGenPythia(nEvts); |
6ccd5a72 |
652 | gener->SetProcess(kPyBeautyPbPbMNR); |
653 | gener->SetStrucFunc(kCTEQ4L); |
654 | gener->SetPtHard(2.75,-1.0); |
655 | gener->SetEnergyCMS(5500.); |
656 | gener->SetNuclei(208,208); |
657 | break; |
658 | case kBeautypPb8800: |
659 | comment = comment.Append(" Beauty in p-Pb at 8.8 TeV"); |
de78d77f |
660 | gener = new AliGenPythia(nEvts); |
6ccd5a72 |
661 | gener->SetProcess(kPyBeautypPbMNR); |
662 | gener->SetStrucFunc(kCTEQ4L); |
663 | gener->SetPtHard(2.75,-1.0); |
664 | gener->SetEnergyCMS(8800.); |
665 | gener->SetProjectile("P",1,1); |
666 | gener->SetTarget("Pb",208,82); |
667 | break; |
668 | case kBeautypp14000: |
669 | comment = comment.Append(" Beauty in pp at 14 TeV"); |
de78d77f |
670 | gener = new AliGenPythia(nEvts); |
6ccd5a72 |
671 | gener->SetProcess(kPyBeautyppMNR); |
672 | gener->SetStrucFunc(kCTEQ4L); |
673 | gener->SetPtHard(2.75,-1.0); |
674 | gener->SetEnergyCMS(14000.); |
675 | break; |
09977179 |
676 | case kBeautypp14000wmi: |
677 | comment = comment.Append(" Beauty in pp at 14 TeV with mult. interactions"); |
678 | gener = new AliGenPythia(-1); |
679 | gener->SetProcess(kPyBeautyppMNRwmi); |
680 | gener->SetStrucFunc(kCTEQ5L); |
681 | gener->SetPtHard(ptHardMin,ptHardMax); |
682 | gener->SetEnergyCMS(14000.); |
683 | break; |
6ccd5a72 |
684 | } |
685 | |
686 | return gener; |
687 | } |
688 | |
689 | |
690 | |
691 | |
692 | |