Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef Herwig_DMModel_H
0003 #define Herwig_DMModel_H
0004 //
0005 // This is the declaration of the DMModel class.
0006 //
0007 
0008 #include "Herwig/Models/General/BSMModel.h"
0009 #include "DMModel.fh"
0010 
0011 namespace Herwig {
0012 
0013 using namespace ThePEG;
0014 
0015 /**
0016  * The DMModel class is designed to implement a simple dark matter mode
0017  * with fermionic dark matter and a vector mediator, as described in  arXiv:1911.11147 
0018  *
0019  * @see \ref DMModelInterfaces "The interfaces"
0020  * defined for DMModel.
0021  */
0022 class DMModel: public BSMModel {
0023 
0024 public:
0025 
0026   /**
0027    * The default constructor.
0028    */
0029   DMModel();
0030 
0031 public:
0032 
0033   /** @name Functions used by the persistent I/O system. */
0034   //@{
0035   /**
0036    * Function used to write out object persistently.
0037    * @param os the persistent output stream written to.
0038    */
0039   void persistentOutput(PersistentOStream & os) const;
0040 
0041   /**
0042    * Function used to read in object persistently.
0043    * @param is the persistent input stream read from.
0044    * @param version the version number of the object when written.
0045    */
0046   void persistentInput(PersistentIStream & is, int version);
0047   //@}
0048 
0049   /**
0050    * The standard Init function used to initialize the interfaces.
0051    * Called exactly once for each class by the class description system
0052    * before the main function starts or
0053    * when this class is dynamically loaded.
0054    */
0055   static void Init();
0056 
0057 public:
0058 
0059   /**
0060    *  Access to the couplings
0061    */
0062   //@{
0063 
0064   /**
0065    * DM coupling to the mediator
0066    */
0067   const double & cDMmed() const {return cDMmed_;}
0068   
0069   /**
0070    *   The couplings of the quarks to the mediators
0071    */
0072   const vector<double> & cSMmed() const {return cSMmed_;}
0073   //@}
0074 
0075 public:
0076   
0077   /**
0078    * Pointers to the objects handling the vertices.
0079    */
0080   //@{
0081   /**
0082    * Pointer to the quark-quark mediator vertex
0083    */
0084   virtual tAbstractFFVVertexPtr  vertexQQZp() const {
0085     return QQZpVertex_;
0086   }
0087 
0088   /**
0089    * Pointer to the DM-DM mediator vertex
0090    */
0091   virtual tAbstractFFVVertexPtr  vertexDMDMZp() const {
0092     return DMDMZpVertex_;
0093   }
0094   
0095 protected:
0096 
0097   /** @name Clone Methods. */
0098   //@{
0099   /**
0100    * Make a simple clone of this object.
0101    * @return a pointer to the new object.
0102    */
0103   virtual IBPtr clone() const;
0104 
0105   /** Make a clone of this object, possibly modifying the cloned object
0106    * to make it sane.
0107    * @return a pointer to the new object.
0108    */
0109   virtual IBPtr fullclone() const;
0110   //@}
0111 
0112 protected:
0113 
0114   /** @name Standard Interfaced functions. */
0115   //@{
0116   /**
0117    * Initialize this object after the setup phase before saving an
0118    * EventGenerator to disk.
0119    * @throws InitException if object could not be initialized properly.
0120    */
0121   virtual void doinit();
0122   //@}
0123 
0124 private:
0125 
0126   /**
0127    * The assignment operator is private and must never be called.
0128    * In fact, it should not even be implemented.
0129    */
0130   DMModel & operator=(const DMModel &) = delete;
0131 
0132 private:
0133 
0134   /**
0135    * DM coupling to the dark mediator
0136    */
0137   double cDMmed_;
0138 
0139   /**
0140    * SM couplings to the dark mediator
0141    */
0142   vector<double> cSMmed_;
0143 
0144 private:
0145   
0146   /**
0147    * Pointer to the quark-quark mediator vertex
0148    */
0149   AbstractFFVVertexPtr QQZpVertex_;
0150 
0151   /**
0152    * Pointer to the DM-DM mediator vertex
0153    */
0154   AbstractFFVVertexPtr DMDMZpVertex_;
0155 };
0156 
0157 }
0158 
0159 #endif /* Herwig_DMModel_H */