Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_NMSSMFFHVertex_H
0003 #define HERWIG_NMSSMFFHVertex_H
0004 //
0005 // This is the declaration of the NMSSMFFHVertex class.
0006 //
0007 
0008 #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h"
0009 #include "Herwig/Models/StandardModel/StandardModel.h"
0010 #include "Herwig/Models/Susy/MixingMatrix.h"
0011 
0012 namespace Herwig {
0013 using namespace ThePEG;
0014 
0015 /** \ingroup Helicity
0016  *
0017  * The NMSSMFFHVertex class implements the interactions of the NMSSM Higgs bosons
0018  * with the  Standard Model fermions.
0019  *
0020  * @see \ref NMSSMFFHVertexInterfaces "The interfaces"
0021  * defined for NMSSMFFHVertex.
0022  */
0023 class NMSSMFFHVertex: public FFSVertex {
0024 
0025 public:
0026 
0027   /**
0028    * The default constructor.
0029    */
0030   NMSSMFFHVertex();
0031 
0032   /** @name Functions used by the persistent I/O system. */
0033   //@{
0034   /**
0035    * Function used to write out object persistently.
0036    * @param os the persistent output stream written to.
0037    */
0038   void persistentOutput(PersistentOStream & os) const;
0039 
0040   /**
0041    * Function used to read in object persistently.
0042    * @param is the persistent input stream read from.
0043    * @param version the version number of the object when written.
0044    */
0045   void persistentInput(PersistentIStream & is, int version);
0046   //@}
0047 
0048   /**
0049    * The standard Init function used to initialize the interfaces.
0050    * Called exactly once for each class by the class description system
0051    * before the main function starts or
0052    * when this class is dynamically loaded.
0053    */
0054   static void Init();
0055   
0056   /**
0057    * Calculate the couplings. 
0058    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0059    * @param part1 The ParticleData pointer for the first  particle.
0060    * @param part2 The ParticleData pointer for the second particle.
0061    * @param part3 The ParticleData pointer for the third  particle.
0062    */
0063   virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3);
0064 
0065 protected:
0066 
0067   /** @name Clone Methods. */
0068   //@{
0069   /**
0070    * Make a simple clone of this object.
0071    * @return a pointer to the new object.
0072    */
0073   virtual IBPtr clone() const {return new_ptr(*this);}
0074 
0075   /** Make a clone of this object, possibly modifying the cloned object
0076    * to make it sane.
0077    * @return a pointer to the new object.
0078    */
0079   virtual IBPtr fullclone() const {return new_ptr(*this);}
0080   //@}
0081 
0082 protected:
0083 
0084   /** @name Standard Interfaced functions. */
0085   //@{
0086   /**
0087    * Initialize this object after the setup phase before saving an
0088    * EventGenerator to disk.
0089    */
0090   virtual void doinit();
0091   //@}
0092 
0093 private:
0094 
0095   /**
0096    * The assignment operator is private and must never be called.
0097    * In fact, it should not even be implemented.
0098    */
0099   NMSSMFFHVertex & operator=(const NMSSMFFHVertex &) = delete;
0100 
0101 private:
0102 
0103   /**
0104    *  Mixing matrix for the CP-even Higgs bosons
0105    */
0106   MixingMatrixPtr _mixS;
0107 
0108   /**
0109    *  Mixing matrix for the CP-odd  Higgs bosons
0110    */
0111   MixingMatrixPtr _mixP;
0112 
0113   /**
0114    * Pointer to the SM object.
0115    */
0116   tcHwSMPtr _theSM;
0117 
0118   /**
0119    *  Mass of the \f$W\f$ boson
0120    */
0121   Energy _mw;
0122 
0123   /**
0124    *  \f$\sin\beta\f$
0125    */
0126   double _sinb;
0127 
0128   /**
0129    *  \f$\cos\beta\f$
0130    */
0131   double _cosb;
0132 
0133   /**
0134    *  \f$\tan\beta\f$
0135    */
0136   double _tanb;
0137 
0138   /**
0139    *  \f$\sin\theta_W\f$
0140    */
0141   double _sw;
0142 
0143   /**
0144    *  The PDG code of the last fermion the coupling was evaluated for.
0145    */
0146   pair<int,int> _idlast;
0147 
0148   /**
0149    *  The last \f$q^2\f$ the coupling was evaluated at.
0150    */
0151   Energy2 _q2last;
0152 
0153   /**
0154    * The mass of the last fermion for which the coupling was evaluated.
0155    */
0156   pair<Energy,Energy> _masslast;
0157 
0158   /**
0159    *  The last value of the coupling
0160    */
0161   double _couplast;
0162 
0163 };
0164 }
0165 
0166 
0167 #endif /* HERWIG_NMSSMFFHVertex_H */