herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Decay
Perturbative
SMZDecayer.h
1
// -*- C++ -*-
2
//
3
// SMZDecayer.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_SMZDecayer_H
10
#define HERWIG_SMZDecayer_H
11
//
12
// This is the declaration of the SMZDecayer class.
13
//
14
#include "Herwig/Decay/PerturbativeDecayer.h"
15
#include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h"
16
#include "Herwig/Decay/PhaseSpaceMode.h"
17
18
namespace
Herwig
{
19
using namespace
ThePEG
;
20
using namespace
ThePEG::Helicity
;
21
31
class
SMZDecayer
:
public
PerturbativeDecayer
{
32
33
public
:
34
38
SMZDecayer
();
39
48
virtual
bool
hasMECorrection
() {
return
true
;}
49
53
virtual
void
initializeMECorrection
(RealEmissionProcessPtr ,
double
& ,
54
double
& );
55
68
virtual
bool
softMatrixElementVeto
(
PPtr
parent,
69
PPtr
progenitor,
70
const
bool
& fs,
71
const
Energy & highestpT,
72
const
tcPDVector
& ids,
73
const
double
& z,
74
const
Energy & scale,
75
const
Energy &
pT
);
76
80
virtual
POWHEGType
hasPOWHEGCorrection
() {
return
FSR;}
82
83
public
:
84
91
virtual
int
modeNumber
(
bool
& cc,
tcPDPtr
parent,
92
const
tPDVector
& children)
const
;
93
100
virtual
ParticleVector
decay
(
const
Particle
& parent,
const
tPDVector
& children)
const
;
101
111
double
me2
(
const
int
ichan,
const
Particle
& part,
112
const
tPDVector
&
outgoing
,
113
const
vector<Lorentz5Momentum> & momenta,
114
MEOption
meopt)
const
;
115
119
virtual
void
constructSpinInfo
(
const
Particle
& part,
120
ParticleVector
outgoing
)
const
;
121
127
virtual
void
dataBaseOutput
(ofstream & os,
bool
header)
const
;
128
140
virtual
double
oneLoopVirtualME
(
unsigned
int
imode
,
141
const
Particle
& part,
142
const
ParticleVector
& products);
143
157
virtual
InvEnergy2
realEmissionME
(
unsigned
int
imode
,
158
const
Particle
& part,
159
ParticleVector
& products,
160
unsigned
int
iemitter,
161
double
ctheta,
double
stheta,
162
const
LorentzRotation
& rot1,
163
const
LorentzRotation
& rot2);
165
166
public
:
167
174
void
persistentOutput
(
PersistentOStream
& os)
const
;
175
181
void
persistentInput
(
PersistentIStream
& is,
int
version);
183
187
static
void
Init
();
188
189
protected
:
190
197
virtual
IBPtr
clone
()
const
{
return
new_ptr(*
this
);}
198
203
virtual
IBPtr
fullclone
()
const
{
return
new_ptr(*
this
);}
205
206
protected
:
207
215
virtual
void
doinit
();
216
221
virtual
void
doinitrun
();
223
224
protected
:
225
229
void
setRho
(
double
);
230
234
void
setKtildeSymm
();
235
239
void
setKtilde2
();
240
248
double
getZfromX
(
double
,
double
);
249
253
double
getKfromX
(
double
,
double
);
255
263
void
getXXbar
(
double
kt,
double
z,
double
& x,
double
& xbar);
264
274
double
qWeight
(
double
x,
double
xbar);
275
281
double
qbarWeight
(
double
x,
double
xbar);
282
288
double
qWeightX
(Energy qtilde,
double
z);
289
295
double
qbarWeightX
(Energy qtilde,
double
z);
297
300
double
u
(
double
);
301
309
double
MEV
(
double
,
double
);
310
314
double
MEA
(
double
,
double
);
315
321
double
PS
(
double
x1,
double
x2);
323
324
protected
:
325
329
double
calculateRealEmission
(
double
x1,
double
x2,
330
tcPDVector
outgoing
,
331
vector<Lorentz5Momentum> momenta,
332
double
phi,
333
bool
subtract,
334
int
emitter)
const
;
335
339
double
calculateRealEmission
(
double
x1,
double
x2,
340
vector<PPtr> hardProcess,
341
double
phi,
342
bool
subtract)
const
;
343
347
bool
checkZMomenta
(
double
x1,
double
x2,
double
x3,
double
y, Energy
pT
)
const
;
348
352
InvEnergy
calculateJacobian
(
double
x1,
double
x2, Energy
pT
)
const
;
353
357
double
meRatio
(
tcPDVector
partons,
358
vector<Lorentz5Momentum> momenta,
359
unsigned
int
iemitter,
bool
subtract)
const
;
360
364
virtual
double
matrixElementRatio
(
const
Particle
& inpart,
const
ParticleVector
& decay2,
365
const
ParticleVector
& decay3,
MEOption
meopt,
366
ShowerInteraction
inter);
367
371
double
loME
(
const
tcPDVector
& partons,
372
const
vector<Lorentz5Momentum> & momenta)
const
;
373
377
InvEnergy2
realME
(
const
tcPDVector
& partons,
378
const
vector<Lorentz5Momentum> & momenta,
379
ShowerInteraction
inter)
const
;
380
384
bool
getEvent
(vector<PPtr> hardProcess);
385
386
private
:
387
391
SMZDecayer
&
operator=
(
const
SMZDecayer
&) =
delete
;
392
393
private
:
394
395
396
400
FFVVertexPtr
FFZVertex_
;
401
405
AbstractFFVVertexPtr
FFPVertex_
;
406
410
AbstractFFVVertexPtr
FFGVertex_
;
411
419
vector<double>
quarkWeight_
;
420
424
vector<double>
leptonWeight_
;
426
430
mutable
RhoDMatrix
_rho
;
431
435
mutable
vector<VectorWaveFunction>
_vectors
;
436
440
mutable
vector<SpinorWaveFunction>
_wave
;
441
445
mutable
vector<SpinorBarWaveFunction>
_wavebar
;
446
447
private
:
448
452
Energy
d_Q_
;
453
457
Energy
d_m_
;
458
462
double
d_rho_
;
463
467
double
d_v_
;
468
472
double
d_kt1_
;
473
477
double
d_kt2_
;
478
482
static
const
double
EPS_
;
483
484
private
:
485
489
double
CF_
;
490
494
mutable
Energy
mZ_
;
495
499
mutable
double
mu_
;
500
504
mutable
double
mu2_
;
505
509
mutable
double
aS_
;
510
514
mutable
Energy2
scale_
;
515
523
tcPDPtr
gluon_
;
524
528
tcPDVector
partons_
;
529
533
vector<Lorentz5Momentum>
quark_
;
534
538
Lorentz5Momentum
gauge_
;
539
543
PPtr
zboson_
;
544
548
Energy2
mz2_
;
550
554
bool
NLO_
;
555
};
556
557
}
558
559
560
#endif
/* HERWIG_SMZDecayer_H */
Herwig::DecayIntegrator::imode
int imode() const
The mode being used for this decay.
Definition:
DecayIntegrator.h:118
Herwig::DecayIntegrator::MEOption
MEOption
Enum for the matrix element option.
Definition:
DecayIntegrator.h:72
Herwig::HwDecayerBase::POWHEGType
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition:
HwDecayerBase.h:76
Herwig::PerturbativeDecayer
The PerturbativeDecayer class is the base class for perturbative decays in Herwig and implements the ...
Definition:
PerturbativeDecayer.h:23
Herwig::PerturbativeDecayer::pT
const Energy & pT() const
Access to the kinematics for inheriting classes.
Definition:
PerturbativeDecayer.h:215
Herwig::SMZDecayer
The SMZDecayer is designed to perform the decay of the Z boson to the Standard Model fermions.
Definition:
SMZDecayer.h:31
Herwig::SMZDecayer::qbarWeightX
double qbarWeightX(Energy qtilde, double z)
Soft antiquark weight calculated from .
Herwig::SMZDecayer::zboson_
PPtr zboson_
The Z boson.
Definition:
SMZDecayer.h:543
Herwig::SMZDecayer::MEA
double MEA(double, double)
Axial vector part of the matrix element.
Herwig::SMZDecayer::EPS_
static const double EPS_
Cut-off parameter.
Definition:
SMZDecayer.h:482
Herwig::SMZDecayer::PS
double PS(double x1, double x2)
The matrix element, given , .
Herwig::SMZDecayer::mu2_
double mu2_
The square of the reduced mass.
Definition:
SMZDecayer.h:504
Herwig::SMZDecayer::operator=
SMZDecayer & operator=(const SMZDecayer &)=delete
Private and non-existent assignment operator.
Herwig::SMZDecayer::d_Q_
Energy d_Q_
CM energy.
Definition:
SMZDecayer.h:452
Herwig::SMZDecayer::matrixElementRatio
virtual double matrixElementRatio(const Particle &inpart, const ParticleVector &decay2, const ParticleVector &decay3, MEOption meopt, ShowerInteraction inter)
Calculate matrix element ratio R/B.
Herwig::SMZDecayer::qbarWeight
double qbarWeight(double x, double xbar)
Soft antiquark weight calculated from .
Herwig::SMZDecayer::softMatrixElementVeto
virtual bool softMatrixElementVeto(PPtr parent, PPtr progenitor, const bool &fs, const Energy &highestpT, const tcPDVector &ids, const double &z, const Energy &scale, const Energy &pT)
Apply the soft matrix element correction.
Herwig::SMZDecayer::getKfromX
double getKfromX(double, double)
Calculate .
Herwig::SMZDecayer::modeNumber
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
Herwig::SMZDecayer::me2
double me2(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Return the matrix element squared for a given mode and phase-space channel.
Herwig::SMZDecayer::leptonWeight_
vector< double > leptonWeight_
Weights for the Z to leptons decays.
Definition:
SMZDecayer.h:424
Herwig::SMZDecayer::mu_
double mu_
The reduced mass.
Definition:
SMZDecayer.h:499
Herwig::SMZDecayer::_rho
RhoDMatrix _rho
Spin density matrix for the decay.
Definition:
SMZDecayer.h:430
Herwig::SMZDecayer::_wavebar
vector< SpinorBarWaveFunction > _wavebar
Barred spinors for the decay.
Definition:
SMZDecayer.h:445
Herwig::SMZDecayer::mZ_
Energy mZ_
The Z mass.
Definition:
SMZDecayer.h:494
Herwig::SMZDecayer::oneLoopVirtualME
virtual double oneLoopVirtualME(unsigned int imode, const Particle &part, const ParticleVector &products)
Members for the generation of QED radiation in the decays.
Herwig::SMZDecayer::qWeight
double qWeight(double x, double xbar)
Soft weight.
Herwig::SMZDecayer::CF_
double CF_
The colour factor.
Definition:
SMZDecayer.h:489
Herwig::SMZDecayer::FFZVertex_
FFVVertexPtr FFZVertex_
Pointer to the fermion-antifermion Z vertex.
Definition:
SMZDecayer.h:400
Herwig::SMZDecayer::aS_
double aS_
The strong coupling.
Definition:
SMZDecayer.h:509
Herwig::SMZDecayer::setKtilde2
void setKtilde2()
Set second , given the first.
Herwig::SMZDecayer::dataBaseOutput
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
Herwig::SMZDecayer::gluon_
tcPDPtr gluon_
Stuff for the POWHEG correction.
Definition:
SMZDecayer.h:523
Herwig::SMZDecayer::_vectors
vector< VectorWaveFunction > _vectors
Polarization vectors for the decay.
Definition:
SMZDecayer.h:435
Herwig::SMZDecayer::mz2_
Energy2 mz2_
Higgs mass squared.
Definition:
SMZDecayer.h:548
Herwig::SMZDecayer::MEV
double MEV(double, double)
Vector and axial vector parts of the matrix element.
Herwig::SMZDecayer::d_v_
double d_v_
The v parameter.
Definition:
SMZDecayer.h:467
Herwig::SMZDecayer::FFPVertex_
AbstractFFVVertexPtr FFPVertex_
Pointer to the photon vertex.
Definition:
SMZDecayer.h:405
Herwig::SMZDecayer::u
double u(double)
????
Herwig::SMZDecayer::qWeightX
double qWeightX(Energy qtilde, double z)
Soft quark weight calculated from .
Herwig::SMZDecayer::SMZDecayer
SMZDecayer()
Default constructor.
Herwig::SMZDecayer::setRho
void setRho(double)
Set the parameter.
Herwig::SMZDecayer::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::SMZDecayer::d_kt2_
double d_kt2_
The initial kappa-tilde values for radiation from the antiquark.
Definition:
SMZDecayer.h:477
Herwig::SMZDecayer::d_rho_
double d_rho_
The rho parameter.
Definition:
SMZDecayer.h:462
Herwig::SMZDecayer::meRatio
double meRatio(tcPDVector partons, vector< Lorentz5Momentum > momenta, unsigned int iemitter, bool subtract) const
Calculate the ratio between NLO & LO ME.
Herwig::SMZDecayer::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Definition:
SMZDecayer.h:197
Herwig::SMZDecayer::Init
static void Init()
Standard Init function used to initialize the interfaces.
Herwig::SMZDecayer::hasPOWHEGCorrection
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition:
SMZDecayer.h:80
Herwig::SMZDecayer::hasMECorrection
virtual bool hasMECorrection()
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition:
SMZDecayer.h:48
Herwig::SMZDecayer::d_m_
Energy d_m_
Quark mass.
Definition:
SMZDecayer.h:457
Herwig::SMZDecayer::calculateRealEmission
double calculateRealEmission(double x1, double x2, vector< PPtr > hardProcess, double phi, bool subtract) const
Real emission term, for use in generating the hardest emission.
Herwig::SMZDecayer::calculateRealEmission
double calculateRealEmission(double x1, double x2, tcPDVector outgoing, vector< Lorentz5Momentum > momenta, double phi, bool subtract, int emitter) const
Real emission term, for use in generating the hardest emission.
Herwig::SMZDecayer::_wave
vector< SpinorWaveFunction > _wave
Spinors for the decay.
Definition:
SMZDecayer.h:440
Herwig::SMZDecayer::doinitrun
virtual void doinitrun()
Initialize this object.
Herwig::SMZDecayer::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition:
SMZDecayer.h:203
Herwig::SMZDecayer::constructSpinInfo
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
Herwig::SMZDecayer::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::SMZDecayer::decay
virtual ParticleVector decay(const Particle &parent, const tPDVector &children) const
For a given decay mode and a given particle instance, perform the decay and return the decay products...
Herwig::SMZDecayer::scale_
Energy2 scale_
The scale.
Definition:
SMZDecayer.h:514
Herwig::SMZDecayer::quarkWeight_
vector< double > quarkWeight_
maximum weights for the different integrations
Definition:
SMZDecayer.h:419
Herwig::SMZDecayer::doinit
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
Herwig::SMZDecayer::calculateJacobian
InvEnergy calculateJacobian(double x1, double x2, Energy pT) const
Calculate the Jacobian.
Herwig::SMZDecayer::realME
InvEnergy2 realME(const tcPDVector &partons, const vector< Lorentz5Momentum > &momenta, ShowerInteraction inter) const
Calculate the NLO real emission piece of ME.
Herwig::SMZDecayer::quark_
vector< Lorentz5Momentum > quark_
The fermion momenta.
Definition:
SMZDecayer.h:533
Herwig::SMZDecayer::FFGVertex_
AbstractFFVVertexPtr FFGVertex_
Pointer to the fermion-antifermion G vertex.
Definition:
SMZDecayer.h:410
Herwig::SMZDecayer::NLO_
bool NLO_
Whether or not to give an LO or NLO normalisation.
Definition:
SMZDecayer.h:554
Herwig::SMZDecayer::getEvent
bool getEvent(vector< PPtr > hardProcess)
Generate a real emission event.
Herwig::SMZDecayer::realEmissionME
virtual InvEnergy2 realEmissionME(unsigned int imode, const Particle &part, ParticleVector &products, unsigned int iemitter, double ctheta, double stheta, const LorentzRotation &rot1, const LorentzRotation &rot2)
The real emission matrix element.
Herwig::SMZDecayer::getZfromX
double getZfromX(double, double)
Translate the variables from to .
Herwig::SMZDecayer::partons_
tcPDVector partons_
The ParticleData objects for the fermions.
Definition:
SMZDecayer.h:528
Herwig::SMZDecayer::getXXbar
void getXXbar(double kt, double z, double &x, double &xbar)
Calculate from .
Herwig::SMZDecayer::gauge_
Lorentz5Momentum gauge_
The momentum of the radiated gauge boson.
Definition:
SMZDecayer.h:538
Herwig::SMZDecayer::loME
double loME(const tcPDVector &partons, const vector< Lorentz5Momentum > &momenta) const
Calculate the LO ME.
Herwig::SMZDecayer::setKtildeSymm
void setKtildeSymm()
Set the parameters symmetrically.
Herwig::SMZDecayer::initializeMECorrection
virtual void initializeMECorrection(RealEmissionProcessPtr, double &, double &)
Initialize the ME correction.
Herwig::SMZDecayer::checkZMomenta
bool checkZMomenta(double x1, double x2, double x3, double y, Energy pT) const
Check the sign of the momentum in the -direction is correct.
Herwig::SMZDecayer::d_kt1_
double d_kt1_
The initial kappa-tilde values for radiation from the quark.
Definition:
SMZDecayer.h:472
ThePEG::LorentzRotation
ThePEG::Particle
ThePEG::PersistentIStream
ThePEG::PersistentOStream
ThePEG::RhoDMatrix
Herwig::ShowerInteraction
ShowerInteraction
Handy header file to be included in all Shower classes.
Definition:
ShowerInteraction.h:23
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG::Helicity
ThePEG::Helicity::outgoing
outgoing
ThePEG
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::tPDVector
vector< tPDPtr > tPDVector
ThePEG::PPtr
ThePEG::Ptr< Particle >::pointer PPtr
ThePEG::ParticleVector
vector< PPtr > ParticleVector
ThePEG::tcPDPtr
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
ThePEG::tcPDVector
vector< tcPDPtr > tcPDVector
Generated on Thu Jun 20 2024 17:50:52 for Herwig by
1.9.6