Back to home page

EIC code displayed by LXR

 
 

    


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

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