Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_NMSSMHSFSFVertex_H
0003 #define HERWIG_NMSSMHSFSFVertex_H
0004 //
0005 // This is the declaration of the NMSSMHSFSFVertex class.
0006 //
0007 
0008 #include "ThePEG/Helicity/Vertex/Scalar/SSSVertex.h"
0009 #include "Herwig/Models/StandardModel/StandardModel.h"
0010 #include "Herwig/Models/Susy/MixingMatrix.h"
0011 
0012 namespace Herwig {
0013 
0014 using namespace ThePEG;
0015 
0016 /** \ingroup Helicity
0017  * This class defines the coupling of Higgs bosons to the sfermions
0018  * in the NMSSM.
0019  *
0020  * @see \ref NMSSMHSFSFVertexInterfaces "The interfaces"
0021  * defined for NMSSMHSFSFVertex.
0022  */
0023 class NMSSMHSFSFVertex: public Helicity::SSSVertex {
0024 
0025 public:
0026 
0027   /**
0028    * The default constructor.
0029    */
0030   NMSSMHSFSFVertex();
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. This method is virtual and must be implemented in 
0058    * classes inheriting from this.
0059    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0060    * @param part1 The ParticleData pointer for the first  particle.
0061    * @param part2 The ParticleData pointer for the second particle.
0062    * @param part3 The ParticleData pointer for the third  particle.
0063    */
0064   virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,
0065                tcPDPtr part3);
0066 
0067 protected:
0068 
0069   /** @name Clone Methods. */
0070   //@{
0071   /**
0072    * Make a simple clone of this object.
0073    * @return a pointer to the new object.
0074    */
0075   virtual IBPtr clone() const {return new_ptr(*this);}
0076 
0077   /** Make a clone of this object, possibly modifying the cloned object
0078    * to make it sane.
0079    * @return a pointer to the new object.
0080    */
0081   virtual IBPtr fullclone() const {return new_ptr(*this);}
0082   //@}
0083 
0084 protected:
0085 
0086   /** @name Standard Interfaced functions. */
0087   //@{
0088   /**
0089    * Initialize this object after the setup phase before saving an
0090    * EventGenerator to disk.
0091    */
0092   virtual void doinit();
0093   //@}
0094 
0095 private:
0096 
0097   /**
0098    * The assignment operator is private and must never be called.
0099    * In fact, it should not even be implemented.
0100    */
0101   NMSSMHSFSFVertex & operator=(const NMSSMHSFSFVertex &) = delete;
0102 
0103 private:
0104 
0105   /**
0106    * Return the coupling of the charged higgs to the sfermions
0107    */
0108   Complex chargedHiggs(Energy2 q2, long id1, long id2);
0109 
0110 private:
0111   
0112   /** @name Stored parameters for fast access.*/
0113   //@{
0114   /**
0115    * A pointer to the Standard Model object 
0116    */
0117   tcHwSMPtr _theSM;
0118 
0119   /**
0120    * The CP-even higgs mixing matrix
0121    */
0122   MixingMatrixPtr _mixS;
0123 
0124   /**
0125    * The CP-odd higgs mixing matrix
0126    */
0127   MixingMatrixPtr _mixP;
0128 
0129   /**
0130    * The \f$ \tilde{t}\f$ mixing matrix 
0131    */
0132   MixingMatrixPtr _mixTp;
0133 
0134   /**
0135    * The \f$ \tilde{b}\f$ mixing matrix 
0136    */
0137   MixingMatrixPtr _mixBt;
0138 
0139   /**
0140    * The \f$ \tilde{\tau}\f$ mixing matrix 
0141    */
0142   MixingMatrixPtr _mixTa;
0143 
0144   /**
0145    * The top quark trilinear coupling
0146    */
0147   complex<Energy> _triTp;
0148 
0149   /**
0150    * The bottom quark trilinear coupling
0151    */
0152   complex<Energy> _triBt;
0153 
0154   /**
0155    * The tau lepton trilinear coupling
0156    */
0157   complex<Energy> _triTa;
0158 
0159   /**
0160    * The value of \f$\lambda\f$.
0161    */
0162   double _lambda;
0163   
0164   /**
0165    * The value of \f$ \lambda <S> \f$, the 
0166    * V.E.V of the extra gauge singlet scaled
0167    * by \f$\lambda\f$
0168    */
0169   Energy _lambdaVEV;
0170 
0171   /**
0172    * The value of the V.E.V \f$ v_1 \f$ 
0173    */
0174   Energy _v1;
0175 
0176   /**
0177    * The value of the V.E.V \f$ v_2 \f$ 
0178    */
0179   Energy _v2;
0180   
0181   /**
0182    * The value of \f$ \sin\theta_W \f$
0183    */
0184   double _sw;
0185 
0186   /**
0187    * The value of \f$ \cos\theta_W \f$
0188    */
0189   double _cw;
0190   
0191   /**
0192    * The value of \f$ M_W \f$
0193    */
0194   Energy _mw;
0195 
0196   /**
0197    * The value of \f$ M_Z \f$
0198    */
0199   Energy _mz;
0200 
0201   /**
0202    * The value of \f$ \sin\beta \f$
0203    */
0204   double _sb;
0205 
0206   /**
0207    * The value of \f$ \cos\beta \f$
0208    */
0209   double _cb;
0210 
0211   /**
0212    * The value of \f$ \tan\beta \f$
0213    */
0214   double _tb;
0215 
0216   //@}
0217   
0218   /** @name Store previously calculated values for speed. */
0219   //@{
0220   /**
0221    * The scale at which the last calculation took place. 
0222    */
0223   Energy2 _q2last;
0224   
0225   /**
0226    * The value of the dimensionless coupling \f$g_W\f$ when
0227    * last calculated.
0228    */
0229   double _couplast;
0230 
0231   /**
0232    * The value of mass of the counterpart SM fermion when
0233    * last calculated.
0234    */
0235   pair<Energy, Energy> _masslast;
0236 
0237   /**
0238    * The PDG codes of the particles in the vertex when it was last evaluated
0239    */
0240   pair<long, long> _idlast;
0241   //@}
0242 };
0243 }
0244 
0245 
0246 #endif /* HERWIG_NMSSMHSFSFVertex_H */