Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_NMSSMWWHVertex_H
0003 #define HERWIG_NMSSMWWHVertex_H
0004 //
0005 // This is the declaration of the NMSSMWWHVertex class.
0006 //
0007 
0008 #include "ThePEG/Helicity/Vertex/Scalar/VVSVertex.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  * 
0017  * The NMSSMWWHVertex class is the implementation of the coupling of two electroweak
0018  * gauge bosons to the Higgs bosons of the NMSSM. It inherits from VVSVertex and
0019  * implements the setCoupling member.
0020  *
0021  * @see \ref NMSSMWWHVertexInterfaces "The interfaces"
0022  * @see VVSVertex
0023  * @see SMWWHVertex
0024  * defined for NMSSMWWHVertex.
0025  */
0026 class NMSSMWWHVertex: public VVSVertex {
0027 
0028 public:
0029 
0030   /**
0031    * The default constructor.
0032    */
0033   NMSSMWWHVertex();
0034 
0035 public:
0036 
0037   /** @name Functions used by the persistent I/O system. */
0038   //@{
0039   /**
0040    * Function used to write out object persistently.
0041    * @param os the persistent output stream written to.
0042    */
0043   void persistentOutput(PersistentOStream & os) const;
0044 
0045   /**
0046    * Function used to read in object persistently.
0047    * @param is the persistent input stream read from.
0048    * @param version the version number of the object when written.
0049    */
0050   void persistentInput(PersistentIStream & is, int version);
0051   //@}
0052 
0053   /**
0054    * The standard Init function used to initialize the interfaces.
0055    * Called exactly once for each class by the class description system
0056    * before the main function starts or
0057    * when this class is dynamically loaded.
0058    */
0059   static void Init();
0060   
0061   /**
0062    * Calculate the couplings. 
0063    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0064    * @param part1 The ParticleData pointer for the first  particle.
0065    * @param part2 The ParticleData pointer for the second particle.
0066    * @param part3 The ParticleData pointer for the third  particle.
0067    */
0068   virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3);
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    */
0095   virtual void doinit();
0096   //@}
0097 
0098 private:
0099 
0100   /**
0101    * The assignment operator is private and must never be called.
0102    * In fact, it should not even be implemented.
0103    */
0104   NMSSMWWHVertex & operator=(const NMSSMWWHVertex &) = delete;
0105 
0106 private:
0107 
0108   /**
0109    * Storage of the couplings.
0110    */
0111   //@{
0112   /**
0113    *  The last value of the electroweak coupling calculated.
0114    */
0115   Complex _couplast;
0116 
0117   /**
0118    *  The scale \f$q^2\f$ at which the coupling was last evaluated.
0119    */
0120   Energy2 _q2last;
0121 
0122   /**
0123    *  The mass of the \f$W\f$ boson.
0124    */
0125   Energy _mw;
0126 
0127   /**
0128    *  The factor for the \f$Z\f$ vertex.
0129    */
0130   double _zfact;
0131 
0132   /**
0133    *  \f$\sin\beta\f$
0134    */
0135   double _sinb;
0136 
0137   /**
0138    *  \f$\cos\beta\f$
0139    */
0140   double _cosb;
0141 
0142   /**
0143    *  Mixing matrix for the CP-even Higgs bosons
0144    */
0145   MixingMatrixPtr _mixS;
0146   //@}
0147 
0148 };
0149 }
0150 
0151 
0152 #endif /* HERWIG_NMSSMWWHVertex_H */