Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_MEPP2WH_H
0003 #define HERWIG_MEPP2WH_H
0004 //
0005 // This is the declaration of the MEPP2WH class.
0006 //
0007 
0008 #include "Herwig/MatrixElement/MEfftoVH.h"
0009 
0010 namespace Herwig {
0011 
0012 using namespace ThePEG;
0013 
0014 /**
0015  * The MEPP2WH class provides the matrix elements for the production of
0016  * the \f$W^\pm\f$ boson in association with the Higgs in hadron collisions.
0017  *
0018  * @see \ref MEPP2WHInterfaces "The interfaces"
0019  * defined for MEPP2WH.
0020  */
0021 class MEPP2WH: public MEfftoVH {
0022 
0023 public:
0024 
0025   /**
0026    *  Default constructor
0027    */
0028   MEPP2WH();
0029 
0030   /** @name Virtual functions required by the MEBase class. */
0031   //@{
0032   /**
0033    * Add all possible diagrams with the add() function.
0034    */
0035   virtual void getDiagrams() const;
0036   //@}
0037 
0038 
0039 public:
0040 
0041   /** @name Functions used by the persistent I/O system. */
0042   //@{
0043   /**
0044    * Function used to write out object persistently.
0045    * @param os the persistent output stream written to.
0046    */
0047   void persistentOutput(PersistentOStream & os) const;
0048 
0049   /**
0050    * Function used to read in object persistently.
0051    * @param is the persistent input stream read from.
0052    * @param version the version number of the object when written.
0053    */
0054   void persistentInput(PersistentIStream & is, int version);
0055   //@}
0056 
0057   /**
0058    * The standard Init function used to initialize the interfaces.
0059    * Called exactly once for each class by the class description system
0060    * before the main function starts or
0061    * when this class is dynamically loaded.
0062    */
0063   static void Init();
0064 
0065 protected:
0066 
0067   /** @name Clone Methods. */
0068   //@{
0069   /**
0070    * Make a simple clone of this object.
0071    * @return a pointer to the new object.
0072    */
0073   virtual IBPtr clone() const { return new_ptr(*this); }
0074 
0075   /** Make a clone of this object, possibly modifying the cloned object
0076    * to make it sane.
0077    * @return a pointer to the new object.
0078    */
0079   virtual IBPtr fullclone() const { return new_ptr(*this); }
0080   //@}
0081 
0082 protected:
0083 
0084   /** @name Standard Interfaced functions. */
0085   //@{
0086   /**
0087    * Initialize this object after the setup phase before saving an
0088    * EventGenerator to disk.
0089    * @throws InitException if object could not be initialized properly.
0090    */
0091   virtual void doinit();
0092   //@}
0093 
0094 private:
0095 
0096   /**
0097    * The assignment operator is private and must never be called.
0098    * In fact, it should not even be implemented.
0099    */
0100   MEPP2WH & operator=(const MEPP2WH &) = delete;
0101 
0102 private:
0103 
0104   /**
0105    *  Which intermediate \f$W^\pm\f$ bosons to include
0106    */
0107   unsigned int _plusminus;
0108 
0109 };
0110 
0111 }
0112 
0113 #endif /* HERWIG_MEPP2WH_H */