Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_SextetModel_H
0003 #define HERWIG_SextetModel_H
0004 //
0005 // This is the declaration of the SextetModel class.
0006 //
0007 
0008 #include "Herwig/Models/General/BSMModel.h"
0009 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
0010 #include "ThePEG/Helicity/Vertex/AbstractVVVVVertex.h"
0011 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
0012 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
0013 #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h"
0014 #include "ThePEG/Helicity/Vertex/AbstractVVSSVertex.h"
0015 #include "SextetModel.fh"
0016 
0017 namespace Herwig {
0018 
0019 using namespace ThePEG;
0020 
0021 /** \ingroup Models
0022  * 
0023  *  This class is used instead of the StandardModel class for the 
0024  *
0025  *
0026  * @see \ref SextetModelInterfaces "The interfaces"
0027  * defined for SextetModel.
0028  */
0029 class SextetModel: public BSMModel {
0030 
0031 public:
0032 
0033   /**
0034    * The default constructor.
0035    */
0036   SextetModel() : g1L_(3,0.), g1R_(3,0.), g1pR_(3,0.), g1ppR_(3,0.),
0037           g2_(3,0.), g2p_(3,0.), g3L_(3,0.),
0038           enableScalarSingletY43_(false),enableScalarSingletY13_(false),
0039           enableScalarSingletY23_(false),enableScalarTripletY13_(false),
0040           enableVectorDoubletY16_(false),enableVectorDoubletY56_(false) {
0041     useMe();
0042   }
0043 
0044   /**
0045    *  Access to the couplings
0046    */
0047   //@{
0048   /**
0049    * The \f$SU(2)\f$ quark-doublet coupling to \f$\Phi_{6,1,1/3}\f$
0050    */
0051   const vector<double> & g1L() const {return g1L_;}
0052 
0053   /**
0054    * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,1/3}\f$
0055    */
0056   const vector<double> & g1R() const {return g1R_;}
0057 
0058   /**
0059    * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,-2/3}\f$
0060    */
0061   const vector<double> & g1pR() const {return g1pR_;}
0062 
0063   /**
0064    * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,4/3}\f$
0065    */
0066   const vector<double> & g1ppR() const {return g1ppR_;}
0067 
0068   /**
0069    * The coupling to \f$V^\mu_{6,2,-1/6}\f$
0070    */
0071   const vector<double> & g2() const {return g2_;}
0072 
0073   /**
0074    * The coupling to \f$V^\mu_{6,2,5/6}\f$
0075    */
0076   const vector<double> & g2p() const {return g2p_;}
0077 
0078   /**
0079    * Coupling to \f$\Phi_{6,3,1/3}\f$
0080    */
0081   const vector<double> & g3L() const {return g3L_;}
0082   //@}
0083 
0084   /**
0085    *  Switches to decide which particles to include
0086    */
0087   //@{
0088   /**
0089    * Scalar Singlet \f$Y = 4/3\f$
0090    */
0091   bool ScalarSingletY43Enabled() const {return enableScalarSingletY43_;}
0092 
0093   /**
0094    * Scalar Singlet \f$Y = -1/3\f$
0095    */
0096   bool ScalarSingletY13Enabled() const {return enableScalarSingletY13_;}
0097 
0098   /**
0099    * Scalar Singlet \f$Y = -2/3\f$
0100    */
0101   bool ScalarSingletY23Enabled() const {return enableScalarSingletY23_;}
0102 
0103   /**
0104    * Scalar Triplet \f$Y =  1/3\f$
0105    */
0106   bool ScalarTripletY13Enabled() const {return enableScalarTripletY13_;}
0107 
0108   /**
0109    * Vector Doublet \f$Y = -1/6\f$
0110    */
0111   bool VectorDoubletY16Enabled() const {return enableVectorDoubletY16_;}
0112 
0113   /**
0114    * Vector Doublet \f$Y =  5/6\f$
0115    */
0116   bool VectorDoubletY56Enabled() const {return enableVectorDoubletY56_;}
0117   //@}
0118 
0119 public:
0120 
0121   /** @name Functions used by the persistent I/O system. */
0122   //@{
0123   /**
0124    * Function used to write out object persistently.
0125    * @param os the persistent output stream written to.
0126    */
0127   void persistentOutput(PersistentOStream & os) const;
0128 
0129   /**
0130    * Function used to read in object persistently.
0131    * @param is the persistent input stream read from.
0132    * @param version the version number of the object when written.
0133    */
0134   void persistentInput(PersistentIStream & is, int version);
0135   //@}
0136 
0137   /**
0138    * The standard Init function used to initialize the interfaces.
0139    * Called exactly once for each class by the class description system
0140    * before the main function starts or
0141    * when this class is dynamically loaded.
0142    */
0143   static void Init();
0144 
0145 protected:
0146 
0147   /** @name Clone Methods. */
0148   //@{
0149   /**
0150    * Make a simple clone of this object.
0151    * @return a pointer to the new object.
0152    */
0153   virtual IBPtr clone() const;
0154 
0155   /** Make a clone of this object, possibly modifying the cloned object
0156    * to make it sane.
0157    * @return a pointer to the new object.
0158    */
0159   virtual IBPtr fullclone() const;
0160   //@}
0161 
0162 protected:
0163 
0164   /** @name Standard Interfaced functions. */
0165   //@{
0166   /**
0167    * Initialize this object after the setup phase before saving an
0168    * EventGenerator to disk.
0169    * @throws InitException if object could not be initialized properly.
0170    */
0171   virtual void doinit();
0172 
0173   /**
0174    *  Member to implement the command to enable particular diquarks
0175    */
0176   string doEnable(string command);
0177   //@}
0178 
0179 private:
0180 
0181   /**
0182    * The assignment operator is private and must never be called.
0183    * In fact, it should not even be implemented.
0184    */
0185   SextetModel & operator=(const SextetModel &) = delete;
0186 
0187 private:
0188 
0189   /**
0190    *  Pointers to the vertex objects
0191    */
0192   //@{
0193   /**
0194    *  Pointer to the object handling the strong coupling of a 
0195    *  vector sextet to one gluon
0196    */
0197   AbstractVVVVertexPtr GVVVertex_;
0198   
0199   /**
0200    *  Pointer to the object handling the EM coupling of a 
0201    *  vector sextet to one photon
0202    */
0203   AbstractVVVVertexPtr PVVVertex_;
0204 
0205   /**
0206    *  Pointer to the object handling the strong coupling of a 
0207    *  vector sextet to two gluons
0208    */
0209   AbstractVVVVVertexPtr VVVVVertex_;
0210 
0211   /**
0212    *  Pointer to the object handling the strong coupling of a 
0213    *  scalar sextet to one gluon
0214    */
0215   AbstractVSSVertexPtr GSSVertex_;
0216 
0217   /**
0218    *  Pointer to the object handling the EM coupling of a 
0219    *  scalar sextet to one photon
0220    */
0221   AbstractVSSVertexPtr PSSVertex_;
0222 
0223   /**
0224    *  Pointer to the object handling the strong coupling of a 
0225    *  scalar sextet to two gluons
0226    */
0227   AbstractVVSSVertexPtr VVSSVertex_;
0228 
0229   /**
0230    *  Pointer to the object handling the coupling of two quarks
0231    *  to a vector sextet
0232    */
0233   AbstractFFVVertexPtr FFVVertex_;
0234 
0235   /**
0236    *  Pointer to the object handling the coupling of two quarks
0237    *  to a scalar sextet
0238    */
0239   AbstractFFSVertexPtr FFSVertex_;
0240   //@}
0241 
0242   /**
0243    *  Couplings
0244    */
0245   //@{
0246   /**
0247    * The \f$SU(2)\f$ quark-doublet coupling to \f$\Phi_{6,1,1/3}\f$
0248    */
0249   vector<double> g1L_;
0250 
0251   /**
0252    * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,1/3}\f$
0253    */
0254   vector<double> g1R_;
0255 
0256   /**
0257    * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,-2/3}\f$
0258    */
0259   vector<double> g1pR_;
0260 
0261   /**
0262    * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,4/3}\f$
0263    */
0264   vector<double> g1ppR_;
0265 
0266   /**
0267    * The coupling to \f$V^\mu_{6,2,-1/6}\f$
0268    */
0269   vector<double> g2_;
0270 
0271   /**
0272    * The coupling to \f$V^\mu_{6,2,5/6}\f$
0273    */
0274   vector<double> g2p_;
0275 
0276   /**
0277    * Coupling to \f$\Phi_{6,3,1/3}\f$
0278    */
0279   vector<double> g3L_;
0280   //@}
0281 
0282   /**
0283    *  Switches to decide which particles to include
0284    */
0285   //@{
0286   /**
0287    * Scalar Singlet \f$Y = 4/3\f$
0288    */
0289   bool enableScalarSingletY43_;
0290 
0291   /**
0292    * Scalar Singlet \f$Y = -1/3\f$
0293    */
0294   bool enableScalarSingletY13_;
0295 
0296   /**
0297    * Scalar Singlet \f$Y = -2/3\f$
0298    */
0299   bool enableScalarSingletY23_;
0300 
0301   /**
0302    * Scalar Triplet \f$Y =  1/3\f$
0303    */
0304   bool enableScalarTripletY13_;
0305 
0306   /**
0307    * Vector Doublet \f$Y = -1/6\f$
0308    */
0309   bool enableVectorDoubletY16_;
0310 
0311   /**
0312    * Vector Doublet \f$Y =  5/6\f$
0313    */
0314   bool enableVectorDoubletY56_;
0315   //@}
0316 };
0317 
0318 }
0319 
0320 #endif /* HERWIG_SextetModel_H */