herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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
18namespace Herwig {
19using namespace ThePEG;
20using namespace ThePEG::Helicity;
21
31
32public:
33
38
39public:
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
74public:
75
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
254protected:
255
262 virtual IBPtr clone() const { return new_ptr(*this); }
263
268 virtual IBPtr fullclone() const { return new_ptr(*this); }
270
271private:
272
278
279private:
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
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 Rtilde_Ltilde_gq_on_x(tcPDPtr a, tcPDPtr b, double xt, double y) const
Function for calculation of the initiated real contribution.
double etabar(double y) const
Calculate auxiliary function of , .
Energy2 s(double xt, double y) const
Invariant required for the evaluation of next-to-leading order quantities (Frixione et al.
double xp(double x, double y) const
Calculate the momentum fraction of the plus parton.
const double beta0_
(Proportional to) The beta function
Energy2 t_u_M_R_qqbar(double xt, double y) const
The matrix element q + qbar -> n + g times tk*uk.
double etabarm_
The sqrt(1-xbm_)
double xm(double x, double y) const
Calculate the momentum fraction of the minus parton.
double lo_lumi_
Values of the PDF's before radiation.
double Vtilde_universal() const
Calculate the universal soft-virtual contribution to the NLO weight.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Energy mu_F_
The factorization scale.
Energy2 p2_
The invariant mass of the lo final state.
unsigned int contrib_
Whether to generate the positive, negative or leading order contribution.
Energy mu_UV_
The renormalization scale.
double Rtilde_Ltilde_qbarq_on_x(tcPDPtr a, tcPDPtr b, double xt, double y) const
Function for calculation of the initiated real contribution.
virtual int nDim() const
The number of internal degrees of freedom used in the matrix element.
double xbm_
The momentum fraction of the minus parton in the Born process.
const int nlf_
Number of light flavours (in the beta function beta0_)
double xbar(double y) const
Calculate the minimum of .
double lo_ggME_
The value of the leading order gg->H matrix element.
virtual IBPtr clone() const
Make a simple clone of this object.
const double CF_
Parameters for the NLO weight.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
unsigned int nlo_alphaS_opt_
Whether to use a fixed or a running QCD coupling for the NLO weight.
static void Init()
The standard Init function used to initialize the interfaces.
Energy2 s2_
The invariant mass of the lo final state.
MEPP2HiggsPowheg()
The default constructor.
double Ctilde_Ltilde_gg_on_x(tcPDPtr a, tcPDPtr b, double xt, double y) const
Function for calculation of the initiated real contribution.
double NLOweight() const
Calculate the correction weight with which leading-order configurations are re-weighted.
Energy2 t_u_M_R_qbarq(double xt, double y) const
The matrix element qbar + q -> n + g times tk*uk.
Energy2 t_u_M_R_qg(double xt, double y) const
The matrix element q + g -> n + q times tk*uk.
virtual bool generateKinematics(const double *r)
Generate internal degrees of freedom given nDim() uniform random numbers in the interval .
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
double Rtilde_Ltilde_gg_on_x(tcPDPtr a, tcPDPtr b, double xt, double y) const
Function for calculation of the initiated real contribution.
double etabarp_
The sqrt(1-xbp_)
unsigned int scaleopt_
Selects a dynamic (sHat) or fixed factorization scale.
double Ctilde_Ltilde_qg_on_x(tcPDPtr a, tcPDPtr b, double xt, double y) const
Function for calculation of the initiated real contribution.
tcPDPtr a_lo_
The ParticleData object for the plus lo parton.
double fixed_alphaS_
The value of alphaS to use for the nlo weight if nlo_alphaS_opt_=1.
double xt_
Radiation variables.
virtual Energy2 scale() const
Return the scale associated with the last set phase space point.
Ptr< BeamParticleData >::transient_const_pointer hadron_A_
The BeamParticleData object for the plus direction hadron.
Energy2 t_u_M_R_gg(double xt, double y) const
The matrix element g + g -> n + g times tk*uk.
void get_born_variables() const
Function to set the born variables.
Ptr< BeamParticleData >::transient_const_pointer hadron_B_
The BeamParticleData object for the minus direction hadron.
double xbp_
The momentum fraction of the plus parton in the Born process.
double M_V_regular() const
The regular part of the virtual correction matrix element(s)
double Rtilde_Ltilde_qqbar_on_x(tcPDPtr a, tcPDPtr b, double xt, double y) const
Function for calculation of the initiated real contribution.
MEPP2HiggsPowheg & operator=(const MEPP2HiggsPowheg &)=delete
The assignment operator is private and must never be called.
double alphaS_
The value of used for the calculation.
double scaleFact_
Prefactor if variable scale used.
Energy2 t_u_M_R_gq(double xt, double y) const
The matrix element g + q -> n + q times tk*uk.
double Lhat_ab(tcPDPtr a, tcPDPtr b, double x, double y) const
Calculate the ratio of the NLO luminosity to the LO luminosity function for the initiated channel.
double x(double xt, double y) const
Calculate the variable from the integration variables.
Energy2 uk(double xt, double y) const
Invariant required for the evaluation of next-to-leading order quantities (Frixione et al.
tcPDPtr b_lo_
The ParticleData object for the minus lo parton.
Energy2 tk(double xt, double y) const
Invariant required for the evaluation of next-to-leading order quantities (Frixione et al.
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
double y_
The angular variable.
double Ctilde_Ltilde_gq_on_x(tcPDPtr a, tcPDPtr b, double xt, double y) const
Function for calculation of the initiated real contribution.
double Rtilde_Ltilde_qg_on_x(tcPDPtr a, tcPDPtr b, double xt, double y) const
Function for calculation of the initiated real contribution.
The MEPP2Higgs class implements the matrix element for the process pp->Higgs with different Higgs sha...
Definition: MEPP2Higgs.h:38
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr