Warning, file /include/Pythia8/SigmaOnia.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef Pythia8_SigmaOnia_H
0010 #define Pythia8_SigmaOnia_H
0011
0012 #include "Pythia8/SigmaProcess.h"
0013
0014 namespace Pythia8 {
0015
0016
0017
0018
0019
0020
0021 class OniaSetup {
0022
0023 protected:
0024
0025
0026 OniaSetup() = default;
0027 OniaSetup(Info* infoPtrIn, int flavourIn, string pre = "");
0028
0029
0030 void initStates(string wave, const vector<int> &states,
0031 vector<int> &jnums, bool &valid, bool duplicate = true);
0032 void initSettings(string wave, unsigned int size,
0033 const vector<string> &names, vector< vector<double> > &pvecs, bool &valid);
0034 void initSettings(string wave, unsigned int size,
0035 const vector<string> &names, vector< vector<bool> > &fvecs, bool &valid);
0036
0037
0038 Info* infoPtr = {};
0039 Logger* loggerPtr = {};
0040 Settings* settingsPtr = {};
0041 ParticleData* particleDataPtr = {};
0042
0043
0044 vector<int> states3S1, states3PJ, spins3S1, spins3PJ;
0045 vector<string> meNames3S1, meNames3PJ;
0046 vector< vector<double> > mes3S1, mes3PJ;
0047
0048
0049 bool onia{}, onia3S1{}, onia3PJ{}, oniaFlavour{},
0050 valid3S1{true}, valid3PJ{true};
0051 int flavour{};
0052 string cat, key;
0053
0054
0055 double mSplit{};
0056
0057 };
0058
0059
0060
0061
0062
0063 class SigmaOniaSetup : public OniaSetup {
0064
0065 public:
0066
0067
0068 SigmaOniaSetup() = default;
0069 SigmaOniaSetup(Info* infoPtrIn, int flavourIn);
0070
0071
0072 void setupSigma2gg(vector<SigmaProcessPtr> &procs, bool oniaIn = false);
0073 void setupSigma2qg(vector<SigmaProcessPtr> &procs, bool oniaIn = false);
0074 void setupSigma2qq(vector<SigmaProcessPtr> &procs, bool oniaIn = false);
0075
0076 private:
0077
0078
0079 bool onia3DJ{true}, valid3DJ{true}, validDbl3S1{true};
0080
0081
0082 vector<int> states3DJ, spins3DJ, states1Dbl3S1, states2Dbl3S1, spins1Dbl3S1,
0083 spins2Dbl3S1;
0084 vector<string> meNames3DJ, meNamesDbl3S1;
0085 vector< vector<double> > mes3DJ, mesDbl3S1;
0086 vector<string> ggNames3S1, qgNames3S1, qqNames3S1,
0087 ggNames3PJ, qgNames3PJ, qqNames3PJ, ggNames3DJ, qgNames3DJ, qqNames3DJ,
0088 dblNames3S1;
0089 vector< vector<bool> > ggs3S1, qgs3S1, qqs3S1, ggs3PJ, qgs3PJ, qqs3PJ,
0090 ggs3DJ, qgs3DJ, qqs3DJ, dbls3S1;
0091
0092 };
0093
0094
0095
0096
0097
0098 class Sigma2gg2QQbar3S11g : public Sigma2Process {
0099
0100 public:
0101
0102
0103 Sigma2gg2QQbar3S11g(int idHadIn, double oniumMEIn, int codeIn) :
0104 idHad(abs(idHadIn)), codeSave(codeIn), oniumME(oniumMEIn), sigma() {}
0105
0106
0107 virtual void initProc();
0108
0109
0110 virtual void sigmaKin();
0111
0112
0113 virtual double sigmaHat() {return sigma;}
0114
0115
0116 virtual void setIdColAcol();
0117
0118
0119 virtual string name() const {return nameSave;}
0120 virtual int code() const {return codeSave;}
0121 virtual string inFlux() const {return "gg";}
0122 virtual int id3Mass() const {return idHad;}
0123
0124 private:
0125
0126
0127 int idHad, codeSave;
0128 string nameSave;
0129 double oniumME, sigma;
0130
0131 };
0132
0133
0134
0135
0136
0137 class Sigma2gg2QQbar3S11gm : public Sigma2Process {
0138
0139 public:
0140
0141
0142 Sigma2gg2QQbar3S11gm(int idHadIn, double oniumMEIn, int codeIn) :
0143 idHad(abs(idHadIn)), codeSave(codeIn), qEM2(), oniumME(oniumMEIn),
0144 sigma() {}
0145
0146
0147 virtual void initProc();
0148
0149
0150 virtual void sigmaKin();
0151
0152
0153 virtual double sigmaHat() {return sigma;}
0154
0155
0156 virtual void setIdColAcol();
0157
0158
0159 virtual string name() const {return nameSave;}
0160 virtual int code() const {return codeSave;}
0161 virtual string inFlux() const {return "gg";}
0162 virtual int id3Mass() const {return idHad;}
0163
0164 private:
0165
0166
0167 int idHad, codeSave;
0168 string nameSave;
0169 double qEM2, oniumME, sigma;
0170
0171 };
0172
0173
0174
0175
0176
0177 class Sigma2gg2QQbar3PJ1g : public Sigma2Process {
0178
0179 public:
0180
0181
0182 Sigma2gg2QQbar3PJ1g(int idHadIn, double oniumMEIn, int jIn, int codeIn) :
0183 idHad(idHadIn), jSave(jIn), codeSave(codeIn), oniumME(oniumMEIn), sigma()
0184 {}
0185
0186
0187 virtual void initProc();
0188
0189
0190 virtual void sigmaKin();
0191
0192
0193 virtual double sigmaHat() {return sigma;}
0194
0195
0196 virtual void setIdColAcol();
0197
0198
0199 virtual string name() const {return nameSave;}
0200 virtual int code() const {return codeSave;}
0201 virtual string inFlux() const {return "gg";}
0202 virtual int id3Mass() const {return idHad;}
0203
0204 protected:
0205
0206
0207 virtual string namePrefix() const {return "g g";}
0208 virtual string namePostfix() const {return "g";}
0209 string nameMidfix() const {return (codeSave - codeSave%100)/100
0210 == 4 ? "ccbar" : "bbbar";}
0211
0212
0213 int idHad, jSave, codeSave;
0214 string nameSave;
0215 double oniumME, sigma;
0216
0217 };
0218
0219
0220
0221
0222
0223 class Sigma2qg2QQbar3PJ1q : public Sigma2gg2QQbar3PJ1g {
0224
0225 public:
0226
0227
0228 Sigma2qg2QQbar3PJ1q(int idHadIn, double oniumMEIn, int jIn, int codeIn) :
0229 Sigma2gg2QQbar3PJ1g(idHadIn, oniumMEIn, jIn, codeIn) {}
0230
0231
0232 virtual void sigmaKin();
0233
0234
0235 virtual void setIdColAcol();
0236
0237
0238 virtual string inFlux() const {return "qg";}
0239
0240 protected:
0241
0242
0243 string namePrefix() const {return "q g";}
0244 string namePostfix() const {return "q";}
0245
0246 };
0247
0248
0249
0250
0251
0252 class Sigma2qqbar2QQbar3PJ1g : public Sigma2gg2QQbar3PJ1g {
0253
0254 public:
0255
0256
0257 Sigma2qqbar2QQbar3PJ1g(int idHadIn, double oniumMEIn, int jIn, int codeIn) :
0258 Sigma2gg2QQbar3PJ1g(idHadIn, oniumMEIn, jIn, codeIn) {}
0259
0260
0261 virtual void sigmaKin();
0262
0263
0264 virtual void setIdColAcol();
0265
0266
0267 virtual string inFlux() const {return "qqbarSame";}
0268
0269 protected:
0270
0271
0272 string namePrefix() const {return "q qbar";}
0273 string namePostfix() const {return "g";}
0274
0275 };
0276
0277
0278
0279
0280
0281 class Sigma2gg2QQbar3DJ1g : public Sigma2gg2QQbar3PJ1g {
0282
0283 public:
0284
0285
0286 Sigma2gg2QQbar3DJ1g(int idHadIn, double oniumMEIn, int jIn, int codeIn) :
0287 Sigma2gg2QQbar3PJ1g(idHadIn, oniumMEIn, jIn, codeIn) {}
0288
0289
0290 virtual void initProc();
0291
0292
0293 virtual void sigmaKin();
0294
0295 };
0296
0297
0298
0299
0300
0301 class Sigma2gg2QQbarX8g : public Sigma2Process {
0302
0303 public:
0304
0305
0306 Sigma2gg2QQbarX8g(int idHadIn, double oniumMEIn, int stateIn,
0307 double mSplitIn, int codeIn) : idHad(idHadIn), stateSave(stateIn),
0308 codeSave(codeIn), oniumME(oniumMEIn), sigma(), mSplit(mSplitIn) {}
0309
0310
0311 virtual void initProc();
0312
0313
0314 virtual void sigmaKin();
0315
0316
0317 virtual double sigmaHat() {return sigma;}
0318
0319
0320 virtual void setIdColAcol();
0321
0322
0323 virtual string name() const {return nameSave;}
0324 virtual int code() const {return codeSave;}
0325 virtual string inFlux() const {return "gg";}
0326 virtual int id3Mass() const {return idHad;}
0327
0328 protected:
0329
0330
0331 virtual string namePrefix() const {return "g g";}
0332 virtual string namePostfix() const {return "g";}
0333
0334
0335 int idHad, stateSave, codeSave;
0336 string nameSave;
0337 double oniumME, sigma, mSplit;
0338
0339 };
0340
0341
0342
0343
0344
0345 class Sigma2qg2QQbarX8q : public Sigma2gg2QQbarX8g {
0346
0347 public:
0348
0349
0350 Sigma2qg2QQbarX8q(int idHadIn, double oniumMEIn, int stateIn,
0351 double mSplitIn, int codeIn) :
0352 Sigma2gg2QQbarX8g(idHadIn, oniumMEIn, stateIn, mSplitIn, codeIn) {}
0353
0354
0355 virtual void sigmaKin();
0356
0357
0358 virtual void setIdColAcol();
0359
0360
0361 virtual string inFlux() const {return "qg";}
0362
0363 protected:
0364
0365
0366 virtual string namePrefix() const {return "q g";}
0367 virtual string namePostfix() const {return "q";}
0368
0369 };
0370
0371
0372
0373
0374
0375
0376 class Sigma2qqbar2QQbarX8g : public Sigma2gg2QQbarX8g {
0377
0378 public:
0379
0380
0381 Sigma2qqbar2QQbarX8g(int idHadIn, double oniumMEIn, int stateIn,
0382 double mSplitIn, int codeIn) :
0383 Sigma2gg2QQbarX8g(idHadIn, oniumMEIn, stateIn, mSplitIn, codeIn) {}
0384
0385
0386 virtual void sigmaKin();
0387
0388
0389 virtual void setIdColAcol();
0390
0391
0392 virtual string inFlux() const {return "qqbarSame";}
0393
0394 protected:
0395
0396
0397 virtual string namePrefix() const {return "q qbar";}
0398 virtual string namePostfix() const {return "g";}
0399
0400 };
0401
0402
0403
0404
0405
0406 class Sigma2gg2QQbar3S11QQbar3S11 : public Sigma2Process {
0407
0408 public:
0409
0410
0411 Sigma2gg2QQbar3S11QQbar3S11(int idHad1In, int idHad2In,
0412 double oniumME1In, double oniumME2In, int codeIn) :
0413 idHad1(abs(idHad1In)), idHad2(abs(idHad2In)), codeSave(codeIn),
0414 oniumME1(oniumME1In), oniumME2(oniumME2In), sigma() {}
0415
0416
0417 virtual void initProc();
0418
0419
0420 virtual void sigmaKin();
0421
0422
0423 virtual double sigmaHat() {return sigma;}
0424
0425
0426 virtual void setIdColAcol();
0427
0428
0429 virtual string name() const {return nameSave;}
0430 virtual int code() const {return codeSave;}
0431 virtual string inFlux() const {return "gg";}
0432 virtual int id3Mass() const {return idHad1;}
0433 virtual int id4Mass() const {return idHad2;}
0434
0435 private:
0436
0437
0438 int idHad1, idHad2, codeSave;
0439 string nameSave;
0440 double oniumME1, oniumME2, sigma;
0441 vector<double> m2V;
0442
0443 };
0444
0445
0446
0447
0448
0449 class Sigma2qqbar2QQbar3S11QQbar3S11 : public Sigma2Process {
0450
0451 public:
0452
0453
0454 Sigma2qqbar2QQbar3S11QQbar3S11(int idHad1In, int idHad2In,
0455 double oniumME1In, double oniumME2In, int codeIn) :
0456 idHad1(abs(idHad1In)), idHad2(abs(idHad2In)), codeSave(codeIn), m2(),
0457 oniumME1(oniumME1In), oniumME2(oniumME2In), sigma() {}
0458
0459
0460 virtual void initProc();
0461
0462
0463 virtual void sigmaKin();
0464
0465
0466 virtual double sigmaHat() {return sigma;}
0467
0468
0469 virtual void setIdColAcol();
0470
0471
0472 virtual string name() const {return nameSave;}
0473 virtual int code() const {return codeSave;}
0474 virtual string inFlux() const {return "qqbarSame";}
0475 virtual int id3Mass() const {return idHad1;}
0476 virtual int id4Mass() const {return idHad2;}
0477
0478 private:
0479
0480
0481 int idHad1, idHad2, codeSave;
0482 string nameSave;
0483 double m2, oniumME1, oniumME2, sigma;
0484
0485 };
0486
0487
0488
0489 }
0490
0491 #endif