Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // SSHSFSFVertex.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_SSHSFSFVertex_H
0010 #define HERWIG_SSHSFSFVertex_H
0011 //
0012 // This is the declaration of the SSHSFSFVertex 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 implementation of the coupling for a Higgs in the MSSM
0023  * to a pair of sfermions.
0024  *
0025  * @see \ref SSHSFSFVertexInterfaces "The interfaces"
0026  * defined for SSHSFSFVertex.
0027  */
0028 class SSHSFSFVertex: public SSSVertex {
0029 
0030   /** A vector of MixingMatrix pointers. */
0031   typedef vector<MixingMatrixPtr> MMPVector;
0032 
0033 public:
0034 
0035   /**
0036    * The default constructor.
0037    */
0038   SSHSFSFVertex();
0039 
0040   /** @name Functions used by the persistent I/O system. */
0041   //@{
0042   /**
0043    * Function used to write out object persistently.
0044    * @param os the persistent output stream written to.
0045    */
0046   void persistentOutput(PersistentOStream & os) const;
0047 
0048   /**
0049    * Function used to read in object persistently.
0050    * @param is the persistent input stream read from.
0051    * @param version the version number of the object when written.
0052    */
0053   void persistentInput(PersistentIStream & is, int version);
0054   //@}
0055 
0056   /**
0057    * The standard Init function used to initialize the interfaces.
0058    * Called exactly once for each class by the class description system
0059    * before the main function starts or
0060    * when this class is dynamically loaded.
0061    */
0062   static void Init();
0063 
0064   
0065   /**
0066    * Calculate the coupling at the given scale.
0067    * @param q2 The scale at which to evaluate the coupling
0068    * @param particle1 The first particle at the vertex
0069    * @param particle2 The second particle at the vertex
0070    * @param particle3 The third particle at the vertex
0071    */
0072   void setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2, 
0073            tcPDPtr particle3);
0074 
0075 protected:
0076 
0077   /** @name Clone Methods. */
0078   //@{
0079   /**
0080    * Make a simple clone of this object.
0081    * @return a pointer to the new object.
0082    */
0083   virtual IBPtr clone() const {return new_ptr(*this);}
0084 
0085   /** Make a clone of this object, possibly modifying the cloned object
0086    * to make it sane.
0087    * @return a pointer to the new object.
0088    */
0089   virtual IBPtr fullclone() const {return new_ptr(*this);}
0090   //@}
0091   
0092 protected:
0093 
0094   /** @name Standard Interfaced functions. */
0095   //@{
0096   /**
0097    * Initialize this object after the setup phase before saving an
0098    * EventGenerator to disk.
0099    * @throws InitException if object could not be initialized properly.
0100    */
0101   virtual void doinit();
0102   //@}
0103 
0104 private:
0105 
0106   /**
0107    * The assignment operator is private and must never be called.
0108    * In fact, it should not even be implemented.
0109    */
0110   SSHSFSFVertex & operator=(const SSHSFSFVertex &) = delete;
0111 
0112 private:
0113 
0114   /** @name Functions to calculate the coupling based on the sfermion type. */
0115   //@{
0116   /**
0117    * Calculate the coupling for the first higgs 
0118    * @param q2 scale
0119    * @param higgs The ID of the higgs
0120    * @param smID The ID of the SM particle to which it is a partner.
0121    * @param alpha The mass eigenstate of an sfermion
0122    * @param beta  The mass eigenstate of the other sfermion
0123    */
0124   void downSF(Energy2 q2, long higgs, long smID, unsigned int alpha, unsigned int beta);
0125   
0126   /**
0127    * Calculate the coupling for the second higgs 
0128    * @param q2 scale
0129    * @param higgs The ID of the higgs
0130    * @param smID The ID of the SM particle to which it is a partner.
0131    * @param alpha The mass eigenstate of an sfermion
0132    * @param beta  The mass eigenstate of the other sfermion
0133    */
0134   void upSF(Energy2 q2, long higgs, long smID, unsigned int alpha, unsigned int beta);
0135   
0136   /**
0137    * Calculate the coupling for the third higgs 
0138    * @param q2 scale
0139    * @param higgs The ID of the higgs
0140    * @param smID The ID of the SM particle to which it is a partner.
0141    * @param alpha The mass eigenstate of an sfermion
0142    * @param beta  The mass eigenstate of the other sfermion
0143    */
0144   void leptonSF(Energy2 q2, long higgs, long smID, unsigned int alpha, unsigned int beta);
0145   
0146   /**
0147    *  Calculate the coupling for the charged higgs 
0148    * @param q2 scale
0149    * @param id1 The ID of the first sfermion
0150    * @param id2 The ID of the second sfermion
0151    */
0152   void chargedHiggs(Energy2 q2, long id1, long id2);
0153   
0154   //@}
0155 
0156 private:
0157   
0158   /**
0159    * A vector containing pointers to the mixing matrices, 0 = stop, 
0160    * 1 = sbottom, 2 = stau 
0161    */
0162   MMPVector theMix;
0163 
0164   /**
0165    * A vector containing the trilinear couplings, quarks then leptons
0166    */
0167   vector<complex<Energy> > theTriC;
0168     
0169   /**
0170    * The value of \f$\sin\alpha\f$.
0171    */
0172   double theSinA;
0173 
0174   /**
0175    * The value of \f$\cos\alpha\f$.
0176    */
0177   double theCosA;
0178 
0179   /**
0180    * The value of \f$\sin\beta\f$.
0181    */
0182   double theSinB;
0183 
0184   /**
0185    * The value of \f$\cos\beta\f$.
0186    */
0187   double theCosB;
0188 
0189   /**
0190    * The value of \f$\tan\beta\f$. 
0191    */
0192   double theTanB;
0193 
0194   /**
0195    * The value of \f$\sin(\alpha + \beta)\f$.
0196    */
0197   double theSinAB;
0198 
0199   /**
0200    * The value of \f$\cos(\alpha + \beta)\f$.
0201    */
0202   double theCosAB;
0203 
0204   /**
0205    * The mass of the \f$W\f$. 
0206    */
0207   Energy theMw;
0208 
0209   /**
0210    * The mass of the \f$Z\f$. 
0211    */
0212   Energy theMz;
0213   
0214   /**
0215    * The \f$\mu\f$ parameter. 
0216    */
0217   Energy theMu;
0218 
0219   /**
0220    * The value of \f$\sin\theta_W\f$
0221    */
0222   double theSw;
0223 
0224   /**
0225    * The value of \f$\cos\theta_W\f$
0226    */
0227   double theCw;
0228 
0229   /**
0230    * The value of the coupling when it was last evaluated
0231    */
0232   complex<Energy> theCoupLast;
0233   
0234   /**
0235    * The scale at which the coupling was last evaluated
0236    */
0237   Energy2 theq2Last;
0238   
0239   /**
0240    * The value of g coupling when it was last evaluated
0241    */
0242   double thegLast;
0243   
0244   /**
0245    * The ID of the higgs when the vertex was last evaluated 
0246    */
0247   long theHLast;
0248   
0249   /**
0250    * The ID of the first sfermion when the vertex was last evaluated 
0251    */
0252   long theSF1Last;
0253   
0254   /**
0255    * The ID of the second sfermion when the vertex was last evaluated 
0256    */
0257   long theSF2Last;
0258 
0259   /**
0260    *  The Model
0261    */
0262   tMSSMPtr theMSSM;
0263 };
0264 }
0265 
0266 
0267 #endif /* HERWIG_SSHSFSFVertex_H */