Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_MEPP2VVPowheg_H
0003 #define HERWIG_MEPP2VVPowheg_H
0004 //
0005 // This is the declaration of the MEPP2VVPowheg class.
0006 //
0007 
0008 #include "Herwig/MatrixElement/Hadron/MEPP2VV.h"
0009 #include "Herwig/MatrixElement/Powheg/VVKinematics.h"
0010 #include "Herwig/Utilities/Maths.h"
0011 #include "Herwig/Models/StandardModel/StandardCKM.h"
0012 #include "Herwig/Shower/ShowerAlpha.h"
0013 
0014 namespace Herwig {
0015 using namespace ThePEG;
0016 using Math::ReLi2;
0017 using Constants::pi;
0018 
0019 /**
0020  * Here is the documentation of the MEPP2VVPowheg class.
0021  *
0022  * @see \ref MEPP2VVPowhegInterfaces "The interfaces"
0023  * defined for MEPP2VVPowheg.
0024  */
0025 class MEPP2VVPowheg: public MEPP2VV {
0026 
0027 public:
0028 
0029   /**
0030    * The default constructor.
0031    */
0032   MEPP2VVPowheg();
0033  
0034   /** @name Member functions for the generation of hard QCD radiation */
0035   //@{
0036   /**
0037    *  Has a POWHEG style correction
0038    */
0039   virtual POWHEGType hasPOWHEGCorrection() {return ISR;}
0040 
0041   /**
0042    *  Apply the POWHEG style correction
0043    */
0044   virtual RealEmissionProcessPtr generateHardest(RealEmissionProcessPtr,
0045                          ShowerInteraction inter);
0046   //@}
0047 
0048 public:
0049 
0050   /**
0051    * Generate internal degrees of freedom given nDim() uniform
0052    * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space
0053    * generator, the dSigHatDR should be a smooth function of these
0054    * numbers, although this is not strictly necessary.
0055    * @param r a pointer to the first of nDim() consecutive random numbers.
0056    * @return true if the generation succeeded, otherwise false.
0057    */
0058   virtual bool generateKinematics(const double * r);
0059 
0060   /**
0061    * The number of internal degrees of freedom used in the matrix
0062    * element.
0063    */
0064   virtual int nDim() const;
0065 
0066   /**
0067    * The matrix element for the kinematical configuration
0068    * previously provided by the last call to setKinematics(), suitably
0069    * scaled by sHat() to give a dimension-less number.
0070    * @return the matrix element scaled with sHat() to give a
0071    * dimensionless number.
0072    */
0073   virtual double me2() const;
0074 
0075   /**
0076    * Return the scale associated with the last set phase space point.
0077    */
0078   virtual Energy2 scale() const;
0079 
0080   /**
0081    * This member check the collinear limits of the 
0082    * real emission matrix elements are equal to the 
0083    * appropriate combinations of Born ME's multiplied
0084    * by the splitting functions.
0085    */
0086   bool sanityCheck() const;
0087 
0088   /**
0089    * Return the CKM matrix elements.
0090    */
0091   Complex CKM(int ix,int iy) const { return ckm_[ix][iy]; }
0092 
0093 public:
0094 
0095   /** @name Functions used by the persistent I/O system. */
0096   //@{
0097   /**
0098    * Function used to write out object persistently.
0099    * @param os the persistent output stream written to.
0100    */
0101   void persistentOutput(PersistentOStream & os) const;
0102 
0103   /**
0104    * Function used to read in object persistently.
0105    * @param is the persistent input stream read from.
0106    * @param version the version number of the object when written.
0107    */
0108   void persistentInput(PersistentIStream & is, int version);
0109   //@}
0110 
0111   /**
0112    * The standard Init function used to initialize the interfaces.
0113    * Called exactly once for each class by the class description system
0114    * before the main function starts or
0115    * when this class is dynamically loaded.
0116    */
0117     static void Init();
0118 
0119 protected:
0120 
0121   /** @name Standard Interfaced functions. */
0122   //@{
0123   /**
0124    * Initialize this object after the setup phase before saving an
0125    * EventGenerator to disk.
0126    * @throws InitException if object could not be initialized properly.
0127    */
0128   virtual void doinit();
0129   //@}
0130 
0131 public:
0132 
0133   /**
0134    * Function to set the born variables. 
0135    */
0136   void getKinematics(double xt, double y, double theta2);
0137 
0138   /**
0139    * Calculate the correction weight with which leading-order
0140    * configurations are re-weighted.
0141    */
0142   double NLOweight() const;
0143 
0144   /**
0145    * Calculate the ratio of the NLO luminosity to the LO
0146    * luminosity function for the \f$q\bar{q}\f$ initiated channel. 
0147    */
0148   double Lhat_ab(tcPDPtr a, tcPDPtr b, realVVKinematics Kinematics) const;
0149 
0150   /**
0151    * Calculate the universal soft-virtual contribution to the NLO weight. 
0152    */
0153   double Vtilde_universal(realVVKinematics S) const;
0154 
0155   /**
0156    * Function for calculation of the \f$q\bar{q}\f$ initiated real
0157    * contribution.
0158    */
0159   double Ctilde_Ltilde_qq_on_x(tcPDPtr a,tcPDPtr b,realVVKinematics C) const;
0160 
0161   /**
0162    * Function for calculation of the \f$gq\f$ initiated real
0163    * contribution.
0164    */
0165   double Ctilde_Ltilde_gq_on_x(tcPDPtr a,tcPDPtr b,realVVKinematics C) const;
0166 
0167   /**
0168    * Function for calculation of the \f$q\bar{q}\f$ initiated real
0169    * contribution.
0170    */
0171   double Rtilde_Ltilde_qqb_on_x(tcPDPtr a,tcPDPtr b) const;
0172 
0173   /**
0174    * Function for calculation of the \f$qg\f$ initiated real
0175    * contribution.
0176    */
0177   double Rtilde_Ltilde_qg_on_x(tcPDPtr a,tcPDPtr b) const;
0178 
0179   /**
0180    * Function for calculation of the \f$gqb\f$ initiated real
0181    * contribution.
0182    */
0183   double Rtilde_Ltilde_gqb_on_x(tcPDPtr a,tcPDPtr b) const;
0184 
0185   /**
0186    * The regular part of the virtual correction matrix element(s).
0187    * For WZ production this is given by Equation B.2 in NPB 383 (1992) 
0188    * 3-44 *** modulo a factor 1/(2s) ***, which is a flux factor that 
0189    * those authors absorb in the matrix element. 
0190    */
0191   double M_V_regular(realVVKinematics S) const;
0192 
0193   /**
0194    *  Member variable to store the
0195    * regular part of the virtual correction matrix element(s).
0196    * For WZ production this is given by Equation B.2 in NPB 383 (1992) 
0197    * 3-44 *** modulo a factor 1/(2s) ***, which is a flux factor that 
0198    * those authors absorb in the matrix element.
0199    */
0200   mutable double M_V_regular_;
0201 
0202   /**
0203    * The matrix element q + qb -> n + g times tk*uk 
0204    */
0205   Energy2 t_u_M_R_qqb(realVVKinematics R) const;
0206 
0207   /**
0208    *  Member variable to store the matrix element q + qb -> n + g times tk*uk 
0209    */
0210   mutable Energy2 t_u_M_R_qqb_;
0211 
0212   /**
0213    * The matrix element q + g  -> n + q times tk*uk 
0214    */
0215   Energy2 t_u_M_R_qg(realVVKinematics R) const;
0216 
0217   /**
0218    *  Member variable to store the matrix element q + g  -> n + q times tk*uk 
0219    */
0220   mutable Energy2 t_u_M_R_qg_;
0221 
0222   /**
0223    * The matrix element g + qb -> n + q times tk*uk 
0224    */
0225   Energy2 t_u_M_R_gqb(realVVKinematics R) const;
0226 
0227   /**
0228    *  Member variable to store the matrix element g + qb -> n + q times tk*uk 
0229    */
0230   mutable Energy2 t_u_M_R_gqb_;
0231 
0232   /**
0233    * The matrix element q + qb -> n + g times (tk*uk)^2 - using helicity amplitudes
0234    */
0235   Energy2 t_u_M_R_qqb_hel_amp(realVVKinematics R) const;
0236 
0237   /**
0238    *  Member variable to store the
0239    * matrix element q + qb -> n + g times (tk*uk)^2 - using helicity amplitudes
0240    */
0241   mutable Energy2 t_u_M_R_qqb_hel_amp_;
0242 
0243   /**
0244    * The matrix element q + g -> n + q times (tk*uk)^2 - using helicity amplitudes
0245    */
0246   Energy2 t_u_M_R_qg_hel_amp(realVVKinematics R) const;
0247 
0248   /**
0249    *  Member variable to store the
0250    * matrix element q + g -> n + q times (tk*uk)^2 - using helicity amplitudes
0251    */
0252   mutable Energy2 t_u_M_R_qg_hel_amp_;
0253 
0254   /**
0255    * The matrix element g + qb -> n + qb times (tk*uk)^2 - using helicity amplitudes
0256    */
0257   Energy2 t_u_M_R_gqb_hel_amp(realVVKinematics R) const;
0258 
0259   /**
0260    *  Member variable to store the
0261    * matrix element g + qb -> n + qb times (tk*uk)^2 - using helicity amplitudes
0262    */
0263   mutable Energy2 t_u_M_R_gqb_hel_amp_;
0264 
0265   /**
0266    * The leading order matrix element - using helicity amplitudes
0267    */
0268   double lo_me() const;
0269 
0270   /**
0271    * The Born matrix element as given in Equation 3.1 - 3.3 in NPB 383 
0272    * (1992) *** modulo a factor 1/(2s) ***, which is a flux factor that 
0273    * those authors absorb in the matrix element. 
0274    */
0275   double M_Born_WZ(bornVVKinematics B) const;
0276 
0277   /**
0278    *  Member variable to store the 
0279    * Born matrix element as given in Equation 3.1 - 3.3 in NPB 383 
0280    * (1992) *** modulo a factor 1/(2s) ***, which is a flux factor that 
0281    * those authors absorb in the matrix element. 
0282    */
0283   mutable double M_Born_;
0284 
0285   /**
0286    * The Born matrix element as given in Equation 2.18 - 2.19 in NPB 357 
0287    * (1991) *** modulo a factor 1/(2s) ***, which is a flux factor that 
0288    * those authors absorb in the matrix element. 
0289    */
0290   double M_Born_ZZ(bornVVKinematics B) const;
0291 
0292   /**
0293    * M_V_regular_ZZ is the regular part of the one-loop ZZ matrix element 
0294    * exactly as defined in Eqs. B.1 & B.2 of  NPB 357(1991)409-438 ***
0295    * modulo a factor 1/(2s) ***, which is a flux factor that 
0296    * those authors absorb in the matrix element. 
0297    */
0298   double M_V_regular_ZZ(realVVKinematics S) const;
0299 
0300   /**
0301    * t_u_M_R_qqb_ZZ is the q + qb -> n + g times tk*uk real emission 
0302    * matrix element as defined in Eq. C.1 of  NPB 357(1991)409-438 ***
0303    * modulo a factor 1/(2s) ***, which is a flux factor that 
0304    * those authors absorb in the matrix element. 
0305    */
0306   Energy2 t_u_M_R_qqb_ZZ(realVVKinematics R) const;
0307 
0308   /**
0309    * The Born matrix element as given in Equation 3.2 - 3.8 in NPB 410 
0310    * (1993) *** modulo a factor 1/(2s) ***, which is a flux factor that 
0311    * those authors absorb in the matrix element. 
0312    */
0313   double M_Born_WW(bornVVKinematics B) const;
0314 
0315   /**
0316    * M_V_regular_WW is the regular part of the one-loop WW matrix element 
0317    * exactly as defined in Eqs. C.1 - C.7 of of NPB 410(1993)280-324 ***
0318    * modulo a factor 1/(2s) ***, which is a flux factor that 
0319    * those authors absorb in the matrix element. 
0320    */
0321   double M_V_regular_WW(realVVKinematics S) const;
0322 
0323   /**
0324    * t_u_M_R_qqb_WW is the q + qb -> n + g times tk*uk real emission 
0325    * matrix element as defined in Eq. D.1-D.5 of  NPB 410(1993)280-324 ***
0326    * modulo a factor 1/(2s) ***, which is a flux factor that 
0327    * those authors absorb in the matrix element. 
0328    */
0329   Energy2 t_u_M_R_qqb_WW(realVVKinematics R) const;
0330 
0331   /**
0332    * Return the factorion scale squared.
0333    */
0334   Energy2 mu_F2() const;
0335 
0336   /**
0337    * Return the renormalisation scale squared.
0338    */
0339   Energy2 mu_UV2() const;
0340 
0341 protected:
0342 
0343   /** @name Clone Methods. */
0344   //@{
0345   /**
0346    * Make a simple clone of this object.
0347    * @return a pointer to the new object.
0348    */
0349   inline virtual IBPtr clone() const { return new_ptr(*this); }
0350 
0351   /** Make a clone of this object, possibly modifying the cloned object
0352    * to make it sane.
0353    * @return a pointer to the new object.
0354    */
0355   inline virtual IBPtr fullclone() const { return new_ptr(*this); }
0356   //@}
0357 
0358 private:
0359 
0360   /**
0361    * The assignment operator is private and must never be called.
0362    * In fact, it should not even be implemented.
0363    */
0364   MEPP2VVPowheg & operator=(const MEPP2VVPowheg &) = delete;
0365 
0366 private:
0367 
0368   /**
0369    *  Parameters for the NLO weight
0370    */
0371   //@{
0372 
0373   /**
0374    * Parameter to determine when to use limiting value of real emission
0375    * matrix elements, to avoid rounding error issues.
0376    */
0377   double tiny;
0378 
0379   /**
0380    *  The BeamParticleData object for the plus and minus direction hadrons
0381    */
0382   tcBeamPtr hadron_A_;
0383   tcBeamPtr hadron_B_;
0384 
0385   /**
0386    * Born / virtual 2->2 kinematics.
0387    */
0388   bornVVKinematics B_;
0389 
0390   /**
0391    * Soft limit of the 2->3 real emission kinematics.
0392    */
0393   realVVKinematics S_;
0394 
0395   /**
0396    * Soft-collinear limit of the 2->3 kinematics (emission in +z direction).
0397    */
0398   realVVKinematics SCp_;
0399 
0400   /**
0401    * The collinear limit of the 2->3 kinematics (emission in -z direction).
0402    */
0403   realVVKinematics SCm_;
0404 
0405   /**
0406    * The collinear limit of the 2->3 kinematics (emission in +z direction).
0407    */
0408   realVVKinematics Cp_;
0409 
0410   /**
0411    * The collinear limit of the 2->3 kinematics (emission in -z direction).
0412    */
0413   realVVKinematics Cm_;
0414 
0415   /**
0416    * The resolved 2->3 real emission kinematics:
0417    */
0418   realVVKinematics H_;
0419 
0420   /**
0421    *  The ParticleData object for the plus and minus lo partons
0422    */
0423   tcPDPtr ab_, bb_;
0424 
0425   /**
0426    *  The ParticleData object for the quark and antiquark 
0427    *  (which can be in a different order to ab_ and bb_).
0428    */
0429   tcPDPtr quark_, antiquark_;
0430 
0431   /**
0432    *  Values of the PDF's before radiation
0433    */
0434   double lo_lumi_;
0435 
0436   /**
0437    *  The value of the leading order qqbar->VV matrix element
0438    */
0439   mutable double lo_me2_;
0440 
0441   /**
0442    *  The CF_ colour factor
0443    */
0444   double CF_;
0445 
0446   /**
0447    *  The TR_ colour factor
0448    */
0449   double TR_;
0450 
0451   /**
0452    *  The number of colours
0453    */
0454   double NC_;
0455 
0456   /**
0457    *  The weak coupling and the sin (squared) of the Weinberg angle
0458    */
0459   mutable double gW_, sin2ThetaW_;
0460 
0461   /**
0462    *  The up and down, left handed, quark-boson couplings
0463    */
0464   mutable double guL_, gdL_;
0465 
0466   /**
0467    *  The up and down, right handed, quark-boson couplings (for WW & ZZ)
0468    */
0469   mutable double guR_, gdR_;
0470 
0471   /**
0472    *  The TGC coupling
0473    */
0474   mutable double eZ_;
0475 
0476   /**
0477    *  The TGC coupling squared. This is useful for debugging purposes
0478    *  when one wants to turn of t-channel * TGC interference contributions
0479    *  but leave the pure TGC contributions intact. It is also needed in 
0480    *  order to transform WZ matrix elements into WW ones.
0481    */
0482   mutable double eZ2_;
0483 
0484   /**
0485    *  The CKM factor (Fij^2)
0486    */
0487   mutable double Fij2_;
0488 
0489   /**
0490    *  Whether to generate the positive, negative or leading order contribution
0491    */
0492   unsigned int contrib_;
0493 
0494   /**
0495    *  Whether to generate all channels contributions or just qqb or just 
0496    *  qg+gqb contributions
0497    */
0498   unsigned int channels_;
0499 
0500   /**
0501    *  Whether to use a fixed or a running QCD coupling for the NLO weight
0502    */
0503   unsigned int nlo_alphaS_opt_;
0504 
0505   /**
0506    *  The value of alphaS to use for the nlo weight if nlo_alphaS_opt_=1
0507    */
0508   double fixed_alphaS_;
0509 
0510   /**
0511    *  Flag to remove or multiply in MCFM branching fractions for testing
0512    */
0513   unsigned int removebr_;
0514 
0515   /**
0516    * Selects a dynamic (sHat) or fixed factorization scale
0517    */
0518   unsigned int scaleopt_;
0519 
0520   /**
0521    * The factorization scale
0522    */
0523   Energy mu_F_;
0524 
0525   /**
0526    * The renormalization scale
0527    */
0528   Energy mu_UV_;
0529 
0530   /**
0531    * The pT of V1 in a radiative event in the lab frame (for scale setting only)
0532    */
0533   Energy2 k1r_perp2_lab_;
0534 
0535   /**
0536    * The pT of V2 in a radiative event in the lab frame (for scale setting only)
0537    */
0538   Energy2 k2r_perp2_lab_;
0539 
0540   /**
0541    * The ckm matrix elements (unsquared, to allow interference)
0542    */
0543   vector< vector<Complex> > ckm_;
0544 
0545   /**
0546    * Option to impose helicity conservation on the real NLO ME's (greatly improves evaluation time).
0547    */
0548   bool helicityConservation_;
0549 
0550   /**
0551    *  The q + qb -> v1 + v2 + g  helicity amplitudes  
0552    */
0553   mutable ProductionMatrixElement qqb_hel_amps_;
0554 
0555   /**
0556    *  The q + g  -> v1 + v2 + q  helicity amplitudes  
0557    */
0558   mutable ProductionMatrixElement qg_hel_amps_;
0559 
0560   /**
0561    *  The g + qb -> v1 + v2 + qb helicity amplitudes  
0562    */
0563   mutable ProductionMatrixElement gqb_hel_amps_;
0564   //@}
0565 
0566   /**
0567    *  The vertices
0568    */
0569   //@{
0570   /**
0571    *  The photon fermion-antifermion vertex
0572    */
0573   AbstractFFVVertexPtr FFPvertex_;
0574 
0575   /**
0576    *  The W fermion-antifermion vertex
0577    */
0578   AbstractFFVVertexPtr FFWvertex_;
0579 
0580   /**
0581    *  The Z fermion-antifermionvertex
0582    */
0583   AbstractFFVVertexPtr FFZvertex_;
0584 
0585   /**
0586    *  The triple electroweak gauge boson vertex
0587    */
0588   AbstractVVVVertexPtr WWWvertex_;
0589 
0590   /**
0591    *  The quark-antiquark gluon vertex
0592    */
0593   AbstractFFVVertexPtr FFGvertex_;
0594   //@}
0595 
0596   /**
0597    *  The value of \f$\alpha_S\f$ used for the calculation
0598    */
0599   mutable double alphaS_;
0600 
0601 protected:
0602 
0603   /**
0604    * Returns the matrix element for a given type of process,
0605    * rapidity of the jet \f$y_j\f$ and transverse momentum \f$p_T\f$
0606    * @param emis_type the type of emission,
0607    * (0 is \f$q\bar{q}\to Vg\f$, 1 is \f$qg\to Vq\f$ and 2 is \f$g\bar{q}\to V\bar{q}\f$)
0608    * @param pT The transverse momentum of the jet
0609    * @param R The object containing the kinematics
0610    */
0611   double getResult(int emis_type, realVVKinematics R, Energy pT);
0612  
0613   /**
0614    *  generates the hardest emission (yj,p)
0615    * @param pnew The momenta of the new particles
0616    * @param emissiontype The type of emission, as for getResult
0617    * @return Whether not an emission was generated
0618    */
0619   bool getEvent(vector<Lorentz5Momentum> & pnew,unsigned int & emissiontype);
0620   
0621   /**
0622    *  sets the QCD, EW and PDF scales
0623    * @param pT The pT of the current step in the veto algorithm
0624    */
0625   void setTheScales(Energy pT);
0626 
0627   /**
0628    * The matrix element q + qb -> n + g times tk*uk 
0629    */
0630   Energy2 t_u_M_R_qqb_hel_amp(realVVKinematics R, bool getMatrix) const;
0631 
0632 
0633   /**
0634    * The matrix element q + g  -> n + q times tk*uk 
0635    */
0636   Energy2 t_u_M_R_qg_hel_amp(realVVKinematics R, bool getMatrix) const;
0637 
0638   /**
0639    * The matrix element g + qb -> n + q times tk*uk 
0640    */
0641   Energy2 t_u_M_R_gqb_hel_amp(realVVKinematics R, bool getMatrix) const;
0642 
0643   /**
0644    * The matrix element for the kinematical configuration
0645    * previously provided by the last call to setKinematics(), suitably
0646    * scaled by sHat() to give a dimension-less number.
0647    * @return the matrix element scaled with sHat() to give a
0648    * dimensionless number.
0649    */
0650   double lo_me(bool getMatrix) const;
0651 
0652   /**
0653    * Recalculate hard vertex to include spin correlations for radiative events.
0654    */
0655   void recalculateVertex();
0656 
0657   /**
0658    * Member which selects a two body decay mode for each vector
0659    * boson and distributes decay products isotropically
0660    */
0661   bool isotropicDecayer();
0662 
0663   /**
0664    * The triangle function lambda(x,y,z)=sqrt(x^2+y^2+z^2-2*x*y-2*y*z-2*x*z)
0665    */
0666   Energy2 triangleFn(Energy2,Energy2,Energy2);
0667 
0668 private:
0669 
0670   /**
0671    * If this boolean is true the n+1 body helicity amplitudes will be
0672    * used to calculate a hard vertex based on those kinematics for spin
0673    * correlations in the decays.
0674    */
0675   bool realMESpinCorrelations_;
0676 
0677   /**
0678    * The colour & spin averaged n-body (leading order) matrix element squared.
0679    */
0680   double lo_me_;
0681 
0682   /**
0683    * The resolved 2->3 real emission kinematics.
0684    */
0685   realVVKinematics R_;
0686 
0687   /**
0688    * This specifies the emitting configuration: 
0689    * 1: q + qbar -> V1 + V2 + g
0690    * 2: q + g    -> V1 + V2 + q
0691    * 3: g + qbar -> V1 + V2 + qbar.
0692    */
0693   unsigned int channel_;
0694 
0695   /**
0696    * Identifies the space-like mother of the branching
0697    * as quark (+1) or antiquark (-1):
0698    */
0699   int fermionNumberOfMother_;
0700 
0701   /**
0702    *  Pointer to the object calculating the strong coupling
0703    */
0704   ShowerAlphaPtr showerAlphaS_;
0705 
0706   /**
0707    *  Constants for the sampling. The distribution is assumed to have the
0708    *  form \f$\frac{c}{{\rm GeV}}\times\left(\frac{{\rm GeV}}{p_T}\right)^n\f$ 
0709    */
0710   //@{
0711   /**
0712    * The power, \f$n\f$, for the sampling
0713    */
0714   double power_;
0715 
0716   /**
0717    *  The prefactor, \f$c\f$ for the \f$q\bar{q}\f$ channel
0718    */
0719   double preqqbar_;
0720 
0721   /**
0722    *  The prefactor, \f$c\f$ for the \f$qg\f$ channel
0723    */
0724   double preqg_;
0725 
0726   /**
0727    *  The prefactor, \f$c\f$ for the \f$g\bar{q}\f$ channel
0728    */
0729   double pregqbar_;
0730 
0731   /**
0732    * The QCD beta function divided by 4pi, (11-2/3*nf)/4/pi, with nf = 5.
0733    */
0734   double b0_;
0735 
0736   /**
0737    * The fundamental QCD scale in the one-loop alpha_{S} used for the crude
0738    * (not the very crude) overestimate of the Sudakov exponent. The default
0739    * value is set so such that alphaS(MZ), neglecting all flavour threshold
0740    * effects i.e. MZ*exp(-1/2/b0_/alphaS(MZ)).
0741    */
0742   Energy LambdaQCD_;
0743 
0744   /**
0745    *  The prefactors as a vector for easy use
0746    */
0747   vector<double> prefactor_;
0748   //@}
0749 
0750   /**
0751    *  Properties of the incoming particles
0752    */
0753   //@{
0754   /**
0755    *  Pointers to the ShowerProgenitor objects for the partons
0756    */
0757   PPtr qProgenitor_;
0758   PPtr qbProgenitor_;
0759 
0760   /**
0761    *  Pointers to the Shower particle objects for the partons
0762    */
0763   PPtr showerQuark_;
0764   PPtr showerAntiquark_;
0765 
0766   /**
0767    *  Pointers to the BeamParticleData objects
0768    */
0769   tcBeamPtr qHadron_;
0770   tcBeamPtr qbHadron_;
0771   //@}
0772 
0773   /**
0774    *  Properties of the boson and jets
0775    */
0776   //@{
0777   /**
0778    *  Pointers to the Shower particle objects for the partons
0779    */
0780   PPtr gluon_;
0781   PPtr V1_;
0782   PPtr V2_;
0783   vector<PPtr> children_;
0784 
0785   /**
0786    *  Flag indicating if the q & qbar are flipped or not i.e. this
0787    *  is true if q enters from the -z direction in the lab frame.
0788    */
0789   bool flipped_;
0790 
0791   /**
0792    *  the rapidity of the jet
0793    */
0794   double Yk_;
0795 
0796   /**
0797    *  The transverse momentum of the jet
0798    */
0799   Energy pT_;
0800   //@}
0801 
0802   /**
0803    *  The transverse momentum of the jet
0804    */
0805   Energy min_pT_;
0806 
0807   // Work out the scales we want to use in the matrix elements and the pdfs:
0808   /**
0809    * Scale for alpha_S: pT^2 of the diboson system.
0810    */
0811   Energy2 QCDScale_;
0812 
0813   /**
0814    * Scale for real emission PDF: 
0815    */
0816   Energy2 PDFScale_;
0817 
0818   /**
0819    * Scale of electroweak vertices: mVV^2 the invariant mass of the diboson system.
0820    */
0821   Energy2 EWScale_;
0822 
0823   /**
0824    * A matrix to hold the home-grown production matrix element
0825    */
0826   mutable Complex productionMatrix_[3][3][3][3];
0827 
0828 };
0829 
0830 }
0831 
0832 #endif /* HERWIG_MEPP2VVPowheg_H */