9 #ifndef Pythia8_SigmaOnia_H
10 #define Pythia8_SigmaOnia_H
12 #include "Pythia8/SigmaProcess.h"
30 void setupSigma2gg(vector<SigmaProcess*> &procs,
bool oniaIn =
false);
31 void setupSigma2qg(vector<SigmaProcess*> &procs,
bool oniaIn =
false);
32 void setupSigma2qq(vector<SigmaProcess*> &procs,
bool oniaIn =
false);
37 void initStates(
string wave,
const vector<int> &states,
38 vector<int> &jnums,
bool &valid);
39 void initSettings(
string wave,
unsigned int size,
40 const vector<string> &names, vector< vector<double> > &pvecs,
bool &valid);
41 void initSettings(
string wave,
unsigned int size,
42 const vector<string> &names, vector< vector<bool> > &fvecs,
bool &valid);
50 vector<int> states3S1, states3PJ, states3DJ, spins3S1, spins3PJ, spins3DJ;
51 vector<string> meNames3S1, meNames3PJ, meNames3DJ;
52 vector< vector<double> > mes3S1, mes3PJ, mes3DJ;
53 vector<string> ggNames3S1, qgNames3S1, qqNames3S1,
54 ggNames3PJ, qgNames3PJ, qqNames3PJ, ggNames3DJ, qgNames3DJ, qqNames3DJ;
55 vector< vector<bool> > ggs3S1, qgs3S1, qqs3S1, ggs3PJ, qgs3PJ, qqs3PJ,
56 ggs3DJ, qgs3DJ, qqs3DJ;
59 bool onia, onia3S1, onia3PJ, onia3DJ, oniaFlavour;
60 bool valid3S1, valid3PJ, valid3DJ;
79 idHad(abs(idHadIn)), codeSave(codeIn), oniumME(oniumMEIn) {}
82 virtual void initProc();
85 virtual void sigmaKin();
88 virtual double sigmaHat() {
return sigma;}
91 virtual void setIdColAcol();
94 virtual string name()
const {
return nameSave;}
95 virtual int code()
const {
return codeSave;}
96 virtual string inFlux()
const {
return "gg";}
97 virtual int id3Mass()
const {
return idHad;}
104 double oniumME, sigma;
112 class Sigma2gg2QQbar3PJ1g :
public Sigma2Process {
117 Sigma2gg2QQbar3PJ1g(
int idHadIn,
double oniumMEIn,
int jIn,
int codeIn) :
118 idHad(idHadIn), jSave(jIn), codeSave(codeIn), oniumME(oniumMEIn) {}
121 virtual void initProc();
124 virtual void sigmaKin();
127 virtual double sigmaHat() {
return sigma;}
130 virtual void setIdColAcol();
133 virtual string name()
const {
return nameSave;}
134 virtual int code()
const {
return codeSave;}
135 virtual string inFlux()
const {
return "gg";}
136 virtual int id3Mass()
const {
return idHad;}
141 virtual string namePrefix()
const {
return "g g";}
142 virtual string namePostfix()
const {
return "g";}
143 string nameMidfix()
const {
return (codeSave - codeSave%100)/100
144 == 4 ?
"ccbar" :
"bbbar";}
147 int idHad, jSave, codeSave;
149 double oniumME, sigma;
157 class Sigma2qg2QQbar3PJ1q :
public Sigma2gg2QQbar3PJ1g {
162 Sigma2qg2QQbar3PJ1q(
int idHadIn,
double oniumMEIn,
int jIn,
int codeIn) :
163 Sigma2gg2QQbar3PJ1g(idHadIn, oniumMEIn, jIn, codeIn) {}
166 virtual void sigmaKin();
169 virtual void setIdColAcol();
172 virtual string inFlux()
const {
return "qg";}
177 string namePrefix()
const {
return "q g";}
178 string namePostfix()
const {
return "q";}
186 class Sigma2qqbar2QQbar3PJ1g :
public Sigma2gg2QQbar3PJ1g {
191 Sigma2qqbar2QQbar3PJ1g(
int idHadIn,
double oniumMEIn,
int jIn,
int codeIn) :
192 Sigma2gg2QQbar3PJ1g(idHadIn, oniumMEIn, jIn, codeIn) {}
195 virtual void sigmaKin();
198 virtual void setIdColAcol();
201 virtual string inFlux()
const {
return "qqbarSame";}
206 string namePrefix()
const {
return "q qbar";}
207 string namePostfix()
const {
return "g";}
224 virtual void initProc();
227 virtual void sigmaKin();
241 double mSplitIn,
int codeIn) : idHad(idHadIn), stateSave(stateIn),
242 codeSave(codeIn), oniumME(oniumMEIn), mSplit(mSplitIn) {}
245 virtual void initProc();
248 virtual void sigmaKin();
251 virtual double sigmaHat() {
return sigma;}
254 virtual void setIdColAcol();
257 virtual string name()
const {
return nameSave;}
258 virtual int code()
const {
return codeSave;}
259 virtual string inFlux()
const {
return "gg";}
260 virtual int id3Mass()
const {
return idHad;}
265 virtual string namePrefix()
const {
return "g g";}
266 virtual string namePostfix()
const {
return "g";}
269 int idHad, stateSave, codeSave;
271 double oniumME, sigma, mSplit;
279 class Sigma2qg2QQbarX8q :
public Sigma2gg2QQbarX8g {
284 Sigma2qg2QQbarX8q(
int idHadIn,
double oniumMEIn,
int stateIn,
285 double mSplitIn,
int codeIn) :
286 Sigma2gg2QQbarX8g(idHadIn, oniumMEIn, stateIn, mSplitIn, codeIn) {}
289 virtual void sigmaKin();
292 virtual void setIdColAcol();
295 virtual string inFlux()
const {
return "qg";}
300 virtual string namePrefix()
const {
return "q g";}
301 virtual string namePostfix()
const {
return "q";}
310 class Sigma2qqbar2QQbarX8g :
public Sigma2gg2QQbarX8g {
315 Sigma2qqbar2QQbarX8g(
int idHadIn,
double oniumMEIn,
int stateIn,
316 double mSplitIn,
int codeIn) :
317 Sigma2gg2QQbarX8g(idHadIn, oniumMEIn, stateIn, mSplitIn, codeIn) {}
320 virtual void sigmaKin();
323 virtual void setIdColAcol();
326 virtual string inFlux()
const {
return "qqbarSame";}
331 virtual string namePrefix()
const {
return "q qbar";}
332 virtual string namePostfix()
const {
return "g";}
340 #endif // Pythia8_SigmaOnia_H