herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
MatrixElement
Powheg
MEPP2GammaGammaPowheg.h
1
// -*- C++ -*-
2
#ifndef HERWIG_MEPP2GammaGammaPowheg_H
3
#define HERWIG_MEPP2GammaGammaPowheg_H
4
//
5
// This is the declaration of the MEPP2GammaGammaPowheg class.
6
//
7
8
#include "Herwig/MatrixElement/HwMEBase.h"
9
#include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h"
10
#include "Herwig/MatrixElement/ProductionMatrixElement.h"
11
#include "Herwig/Shower/ShowerAlpha.h"
12
13
namespace
Herwig
{
14
15
using namespace
ThePEG
;
16
23
class
MEPP2GammaGammaPowheg
:
public
HwMEBase
{
24
25
enum
DipoleType { IIQCD1=2, IIQCD2=4,
26
IFQED1=5, FIQED1=6, IFQED2=7, FIQED2=8 };
27
28
enum
RadiationType {Subtraction,Hard,Shower};
29
30
public
:
31
37
MEPP2GammaGammaPowheg
();
39
45
virtual
POWHEGType
hasPOWHEGCorrection
() {
return
ISR;}
46
50
virtual
RealEmissionProcessPtr
generateHardest
(RealEmissionProcessPtr,
51
ShowerInteraction
);
53
54
public
:
55
62
virtual
unsigned
int
orderInAlphaS
()
const
;
63
68
virtual
unsigned
int
orderInAlphaEW
()
const
;
69
77
virtual
double
me2
()
const
;
78
82
virtual
Energy2
scale
()
const
;
83
88
virtual
int
nDim
()
const
;
89
98
virtual
bool
generateKinematics
(
const
double
* r);
99
104
virtual
CrossSection
dSigHatDR
()
const
;
105
109
virtual
void
getDiagrams
()
const
;
110
119
virtual
Selector<DiagramIndex>
diagrams
(
const
DiagramVector
& dv)
const
;
120
128
virtual
Selector<const ColourLines *>
129
colourGeometries
(tcDiagPtr diag)
const
;
131
132
public
:
133
140
void
persistentOutput
(
PersistentOStream
& os)
const
;
141
147
void
persistentInput
(
PersistentIStream
& is,
int
version);
149
156
static
void
Init
();
157
158
protected
:
159
163
virtual
double
NLOWeight
()
const
;
164
168
double
loGammaGammaME
(
const
cPDVector
& particles,
169
const
vector<Lorentz5Momentum> & momenta,
170
bool
first=
false
)
const
;
171
175
double
loGammaqME
(
const
cPDVector
& particles,
176
const
vector<Lorentz5Momentum> & momenta,
177
bool
first=
false
)
const
;
178
182
double
loGammaqbarME
(
const
cPDVector
& particles,
183
const
vector<Lorentz5Momentum> & momenta,
184
bool
first=
false
)
const
;
185
189
double
loGammagME
(
const
cPDVector
& particles,
190
const
vector<Lorentz5Momentum> & momenta,
191
bool
first=
false
)
const
;
192
196
InvEnergy2
realGammaGammagME
(
const
cPDVector
& particles,
197
const
vector<Lorentz5Momentum> & momenta,
198
DipoleType dipole, RadiationType rad,
199
bool
first=
false
)
const
;
200
204
InvEnergy2
realGammaGammaqME
(
const
cPDVector
& particles,
205
const
vector<Lorentz5Momentum> & momenta,
206
DipoleType dipole, RadiationType rad,
207
bool
first=
false
)
const
;
208
212
InvEnergy2
realGammaGammaqbarME
(
const
cPDVector
& particles,
213
const
vector<Lorentz5Momentum> & momenta,
214
DipoleType dipole, RadiationType rad,
215
bool
first=
false
)
const
;
216
220
double
subtractedVirtual
()
const
;
221
225
double
subtractedReal
(pair<double,double> x,
double
z,
226
double
zJac,
double
oldqPDF,
double
newqPDF,
227
double
newgPDF,
bool
order)
const
;
228
236
double
collinearQuark
(
double
x, Energy2 mu2,
double
jac,
double
z,
237
double
oldPDF,
double
newPDF)
const
;
238
242
double
collinearGluon
(Energy2 mu2,
double
jac,
double
z,
243
double
oldPDF,
double
newPDF)
const
;
245
252
double
realME
(
const
cPDVector
& particles,
253
const
vector<Lorentz5Momentum> & momenta)
const
;
254
258
RealEmissionProcessPtr
hardQCDEmission
(RealEmissionProcessPtr,
259
ParticleVector
,
260
pair<double,double>);
261
265
RealEmissionProcessPtr
hardQEDEmission
(RealEmissionProcessPtr,
266
ParticleVector
,
267
pair<double,double>);
268
272
pair<double,double>
supressionFunction
(Energy pT,Energy
scale
)
const
{
273
if
(
supressionScale_
==0)
scale
=
lambda_
;
274
Energy2 scale2 =
sqr
(
scale
), pT2 =
sqr
(pT);
275
switch
(
supressionFunction_
) {
276
case
0:
277
return
make_pair(1.,0.);
278
case
1:
279
if
(pT <
scale
)
return
make_pair(1.,0.);
280
else
return
make_pair(0.,1.);
281
case
2:
282
return
make_pair(scale2/(pT2+scale2),pT2/(pT2+scale2));
283
default
:
284
assert(
false
);
285
return
make_pair(0.,0.);
286
}
287
}
288
289
290
protected
:
291
298
virtual
IBPtr
clone
()
const
;
299
304
virtual
IBPtr
fullclone
()
const
;
306
protected
:
307
315
virtual
void
doinit
();
317
318
private
:
319
324
MEPP2GammaGammaPowheg
&
operator=
(
const
MEPP2GammaGammaPowheg
&) =
delete
;
325
326
private
:
327
335
AbstractFFVVertexPtr
FFPvertex_
;
336
340
AbstractFFVVertexPtr
FFGvertex_
;
342
350
mutable
double
zTilde_
;
351
355
mutable
double
vTilde_
;
356
360
mutable
double
phi_
;
362
366
unsigned
int
contrib_
;
367
371
double
power_
;
372
376
tcPDPtr
gluon_
;
377
381
unsigned
int
process_
;
382
386
unsigned
int
threeBodyProcess_
;
387
391
int
maxflavour_
;
392
396
mutable
double
CFfact_
;
397
401
mutable
double
TRfact_
;
402
406
mutable
double
alphaS_
;
407
411
bool
fixedAlphaS_
;
412
416
mutable
double
alphaEM_
;
417
421
mutable
double
loME_
;
422
426
mutable
ProductionMatrixElement
me_
;
427
431
mutable
DipoleType
dipole_
;
432
440
unsigned
int
supressionFunction_
;
441
445
unsigned
int
supressionScale_
;
446
450
Energy
lambda_
;
452
453
461
bool
quarkplus_
;
463
471
vector<tcBeamPtr>
beams_
;
472
476
vector<tcPDPtr>
partons_
;
478
487
double
preQCDqqbarq_
;
491
double
preQCDqqbarqbar_
;
492
496
double
preQCDqg_
;
497
501
double
preQCDgqbar_
;
502
503
double
preQEDqqbarq_;
504
double
preQEDqqbarqbar_;
505
double
preQEDqgq_;
506
double
preQEDgqbarqbar_;
507
511
vector<double>
prefactor_
;
513
517
Energy
minpT_
;
518
522
ShowerAlphaPtr
alphaQCD_
;
523
527
ShowerAlphaPtr
alphaQED_
;
528
532
unsigned
int
scaleChoice_
;
533
537
double
scalePreFactor_
;
538
539
};
540
541
}
542
543
#endif
/* HERWIG_MEPP2GammaGammaPowheg_H */
Herwig::HwMEBase
The HwMEBase class serves a number of purposes.
Definition:
HwMEBase.h:35
Herwig::HwMEBase::POWHEGType
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition:
HwMEBase.h:87
Herwig::MEPP2GammaGammaPowheg
Here is the documentation of the MEPP2GammaGammaPowheg class.
Definition:
MEPP2GammaGammaPowheg.h:23
Herwig::MEPP2GammaGammaPowheg::FFGvertex_
AbstractFFVVertexPtr FFGvertex_
FFGVertex.
Definition:
MEPP2GammaGammaPowheg.h:340
Herwig::MEPP2GammaGammaPowheg::fixedAlphaS_
bool fixedAlphaS_
Use a fixed value of .
Definition:
MEPP2GammaGammaPowheg.h:411
Herwig::MEPP2GammaGammaPowheg::minpT_
Energy minpT_
The transverse momentum of the jet.
Definition:
MEPP2GammaGammaPowheg.h:517
Herwig::MEPP2GammaGammaPowheg::diagrams
virtual Selector< DiagramIndex > diagrams(const DiagramVector &dv) const
Get diagram selector.
Herwig::MEPP2GammaGammaPowheg::prefactor_
vector< double > prefactor_
The prefactors as a vector for easy use.
Definition:
MEPP2GammaGammaPowheg.h:511
Herwig::MEPP2GammaGammaPowheg::operator=
MEPP2GammaGammaPowheg & operator=(const MEPP2GammaGammaPowheg &)=delete
The assignment operator is private and must never be called.
Herwig::MEPP2GammaGammaPowheg::alphaQCD_
ShowerAlphaPtr alphaQCD_
Pointer to the object calculating the strong coupling.
Definition:
MEPP2GammaGammaPowheg.h:522
Herwig::MEPP2GammaGammaPowheg::process_
unsigned int process_
Processes.
Definition:
MEPP2GammaGammaPowheg.h:381
Herwig::MEPP2GammaGammaPowheg::TRfact_
double TRfact_
Factor for dependent pieces.
Definition:
MEPP2GammaGammaPowheg.h:401
Herwig::MEPP2GammaGammaPowheg::orderInAlphaEW
virtual unsigned int orderInAlphaEW() const
Return the order in in which this matrix element is given.
Herwig::MEPP2GammaGammaPowheg::loGammaGammaME
double loGammaGammaME(const cPDVector &particles, const vector< Lorentz5Momentum > &momenta, bool first=false) const
Leading-order matrix element for .
Herwig::MEPP2GammaGammaPowheg::power_
double power_
Power for sampling .
Definition:
MEPP2GammaGammaPowheg.h:371
Herwig::MEPP2GammaGammaPowheg::loGammaqbarME
double loGammaqbarME(const cPDVector &particles, const vector< Lorentz5Momentum > &momenta, bool first=false) const
Leading-order matrix element for .
Herwig::MEPP2GammaGammaPowheg::alphaS_
double alphaS_
Strong coupling.
Definition:
MEPP2GammaGammaPowheg.h:406
Herwig::MEPP2GammaGammaPowheg::NLOWeight
virtual double NLOWeight() const
Calculate of the full next-to-leading order weight.
Herwig::MEPP2GammaGammaPowheg::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::MEPP2GammaGammaPowheg::orderInAlphaS
virtual unsigned int orderInAlphaS() const
Return the order in in which this matrix element is given.
Herwig::MEPP2GammaGammaPowheg::realME
double realME(const cPDVector &particles, const vector< Lorentz5Momentum > &momenta) const
The real matrix element divided by , to be implemented in the inheriting classes.
Herwig::MEPP2GammaGammaPowheg::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::MEPP2GammaGammaPowheg::getDiagrams
virtual void getDiagrams() const
Add all possible diagrams with the add() function.
Herwig::MEPP2GammaGammaPowheg::scale
virtual Energy2 scale() const
Return the scale associated with the last set phase space point.
Herwig::MEPP2GammaGammaPowheg::alphaQED_
ShowerAlphaPtr alphaQED_
Pointer to the object calculating the EM.
Definition:
MEPP2GammaGammaPowheg.h:527
Herwig::MEPP2GammaGammaPowheg::scalePreFactor_
double scalePreFactor_
Scale factor.
Definition:
MEPP2GammaGammaPowheg.h:537
Herwig::MEPP2GammaGammaPowheg::hasPOWHEGCorrection
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition:
MEPP2GammaGammaPowheg.h:45
Herwig::MEPP2GammaGammaPowheg::loME_
double loME_
Leading-order matrix element.
Definition:
MEPP2GammaGammaPowheg.h:421
Herwig::MEPP2GammaGammaPowheg::contrib_
unsigned int contrib_
Whether to generate the positive, negative or leading order contribution.
Definition:
MEPP2GammaGammaPowheg.h:366
Herwig::MEPP2GammaGammaPowheg::beams_
vector< tcBeamPtr > beams_
Properties of the incoming particles.
Definition:
MEPP2GammaGammaPowheg.h:471
Herwig::MEPP2GammaGammaPowheg::phi_
double phi_
Azimuthal angle.
Definition:
MEPP2GammaGammaPowheg.h:360
Herwig::MEPP2GammaGammaPowheg::alphaEM_
double alphaEM_
Electromagnetic coupling.
Definition:
MEPP2GammaGammaPowheg.h:416
Herwig::MEPP2GammaGammaPowheg::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::MEPP2GammaGammaPowheg::lambda_
Energy lambda_
Scalar for the supression function.
Definition:
MEPP2GammaGammaPowheg.h:450
Herwig::MEPP2GammaGammaPowheg::supressionFunction_
unsigned int supressionFunction_
Supression Function.
Definition:
MEPP2GammaGammaPowheg.h:440
Herwig::MEPP2GammaGammaPowheg::vTilde_
double vTilde_
Second variable.
Definition:
MEPP2GammaGammaPowheg.h:355
Herwig::MEPP2GammaGammaPowheg::colourGeometries
virtual Selector< const ColourLines * > colourGeometries(tcDiagPtr diag) const
Return a Selector with possible colour geometries for the selected diagram weighted by their relative...
Herwig::MEPP2GammaGammaPowheg::threeBodyProcess_
unsigned int threeBodyProcess_
Processes.
Definition:
MEPP2GammaGammaPowheg.h:386
Herwig::MEPP2GammaGammaPowheg::CFfact_
double CFfact_
Factor for dependent pieces.
Definition:
MEPP2GammaGammaPowheg.h:396
Herwig::MEPP2GammaGammaPowheg::MEPP2GammaGammaPowheg
MEPP2GammaGammaPowheg()
The default constructor.
Herwig::MEPP2GammaGammaPowheg::loGammagME
double loGammagME(const cPDVector &particles, const vector< Lorentz5Momentum > &momenta, bool first=false) const
Leading-order matrix element for .
Herwig::MEPP2GammaGammaPowheg::preQCDqg_
double preQCDqg_
The prefactor, for the channel.
Definition:
MEPP2GammaGammaPowheg.h:496
Herwig::MEPP2GammaGammaPowheg::zTilde_
double zTilde_
Kinematic variables for the real radiation.
Definition:
MEPP2GammaGammaPowheg.h:350
Herwig::MEPP2GammaGammaPowheg::nDim
virtual int nDim() const
The number of internal degrees of freedom used in the matrix element.
Herwig::MEPP2GammaGammaPowheg::hardQCDEmission
RealEmissionProcessPtr hardQCDEmission(RealEmissionProcessPtr, ParticleVector, pair< double, double >)
Generate hard QCD emission.
Herwig::MEPP2GammaGammaPowheg::me_
ProductionMatrixElement me_
The matrix element.
Definition:
MEPP2GammaGammaPowheg.h:426
Herwig::MEPP2GammaGammaPowheg::loGammaqME
double loGammaqME(const cPDVector &particles, const vector< Lorentz5Momentum > &momenta, bool first=false) const
Leading-order matrix element for .
Herwig::MEPP2GammaGammaPowheg::generateKinematics
virtual bool generateKinematics(const double *r)
Generate internal degrees of freedom given nDim() uniform random numbers in the interval .
Herwig::MEPP2GammaGammaPowheg::me2
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
Herwig::MEPP2GammaGammaPowheg::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Herwig::MEPP2GammaGammaPowheg::generateHardest
virtual RealEmissionProcessPtr generateHardest(RealEmissionProcessPtr, ShowerInteraction)
Apply the POWHEG style correction.
Herwig::MEPP2GammaGammaPowheg::collinearQuark
double collinearQuark(double x, Energy2 mu2, double jac, double z, double oldPDF, double newPDF) const
Calculate of the collinear counterterms.
Herwig::MEPP2GammaGammaPowheg::preQCDqqbarq_
double preQCDqqbarq_
Constants for the sampling.
Definition:
MEPP2GammaGammaPowheg.h:487
Herwig::MEPP2GammaGammaPowheg::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Herwig::MEPP2GammaGammaPowheg::preQCDqqbarqbar_
double preQCDqqbarqbar_
The prefactor, for the channel.
Definition:
MEPP2GammaGammaPowheg.h:491
Herwig::MEPP2GammaGammaPowheg::realGammaGammagME
InvEnergy2 realGammaGammagME(const cPDVector &particles, const vector< Lorentz5Momentum > &momenta, DipoleType dipole, RadiationType rad, bool first=false) const
Real emission matrix element for .
Herwig::MEPP2GammaGammaPowheg::scaleChoice_
unsigned int scaleChoice_
Scale choice.
Definition:
MEPP2GammaGammaPowheg.h:532
Herwig::MEPP2GammaGammaPowheg::maxflavour_
int maxflavour_
Allowed flavours of the incoming quarks.
Definition:
MEPP2GammaGammaPowheg.h:391
Herwig::MEPP2GammaGammaPowheg::dSigHatDR
virtual CrossSection dSigHatDR() const
Return the matrix element squared differential in the variables given by the last call to generateKin...
Herwig::MEPP2GammaGammaPowheg::dipole_
DipoleType dipole_
the selected dipole
Definition:
MEPP2GammaGammaPowheg.h:431
Herwig::MEPP2GammaGammaPowheg::supressionFunction
pair< double, double > supressionFunction(Energy pT, Energy scale) const
The supression function.
Definition:
MEPP2GammaGammaPowheg.h:272
Herwig::MEPP2GammaGammaPowheg::FFPvertex_
AbstractFFVVertexPtr FFPvertex_
Vertices.
Definition:
MEPP2GammaGammaPowheg.h:335
Herwig::MEPP2GammaGammaPowheg::supressionScale_
unsigned int supressionScale_
Choice for the scale in the supression function.
Definition:
MEPP2GammaGammaPowheg.h:445
Herwig::MEPP2GammaGammaPowheg::realGammaGammaqbarME
InvEnergy2 realGammaGammaqbarME(const cPDVector &particles, const vector< Lorentz5Momentum > &momenta, DipoleType dipole, RadiationType rad, bool first=false) const
Real emission matrix element for .
Herwig::MEPP2GammaGammaPowheg::gluon_
tcPDPtr gluon_
Pointer to the gluon ParticleData object.
Definition:
MEPP2GammaGammaPowheg.h:376
Herwig::MEPP2GammaGammaPowheg::subtractedVirtual
double subtractedVirtual() const
The dipole subtractedvirtual contribution.
Herwig::MEPP2GammaGammaPowheg::subtractedReal
double subtractedReal(pair< double, double > x, double z, double zJac, double oldqPDF, double newqPDF, double newgPDF, bool order) const
Subtracted real contribution.
Herwig::MEPP2GammaGammaPowheg::doinit
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Herwig::MEPP2GammaGammaPowheg::quarkplus_
bool quarkplus_
Hard emission stuff.
Definition:
MEPP2GammaGammaPowheg.h:461
Herwig::MEPP2GammaGammaPowheg::hardQEDEmission
RealEmissionProcessPtr hardQEDEmission(RealEmissionProcessPtr, ParticleVector, pair< double, double >)
Generate hard QED emission.
Herwig::MEPP2GammaGammaPowheg::collinearGluon
double collinearGluon(Energy2 mu2, double jac, double z, double oldPDF, double newPDF) const
Gluon collinear counter term.
Herwig::MEPP2GammaGammaPowheg::realGammaGammaqME
InvEnergy2 realGammaGammaqME(const cPDVector &particles, const vector< Lorentz5Momentum > &momenta, DipoleType dipole, RadiationType rad, bool first=false) const
Real emission matrix element for .
Herwig::MEPP2GammaGammaPowheg::preQCDgqbar_
double preQCDgqbar_
The prefactor, for the channel.
Definition:
MEPP2GammaGammaPowheg.h:501
Herwig::MEPP2GammaGammaPowheg::partons_
vector< tcPDPtr > partons_
Pointers to the ParticleDataObjects for the partons.
Definition:
MEPP2GammaGammaPowheg.h:476
Herwig::ProductionMatrixElement
The storage of the helicity amplitude expression for the matrix element of a hard process.
Definition:
ProductionMatrixElement.h:34
ThePEG::MEBase::DiagramVector
vector< DiagPtr > DiagramVector
ThePEG::PersistentIStream
ThePEG::PersistentOStream
ThePEG::Selector
Herwig::ShowerInteraction
ShowerInteraction
Handy header file to be included in all Shower classes.
Definition:
ShowerInteraction.h:23
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::ParticleVector
vector< PPtr > ParticleVector
ThePEG::tcPDPtr
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
ThePEG::sqr
constexpr auto sqr(const T &x) -> decltype(x *x)
ThePEG::cPDVector
vector< cPDPtr > cPDVector
Generated on Thu Jun 20 2024 17:50:53 for Herwig by
1.9.6