Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_MEee2gZ2qqPowheg_H
0003 #define HERWIG_MEee2gZ2qqPowheg_H
0004 //
0005 // This is the declaration of the MEee2gZ2qqPowheg class.
0006 //
0007 
0008 #include "Herwig/MatrixElement/Lepton/MEee2gZ2qq.h"
0009 
0010 namespace Herwig {
0011 
0012 using namespace ThePEG;
0013 
0014 /**
0015  * Here is the documentation of the MEee2gZ2qqPowheg class.
0016  *
0017  * @see \ref MEee2gZ2qqPowhegInterfaces "The interfaces"
0018  * defined for MEee2gZ2qqPowheg.
0019  */
0020 class MEee2gZ2qqPowheg: public MEee2gZ2qq {
0021 
0022 public:
0023 
0024   /**
0025    * The default constructor.
0026    */
0027   MEee2gZ2qqPowheg() : contrib_(1), corrections_(1),
0028                zPow_(0.5), yPow_(0.9)
0029   {}
0030 
0031 public:
0032 
0033   /** @name Virtual functions required by the MEBase class. */
0034   //@{
0035   /**
0036    * The matrix element for the kinematical configuration
0037    * previously provided by the last call to setKinematics(), suitably
0038    * scaled by sHat() to give a dimension-less number.
0039    * @return the matrix element scaled with sHat() to give a
0040    * dimensionless number.
0041    */
0042   virtual double me2() const;
0043 
0044   /**
0045    * Generate internal degrees of freedom given nDim() uniform
0046    * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space
0047    * generator, the dSigHatDR should be a smooth function of these
0048    * numbers, although this is not strictly necessary.
0049    * @param r a pointer to the first of nDim() consecutive random numbers.
0050    * @return true if the generation succeeded, otherwise false.
0051    */
0052   virtual bool generateKinematics(const double * r);
0053 
0054   /**
0055    * The number of internal degrees of freedom used in the matrix
0056    * element.
0057    */
0058   virtual int nDim() const;
0059   //@}
0060 
0061 public:
0062 
0063   /** @name Functions used by the persistent I/O system. */
0064   //@{
0065   /**
0066    * Function used to write out object persistently.
0067    * @param os the persistent output stream written to.
0068    */
0069   void persistentOutput(PersistentOStream & os) const;
0070 
0071   /**
0072    * Function used to read in object persistently.
0073    * @param is the persistent input stream read from.
0074    * @param version the version number of the object when written.
0075    */
0076   void persistentInput(PersistentIStream & is, int version);
0077   //@}
0078 
0079   /**
0080    * The standard Init function used to initialize the interfaces.
0081    * Called exactly once for each class by the class description system
0082    * before the main function starts or
0083    * when this class is dynamically loaded.
0084    */
0085   static void Init();
0086 
0087 protected:
0088 
0089   /** @name Clone Methods. */
0090   //@{
0091   /**
0092    * Make a simple clone of this object.
0093    * @return a pointer to the new object.
0094    */
0095   virtual IBPtr clone() const;
0096 
0097   /** Make a clone of this object, possibly modifying the cloned object
0098    * to make it sane.
0099    * @return a pointer to the new object.
0100    */
0101   virtual IBPtr fullclone() const;
0102   //@}
0103 
0104 private:
0105 
0106   /**
0107    * The assignment operator is private and must never be called.
0108    * In fact, it should not even be implemented.
0109    */
0110   MEee2gZ2qqPowheg & operator=(const MEee2gZ2qqPowheg &) = delete;
0111 
0112 private:
0113 
0114   /**
0115    *  Whether to generate the positive, negative or leading order contribution
0116    */
0117   unsigned int contrib_;
0118 
0119   /**
0120    *   Which corrections to included
0121    */
0122   unsigned int corrections_;
0123 
0124   /**
0125    *  Phase-space sampling for z
0126    */
0127   double zPow_;
0128 
0129   /**
0130    *  Phase-space sampling for y
0131    */
0132   double yPow_;
0133 
0134   /**
0135    *  Radiation variables
0136    */
0137   //@{
0138   /**
0139    *   The \f$\tilde{x}\f$ variable
0140    */
0141   double z_;
0142 
0143   /**
0144    *  The \f$y\f$ angular variable
0145    */
0146   double y_;
0147 
0148   /**
0149    *  The azimuth
0150    */
0151   double phi_;
0152   //@}
0153 };
0154 
0155 }
0156 
0157 #endif /* HERWIG_MEee2gZ2qqPowheg_H */