1 // SigmaOnia.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2008 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