Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_NMSSMHHHVertex_H
0003 #define HERWIG_NMSSMHHHVertex_H
0004 //
0005 // This is the declaration of the NMSSMHHHVertex class.
0006 //
0007 #include "ThePEG/Helicity/Vertex/Scalar/SSSVertex.h"
0008 #include "Herwig/Models/StandardModel/StandardModel.h"
0009 #include "Herwig/Models/Susy/MixingMatrix.h"
0010 
0011 namespace Herwig {
0012 using namespace ThePEG;
0013 using namespace ThePEG::Helicity;
0014 
0015 /** \ingroup Helicity
0016  * The NMSSMHHHVertex defines the triple
0017  * Higgs coupling in the NMSSM.
0018  *
0019  * @see \ref NMSSMHHHVertexInterfaces "The interfaces"
0020  * defined for NMSSMHHHVertex.
0021  */
0022 class NMSSMHHHVertex: public SSSVertex {
0023 
0024 public:
0025 
0026   /**
0027    * The default constructor.
0028    */
0029   NMSSMHHHVertex();
0030 
0031 public:
0032 
0033   /** @name Functions used by the persistent I/O system. */
0034   //@{
0035   /**
0036    * Function used to write out object persistently.
0037    * @param os the persistent output stream written to.
0038    */
0039   void persistentOutput(PersistentOStream & os) const;
0040 
0041   /**
0042    * Function used to read in object persistently.
0043    * @param is the persistent input stream read from.
0044    * @param version the version number of the object when written.
0045    */
0046   void persistentInput(PersistentIStream & is, int version);
0047   //@}
0048 
0049   /**
0050    * The standard Init function used to initialize the interfaces.
0051    * Called exactly once for each class by the class description system
0052    * before the main function starts or
0053    * when this class is dynamically loaded.
0054    */
0055   static void Init();
0056 
0057   /**
0058    * Calculate the couplings. This method is virtual and must be implemented in 
0059    * classes inheriting from this.
0060    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0061    * @param part1 The ParticleData pointer for the first  particle.
0062    * @param part2 The ParticleData pointer for the second particle.
0063    * @param part3 The ParticleData pointer for the third  particle.
0064    */
0065   virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,
0066                tcPDPtr part3);
0067 
0068 protected:
0069 
0070   /** @name Clone Methods. */
0071   //@{
0072   /**
0073    * Make a simple clone of this object.
0074    * @return a pointer to the new object.
0075    */
0076   virtual IBPtr clone() const {return new_ptr(*this);}
0077 
0078   /** Make a clone of this object, possibly modifying the cloned object
0079    * to make it sane.
0080    * @return a pointer to the new object.
0081    */
0082   virtual IBPtr fullclone() const {return new_ptr(*this);}
0083   //@}
0084 
0085 protected:
0086 
0087   /** @name Standard Interfaced functions. */
0088   //@{
0089   /**
0090    * Initialize this object after the setup phase before saving an
0091    * EventGenerator to disk.
0092    */
0093   virtual void doinit();
0094   //@}
0095 
0096 private:
0097 
0098   /**
0099    * The assignment operator is private and must never be called.
0100    * In fact, it should not even be implemented.
0101    */
0102   NMSSMHHHVertex & operator=(const NMSSMHHHVertex &) = delete;
0103 
0104 private:
0105 
0106   /**
0107    * The mixing matrix combination \f$U^S_{ai}U^S_{bj}U^S_{ck}\f$
0108    * @param a The row element of the first CP-even mixing matrix   
0109    * @param b The column element of the first CP-even mixing matrix
0110    * @param c The row element of the second CP-even mixing matrix   
0111    * @param i The column element of the second CP-even mixing matrix
0112    * @param j The row element of the third CP-even mixing matrix   
0113    * @param k The column element of the third CP-even mixing matrix
0114    */
0115   Complex usMix(unsigned int a, unsigned int b, unsigned int c,
0116         unsigned int i, unsigned int j, unsigned int k) const {
0117     return (*_mixS)(a,i)*(*_mixS)(b,j)*(*_mixS)(c,k) +
0118            (*_mixS)(a,i)*(*_mixS)(c,j)*(*_mixS)(b,k) +
0119        (*_mixS)(b,i)*(*_mixS)(a,j)*(*_mixS)(c,k) +
0120        (*_mixS)(b,i)*(*_mixS)(c,j)*(*_mixS)(a,k) +
0121            (*_mixS)(c,i)*(*_mixS)(a,j)*(*_mixS)(b,k) +
0122            (*_mixS)(c,i)*(*_mixS)(b,j)*(*_mixS)(a,k);
0123   }
0124   
0125   /**
0126    * The mixing matrix combination \f$U^S_{ai}U^P_{bj}U^P_{ck}\f$
0127    * @param a The row element of the first CP-even mixing matrix   
0128    * @param b The column element of the first CP-even mixing matrix
0129    * @param c The row element of the second CP-even mixing matrix   
0130    * @param i The column element of the second CP-even mixing matrix
0131    * @param j The row element of the third CP-even mixing matrix   
0132    * @param k The column element of the third CP-even mixing matrix
0133    */
0134   Complex upMix(unsigned int a, unsigned int b, unsigned int c,
0135         unsigned int i, unsigned int j, unsigned int k) const {
0136     return (*_mixS)(a,i)*((*_mixP)(b,j)*(*_mixP)(c,k) + 
0137               (*_mixP)(c,j)*(*_mixP)(b,k));
0138   }
0139 
0140 private:
0141 
0142   /**
0143    * A pointer to the object containing the SM parameters 
0144    */
0145   tcHwSMPtr _theSM;
0146 
0147   /**
0148    * The \f$W\f$ mass 
0149    */
0150   Energy _mw;
0151   
0152   /**
0153    * The \f$Z\f$ mass 
0154    */
0155   Energy _mz;
0156      /**
0157    * The \f$b\f$ mass 
0158    */
0159   Energy _mb;
0160   
0161   /**
0162    * The \f$t\f$ mass 
0163    */
0164   Energy _mt;
0165   
0166   /**
0167    * \f$\sin^2\theta_W\f$
0168    */
0169   double _sw2;
0170 
0171   /**
0172    * \f$\cos\theta_W\f$
0173    */
0174   double _cw;
0175 
0176   /**
0177    * The CP-even Higgs mixing matrix 
0178    */
0179   MixingMatrixPtr _mixS;
0180 
0181   /**
0182    * The CP-odd Higgs mixing matrix 
0183    */
0184   MixingMatrixPtr _mixP;
0185 
0186   /**
0187    *  The coefficient of the trilinear \f$SH_2 H_1\f$ term in the superpotential
0188    */
0189   double _lambda;
0190 
0191   /**
0192    *  The coefficient of the cubic singlet term in the superpotential
0193    */
0194   double _kappa;
0195   
0196   /**
0197    * The product \f$\lambda \langle S\rangle \f$.
0198    */
0199   Energy _lambdaVEV;
0200   
0201   /**
0202    * The soft trilinear \f$SH_2 H_1\f$ coupling
0203    */
0204   Energy _theAl;
0205   
0206   /**
0207    * The soft cubic \f$S\f$ coupling
0208    */
0209   Energy _theAk;
0210 
0211   /**
0212    * \f$\sin\beta\f$
0213    */
0214   double _sb;
0215 
0216   /**
0217    * \f$\cos\beta\f$
0218    */
0219   double _cb;
0220 
0221   /**
0222    * \f$\sin2\beta\f$
0223    */
0224   double _s2b;
0225 
0226   /**
0227    * \f$\cos2\beta\f$
0228    */
0229   double _c2b;
0230 
0231   /**
0232    * The value of the VEV of the higgs that couples to the down-type sector
0233    *  \f$ g*sqrt(2)M_W\cos\beta \f$
0234    */
0235   Energy _vu;
0236 
0237   /**
0238    * The value of the VEV of the higgs that couples to the up-type sector
0239    * i.e. \f$ g*sqrt(2)M_W\sin\beta \f$
0240    */
0241   Energy _vd;
0242   
0243     /**
0244    * The value of the VEV of the singlet higgs
0245    */
0246   Energy _s;
0247 
0248   /**
0249    * The scale at which this vertex was last evaluated 
0250    */
0251   Energy2 _q2last;
0252 
0253   /**
0254    * The value of the EW coupling when it was last evaluated
0255    */
0256   double _glast;
0257         /**
0258    * left 3rd generation scalar quark mass
0259    */
0260   Energy _MQ3;
0261 
0262   /**
0263    *  right scalar top mass
0264    */
0265   Energy _MU2;
0266 
0267   /**
0268    *  Whether or onto to include the radiative terms
0269    */
0270   bool _includeRadiative;
0271 
0272 };
0273 
0274 }
0275 
0276 #endif /* HERWIG_NMSSMHHHVertex_H */