Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:06:29

0001 // ResonanceWidthsDM.h is a part of the PYTHIA event generator.
0002 // Copyright (C) 2024 Torbjorn Sjostrand.
0003 // PYTHIA is licenced under the GNU GPL v2 or later, see COPYING for details.
0004 // Please respect the MCnet Guidelines, see GUIDELINES for details.
0005 
0006 // Header file for DM resonance properties: dynamical widths etc.
0007 // ResonanceS, ResonanceZp, ResonanceS1, ResonanceCha, ResonanceDM2,
0008 // ResonanceChaD: derived classes for individual resonances.
0009 
0010 #ifndef Pythia8_ResonanceWidthsDM_H
0011 #define Pythia8_ResonanceWidthsDM_H
0012 
0013 #include "Pythia8/Settings.h"
0014 #include "Pythia8/ParticleData.h"
0015 #include "Pythia8/ResonanceWidths.h"
0016 
0017 namespace Pythia8 {
0018 
0019 //==========================================================================
0020 
0021 // The ResonanceS class. (S a.k.a. DMmed(s=0), PDG id 54.)
0022 
0023 class ResonanceS : public ResonanceWidths {
0024 
0025 public:
0026 
0027   // Constructor and destructor.
0028   ResonanceS(int idResIn) : ResonanceWidths(), gq(), gX(), pScalar()
0029     {initBasic(idResIn);}
0030   virtual ~ResonanceS() {}
0031 
0032 private:
0033 
0034   // Couplings etc.
0035   double gq, gX;
0036   bool pScalar;
0037 
0038   // Initialize constants.
0039   virtual void initConstants() override;
0040 
0041   // Calculate various common prefactors for the current mass.
0042   virtual void calcPreFac(bool = false) override;
0043 
0044   // Caclulate width for currently considered channel.
0045   virtual void calcWidth(bool calledFromInit = false) override;
0046 
0047   // Loop integral for H -> gg coupling.
0048   virtual double eta2gg();
0049 
0050 };
0051 
0052 //==========================================================================
0053 
0054 // The ResonanceZp class. (Zp a.k.a. DMmed(s=1), PDG id 55.)
0055 
0056 class ResonanceZp : public ResonanceWidths {
0057 
0058 public:
0059 
0060   // Constructor.
0061   ResonanceZp(int idResIn) : ResonanceWidths(), kinMix(), gZp(), eps(), vX(),
0062     aX(), vu(), vd(), vl(), vv(), au(), ad(), al(), av() {initBasic(idResIn);}
0063 
0064 private:
0065 
0066   // Couplings etc.
0067   bool kinMix;
0068   double gZp, eps, vX, aX, vu, vd, vl, vv, au, ad, al, av;
0069 
0070   // Initialize constants.
0071   virtual void initConstants() override;
0072 
0073   // Calculate various common prefactors for the current mass.
0074   virtual void calcPreFac(bool = false) override;
0075 
0076   // Caclulate width for currently considered channel.
0077   virtual void calcWidth(bool calledFromInit = false) override;
0078 
0079 };
0080 
0081 //==========================================================================
0082 
0083 // Charged scalar partner of DM (PDG id 56.)
0084 
0085 class ResonanceSl : public ResonanceWidths {
0086 
0087 public:
0088 
0089   // Constructor.
0090   ResonanceSl(int idResIn) : yuk() {initBasic(idResIn);}
0091 
0092 private:
0093 
0094   // Couplings etc.
0095   double yuk[4];
0096 
0097   // Initialize constants.
0098   virtual void initConstants() override;
0099 
0100   // Calculate various common prefactors for the current mass.
0101   virtual void calcPreFac(bool = false) override;
0102 
0103   // Caclulate width for currently considered channel.
0104   virtual void calcWidth(bool calledFromInit = false) override;
0105 
0106 };
0107 
0108 //==========================================================================
0109 
0110 // Charged partner of DM (PDG id 57.)
0111 
0112 class ResonanceCha : public ResonanceWidths {
0113 
0114 public:
0115 
0116   // Constructor.
0117   ResonanceCha(int idResIn) : ResonanceWidths(), mixN1(), mixN2(), mixing(),
0118     doDY() {initBasic(idResIn);}
0119 
0120 protected:
0121 
0122   // Couplings etc.
0123   double mixN1, mixN2, mixing;
0124   bool   doDY;
0125 
0126   // Set masses and mixing from settings.
0127   void setMassMix();
0128 
0129 private:
0130 
0131   // Initialize constants.
0132   virtual void initConstants() override {setMassMix();}
0133 
0134   // Calculate various common prefactors for the current mass.
0135   virtual void calcPreFac(bool = false) override;
0136 
0137   // Caclulate width for currently considered channel.
0138   virtual void calcWidth(bool calledFromInit = false) override;
0139 
0140 };
0141 
0142 //==========================================================================
0143 
0144 // Neutral Charged partner of DM (PDG id 58.)
0145 // Not yet implemented.
0146 
0147 class ResonanceDM2 : public ResonanceCha {
0148 
0149 public:
0150 
0151   // Constructor.
0152   ResonanceDM2(int idResIn) : ResonanceCha(idResIn), mHiggs(), wHiggs()
0153     {initBasic(idResIn);}
0154 
0155 private:
0156 
0157   // Couplings etc.
0158   double mHiggs, wHiggs;
0159 
0160   // Initialize constants.
0161   virtual void initConstants() override;
0162 
0163   // Calculate various common prefactors for the current mass.
0164   virtual void calcPreFac(bool = false) override;
0165 
0166   // Caclulate width for currently considered channel.
0167   virtual void calcWidth(bool calledFromInit = false) override;
0168 
0169 };
0170 
0171 //==========================================================================
0172 
0173 // Doubly Charged partner of DM (PDG id 59.)
0174 
0175 class ResonanceChaD : public ResonanceCha {
0176 
0177 public:
0178 
0179   // Constructor.
0180   ResonanceChaD(int idResIn) : ResonanceCha(idResIn) {initBasic(idResIn);}
0181 
0182 private:
0183 
0184   // Initialize constants.
0185   virtual void initConstants() override {setMassMix();}
0186 
0187   // Calculate various common prefactors for the current mass.
0188   virtual void calcPreFac(bool = false) override;
0189 
0190   // Caclulate width for currently considered channel.
0191   virtual void calcWidth(bool calledFromInit = false) override;
0192 
0193 };
0194 
0195 //==========================================================================
0196 
0197 } // end namespace Pythia8
0198 
0199 #endif // Pythia8_ResonanceWidthsDM_H