Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:24:19

0001 // -*- C++ -*-
0002 #ifndef HERWIG_NMSSMGGHVertex_H
0003 #define HERWIG_NMSSMGGHVertex_H
0004 //
0005 // This is the declaration of the NMSSMGGHVertex class.
0006 //
0007 
0008 #include "Herwig/Models/General/VVSLoopVertex.h"
0009 #include "Herwig/Models/StandardModel/StandardModel.fh"
0010 #include "Herwig/Models/Susy/MixingMatrix.h"
0011 
0012 namespace Herwig {
0013 using namespace ThePEG;
0014 
0015 /**
0016  * This class implements the effective vertex for a higgs coupling
0017  * to a pair of gluons in the NMSSM.
0018  *
0019  * @see \ref NMSSMGGHVertexInterfaces "The interfaces"
0020  * defined for NMSSMGGHVertex.
0021  */
0022 class NMSSMGGHVertex: public VVSLoopVertex {
0023 
0024 public:
0025 
0026   /** @name Standard constructors and destructors. */
0027   //@{
0028   /**
0029    * The default constructor.
0030    */
0031   NMSSMGGHVertex();
0032   //@}
0033 
0034 public:
0035 
0036   /** @name Functions used by the persistent I/O system. */
0037   //@{
0038   /**
0039    * Function used to write out object persistently.
0040    * @param os the persistent output stream written to.
0041    */
0042   void persistentOutput(PersistentOStream & os) const;
0043 
0044   /**
0045    * Function used to read in object persistently.
0046    * @param is the persistent input stream read from.
0047    * @param version the version number of the object when written.
0048    */
0049   void persistentInput(PersistentIStream & is, int version);
0050   //@}
0051 
0052   /**
0053    * The standard Init function used to initialize the interfaces.
0054    * Called exactly once for each class by the class description system
0055    * before the main function starts or
0056    * when this class is dynamically loaded.
0057    */
0058   static void Init();
0059 
0060   /** 
0061    * Calculate couplings
0062    *@param q2 Scale at which to evaluate coupling
0063    *@param p1 ParticleData pointer to first particle
0064    *@param p2 ParticleData pointer to second particle
0065    *@param p3 ParticleData pointer to third particle
0066    */
0067   virtual void setCoupling(Energy2 q2, tcPDPtr p1, tcPDPtr p2,
0068                tcPDPtr p3);
0069 
0070 protected:
0071 
0072   /** @name Clone Methods. */
0073   //@{
0074   /**
0075    * Make a simple clone of this object.
0076    * @return a pointer to the new object.
0077    */
0078   virtual IBPtr clone() const {return new_ptr(*this);}
0079 
0080   /** Make a clone of this object, possibly modifying the cloned object
0081    * to make it sane.
0082    * @return a pointer to the new object.
0083    */
0084   virtual IBPtr fullclone() const {return new_ptr(*this);}
0085   //@}
0086 
0087 protected:
0088 
0089   /** @name Standard Interfaced functions. */
0090   //@{
0091   /**
0092    * Initialize this object after the setup phase before saving an
0093    * EventGenerator to disk.
0094    * @throws InitException if object could not be initialized properly.
0095    */
0096   virtual void doinit();
0097   //@}
0098 
0099 private:
0100 
0101   /**
0102    * The assignment operator is private and must never be called.
0103    * In fact, it should not even be implemented.
0104    */
0105   NMSSMGGHVertex & operator=(const NMSSMGGHVertex &) = delete;
0106 
0107 private:
0108 
0109   /** @name Stored parameters. */
0110   //@{
0111   /**
0112    * The SM pointer 
0113    */
0114   tcHwSMPtr _theSM;
0115   
0116   /**
0117    * \f$ \sin\theta_W\f$ 
0118    */
0119   double _sw;
0120 
0121   /**
0122    * \f$ \cos\theta_W\f$ 
0123    */
0124   double _cw;
0125 
0126   /**
0127    * \f$ M_W\f$
0128    */
0129   Energy _mw;
0130 
0131   /**
0132    * \f$ M_Z \f$
0133    */
0134   Energy _mz;
0135   
0136    /**
0137    * The product \f$\lambda \langle S\rangle \f$.
0138    */
0139   
0140   Energy _lambdaVEV;
0141   
0142   /**
0143    *  The coefficient of the trilinear \f$SH_2 H_1\f$ term in the superpotential
0144    */
0145   
0146   double _lambda;
0147   
0148   /**
0149    * The value of the VEV of the higgs that couples to the up-type sector
0150    *  \f$ g*sqrt(2)M_W\cos\beta \f$
0151    */
0152   
0153   Energy _v1;
0154 
0155   /**
0156    * The value of the VEV of the higgs that couples to the down-type sector
0157    *  \f$ g*sqrt(2)M_W\cos\beta \f$
0158    */ 
0159   Energy _v2;
0160   
0161   /**
0162    * The top quark trilinear coupling
0163    */
0164   complex<Energy> _triTp;
0165 
0166   /**
0167    * The bottom quark trilinear coupling
0168    */
0169   complex<Energy> _triBt;
0170   
0171   /**
0172    * A pointer to the top quark
0173    */
0174   tcPDPtr _top;
0175 
0176   /**
0177    * A pointer to the bottom quark
0178    */
0179   tcPDPtr _bt;
0180   
0181   /**
0182    * CP-even Higgs mixing matrix 
0183    */
0184   MixingMatrixPtr _mixS;
0185   
0186   /**
0187    * CP-even Higgs mixing matrix 
0188    */
0189   MixingMatrixPtr _mixP;
0190   
0191   /**
0192    * \f$\tilde{t}\f$ mixing matrix  
0193    */
0194   MixingMatrixPtr _mixQt;
0195   
0196   /**
0197    * \f$\tilde{b}\f$ mixing matrix  
0198    */
0199   MixingMatrixPtr _mixQb;
0200 
0201   /**
0202    * \f$ \sin\beta\f$ 
0203    */
0204   double _sb;
0205 
0206   /**
0207    * \f$ \cos\beta\f$ 
0208    */
0209   double _cb;
0210   
0211   /**
0212    * The top and bottom quark masses calculated at the last value
0213    * of \f$q^2\f$ 
0214    */
0215   pair<Energy, Energy> _masslast;
0216 
0217   /**
0218    * The scale at which the coupling was last evaluated 
0219    */
0220   Energy2 _q2last;
0221 
0222   /**
0223    * The value of the overall normalisation when the coupling was last 
0224    * evaluated.
0225    */
0226   double _couplast;
0227 
0228   /**
0229    * The value of the weak coupling was last 
0230    * evaluated.
0231    */
0232   double _coup;
0233   
0234   /**
0235    * The PDG code of the Higgs particle when the vertex was last evaluated 
0236    */
0237   long _hlast;
0238 
0239   /**
0240    * Whether the tensor coefficient need recalculating or not 
0241    */
0242   bool _recalc;
0243   //@}
0244 };
0245   
0246 }
0247 
0248 #endif /* HERWIG_NMSSMGGHVertex_H */