Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // SSHGGVertex.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_SSHGGVertex_H
0010 #define HERWIG_SSHGGVertex_H
0011 //
0012 // This is the declaration of the SSHGGVertex class.
0013 //
0014 
0015 #include "Herwig/Models/General/VVSLoopVertex.h"
0016 #include "MSSM.h"
0017 
0018 namespace Herwig {
0019 
0020   /**
0021    * This class implements the effective vertex coupling a higgs
0022    * to a pair of gluons in the MSSM. The loop include the stop and sbottom
0023    * squarks and the top quark.
0024    *  
0025    *
0026    * @see \ref SSHGGVertexInterfaces "The interfaces"
0027    * defined for SSHGGVertex.
0028 
0029    */
0030 class SSHGGVertex: public VVSLoopVertex {
0031   
0032 public:
0033   
0034   /**
0035    * The default constructor.
0036    */
0037   SSHGGVertex();
0038   
0039   /** @name Functions used by the persistent I/O system. */
0040   //@{
0041   /**
0042    * Function used to write out object persistently.
0043    * @param os the persistent output stream written to.
0044    */
0045   void persistentOutput(PersistentOStream & os) const;
0046   
0047   /**
0048    * Function used to read in object persistently.
0049    * @param is the persistent input stream read from.
0050    * @param version the version number of the object when written.
0051    */
0052   void persistentInput(PersistentIStream & is, int version);
0053   //@}
0054   
0055   /**
0056    * The standard Init function used to initialize the interfaces.
0057    * Called exactly once for each class by the class description system
0058    * before the main function starts or
0059    * when this class is dynamically loaded.
0060    */
0061   static void Init();
0062   
0063   /** 
0064    * Calculate couplings
0065    *@param q2 Scale at which to evaluate coupling
0066    *@param particle1 ParticleData pointer to first particle
0067    *@param particle2 ParticleData pointer to second particle
0068    *@param particle3 ParticleData pointer to third particle
0069    */
0070   virtual void setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2,
0071                tcPDPtr particle3);
0072   
0073 protected:
0074   
0075   /** @name Clone Methods. */
0076   //@{
0077   /**
0078    * Make a simple clone of this object.
0079    * @return a pointer to the new object.
0080    */
0081   virtual IBPtr clone() const {return new_ptr(*this);}
0082   
0083   /** Make a clone of this object, possibly modifying the cloned object
0084    * to make it sane.
0085    * @return a pointer to the new object.
0086    */
0087   virtual IBPtr fullclone() const {return new_ptr(*this);}
0088   //@}
0089   
0090 protected:
0091   
0092   /**
0093    * Initialize this object after the setup phase before saving and
0094    * EventGenerator to disk.
0095    * @throws InitException if object could not be initialized properly.
0096    */
0097   virtual void doinit();
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   SSHGGVertex & operator=(const SSHGGVertex &) = delete;
0106   
0107 private:
0108 
0109   /**
0110    * Switch to turn off squark trilinear couplings via A terms for testing
0111    */
0112   bool theIncludeTriLinear;
0113 
0114   /**
0115    *  Treat the pseudoscalar as scalar for comparison with ISAJET
0116    */
0117   bool thePseudoScalarTreatment;
0118 
0119   /**
0120    * A pointer to the MSSM object
0121    */
0122   tMSSMPtr theMSSM;
0123 
0124   /**
0125    * Value of \f$\sin\theta_W\f$
0126    */
0127   double theSw;
0128   
0129   /**
0130    * The mass of the \f$W\f$ boson.
0131    */
0132   Energy theMw;
0133 
0134   /**
0135    * The factor \f$\frac{M_Z}{\cos\theta_W}\f$ 
0136    */
0137   Energy theZfact;  
0138   
0139   /**
0140    * The mixing matrix factor \f$Q^{2i}_{11}Q^{2i}_{11}\f$ 
0141    * for the \f$\tilde{t}\f$
0142    */
0143   Complex theQt1L;
0144   
0145   /**
0146    * The mixing matrix factor \f$Q^{2i}_{12}Q^{2i}_{12}\f$ 
0147    * for the \f$\tilde{t}\f$
0148    */
0149   Complex theQt1R;
0150   
0151   /**
0152    * The mixing matrix factor \f$Q^{2i}_{12}Q^{2i}_{12}\f$ 
0153    * for the \f$\tilde{t}\f$
0154    */
0155   Complex theQt1LR;
0156 
0157   /**
0158    * The mixing matrix factor \f$Q^{2i}_{21}Q^{2i}_{21}\f$ 
0159    * for the \f$\tilde{t}\f$
0160    */
0161   Complex theQt2L;
0162 
0163   /**
0164    * The mixing matrix factor \f$Q^{2i}_{22}Q^{2i}_{22}\f$ 
0165    * for the \f$\tilde{t}\f$
0166    */
0167   Complex theQt2R;
0168 
0169   /**
0170    * The mixing matrix factor \f$Q^{2i}_{22}Q^{2i}_{22}\f$ 
0171    * for the \f$\tilde{t}\f$
0172    */
0173   Complex theQt2LR;
0174 
0175  /**
0176    * The mixing matrix factor \f$Q^{2i-1}_{11}Q^{2i-1}_{11}\f$ 
0177    * for the \f$\tilde{b}\f$
0178    */
0179   Complex theQb1L;
0180 
0181  /**
0182    * The mixing matrix factor \f$Q^{2i-1}_{12}Q^{2i-1}_{12}\f$ 
0183    * for the \f$\tilde{b}\f$
0184    */
0185   Complex theQb1R;
0186 
0187  /**
0188    * The mixing matrix factor \f$Q^{2i-1}_{12}Q^{2i-1}_{12}\f$ 
0189    * for the \f$\tilde{b}\f$
0190    */
0191   Complex theQb1LR;
0192 
0193   /**
0194    * The mixing matrix factor \f$Q^{2i-1}_{21}Q^{2i-1}_{21}\f$ 
0195    * for the \f$\tilde{b}\f$
0196    */
0197   Complex theQb2L;
0198 
0199   /**
0200    * The mixing matrix factor \f$Q^{2i-1}_{22}Q^{2i-1}_{22}\f$ 
0201    * for the \f$\tilde{b}\f$
0202    */
0203   Complex theQb2R;
0204 
0205   /**
0206    * The mixing matrix factor \f$Q^{2i-1}_{22}Q^{2i-1}_{22}\f$ 
0207    * for the \f$\tilde{b}\f$
0208    */
0209   Complex theQb2LR;
0210   
0211   /**
0212    * A pointer to the top quark ParticleData object 
0213    */
0214   tPDPtr thetop;
0215 
0216   /**
0217    * A pointer to the bottom quark ParticleData object 
0218    */
0219   tPDPtr thebot;
0220 
0221   /**
0222    * The squark masses 
0223    */
0224   vector<Energy> theSqmass;
0225   
0226   
0227   /**
0228    * The value of \f$ \tan\beta \f$ 
0229    */
0230   double theTanB;
0231 
0232   /**
0233    * The value of \f$ \sin\alpha \f$ 
0234    */
0235   double theSinA;
0236 
0237   /**
0238    * The value of \f$ \cos\alpha \f$ 
0239    */
0240   double theCosA;
0241 
0242   /**
0243    * The value of \f$ \sin\beta \f$ 
0244    */
0245   double theSinB;
0246 
0247   /**
0248    * The value of \f$ \cos\beta \f$ 
0249    */
0250   double theCosB;
0251 
0252   /**
0253    * The value of \f$ \sin(\alpha + \beta) \f$ 
0254    */
0255   double theSinApB;
0256 
0257   /**
0258    * The value of \f$ \cos(\alpha + \beta) \f$ 
0259    */
0260   double theCosApB;
0261 
0262   /**
0263    * Last value of the coupling calculated
0264    */
0265   Complex theCouplast;
0266   
0267   /**
0268    * The scale \f$q^2\f$ at which coupling was last evaluated
0269    */
0270   Energy2 theq2last;
0271   
0272   /**
0273    * Whether we have calculated the tensor coefficents yet 
0274    */
0275   bool theHaveCoeff;
0276 
0277   /**
0278    *  ID of the higgs
0279    */
0280   long theLastID;
0281 };
0282 
0283 }
0284 
0285 
0286 #endif /* HERWIG_SSHGGVertex_H */