9 #ifndef Pythia8_SigmaOnia_H
10 #define Pythia8_SigmaOnia_H
12 #include "Pythia8/SigmaProcess.h"
20 class SigmaOniaSetup {
26 SigmaOniaSetup(Info* infoPtrIn, Settings* settingsPtrIn,
27 ParticleData* particleDataPtrIn,
int flavourIn);
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);
33 void setupSigma2dbl(vector<SigmaProcess*> &procs,
bool oniaIn =
false);
38 void initStates(
string wave,
const vector<int> &states,
39 vector<int> &jnums,
bool &valid,
bool duplicate =
true);
40 void initSettings(
string wave,
unsigned int size,
41 const vector<string> &names, vector< vector<double> > &pvecs,
bool &valid);
42 void initSettings(
string wave,
unsigned int size,
43 const vector<string> &names, vector< vector<bool> > &fvecs,
bool &valid);
47 Settings* settingsPtr;
48 ParticleData* particleDataPtr;
51 vector<int> states3S1, states3PJ, states3DJ, spins3S1, spins3PJ, spins3DJ,
52 states1Dbl3S1, states2Dbl3S1, spins1Dbl3S1, spins2Dbl3S1;
53 vector<string> meNames3S1, meNames3PJ, meNames3DJ, meNamesDbl3S1;
54 vector< vector<double> > mes3S1, mes3PJ, mes3DJ, mesDbl3S1;
55 vector<string> ggNames3S1, qgNames3S1, qqNames3S1,
56 ggNames3PJ, qgNames3PJ, qqNames3PJ, ggNames3DJ, qgNames3DJ, qqNames3DJ,
58 vector< vector<bool> > ggs3S1, qgs3S1, qqs3S1, ggs3PJ, qgs3PJ, qqs3PJ,
59 ggs3DJ, qgs3DJ, qqs3DJ, dbls3S1;
62 bool onia, onia3S1, onia3PJ, onia3DJ, oniaFlavour;
63 bool valid3S1, valid3PJ, valid3DJ, validDbl3S1;
76 class Sigma2gg2QQbar3S11g :
public Sigma2Process {
81 Sigma2gg2QQbar3S11g(
int idHadIn,
double oniumMEIn,
int codeIn) :
82 idHad(abs(idHadIn)), codeSave(codeIn), oniumME(oniumMEIn) {}
85 virtual void initProc();
88 virtual void sigmaKin();
91 virtual double sigmaHat() {
return sigma;}
94 virtual void setIdColAcol();
97 virtual string name()
const {
return nameSave;}
98 virtual int code()
const {
return codeSave;}
99 virtual string inFlux()
const {
return "gg";}
100 virtual int id3Mass()
const {
return idHad;}
107 double oniumME, sigma;
121 idHad(abs(idHadIn)), codeSave(codeIn), oniumME(oniumMEIn) {}
124 virtual void initProc();
127 virtual void sigmaKin();
130 virtual double sigmaHat() {
return sigma;}
133 virtual void setIdColAcol();
136 virtual string name()
const {
return nameSave;}
137 virtual int code()
const {
return codeSave;}
138 virtual string inFlux()
const {
return "gg";}
139 virtual int id3Mass()
const {
return idHad;}
146 double qEM2, oniumME, sigma;
160 idHad(idHadIn), jSave(jIn), codeSave(codeIn), oniumME(oniumMEIn) {}
163 virtual void initProc();
166 virtual void sigmaKin();
169 virtual double sigmaHat() {
return sigma;}
172 virtual void setIdColAcol();
175 virtual string name()
const {
return nameSave;}
176 virtual int code()
const {
return codeSave;}
177 virtual string inFlux()
const {
return "gg";}
178 virtual int id3Mass()
const {
return idHad;}
183 virtual string namePrefix()
const {
return "g g";}
184 virtual string namePostfix()
const {
return "g";}
185 string nameMidfix()
const {
return (codeSave - codeSave%100)/100
186 == 4 ?
"ccbar" :
"bbbar";}
189 int idHad, jSave, codeSave;
191 double oniumME, sigma;
199 class Sigma2qg2QQbar3PJ1q :
public Sigma2gg2QQbar3PJ1g {
204 Sigma2qg2QQbar3PJ1q(
int idHadIn,
double oniumMEIn,
int jIn,
int codeIn) :
205 Sigma2gg2QQbar3PJ1g(idHadIn, oniumMEIn, jIn, codeIn) {}
208 virtual void sigmaKin();
211 virtual void setIdColAcol();
214 virtual string inFlux()
const {
return "qg";}
219 string namePrefix()
const {
return "q g";}
220 string namePostfix()
const {
return "q";}
228 class Sigma2qqbar2QQbar3PJ1g :
public Sigma2gg2QQbar3PJ1g {
233 Sigma2qqbar2QQbar3PJ1g(
int idHadIn,
double oniumMEIn,
int jIn,
int codeIn) :
234 Sigma2gg2QQbar3PJ1g(idHadIn, oniumMEIn, jIn, codeIn) {}
237 virtual void sigmaKin();
240 virtual void setIdColAcol();
243 virtual string inFlux()
const {
return "qqbarSame";}
248 string namePrefix()
const {
return "q qbar";}
249 string namePostfix()
const {
return "g";}
257 class Sigma2gg2QQbar3DJ1g :
public Sigma2gg2QQbar3PJ1g {
262 Sigma2gg2QQbar3DJ1g(
int idHadIn,
double oniumMEIn,
int jIn,
int codeIn) :
263 Sigma2gg2QQbar3PJ1g(idHadIn, oniumMEIn, jIn, codeIn) {}
266 virtual void initProc();
269 virtual void sigmaKin();
277 class Sigma2gg2QQbarX8g :
public Sigma2Process {
282 Sigma2gg2QQbarX8g(
int idHadIn,
double oniumMEIn,
int stateIn,
283 double mSplitIn,
int codeIn) : idHad(idHadIn), stateSave(stateIn),
284 codeSave(codeIn), oniumME(oniumMEIn), mSplit(mSplitIn) {}
287 virtual void initProc();
290 virtual void sigmaKin();
293 virtual double sigmaHat() {
return sigma;}
296 virtual void setIdColAcol();
299 virtual string name()
const {
return nameSave;}
300 virtual int code()
const {
return codeSave;}
301 virtual string inFlux()
const {
return "gg";}
302 virtual int id3Mass()
const {
return idHad;}
307 virtual string namePrefix()
const {
return "g g";}
308 virtual string namePostfix()
const {
return "g";}
311 int idHad, stateSave, codeSave;
313 double oniumME, sigma, mSplit;
321 class Sigma2qg2QQbarX8q :
public Sigma2gg2QQbarX8g {
326 Sigma2qg2QQbarX8q(
int idHadIn,
double oniumMEIn,
int stateIn,
327 double mSplitIn,
int codeIn) :
328 Sigma2gg2QQbarX8g(idHadIn, oniumMEIn, stateIn, mSplitIn, codeIn) {}
331 virtual void sigmaKin();
334 virtual void setIdColAcol();
337 virtual string inFlux()
const {
return "qg";}
342 virtual string namePrefix()
const {
return "q g";}
343 virtual string namePostfix()
const {
return "q";}
352 class Sigma2qqbar2QQbarX8g :
public Sigma2gg2QQbarX8g {
357 Sigma2qqbar2QQbarX8g(
int idHadIn,
double oniumMEIn,
int stateIn,
358 double mSplitIn,
int codeIn) :
359 Sigma2gg2QQbarX8g(idHadIn, oniumMEIn, stateIn, mSplitIn, codeIn) {}
362 virtual void sigmaKin();
365 virtual void setIdColAcol();
368 virtual string inFlux()
const {
return "qqbarSame";}
373 virtual string namePrefix()
const {
return "q qbar";}
374 virtual string namePostfix()
const {
return "g";}
388 double oniumME1In,
double oniumME2In,
int codeIn) :
389 idHad1(abs(idHad1In)), idHad2(abs(idHad2In)), codeSave(codeIn),
390 oniumME1(oniumME1In), oniumME2(oniumME2In) {}
393 virtual void initProc();
396 virtual void sigmaKin();
399 virtual double sigmaHat() {
return sigma;}
402 virtual void setIdColAcol();
405 virtual string name()
const {
return nameSave;}
406 virtual int code()
const {
return codeSave;}
407 virtual string inFlux()
const {
return "gg";}
408 virtual int id3Mass()
const {
return idHad1;}
409 virtual int id4Mass()
const {
return idHad2;}
414 int idHad1, idHad2, codeSave;
416 double oniumME1, oniumME2, sigma;
431 double oniumME1In,
double oniumME2In,
int codeIn) :
432 idHad1(abs(idHad1In)), idHad2(abs(idHad2In)), codeSave(codeIn),
433 oniumME1(oniumME1In), oniumME2(oniumME2In) {}
436 virtual void initProc();
439 virtual void sigmaKin();
442 virtual double sigmaHat() {
return sigma;}
445 virtual void setIdColAcol();
448 virtual string name()
const {
return nameSave;}
449 virtual int code()
const {
return codeSave;}
450 virtual string inFlux()
const {
return "qqbarSame";}
451 virtual int id3Mass()
const {
return idHad1;}
452 virtual int id4Mass()
const {
return idHad2;}
457 int idHad1, idHad2, codeSave;
459 double m2, oniumME1, oniumME2, sigma;
467 #endif // Pythia8_SigmaOnia_H