9 #ifndef Pythia8_SigmaOnia_H
10 #define Pythia8_SigmaOnia_H
12 #include "Pythia8/SigmaProcess.h"
20 class SigmaOniaSetup {
25 SigmaOniaSetup() : infoPtr(), settingsPtr(), particleDataPtr(), onia(),
26 onia3S1(), onia3PJ(), onia3DJ(), oniaFlavour(), valid3S1(), valid3PJ(),
27 valid3DJ(), validDbl3S1(), flavour(), mSplit() {};
28 SigmaOniaSetup(Info* infoPtrIn,
int flavourIn);
31 void setupSigma2gg(vector<SigmaProcess*> &procs,
bool oniaIn =
false);
32 void setupSigma2qg(vector<SigmaProcess*> &procs,
bool oniaIn =
false);
33 void setupSigma2qq(vector<SigmaProcess*> &procs,
bool oniaIn =
false);
34 void setupSigma2dbl(vector<SigmaProcess*> &procs,
bool oniaIn =
false);
39 void initStates(
string wave,
const vector<int> &states,
40 vector<int> &jnums,
bool &valid,
bool duplicate =
true);
41 void initSettings(
string wave,
unsigned int size,
42 const vector<string> &names, vector< vector<double> > &pvecs,
bool &valid);
43 void initSettings(
string wave,
unsigned int size,
44 const vector<string> &names, vector< vector<bool> > &fvecs,
bool &valid);
48 Settings* settingsPtr;
49 ParticleData* particleDataPtr;
52 vector<int> states3S1, states3PJ, states3DJ, spins3S1, spins3PJ, spins3DJ,
53 states1Dbl3S1, states2Dbl3S1, spins1Dbl3S1, spins2Dbl3S1;
54 vector<string> meNames3S1, meNames3PJ, meNames3DJ, meNamesDbl3S1;
55 vector< vector<double> > mes3S1, mes3PJ, mes3DJ, mesDbl3S1;
56 vector<string> ggNames3S1, qgNames3S1, qqNames3S1,
57 ggNames3PJ, qgNames3PJ, qqNames3PJ, ggNames3DJ, qgNames3DJ, qqNames3DJ,
59 vector< vector<bool> > ggs3S1, qgs3S1, qqs3S1, ggs3PJ, qgs3PJ, qqs3PJ,
60 ggs3DJ, qgs3DJ, qqs3DJ, dbls3S1;
63 bool onia, onia3S1, onia3PJ, onia3DJ, oniaFlavour;
64 bool valid3S1, valid3PJ, valid3DJ, validDbl3S1;
77 class Sigma2gg2QQbar3S11g :
public Sigma2Process {
82 Sigma2gg2QQbar3S11g(
int idHadIn,
double oniumMEIn,
int codeIn) :
83 idHad(abs(idHadIn)), codeSave(codeIn), oniumME(oniumMEIn), sigma() {}
86 virtual void initProc();
89 virtual void sigmaKin();
92 virtual double sigmaHat() {
return sigma;}
95 virtual void setIdColAcol();
98 virtual string name()
const {
return nameSave;}
99 virtual int code()
const {
return codeSave;}
100 virtual string inFlux()
const {
return "gg";}
101 virtual int id3Mass()
const {
return idHad;}
108 double oniumME, sigma;
116 class Sigma2gg2QQbar3S11gm :
public Sigma2Process {
121 Sigma2gg2QQbar3S11gm(
int idHadIn,
double oniumMEIn,
int codeIn) :
122 idHad(abs(idHadIn)), codeSave(codeIn), qEM2(), oniumME(oniumMEIn),
126 virtual void initProc();
129 virtual void sigmaKin();
132 virtual double sigmaHat() {
return sigma;}
135 virtual void setIdColAcol();
138 virtual string name()
const {
return nameSave;}
139 virtual int code()
const {
return codeSave;}
140 virtual string inFlux()
const {
return "gg";}
141 virtual int id3Mass()
const {
return idHad;}
148 double qEM2, oniumME, sigma;
156 class Sigma2gg2QQbar3PJ1g :
public Sigma2Process {
161 Sigma2gg2QQbar3PJ1g(
int idHadIn,
double oniumMEIn,
int jIn,
int codeIn) :
162 idHad(idHadIn), jSave(jIn), codeSave(codeIn), oniumME(oniumMEIn), sigma()
166 virtual void initProc();
169 virtual void sigmaKin();
172 virtual double sigmaHat() {
return sigma;}
175 virtual void setIdColAcol();
178 virtual string name()
const {
return nameSave;}
179 virtual int code()
const {
return codeSave;}
180 virtual string inFlux()
const {
return "gg";}
181 virtual int id3Mass()
const {
return idHad;}
186 virtual string namePrefix()
const {
return "g g";}
187 virtual string namePostfix()
const {
return "g";}
188 string nameMidfix()
const {
return (codeSave - codeSave%100)/100
189 == 4 ?
"ccbar" :
"bbbar";}
192 int idHad, jSave, codeSave;
194 double oniumME, sigma;
202 class Sigma2qg2QQbar3PJ1q :
public Sigma2gg2QQbar3PJ1g {
207 Sigma2qg2QQbar3PJ1q(
int idHadIn,
double oniumMEIn,
int jIn,
int codeIn) :
208 Sigma2gg2QQbar3PJ1g(idHadIn, oniumMEIn, jIn, codeIn) {}
211 virtual void sigmaKin();
214 virtual void setIdColAcol();
217 virtual string inFlux()
const {
return "qg";}
222 string namePrefix()
const {
return "q g";}
223 string namePostfix()
const {
return "q";}
231 class Sigma2qqbar2QQbar3PJ1g :
public Sigma2gg2QQbar3PJ1g {
236 Sigma2qqbar2QQbar3PJ1g(
int idHadIn,
double oniumMEIn,
int jIn,
int codeIn) :
237 Sigma2gg2QQbar3PJ1g(idHadIn, oniumMEIn, jIn, codeIn) {}
240 virtual void sigmaKin();
243 virtual void setIdColAcol();
246 virtual string inFlux()
const {
return "qqbarSame";}
251 string namePrefix()
const {
return "q qbar";}
252 string namePostfix()
const {
return "g";}
260 class Sigma2gg2QQbar3DJ1g :
public Sigma2gg2QQbar3PJ1g {
265 Sigma2gg2QQbar3DJ1g(
int idHadIn,
double oniumMEIn,
int jIn,
int codeIn) :
266 Sigma2gg2QQbar3PJ1g(idHadIn, oniumMEIn, jIn, codeIn) {}
269 virtual void initProc();
272 virtual void sigmaKin();
280 class Sigma2gg2QQbarX8g :
public Sigma2Process {
285 Sigma2gg2QQbarX8g(
int idHadIn,
double oniumMEIn,
int stateIn,
286 double mSplitIn,
int codeIn) : idHad(idHadIn), stateSave(stateIn),
287 codeSave(codeIn), oniumME(oniumMEIn), sigma(), mSplit(mSplitIn) {}
290 virtual void initProc();
293 virtual void sigmaKin();
296 virtual double sigmaHat() {
return sigma;}
299 virtual void setIdColAcol();
302 virtual string name()
const {
return nameSave;}
303 virtual int code()
const {
return codeSave;}
304 virtual string inFlux()
const {
return "gg";}
305 virtual int id3Mass()
const {
return idHad;}
310 virtual string namePrefix()
const {
return "g g";}
311 virtual string namePostfix()
const {
return "g";}
314 int idHad, stateSave, codeSave;
316 double oniumME, sigma, mSplit;
324 class Sigma2qg2QQbarX8q :
public Sigma2gg2QQbarX8g {
329 Sigma2qg2QQbarX8q(
int idHadIn,
double oniumMEIn,
int stateIn,
330 double mSplitIn,
int codeIn) :
331 Sigma2gg2QQbarX8g(idHadIn, oniumMEIn, stateIn, mSplitIn, codeIn) {}
334 virtual void sigmaKin();
337 virtual void setIdColAcol();
340 virtual string inFlux()
const {
return "qg";}
345 virtual string namePrefix()
const {
return "q g";}
346 virtual string namePostfix()
const {
return "q";}
355 class Sigma2qqbar2QQbarX8g :
public Sigma2gg2QQbarX8g {
360 Sigma2qqbar2QQbarX8g(
int idHadIn,
double oniumMEIn,
int stateIn,
361 double mSplitIn,
int codeIn) :
362 Sigma2gg2QQbarX8g(idHadIn, oniumMEIn, stateIn, mSplitIn, codeIn) {}
365 virtual void sigmaKin();
368 virtual void setIdColAcol();
371 virtual string inFlux()
const {
return "qqbarSame";}
376 virtual string namePrefix()
const {
return "q qbar";}
377 virtual string namePostfix()
const {
return "g";}
385 class Sigma2gg2QQbar3S11QQbar3S11 :
public Sigma2Process {
390 Sigma2gg2QQbar3S11QQbar3S11(
int idHad1In,
int idHad2In,
391 double oniumME1In,
double oniumME2In,
int codeIn) :
392 idHad1(abs(idHad1In)), idHad2(abs(idHad2In)), codeSave(codeIn),
393 oniumME1(oniumME1In), oniumME2(oniumME2In), sigma() {}
396 virtual void initProc();
399 virtual void sigmaKin();
402 virtual double sigmaHat() {
return sigma;}
405 virtual void setIdColAcol();
408 virtual string name()
const {
return nameSave;}
409 virtual int code()
const {
return codeSave;}
410 virtual string inFlux()
const {
return "gg";}
411 virtual int id3Mass()
const {
return idHad1;}
412 virtual int id4Mass()
const {
return idHad2;}
417 int idHad1, idHad2, codeSave;
419 double oniumME1, oniumME2, sigma;
428 class Sigma2qqbar2QQbar3S11QQbar3S11 :
public Sigma2Process {
433 Sigma2qqbar2QQbar3S11QQbar3S11(
int idHad1In,
int idHad2In,
434 double oniumME1In,
double oniumME2In,
int codeIn) :
435 idHad1(abs(idHad1In)), idHad2(abs(idHad2In)), codeSave(codeIn), m2(),
436 oniumME1(oniumME1In), oniumME2(oniumME2In), sigma() {}
439 virtual void initProc();
442 virtual void sigmaKin();
445 virtual double sigmaHat() {
return sigma;}
448 virtual void setIdColAcol();
451 virtual string name()
const {
return nameSave;}
452 virtual int code()
const {
return codeSave;}
453 virtual string inFlux()
const {
return "qqbarSame";}
454 virtual int id3Mass()
const {
return idHad1;}
455 virtual int id4Mass()
const {
return idHad2;}
460 int idHad1, idHad2, codeSave;
462 double m2, oniumME1, oniumME2, sigma;
470 #endif // Pythia8_SigmaOnia_H