herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEPP2HiggsPowheg.h
1 // -*- C++ -*-
2 //
3 // MEPP2HiggsPowheg.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2019 The Herwig Collaboration
5 //
6 // Herwig is licenced under version 3 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef HERWIG_MEPP2HiggsPowheg_H
10 #define HERWIG_MEPP2HiggsPowheg_H
11 //
12 // This is the declaration of the MEPP2HiggsPowheg class.
13 //
14 
15 #include "Herwig/MatrixElement/Hadron/MEPP2Higgs.h"
16 #include "ThePEG/PDF/BeamParticleData.h"
17 
18 namespace Herwig {
19 using namespace ThePEG;
20 using namespace ThePEG::Helicity;
21 
31 
32 public:
33 
38 
39 public:
40 
50  virtual double me2() const;
51 
60  virtual bool generateKinematics(const double * r);
61 
65  virtual Energy2 scale() const;
66 
71  virtual int nDim() const;
73 
74 public:
75 
82  void persistentOutput(PersistentOStream & os) const;
83 
89  void persistentInput(PersistentIStream & is, int version);
91 
98  static void Init();
99 
103  void get_born_variables() const;
104 
109  double NLOweight() const;
110 
115  Energy2 s(double xt, double y) const {
116  return p2_/x(xt,y);
117  }
118 
123  Energy2 tk(double xt, double y) const {
124  double x_xt_y(x(xt,y));
125  return -0.5*p2_/x_xt_y*(1.- x_xt_y)*(1.-y);
126  }
127 
132  Energy2 uk(double xt, double y) const {
133  double x_xt_y(x(xt,y));
134  return -0.5*p2_/x_xt_y*(1.- x_xt_y)*(1.+y);
135  }
136 
140  double xbar(double y) const;
141 
145  double etabar(double y) const;
146 
150  double x(double xt, double y) const {
151  double x0(xbar(y));
152  return x0+(1.-x0)*xt;
153  }
154 
158  double xp(double x, double y) const;
159 
163  double xm(double x, double y) const;
164 
169  double Lhat_ab(tcPDPtr a, tcPDPtr b, double x, double y) const;
170 
174  double Vtilde_universal() const;
175 
180  double Ctilde_Ltilde_gg_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const;
181 
186  double Ctilde_Ltilde_qg_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const;
187 
192  double Ctilde_Ltilde_gq_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const;
193 
197  double M_V_regular() const;
198 
202  Energy2 t_u_M_R_qqbar(double xt, double y) const;
203 
207  Energy2 t_u_M_R_qbarq(double xt, double y) const;
208 
212  Energy2 t_u_M_R_gg(double xt, double y) const;
213 
217  Energy2 t_u_M_R_qg(double xt, double y) const;
218 
222  Energy2 t_u_M_R_gq(double xt, double y) const;
223 
228  double Rtilde_Ltilde_qqbar_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const;
229 
234  double Rtilde_Ltilde_qbarq_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const;
235 
240  double Rtilde_Ltilde_gg_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const;
241 
246  double Rtilde_Ltilde_qg_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const;
247 
252  double Rtilde_Ltilde_gq_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const;
253 
254 protected:
255 
262  virtual IBPtr clone() const { return new_ptr(*this); }
263 
268  virtual IBPtr fullclone() const { return new_ptr(*this); }
270 
271 private:
272 
277  MEPP2HiggsPowheg & operator=(const MEPP2HiggsPowheg &) = delete;
278 
279 private:
280 
288  const double CF_ , CA_ , TR_;
289 
293  const int nlf_;
294 
298  const double beta0_;
299 
303  unsigned int contrib_;
304 
308  unsigned int nlo_alphaS_opt_;
309 
315 
323  double xt_;
324 
328  double y_;
330 
334  mutable double lo_lumi_;
335 
339  mutable double lo_ggME_;
340 
344  mutable Energy2 p2_ ;
345 
349  mutable Energy2 s2_ ;
350 
354  mutable double xbp_;
355 
359  mutable double xbm_;
360 
364  mutable double etabarp_;
365 
369  mutable double etabarm_;
370 
374  mutable tcPDPtr a_lo_;
375 
379  mutable tcPDPtr b_lo_;
380 
384  mutable Ptr<BeamParticleData>::transient_const_pointer hadron_A_;
385 
389  mutable Ptr<BeamParticleData>::transient_const_pointer hadron_B_;
390 
394  mutable double alphaS_;
395 
399  unsigned int scaleopt_;
400 
404  Energy mu_F_;
405 
409  Energy mu_UV_;
410 
414  double scaleFact_;
415 };
416 
417 }
418 
419 #endif /* HERWIG_MEPP2HiggsPowheg_H */
The MEPP2HiggsPowheg class implements the matrix element for the process pp->Higgs with different Hig...
double etabarp_
The sqrt(1-xbp_)
Ptr< BeamParticleData >::transient_const_pointer hadron_A_
The BeamParticleData object for the plus direction hadron.
double fixed_alphaS_
The value of alphaS to use for the nlo weight if nlo_alphaS_opt_=1.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
unsigned int nlo_alphaS_opt_
Whether to use a fixed or a running QCD coupling for the NLO weight.
double xt_
Radiation variables.
Energy2 s(double xt, double y) const
Invariant required for the evaluation of next-to-leading order quantities (Frixione et al...
double alphaS_
The value of used for the calculation.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
double etabarm_
The sqrt(1-xbm_)
Energy2 tk(double xt, double y) const
Invariant required for the evaluation of next-to-leading order quantities (Frixione et al...
double lo_ggME_
The value of the leading order gg->H matrix element.
Ptr< BeamParticleData >::transient_const_pointer hadron_B_
The BeamParticleData object for the minus direction hadron.
double scaleFact_
Prefactor if variable scale used.
Energy mu_UV_
The renormalization scale.
Energy2 p2_
The invariant mass of the lo final state.
Energy2 uk(double xt, double y) const
Invariant required for the evaluation of next-to-leading order quantities (Frixione et al...
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
const int nlf_
Number of light flavours (in the beta function beta0_)
const double beta0_
(Proportional to) The beta function
double x(double xt, double y) const
Calculate the variable from the integration variables.
unsigned int contrib_
Whether to generate the positive, negative or leading order contribution.
The MEPP2Higgs class implements the matrix element for the process pp->Higgs with different Higgs sha...
Definition: MEPP2Higgs.h:38
Energy mu_F_
The factorization scale.
tcPDPtr b_lo_
The ParticleData object for the minus lo parton.
-*- C++ -*-
double y_
The angular variable.
virtual IBPtr clone() const
Make a simple clone of this object.
double xbm_
The momentum fraction of the minus parton in the Born process.
tcPDPtr a_lo_
The ParticleData object for the plus lo parton.
double xbp_
The momentum fraction of the plus parton in the Born process.
double lo_lumi_
Values of the PDF&#39;s before radiation.
const double CF_
Parameters for the NLO weight.
unsigned int scaleopt_
Selects a dynamic (sHat) or fixed factorization scale.
Energy2 s2_
The invariant mass of the lo final state.