10 #ifndef Pythia8_ResonanceWidths_H
11 #define Pythia8_ResonanceWidths_H
13 #include "Pythia8/Basics.h"
14 #include "Pythia8/Info.h"
15 #include "Pythia8/PythiaStdlib.h"
16 #include "Pythia8/Settings.h"
17 #include "Pythia8/StandardModel.h"
26 class ParticleDataEntry;
34 class ResonanceWidths {
39 virtual ~ResonanceWidths() {}
42 void initBasic(
int idResIn,
bool isGenericIn =
false) {
43 idRes = idResIn; isGeneric = isGenericIn;}
46 virtual bool init(Info* infoPtrIn);
49 int id()
const {
return idRes;}
52 double width(
int idSgn,
double mHatIn,
int idInFlavIn = 0,
53 bool openOnly =
false,
bool setBR =
false,
int idOutFlav1 = 0,
57 double widthOpen(
int idSgn,
double mHatIn,
int idIn = 0) {
58 return width( idSgn, mHatIn, idIn,
true,
false);}
61 double widthStore(
int idSgn,
double mHatIn,
int idIn = 0) {
62 return width( idSgn, mHatIn, idIn,
true,
true);}
65 double openFrac(
int idSgn) {
return (idSgn > 0) ? openPos : openNeg;}
68 double widthRescaleFactor() {
return forceFactor;}
72 double widthChan(
double mHatIn,
int idOutFlav1,
int idOutFlav2) {
73 return width( 1, mHatIn, 0,
false,
false, idOutFlav1, idOutFlav2);}
78 ResonanceWidths() : idRes(), hasAntiRes(), doForceWidth(), isGeneric(),
79 allowCalcWidth(), minWidth(), minThreshold(), mRes(), GammaRes(), m2Res(),
80 GamMRat(), openPos(), openNeg(), forceFactor(), iChannel(), onMode(),
81 meMode(), mult(), id1(), id2(), id3(), id1Abs(), id2Abs(), id3Abs(),
82 idInFlav(), widNow(), mHat(), mf1(), mf2(), mf3(), mr1(), mr2(), mr3(),
83 ps(), kinFac(), alpEM(), alpS(), colQ(), preFac(), particlePtr(),
84 infoPtr(), settingsPtr(), particleDataPtr(), coupSMPtr(),
88 static const int NPOINT;
89 static const double MASSMIN, MASSMARGIN;
92 int idRes, hasAntiRes;
93 bool doForceWidth, isGeneric, allowCalcWidth;
94 double minWidth, minThreshold, mRes, GammaRes, m2Res, GamMRat,
95 openPos, openNeg, forceFactor;
98 int iChannel, onMode, meMode, mult, id1, id2, id3, id1Abs,
99 id2Abs, id3Abs, idInFlav;
100 double widNow, mHat, mf1, mf2, mf3, mr1, mr2, mr3, ps, kinFac,
101 alpEM, alpS, colQ, preFac;
104 ParticleDataEntry* particlePtr;
110 Settings* settingsPtr;
113 ParticleData* particleDataPtr;
117 CoupSUSY* coupSUSYPtr;
120 virtual void initConstants() {}
124 virtual bool initBSM() {
return true;}
125 virtual bool allowCalc() {
return true;}
129 virtual void calcPreFac(
bool =
false) {}
133 virtual void calcWidth(
bool =
false) {}
136 double numInt1BW(
double mHatIn,
double m1,
double Gamma1,
double mMin1,
137 double m2,
int psMode = 1);
138 double numInt2BW(
double mHatIn,
double m1,
double Gamma1,
double mMin1,
139 double m2,
double Gamma2,
double mMin2,
int psMode = 1);
149 class ResonanceGeneric :
public ResonanceWidths {
154 ResonanceGeneric(
int idResIn) {initBasic(idResIn,
true);}
157 virtual bool allowCalc()
override {
return false;}
165 class ResonanceGmZ :
public ResonanceWidths {
170 ResonanceGmZ(
int idResIn) : gmZmode(), thetaWRat(), ei2(), eivi(), vi2ai2(),
171 gamNorm(), intNorm(), resNorm() {initBasic(idResIn);}
177 double thetaWRat, ei2, eivi, vi2ai2, gamNorm, intNorm, resNorm;
180 virtual void initConstants()
override;
183 virtual void calcPreFac(
bool =
false)
override;
186 virtual void calcWidth(
bool calledFromInit =
false)
override;
194 class ResonanceW :
public ResonanceWidths {
199 ResonanceW(
int idResIn) : ResonanceWidths(), thetaWRat() {initBasic(idResIn);}
207 virtual void initConstants()
override;
210 virtual void calcPreFac(
bool =
false)
override;
213 virtual void calcWidth(
bool =
false)
override;
221 class ResonanceTop :
public ResonanceWidths {
226 ResonanceTop(
int idResIn) : thetaWRat(), m2W(), tanBeta(), tan2Beta(),
227 mbRun() {initBasic(idResIn);}
232 double thetaWRat, m2W, tanBeta, tan2Beta, mbRun;
235 virtual void initConstants()
override;
238 virtual void calcPreFac(
bool =
false)
override;
241 virtual void calcWidth(
bool =
false)
override;
249 class ResonanceFour :
public ResonanceWidths {
254 ResonanceFour(
int idResIn) : thetaWRat(), m2W() {initBasic(idResIn);}
259 double thetaWRat, m2W;
262 virtual void initConstants()
override;
265 virtual void calcPreFac(
bool =
false)
override;
268 virtual void calcWidth(
bool =
false)
override;
277 class ResonanceH :
public ResonanceWidths {
282 ResonanceH(
int higgsTypeIn,
int idResIn) : higgsType(higgsTypeIn),
283 useCubicWidth(), useRunLoopMass(), useNLOWidths(), sin2tW(), cos2tW(),
284 mT(), mZ(), mW(), mHchg(), GammaT(), GammaZ(), GammaW(), rescAlpS(),
285 rescColQ(), coup2d(), coup2u(), coup2l(), coup2Z(), coup2W(), coup2Hchg(),
286 coup2H1H1(), coup2A3A3(), coup2H1Z(), coup2A3Z(), coup2A3H1(),
287 coup2HchgW(), mLowT(), mStepT(), mLowZ(), mStepZ(), mLowW(), mStepW(),
288 kinFacT(), kinFacZ(), kinFacW() {initBasic(idResIn);}
293 static const double MASSMINWZ, MASSMINT, GAMMAMARGIN;
299 bool useCubicWidth, useRunLoopMass, useNLOWidths;
300 double sin2tW, cos2tW, mT, mZ, mW, mHchg, GammaT, GammaZ, GammaW,
301 rescAlpS, rescColQ, coup2d, coup2u, coup2l, coup2Z, coup2W,
302 coup2Hchg, coup2H1H1, coup2A3A3, coup2H1Z, coup2A3Z, coup2A3H1,
303 coup2HchgW, mLowT, mStepT, mLowZ, mStepZ, mLowW, mStepW,
304 kinFacT[101], kinFacZ[101], kinFacW[101];
307 virtual void initConstants()
override;
310 virtual void calcPreFac(
bool =
false)
override;
313 virtual void calcWidth(
bool =
false)
override;
330 class ResonanceHchg :
public ResonanceWidths {
335 ResonanceHchg(
int idResIn) : useCubicWidth(), thetaWRat(), mW(), tanBeta(),
336 tan2Beta(), coup2H1W() {initBasic(idResIn);}
342 double thetaWRat, mW, tanBeta, tan2Beta, coup2H1W;
345 virtual void initConstants()
override;
348 virtual void calcPreFac(
bool =
false)
override;
351 virtual void calcWidth(
bool =
false)
override;
359 class ResonanceZprime :
public ResonanceWidths {
364 ResonanceZprime(
int idResIn) : gmZmode(), maxZpGen(), sin2tW(), cos2tW(),
365 thetaWRat(), mZ(), GammaZ(), m2Z(), GamMRatZ(), afZp(), vfZp(), coupZpWW(),
366 ei2(), eivi(), vai2(), eivpi(), vaivapi(), vapi2(), gamNorm(), gamZNorm(),
367 ZNorm(), gamZpNorm(), ZZpNorm(), ZpNorm() {initBasic(idResIn);}
372 int gmZmode, maxZpGen;
373 double sin2tW, cos2tW, thetaWRat, mZ, GammaZ, m2Z, GamMRatZ, afZp[20],
374 vfZp[20], coupZpWW, ei2, eivi, vai2, eivpi, vaivapi, vapi2,
375 gamNorm, gamZNorm, ZNorm, gamZpNorm, ZZpNorm, ZpNorm;
378 virtual void initConstants()
override;
381 virtual void calcPreFac(
bool =
false)
override;
384 virtual void calcWidth(
bool calledFromInit =
false)
override;
392 class ResonanceWprime :
public ResonanceWidths {
397 ResonanceWprime(
int idResIn) : ResonanceWidths(), thetaWRat(), cos2tW(),
398 aqWp(), vqWp(), alWp(), vlWp(), coupWpWZ() {initBasic(idResIn);}
403 double thetaWRat, cos2tW, aqWp, vqWp, alWp, vlWp, coupWpWZ;
406 virtual void initConstants()
override;
409 virtual void calcPreFac(
bool =
false)
override;
412 virtual void calcWidth(
bool =
false)
override;
420 class ResonanceRhorizontal :
public ResonanceWidths {
425 ResonanceRhorizontal(
int idResIn) : thetaWRat() {initBasic(idResIn);}
433 virtual void initConstants()
override;
436 virtual void calcPreFac(
bool =
false)
override;
439 virtual void calcWidth(
bool =
false)
override;
447 class ResonanceExcited :
public ResonanceWidths {
452 ResonanceExcited(
int idResIn) : Lambda(), coupF(), coupFprime(), coupFcol(),
453 contactDec(), sin2tW(), cos2tW() {initBasic(idResIn);}
458 double Lambda, coupF, coupFprime, coupFcol, contactDec, sin2tW, cos2tW;
461 virtual void initConstants()
override;
464 virtual void calcPreFac(
bool =
false)
override;
467 virtual void calcWidth(
bool =
false)
override;
475 class ResonanceGraviton :
public ResonanceWidths {
480 ResonanceGraviton(
int idResIn) : eDsmbulk(), eDvlvl(), kappaMG(),
481 eDcoupling() {initBasic(idResIn);}
486 bool eDsmbulk, eDvlvl;
490 double eDcoupling[27];
493 virtual void initConstants()
override;
496 virtual void calcPreFac(
bool =
false)
override;
499 virtual void calcWidth(
bool =
false)
override;
507 class ResonanceKKgluon :
public ResonanceWidths {
512 ResonanceKKgluon(
int idResIn) : normSM(), normInt(), normKK(), eDgv(),
513 eDga(), interfMode() {initBasic(idResIn);}
518 double normSM, normInt, normKK;
523 double eDgv[10], eDga[10];
529 virtual void initConstants()
override;
532 virtual void calcPreFac(
bool calledFromInit =
false)
override;
535 virtual void calcWidth(
bool calledFromInit =
false)
override;
543 class ResonanceLeptoquark :
public ResonanceWidths {
548 ResonanceLeptoquark(
int idResIn) : kCoup() {initBasic(idResIn);}
556 virtual void initConstants()
override;
559 virtual void calcPreFac(
bool =
false)
override;
562 virtual void calcWidth(
bool =
false)
override;
570 class ResonanceNuRight :
public ResonanceWidths {
575 ResonanceNuRight(
int idResIn) : thetaWRat(), mWR() {initBasic(idResIn);}
580 double thetaWRat, mWR;
583 virtual void initConstants()
override;
586 virtual void calcPreFac(
bool =
false)
override;
589 virtual void calcWidth(
bool =
false)
override;
597 class ResonanceZRight :
public ResonanceWidths {
602 ResonanceZRight(
int idResIn) : sin2tW(), thetaWRat() {initBasic(idResIn);}
607 double sin2tW, thetaWRat;
610 virtual void initConstants()
override;
613 virtual void calcPreFac(
bool =
false)
override;
616 virtual void calcWidth(
bool =
false)
override;
624 class ResonanceWRight :
public ResonanceWidths {
629 ResonanceWRight(
int idResIn) : thetaWRat() {initBasic(idResIn);}
637 virtual void initConstants()
override;
640 virtual void calcPreFac(
bool =
false)
override;
643 virtual void calcWidth(
bool =
false)
override;
651 class ResonanceHchgchgLeft :
public ResonanceWidths {
656 ResonanceHchgchgLeft(
int idResIn) : yukawa(), gL(), vL(),
657 mW() {initBasic(idResIn);}
662 double yukawa[4][4], gL, vL, mW;
665 virtual void initConstants()
override;
668 virtual void calcPreFac(
bool =
false)
override;
671 virtual void calcWidth(
bool =
false)
override;
679 class ResonanceHchgchgRight :
public ResonanceWidths {
684 ResonanceHchgchgRight(
int idResIn) : idWR(), yukawa(),
685 gR() {initBasic(idResIn);}
691 double yukawa[4][4], gR;
694 virtual void initConstants()
override;
697 virtual void calcPreFac(
bool =
false)
override;
700 virtual void calcWidth(
bool =
false)
override;
708 #endif // Pythia8_ResonanceWidths_H