1
// SigmaOnia.h is a part of the PYTHIA event generator.
2
// Copyright (C) 2012 Torbjorn Sjostrand.
3
// PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
4
// Please respect the MCnet Guidelines, see GUIDELINES for details.
6
// Header file for charmonia/bottomonia process differential cross sections.
7
// Contains classes derived from SigmaProcess via Sigma2Process.
9
#ifndef Pythia8_SigmaOnia_H
10
#define Pythia8_SigmaOnia_H
12
#include "SigmaProcess.h"
16
//==========================================================================
18
// A derived class for g g -> QQbar[3S1(1)] g (Q = c or b).
20
class Sigma2gg2QQbar3S11g : public Sigma2Process {
25
Sigma2gg2QQbar3S11g(int idIn, int codeIn) : idNew(idIn),
28
// Initialize process.
29
virtual void initProc();
31
// Calculate flavour-independent parts of cross section.
32
virtual void sigmaKin();
34
// Evaluate d(sigmaHat)/d(tHat).
35
virtual double sigmaHat() {return sigma;}
37
// Select flavour, colour and anticolour.
38
virtual void setIdColAcol();
40
// Info on the subprocess.
41
virtual string name() const {return nameSave;}
42
virtual int code() const {return codeSave;}
43
virtual string inFlux() const {return "gg";}
44
virtual int id3Mass() const {return idHad;}
48
// Values stored for process type and colour flow selection.
49
int idNew, idHad, codeSave;
51
double oniumME, sigma;
55
//==========================================================================
57
// A derived class for g g -> QQbar[3PJ(1)] g (Q = c or b, J = 0, 1 or 2).
59
class Sigma2gg2QQbar3PJ1g : public Sigma2Process {
64
Sigma2gg2QQbar3PJ1g(int idIn, int jIn, int codeIn) : idNew(idIn),
65
jSave(jIn), codeSave(codeIn) {}
67
// Initialize process.
68
virtual void initProc();
70
// Calculate flavour-independent parts of cross section.
71
virtual void sigmaKin();
73
// Evaluate d(sigmaHat)/d(tHat).
74
virtual double sigmaHat() {return sigma;}
76
// Select flavour, colour and anticolour.
77
virtual void setIdColAcol();
79
// Info on the subprocess.
80
virtual string name() const {return nameSave;}
81
virtual int code() const {return codeSave;}
82
virtual string inFlux() const {return "gg";}
83
virtual int id3Mass() const {return idHad;}
87
// Values stored for process type and colour flow selection.
88
int idNew, idHad, jSave, codeSave;
90
double oniumME, sigma;
94
//==========================================================================
96
// A derived class for q g -> QQbar[3PJ(1)] q (Q = c or b, J = 0, 1 or 2).
98
class Sigma2qg2QQbar3PJ1q : public Sigma2Process {
103
Sigma2qg2QQbar3PJ1q(int idIn, int jIn, int codeIn) : idNew(idIn),
104
jSave(jIn), codeSave(codeIn) {}
106
// Initialize process.
107
virtual void initProc();
109
// Calculate flavour-independent parts of cross section.
110
virtual void sigmaKin();
112
// Evaluate d(sigmaHat)/d(tHat).
113
virtual double sigmaHat() {return sigma;}
115
// Select flavour, colour and anticolour.
116
virtual void setIdColAcol();
118
// Info on the subprocess.
119
virtual string name() const {return nameSave;}
120
virtual int code() const {return codeSave;}
121
virtual string inFlux() const {return "qg";}
122
virtual int id3Mass() const {return idHad;}
126
// Values stored for process type and colour flow selection.
127
int idNew, idHad, jSave, codeSave;
129
double oniumME, sigma;
133
//==========================================================================
135
// A derived class for q qbar -> QQbar[3PJ(1)] g (Q = c or b, J = 0, 1 or 2).
137
class Sigma2qqbar2QQbar3PJ1g : public Sigma2Process {
142
Sigma2qqbar2QQbar3PJ1g(int idIn, int jIn, int codeIn) : idNew(idIn),
143
jSave(jIn), codeSave(codeIn) {}
145
// Initialize process.
146
virtual void initProc();
148
// Calculate flavour-independent parts of cross section.
149
virtual void sigmaKin();
151
// Evaluate d(sigmaHat)/d(tHat).
152
virtual double sigmaHat() {return sigma;}
154
// Select flavour, colour and anticolour.
155
virtual void setIdColAcol();
157
// Info on the subprocess.
158
virtual string name() const {return nameSave;}
159
virtual int code() const {return codeSave;}
160
virtual string inFlux() const {return "qqbarSame";}
161
virtual int id3Mass() const {return idHad;}
165
// Values stored for process type and colour flow selection.
166
int idNew, idHad, jSave, codeSave;
168
double oniumME, sigma;
172
//==========================================================================
174
// A derived class for g g -> QQbar[X(8)] g (Q = c or b, X = 3S1, 1S0 or 3PJ).
176
class Sigma2gg2QQbarX8g : public Sigma2Process {
181
Sigma2gg2QQbarX8g(int idIn, int stateIn, int codeIn) : idNew(idIn),
182
stateSave(stateIn), codeSave(codeIn) {}
184
// Initialize process.
185
virtual void initProc();
187
// Calculate flavour-independent parts of cross section.
188
virtual void sigmaKin();
190
// Evaluate d(sigmaHat)/d(tHat).
191
virtual double sigmaHat() {return sigma;}
193
// Select flavour, colour and anticolour.
194
virtual void setIdColAcol();
196
// Info on the subprocess.
197
virtual string name() const {return nameSave;}
198
virtual int code() const {return codeSave;}
199
virtual string inFlux() const {return "gg";}
200
virtual int id3Mass() const {return idHad;}
204
// Values stored for process type and colour flow selection.
205
int idNew, idHad, stateSave, codeSave;
207
double oniumME, sigma;
211
//==========================================================================
213
// A derived class for q g -> QQbar[X(8)] q (Q = c or b, X = 3S1, 1S0 or 3PJ).
215
class Sigma2qg2QQbarX8q : public Sigma2Process {
220
Sigma2qg2QQbarX8q(int idIn, int stateIn, int codeIn) : idNew(idIn),
221
stateSave(stateIn), codeSave(codeIn) {}
223
// Initialize process.
224
virtual void initProc();
226
// Calculate flavour-independent parts of cross section.
227
virtual void sigmaKin();
229
// Evaluate d(sigmaHat)/d(tHat).
230
virtual double sigmaHat() {return sigma;}
232
// Select flavour, colour and anticolour.
233
virtual void setIdColAcol();
235
// Info on the subprocess.
236
virtual string name() const {return nameSave;}
237
virtual int code() const {return codeSave;}
238
virtual string inFlux() const {return "qg";}
239
virtual int id3Mass() const {return idHad;}
243
// Values stored for process type and colour flow selection.
244
int idNew, idHad, stateSave, codeSave;
246
double oniumME, sigma;
250
//==========================================================================
252
// A derived class for q qbar -> QQbar[X(8)] g (Q = c or b,
253
// X = 3S1, 1S0 or 3PJ).
255
class Sigma2qqbar2QQbarX8g : public Sigma2Process {
260
Sigma2qqbar2QQbarX8g(int idIn, int stateIn, int codeIn) : idNew(idIn),
261
stateSave(stateIn), codeSave(codeIn) {}
263
// Initialize process.
264
virtual void initProc();
266
// Calculate flavour-independent parts of cross section.
267
virtual void sigmaKin();
269
// Evaluate d(sigmaHat)/d(tHat).
270
virtual double sigmaHat() {return sigma;}
272
// Select flavour, colour and anticolour.
273
virtual void setIdColAcol();
275
// Info on the subprocess.
276
virtual string name() const {return nameSave;}
277
virtual int code() const {return codeSave;}
278
virtual string inFlux() const {return "qqbarSame";}
279
virtual int id3Mass() const {return idHad;}
283
// Values stored for process type and colour flow selection.
284
int idNew, idHad, stateSave, codeSave;
286
double oniumME, sigma;
290
//==========================================================================
292
} // end namespace Pythia8
294
#endif // Pythia8_SigmaOnia_H