Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // SSHHHVertex.h is a part of Herwig - A multi-purpose Monte Carlo event generator
0004 // Copyright (C) 2002-2019 The Herwig Collaboration
0005 //
0006 // Herwig is licenced under version 3 of the GPL, see COPYING for details.
0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
0008 //
0009 #ifndef HERWIG_SSHHHVertex_H
0010 #define HERWIG_SSHHHVertex_H
0011 //
0012 // This is the declaration of the SSHHHVertex class.
0013 //
0014 
0015 #include "ThePEG/Helicity/Vertex/Scalar/SSSVertex.h"
0016 #include "MSSM.h"
0017 
0018 namespace Herwig {
0019 using namespace ThePEG;
0020 
0021 /**
0022  * This is the higgs coupling with other higgs bosons in the MSSM.
0023  *
0024  * @see \ref SSHHHVertexInterfaces "The interfaces"
0025  * defined for SSHHHVertex.
0026  */
0027 class SSHHHVertex: public SSSVertex {
0028 
0029 public:
0030 
0031   /**
0032    * The default constructor.
0033    */
0034   SSHHHVertex();
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 the coupling for the vertex
0062    * @param q2 The scale to at which evaluate the coupling.
0063    * @param particle1 The first particle in the vertex.
0064    * @param particle2 The second particle in the vertex.
0065    * @param particle3 The third particle in the vertex.
0066    */
0067   virtual void setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2,
0068                tcPDPtr particle3);
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   SSHHHVertex & operator=(const SSHHHVertex &) = delete;
0106 
0107 private:
0108   
0109   /**
0110    * The mass of the \f$W\f$.
0111    */
0112   Energy theMw;
0113 
0114   /**
0115    * The factor \f$ \frac{m_Z}{\sin2\theta_W} \f$
0116    */
0117   Energy theZfact;
0118 
0119   /**
0120    * The value of \f$\sin\theta_W\f$
0121    */
0122   double theSw;
0123 
0124   /**
0125    * The value of \f$ \sin(\beta + \alpha) \f$.
0126    */
0127   double theSbpa;
0128 
0129   /**
0130    * The value of \f$ \cos(\beta + \alpha) \f$.
0131    */
0132   double theCbpa;
0133 
0134   /**
0135    * The value of \f$ \sin(\beta - \alpha) \f$.
0136    */
0137   double theSbma;
0138 
0139   /**
0140    * The value of \f$ \cos(\beta - \alpha) \f$.
0141    */
0142   double theCbma;
0143   
0144   /**
0145    * The value of \f$ \sin 2\alpha \f$.
0146    */
0147   double theS2a;
0148 
0149   /**
0150    * The value of \f$ \cos 2\alpha \f$.
0151    */
0152   double theC2a;
0153 
0154   /**
0155    * The value of \f$ \sin 2\beta \f$.
0156    */
0157   double theS2b;
0158 
0159   /**
0160    * The value of \f$ \cos 2\beta \f$.
0161    */
0162   double theC2b;
0163   
0164   /**
0165    * The value of \f$ \sqrt{4\pi\alpha}\f$ when it was last evaluated.
0166    */
0167   double theElast;
0168 
0169   /**
0170    * The scale at which the coupling was last evaluated.  
0171    */
0172   Energy2 theq2last;
0173   
0174 };
0175 }
0176 
0177 #endif /* HERWIG_SSHHHVertex_H */