Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_LeptoquarkModel_H
0003 #define HERWIG_LeptoquarkModel_H
0004 //
0005 // This is the declaration of the LeptoquarkModel class.
0006 //
0007 
0008 #include "Herwig/Models/General/BSMModel.h"
0009 #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h"
0010 #include "ThePEG/Helicity/Vertex/AbstractVVSSVertex.h"
0011 #include "LeptoquarkModel.fh"
0012 
0013 namespace Herwig {
0014 
0015 using namespace ThePEG;
0016 using namespace ThePEG::Helicity;
0017 
0018 /**
0019  * Here is the documentation of the LeptoquarkModel class.
0020  *
0021  * @see \ref LeptoquarkModelInterfaces "The interfaces"
0022  * defined for LeptoquarkModel.
0023  */
0024 class LeptoquarkModel: public BSMModel {
0025 
0026 public:
0027 
0028   /**
0029    * The default constructor.
0030    */
0031   LeptoquarkModel();
0032  
0033   /** @name Vertices */
0034   //@{
0035   /**
0036    * Pointer to the object handling S0S0barg vertex.
0037    */
0038   tAbstractVSSVertexPtr   vertexSLQSLQG() const {return _theSLQSLQGVertex;}
0039   
0040   /**
0041    * Pointer to the object handling the S0S0bargg vertex.
0042    */
0043   tAbstractVVSSVertexPtr   vertexSLQSLQGG() const {return _theSLQSLQGGVertex;}
0044 
0045   /**
0046    * Pointer to the object handling the S0ql vertex.
0047    */
0048   tAbstractFFSVertexPtr   vertexSLQFF() const {return _theSLQFFVertex;}
0049 
0050 public:
0051 
0052   /** @name Functions used by the persistent I/O system. */
0053   //@{
0054   /**
0055    * Function used to write out object persistently.
0056    * @param os the persistent output stream written to.
0057    */
0058   void persistentOutput(PersistentOStream & os) const;
0059 
0060   /**
0061    * Function used to read in object persistently.
0062    * @param is the persistent input stream read from.
0063    * @param version the version number of the object when written.
0064    */
0065   void persistentInput(PersistentIStream & is, int version);
0066   //@}
0067 
0068   /**
0069    * The standard Init function used to initialize the interfaces.
0070    * Called exactly once for each class by the class description system
0071    * before the main function starts or
0072    * when this class is dynamically loaded.
0073    */
0074   static void Init();
0075 
0076  /**
0077    * Return the overall fermion coupling
0078    */
0079   double cfermion() const {return _CouplFF;}
0080 
0081   /**
0082    * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (S0)
0083    */
0084   double cleft() const {return _leftcoup;}
0085 
0086  /**
0087    * Return the coupling of the leptoquark to right-handed leptons + left-handed quarks (S0)
0088    */
0089   double cright() const {return _rightcoup;}
0090 
0091   /**
0092    * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (S1 triplet)
0093    */
0094   double cleft1() const {return _leftcoup1;}
0095 
0096   /**
0097    * Return the coupling of the leptoquark to right-handed leptons
0098    * + left-handed quarks (~S0)
0099    */
0100   double crighttilde() const {return _rightcouptilde;}
0101 
0102  /**
0103   * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (S1/2)
0104    */  
0105   double cleft12() const {return _leftcoup12;}
0106 
0107   /**
0108    * Return the coupling of the leptoquark to right-handed leptons + left-handed quarks (S1/2)
0109    */
0110   double cright12() const {return _rightcoup12;}
0111 
0112   /**
0113    * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (S1/2)
0114    */
0115   double cleft12tilde() const {return _leftcoup12t;}
0116 
0117  /**
0118    * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (S0)
0119    */
0120   double dcleft() const {return _dleftcoup;}
0121  /**
0122    * Return the coupling of the leptoquark to right-handed leptons + left-handed quarks (dS0)
0123    */
0124   double dcright() const {return _drightcoup;}
0125 
0126   /**
0127    * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (dS1 triplet)
0128    */
0129 
0130   double dcleft1() const {return _dleftcoup1;}
0131 
0132   /**
0133    * Return the coupling of the leptoquark to right-handed leptons
0134    * + left-handed quarks (~dS0)
0135    */
0136   double dcrighttilde() const {return _drightcouptilde;}
0137 
0138  /**
0139   * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (dS1/2)
0140    */  
0141   double dcleft12() const {return _dleftcoup12;}
0142 
0143   /**
0144    * Return the coupling of the leptoquark to right-handed leptons + left-handed quarks (dS1/2)
0145    */
0146   double dcright12() const {return _drightcoup12;}
0147 
0148   /**
0149    * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (dS1/2)
0150    */
0151   
0152   double dcleft12tilde() const {return _dleftcoup12t;}
0153   /**
0154    * Suppression scale for derivatively coupled scalar leptoquarks
0155    */
0156   
0157   Energy fscale() const {return _derivscalef;}
0158 
0159 
0160 
0161 
0162 
0163 protected:
0164 
0165   /** @name Standard Interfaced functions. */
0166   //@{
0167   /**
0168    * Initialize this object after the setup phase before saving an
0169    * EventGenerator to disk.
0170    * @throws InitException if object could not be initialized properly.
0171    */
0172   virtual void doinit();
0173   //@}
0174 
0175 protected:
0176 
0177   /** @name Clone Methods. */
0178   //@{
0179   /**
0180    * Make a simple clone of this object.
0181    * @return a pointer to the new object.
0182    */
0183   virtual IBPtr clone() const;
0184 
0185   /** Make a clone of this object, possibly modifying the cloned object
0186    * to make it sane.
0187    * @return a pointer to the new object.
0188    */
0189   virtual IBPtr fullclone() const;
0190 
0191   
0192     
0193   
0194   //@}
0195 
0196 
0197 // If needed, insert declarations of virtual function defined in the
0198 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
0199 
0200 
0201 private:
0202 
0203   /**
0204    * The assignment operator is private and must never be called.
0205    * In fact, it should not even be implemented.
0206    */
0207   LeptoquarkModel & operator=(const LeptoquarkModel &) = delete;
0208 
0209   
0210   /**
0211    * Pointer to the object handling the G to SLQ SLQ vertex.
0212    */
0213   AbstractVSSVertexPtr  _theSLQSLQGVertex;
0214 
0215   /**
0216    * Pointer to the object handling the GG to SLQ SLQ vertex.
0217    */
0218   AbstractVVSSVertexPtr  _theSLQSLQGGVertex;
0219 
0220 
0221   /**
0222    * Pointer to the object handling the SLQ to FF vertex.
0223    */
0224   AbstractFFSVertexPtr  _theSLQFFVertex;
0225 
0226 
0227 
0228   /**
0229    *  Overall coupling to fermions
0230    */
0231   double _CouplFF;
0232 
0233 
0234   /**
0235    *  Overall coupling to left-handed leptons (S0)
0236    */
0237   double _leftcoup;
0238 
0239   /**
0240    *  Overall coupling to right-handed leptons (S0)
0241    */
0242   double _rightcoup;
0243 
0244   /**
0245    *  Overall coupling to left-handed leptons (~S0)
0246    */
0247   double _rightcouptilde;
0248   
0249   /**
0250    *  Overall coupling to left-handed leptons (S1 triplet)
0251    */
0252   double _leftcoup1;
0253 
0254   /**
0255    *  Overall coupling to left-handed leptons (S1/2)
0256    */
0257   double _leftcoup12;
0258 
0259   /**
0260    *  Overall coupling to right-handed leptons (S1/2)
0261    */
0262   double _rightcoup12;
0263 
0264   /**
0265    *  Overall coupling to left-handed leptons (~S1/2)
0266    */
0267   double _leftcoup12t;
0268 
0269    /**
0270    *  Overall coupling to left-handed leptons (dS0)
0271    */
0272   double _dleftcoup;
0273 
0274   /**
0275    *  Overall coupling to right-handed leptons (dS0)
0276    */
0277   double _drightcoup;
0278 
0279   /**
0280    *  Overall coupling to left-handed leptons (~dS0)
0281    */
0282   double _drightcouptilde;
0283   
0284   /**
0285    *  Overall coupling to left-handed leptons (dS1 triplet)
0286    */
0287   double _dleftcoup1;
0288 
0289   /**
0290    *  Overall coupling to left-handed leptons (dS1/2)
0291    */
0292   double _dleftcoup12;
0293 
0294   /**
0295    *  Overall coupling to right-handed leptons (dS1/2)
0296    */
0297   double _drightcoup12;
0298 
0299   /**
0300    *  Overall coupling to left-handed leptons (~dS1/2)
0301    */
0302   double _dleftcoup12t;
0303 
0304   /**
0305    *  Suppression scale for derivatively coupled scalar leptoquarks, f
0306    */
0307   Energy _derivscalef;
0308 
0309   
0310 
0311 };
0312 
0313 }
0314 
0315 #endif /* HERWIG_LeptoquarkModel_H */