]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVGEN/AliPythia.cxx
New options kPi0Flat y kEtaFlat (Gustavo Conesa)
[u/mrichter/AliRoot.git] / EVGEN / AliPythia.cxx
CommitLineData
4c039060 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/*
17$Log$
b0e7c3be 18Revision 1.20 2002/03/03 13:48:50 morsch
19Option kPyCharmPbMNR added. Produce charm pairs in agreement with MNR
20NLO calculations (Nicola Carrer).
21
fbd1348b 22Revision 1.19 2002/02/20 08:52:20 morsch
23Correct documentation of SetNuclei method.
24
bdc9d08a 25Revision 1.18 2002/02/07 10:43:06 morsch
26Tuned pp-min.bias settings (M.Monteno, R.Ugoccioni and N.Carrer)
27
2afdd95f 28Revision 1.17 2001/12/19 15:40:43 morsch
29For kPyJets enforce simple jet topology, i.e no initial or final state
30gluon radiation and no primordial pT.
31
5ceb826f 32Revision 1.16 2001/10/12 11:13:59 morsch
33Missing break statements added (thanks to Nicola Carrer)
34
02c16581 35Revision 1.15 2001/03/27 10:54:50 morsch
36Add ResetDecayTable() and SsetDecayTable() methods.
37
14ee1cd0 38Revision 1.14 2001/03/09 13:03:40 morsch
39Process_t and Struc_Func_t moved to AliPythia.h
40
f1a48a38 41Revision 1.13 2000/12/18 08:55:35 morsch
42Make AliPythia dependent generartors work with new scheme of random number generation
43
3356c022 44Revision 1.12 2000/11/30 07:12:50 alibrary
45Introducing new Rndm and QA classes
46
65fb704d 47Revision 1.11 2000/10/20 06:30:06 fca
48Use version 0 to avoid streamer generation
49
3be3dfc7 50Revision 1.10 2000/10/06 14:18:44 morsch
51Upper cut of prim. pT distribution set to 5. GeV
52
e8d05e6c 53Revision 1.9 2000/09/18 10:41:35 morsch
54Add possibility to use nuclear structure functions from PDF library V8.
55
811826d8 56Revision 1.8 2000/09/06 14:26:24 morsch
57Decayer functionality of AliPythia has been moved to AliDecayerPythia.
58Class is now a singleton.
59
95b811fe 60Revision 1.7 2000/06/09 20:34:50 morsch
61All coding rule violations except RS3 corrected
62
f87cfe57 63Revision 1.6 1999/11/09 07:38:48 fca
64Changes for compatibility with version 2.23 of ROOT
65
084c1b4a 66Revision 1.5 1999/11/03 17:43:20 fca
67New version from G.Martinez & A.Morsch
68
886b6f73 69Revision 1.4 1999/09/29 09:24:14 fca
70Introduction of the Copyright and cvs Log
71
4c039060 72*/
73
75c6d54e 74
fe4da5cc 75#include "AliPythia.h"
f87cfe57 76
fe4da5cc 77ClassImp(AliPythia)
78
fe4da5cc 79//_____________________________________________________________________________
80
95b811fe 81AliPythia* AliPythia::fgAliPythia=NULL;
fe4da5cc 82
75c6d54e 83AliPythia::AliPythia()
84{
95b811fe 85// Default Constructor
3356c022 86//
87// Set random number
88 if (!sRandom) sRandom=fRandom;
14ee1cd0 89
fe4da5cc 90}
91
92void AliPythia::ProcInit(Process_t process, Float_t energy, StrucFunc_t strucfunc)
93{
f87cfe57 94// Initialise the process to generate
fe4da5cc 95 fProcess = process;
96 fEcms = energy;
97 fStrucFunc = strucfunc;
98// don't decay p0
95b811fe 99 SetMDCY(Pycomp(111),1,0);
fe4da5cc 100// select structure function
101 SetMSTP(52,2);
102 SetMSTP(51,strucfunc);
103//
104// Pythia initialisation for selected processes//
105//
106// Make MSEL clean
107//
108 for (Int_t i=1; i<= 200; i++) {
109 SetMSUB(i,0);
110 }
111// select charm production
112 switch (process)
113 {
f1a48a38 114 case kPyCharm:
fe4da5cc 115 SetMSEL(4);
116//
117// heavy quark masses
118
119 SetPMAS(4,1,1.2);
5ceb826f 120 SetMSTU(16,2);
fe4da5cc 121//
122// primordial pT
123 SetMSTP(91,1);
e8d05e6c 124 SetPARP(91,1.);
125 SetPARP(93,5.);
fe4da5cc 126//
127 break;
f1a48a38 128 case kPyBeauty:
fe4da5cc 129 SetMSEL(5);
130 SetPMAS(5,1,4.75);
5ceb826f 131 SetMSTU(16,2);
fe4da5cc 132 break;
f1a48a38 133 case kPyJpsi:
fe4da5cc 134 SetMSEL(0);
135// gg->J/Psi g
136 SetMSUB(86,1);
137 break;
f1a48a38 138 case kPyJpsiChi:
fe4da5cc 139 SetMSEL(0);
140// gg->J/Psi g
141 SetMSUB(86,1);
142// gg-> chi_0c g
143 SetMSUB(87,1);
144// gg-> chi_1c g
145 SetMSUB(88,1);
146// gg-> chi_2c g
147 SetMSUB(89,1);
02c16581 148 break;
f1a48a38 149 case kPyCharmUnforced:
fe4da5cc 150 SetMSEL(0);
151// gq->qg
152 SetMSUB(28,1);
153// gg->qq
154 SetMSUB(53,1);
155// gg->gg
156 SetMSUB(68,1);
02c16581 157 break;
f1a48a38 158 case kPyBeautyUnforced:
fe4da5cc 159 SetMSEL(0);
160// gq->qg
161 SetMSUB(28,1);
162// gg->qq
163 SetMSUB(53,1);
164// gg->gg
165 SetMSUB(68,1);
166 break;
f1a48a38 167 case kPyMb:
75c6d54e 168// Minimum Bias pp-Collisions
169//
75c6d54e 170//
171// select Pythia min. bias model
14ee1cd0 172 SetMSEL(0);
2afdd95f 173 SetMSUB(92,1); // single diffraction AB-->XB
174 SetMSUB(93,1); // single diffraction AB-->AX
175 SetMSUB(94,1); // double diffraction
176 SetMSUB(95,1); // low pt production
177 SetMSTP(81,1); // multiple interactions switched on
178 SetMSTP(82,3); // model with varying impact param. & a single Gaussian
179 SetPARP(82,3.47); // set value pT_0 for turn-off of the cross section of
180 // multiple interaction at a reference energy = 14000 GeV
181 SetPARP(89,14000.); // reference energy for the above parameter
182 SetPARP(90,0.174); // set exponent for energy dependence of pT_0
f1a48a38 183 break;
184 case kPyJets:
185 SetMSEL(1);
5ceb826f 186// no initial state radiation
187 SetMSTP(61,0);
188// no final state radiation
189 SetMSTP(71,0);
190// no primordial pT
191 SetMSTP(91,0);
192// SetMSTP(111,0);
193 SetMSTU(16,1);
194 SetMSTJ(1,1);
195
f1a48a38 196 break;
197 case kPyDirectGamma:
198 SetMSEL(10);
199 break;
fbd1348b 200 case kPyCharmPbMNR:
b0e7c3be 201 case kPyD0PbMNR:
fbd1348b 202 // Tuning of Pythia parameters aimed to get a resonable agreement
203 // between with the NLO calculation by Mangano, Nason, Ridolfi for the
204 // c-cbar single inclusive and double differential distributions.
205 // This parameter settings are meant to work with Pb-Pb collisions
206 // (AliGenPythia::SetNuclei) and with kCTEQ_4L PDFs.
207 // To get a good agreement the minimum ptHard (AliGenPythia::SetPtHard)
208 // has to be set to 2.1GeV. Example in ConfigCharmPPR.C.
209
210 // All QCD processes
211 SetMSEL(1);
212
213 // No multiple interactions
214 SetMSTP(81,0);
215 SetPARP(81,0.0);
216 SetPARP(82,0.0);
217
218 // Initial/final parton shower on (Pythia default)
219 SetMSTP(61,1);
220 SetMSTP(71,1);
221
222 // 2nd order alpha_s
223 SetMSTP(2,2);
224
225 // QCD scales
226 SetMSTP(32,2);
227 SetPARP(34,1.0);
228
229 // Intrinsic <kT^2>
230 SetMSTP(91,1);
231 SetPARP(91,1.304);
232 SetPARP(93,6.52);
233
234 // Set c-quark mass
235 SetPMAS(4,1,1.2);
236
237 break;
fe4da5cc 238 }
239//
240// Initialize PYTHIA
2afdd95f 241 SetMSTP(41,1); // all resonance decays switched on
75c6d54e 242
95b811fe 243 Initialize("CMS","p","p",fEcms);
14ee1cd0 244
fe4da5cc 245}
246
95b811fe 247Int_t AliPythia::CheckedLuComp(Int_t kf)
fe4da5cc 248{
95b811fe 249// Check Lund particle code (for debugging)
250 Int_t kc=Pycomp(kf);
251 printf("\n Lucomp kf,kc %d %d",kf,kc);
252 return kc;
fe4da5cc 253}
254
811826d8 255void AliPythia::SetNuclei(Int_t a1, Int_t a2)
256{
257// Treat protons as inside nuclei with mass numbers a1 and a2
258// The MSTP array in the PYPARS common block is used to enable and
259// select the nuclear structure functions.
260// MSTP(52) : (D=1) choice of proton and nuclear structure-function library
261// =1: internal PYTHIA acording to MSTP(51)
262// =2: PDFLIB proton s.f., with MSTP(51) = 1000xNGROUP+NSET
bdc9d08a 263// If the following mass number both not equal zero, nuclear corrections of the stf are used.
811826d8 264// MSTP(192) : Mass number of nucleus side 1
265// MSTP(193) : Mass number of nucleus side 2
bdc9d08a 266 SetMSTP(52,2);
811826d8 267 SetMSTP(192, a1);
268 SetMSTP(193, a2);
269}
270
271
95b811fe 272AliPythia* AliPythia::Instance()
3356c022 273{
274// Set random number generator
95b811fe 275 if (fgAliPythia) {
276 return fgAliPythia;
277 } else {
278 fgAliPythia = new AliPythia();
279 return fgAliPythia;
fe4da5cc 280 }
fe4da5cc 281}
fe4da5cc 282
14ee1cd0 283void AliPythia::PrintParticles()
284{
285// Print list of particl properties
286 Int_t np = 0;
287
288 for (Int_t kf=0; kf<1000000; kf++) {
289 for (Int_t c = 1; c > -2; c-=2) {
290
291 Int_t kc = Pycomp(c*kf);
292 if (kc) {
293 Float_t mass = GetPMAS(kc,1);
294 Float_t width = GetPMAS(kc,2);
295 Float_t tau = GetPMAS(kc,4);
296
297 char* name = new char[8];
298 Pyname(kf,name);
299
300 np++;
301
302 printf("\n mass, width, tau: %6d %s %10.3f %10.3e %10.3e",
303 c*kf, name, mass, width, tau);
304 }
305 }
306 }
307 printf("\n Number of particles %d \n \n", np);
308}
309
310void AliPythia::ResetDecayTable()
311{
312// Set default values for pythia decay switches
313 Int_t i;
314 for (i = 1; i < 501; i++) SetMDCY(i,1,fDefMDCY[i]);
315 for (i = 1; i < 2001; i++) SetMDME(i,1,fDefMDME[i]);
316}
317
318void AliPythia::SetDecayTable()
319{
320// Set default values for pythia decay switches
321//
322 Int_t i;
323 for (i = 1; i < 501; i++) fDefMDCY[i] = GetMDCY(i,1);
324 for (i = 1; i < 2001; i++) fDefMDME[i] = GetMDME(i,1);
325}
fe4da5cc 326
327
3356c022 328#ifndef WIN32
329#define pyr pyr_
330#define pyrset pyrset_
331#define pyrget pyrget_
332#else
333#define pyr PYR
334#define pyrset PYRSET
335#define pyrget PYRGET
336#endif
337
338extern "C" {
339 Double_t pyr(Int_t*) {return sRandom->Rndm();}
340 void pyrset(Int_t*,Int_t*) {}
341 void pyrget(Int_t*,Int_t*) {}
342}
343
fe4da5cc 344
345
346