herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Decay
Perturbative
SMWDecayer.h
1
// -*- C++ -*-
2
//
3
// SMWDecayer.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_SMWDecayer_H
10
#define HERWIG_SMWDecayer_H
11
//
12
// This is the declaration of the SMWDecayer class.
13
//
14
#include "Herwig/Decay/PerturbativeDecayer.h"
15
#include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h"
16
#include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
17
#include "Herwig/Decay/PhaseSpaceMode.h"
18
19
namespace
Herwig
{
20
using namespace
ThePEG
;
21
using namespace
ThePEG::Helicity
;
22
32
class
SMWDecayer
:
public
PerturbativeDecayer
{
33
34
public
:
35
39
SMWDecayer
();
40
41
public
:
42
51
virtual
bool
hasMECorrection
() {
return
true
;}
52
56
virtual
void
initializeMECorrection
(RealEmissionProcessPtr ,
double
& ,
57
double
& );
58
71
virtual
bool
softMatrixElementVeto
(
PPtr
parent,
72
PPtr
progenitor,
73
const
bool
& fs,
74
const
Energy & highestpT,
75
const
vector<tcPDPtr> & ids,
76
const
double
& z,
77
const
Energy & scale,
78
const
Energy &
pT
);
79
83
virtual
POWHEGType
hasPOWHEGCorrection
() {
return
FSR;}
84
85
public
:
86
93
virtual
int
modeNumber
(
bool
& cc,
tcPDPtr
parent,
94
const
tPDVector
& children)
const
;
95
102
virtual
ParticleVector
decay
(
const
Particle
& parent,
const
tPDVector
& children)
const
;
103
113
double
me2
(
const
int
ichan,
const
Particle
& part,
114
const
tPDVector
&
outgoing
,
115
const
vector<Lorentz5Momentum> & momenta,
116
MEOption
meopt)
const
;
117
121
virtual
void
constructSpinInfo
(
const
Particle
& part,
122
ParticleVector
outgoing
)
const
;
123
129
virtual
void
dataBaseOutput
(ofstream & os,
bool
header)
const
;
130
131
public
:
132
139
void
persistentOutput
(
PersistentOStream
& os)
const
;
140
146
void
persistentInput
(
PersistentIStream
& is,
int
version);
148
152
static
void
Init
();
153
154
protected
:
155
162
virtual
IBPtr
clone
()
const
{
return
new_ptr(*
this
);}
163
168
virtual
IBPtr
fullclone
()
const
{
return
new_ptr(*
this
);}
170
171
protected
:
172
180
virtual
void
doinit
();
181
186
virtual
void
doinitrun
();
188
189
protected
:
190
194
void
setRho
(
double
);
195
199
void
setKtildeSymm
();
200
204
void
setKtilde2
();
205
213
double
getZfromX
(
double
,
double
);
214
218
double
getKfromX
(
double
,
double
);
220
228
void
getXXbar
(
double
kt,
double
z,
double
& x,
double
& xbar);
229
239
double
qWeight
(
double
x,
double
xbar);
240
246
double
qbarWeight
(
double
x,
double
xbar);
247
253
double
qWeightX
(Energy qtilde,
double
z);
254
260
double
qbarWeightX
(Energy qtilde,
double
z);
262
266
double
u
(
double
);
267
275
double
MEV
(
double
,
double
);
276
280
double
MEA
(
double
,
double
);
281
287
double
PS
(
double
x1,
double
x2);
289
290
protected
:
291
295
double
calculateRealEmission
(
double
x1,
double
x2,
296
tcPDVector
outgoing
,
297
vector<Lorentz5Momentum> momenta,
298
double
phi,
double
muj,
double
muk,
299
int
iemit,
bool
subtract)
const
;
300
304
double
meRatio
(
tcPDVector
partons,
305
vector<Lorentz5Momentum> momenta,
306
unsigned
int
iemitter,
bool
subtract)
const
;
307
311
virtual
double
matrixElementRatio
(
const
Particle
& inpart,
const
ParticleVector
& decay2,
312
const
ParticleVector
& decay3,
MEOption
meopt,
313
ShowerInteraction
inter);
314
318
double
loME
(
const
vector<tcPDPtr> & partons,
319
const
vector<Lorentz5Momentum> & momenta)
const
;
320
324
InvEnergy2
realME
(
const
vector<tcPDPtr> & partons,
325
const
vector<Lorentz5Momentum> & momenta,
326
ShowerInteraction
inter)
const
;
327
328
private
:
329
333
SMWDecayer
&
operator=
(
const
SMWDecayer
&) =
delete
;
334
335
private
:
336
337
341
AbstractFFVVertexPtr
FFWVertex_
;
342
346
AbstractFFVVertexPtr
FFGVertex_
;
347
351
AbstractFFVVertexPtr
FFPVertex_
;
352
356
AbstractVVVVertexPtr
WWWVertex_
;
357
365
vector<double>
quarkWeight_
;
366
370
vector<double>
leptonWeight_
;
372
376
mutable
RhoDMatrix
rho_
;
377
381
mutable
vector<VectorWaveFunction>
vectors_
;
382
386
mutable
vector<SpinorWaveFunction>
wave_
;
387
391
mutable
vector<SpinorBarWaveFunction>
wavebar_
;
392
393
private
:
394
398
Energy
d_Q_
;
399
403
Energy
d_m_
;
404
408
double
d_rho_
;
409
413
double
d_v_
;
414
418
double
d_kt1_
;
419
423
double
d_kt2_
;
424
428
static
const
double
EPS_
;
429
430
private
:
431
435
double
CF_
;
436
440
mutable
Energy
mW_
;
441
442
446
mutable
double
aS_
;
447
451
mutable
Energy2
scale_
;
452
460
tcPDPtr
gluon_
;
461
465
vector<tcPDPtr>
partons_
;
466
470
vector<Lorentz5Momentum>
quark_
;
471
475
Lorentz5Momentum
gauge_
;
476
480
PPtr
wboson_
;
481
485
Energy2
mw2_
;
487
491
bool
NLO_
;
492
};
493
494
}
495
496
497
#endif
/* HERWIG_SMWDecayer_H */
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::SMWDecayer
The SMWDecayer is designed to perform the decay of the W boson to the Standard Model fermions,...
Definition:
SMWDecayer.h:32
Herwig::SMWDecayer::realME
InvEnergy2 realME(const vector< tcPDPtr > &partons, const vector< Lorentz5Momentum > &momenta, ShowerInteraction inter) const
Calculate the NLO real emission piece of ME.
Herwig::SMWDecayer::FFPVertex_
AbstractFFVVertexPtr FFPVertex_
Pointer to the fermion-antifermion G vertex.
Definition:
SMWDecayer.h:351
Herwig::SMWDecayer::qbarWeightX
double qbarWeightX(Energy qtilde, double z)
Soft antiquark weight calculated from .
Herwig::SMWDecayer::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::SMWDecayer::qbarWeight
double qbarWeight(double x, double xbar)
Soft antiquark weight calculated from .
Herwig::SMWDecayer::MEV
double MEV(double, double)
Vector and axial vector parts of the matrix element.
Herwig::SMWDecayer::NLO_
bool NLO_
Whether ro return the LO or NLO result.
Definition:
SMWDecayer.h:491
Herwig::SMWDecayer::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::SMWDecayer::SMWDecayer
SMWDecayer()
Default constructor.
Herwig::SMWDecayer::wave_
vector< SpinorWaveFunction > wave_
Spinors for the decay.
Definition:
SMWDecayer.h:386
Herwig::SMWDecayer::quarkWeight_
vector< double > quarkWeight_
maximum weights for the different integrations
Definition:
SMWDecayer.h:365
Herwig::SMWDecayer::hasMECorrection
virtual bool hasMECorrection()
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition:
SMWDecayer.h:51
Herwig::SMWDecayer::EPS_
static const double EPS_
Cut-off parameter.
Definition:
SMWDecayer.h:428
Herwig::SMWDecayer::leptonWeight_
vector< double > leptonWeight_
Weights for the W to leptons decays.
Definition:
SMWDecayer.h:370
Herwig::SMWDecayer::mw2_
Energy2 mw2_
W mass squared.
Definition:
SMWDecayer.h:485
Herwig::SMWDecayer::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition:
SMWDecayer.h:168
Herwig::SMWDecayer::getZfromX
double getZfromX(double, double)
Translate the variables from to .
Herwig::SMWDecayer::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Definition:
SMWDecayer.h:162
Herwig::SMWDecayer::gauge_
Lorentz5Momentum gauge_
The momentum of the radiated gauge boson.
Definition:
SMWDecayer.h:475
Herwig::SMWDecayer::doinitrun
virtual void doinitrun()
Initialize this object.
Herwig::SMWDecayer::setRho
void setRho(double)
Set the parameter.
Herwig::SMWDecayer::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::SMWDecayer::dataBaseOutput
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
Herwig::SMWDecayer::MEA
double MEA(double, double)
Axial vector part of the matrix element.
Herwig::SMWDecayer::aS_
double aS_
The strong coupling.
Definition:
SMWDecayer.h:446
Herwig::SMWDecayer::quark_
vector< Lorentz5Momentum > quark_
The fermion momenta.
Definition:
SMWDecayer.h:470
Herwig::SMWDecayer::wboson_
PPtr wboson_
The W boson.
Definition:
SMWDecayer.h:480
Herwig::SMWDecayer::matrixElementRatio
virtual double matrixElementRatio(const Particle &inpart, const ParticleVector &decay2, const ParticleVector &decay3, MEOption meopt, ShowerInteraction inter)
Calculate matrix element ratio R/B.
Herwig::SMWDecayer::vectors_
vector< VectorWaveFunction > vectors_
Polarization vectors for the decay.
Definition:
SMWDecayer.h:381
Herwig::SMWDecayer::getKfromX
double getKfromX(double, double)
Calculate .
Herwig::SMWDecayer::mW_
Energy mW_
The W mass.
Definition:
SMWDecayer.h:440
Herwig::SMWDecayer::qWeight
double qWeight(double x, double xbar)
Soft weight.
Herwig::SMWDecayer::d_kt1_
double d_kt1_
The initial kappa-tilde values for radiation from the quark.
Definition:
SMWDecayer.h:418
Herwig::SMWDecayer::constructSpinInfo
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
Herwig::SMWDecayer::d_kt2_
double d_kt2_
The initial kappa-tilde values for radiation from the antiquark.
Definition:
SMWDecayer.h:423
Herwig::SMWDecayer::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::SMWDecayer::d_m_
Energy d_m_
Quark mass.
Definition:
SMWDecayer.h:403
Herwig::SMWDecayer::u
double u(double)
????
Herwig::SMWDecayer::wavebar_
vector< SpinorBarWaveFunction > wavebar_
Barred spinors for the decay.
Definition:
SMWDecayer.h:391
Herwig::SMWDecayer::calculateRealEmission
double calculateRealEmission(double x1, double x2, tcPDVector outgoing, vector< Lorentz5Momentum > momenta, double phi, double muj, double muk, int iemit, bool subtract) const
Real emission term, for use in generating the hardest emission.
Herwig::SMWDecayer::Init
static void Init()
Standard Init function used to initialize the interfaces.
Herwig::SMWDecayer::qWeightX
double qWeightX(Energy qtilde, double z)
Soft quark weight calculated from .
Herwig::SMWDecayer::meRatio
double meRatio(tcPDVector partons, vector< Lorentz5Momentum > momenta, unsigned int iemitter, bool subtract) const
Calculate the ratio between NLO & LO ME.
Herwig::SMWDecayer::scale_
Energy2 scale_
The scale.
Definition:
SMWDecayer.h:451
Herwig::SMWDecayer::softMatrixElementVeto
virtual bool softMatrixElementVeto(PPtr parent, PPtr progenitor, const bool &fs, const Energy &highestpT, const vector< tcPDPtr > &ids, const double &z, const Energy &scale, const Energy &pT)
Apply the soft matrix element correction.
Herwig::SMWDecayer::d_Q_
Energy d_Q_
CM energy.
Definition:
SMWDecayer.h:398
Herwig::SMWDecayer::CF_
double CF_
The colour factor.
Definition:
SMWDecayer.h:435
Herwig::SMWDecayer::loME
double loME(const vector< tcPDPtr > &partons, const vector< Lorentz5Momentum > &momenta) const
Calculate the LO ME.
Herwig::SMWDecayer::partons_
vector< tcPDPtr > partons_
The ParticleData objects for the fermions.
Definition:
SMWDecayer.h:465
Herwig::SMWDecayer::FFWVertex_
AbstractFFVVertexPtr FFWVertex_
Pointer to the fermion-antifermion W vertex.
Definition:
SMWDecayer.h:341
Herwig::SMWDecayer::getXXbar
void getXXbar(double kt, double z, double &x, double &xbar)
Calculate from .
Herwig::SMWDecayer::setKtildeSymm
void setKtildeSymm()
Set the parameters symmetrically.
Herwig::SMWDecayer::hasPOWHEGCorrection
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition:
SMWDecayer.h:83
Herwig::SMWDecayer::rho_
RhoDMatrix rho_
Spin density matrix for the decay.
Definition:
SMWDecayer.h:376
Herwig::SMWDecayer::WWWVertex_
AbstractVVVVertexPtr WWWVertex_
Pointer to the fermion-antifermion G vertex.
Definition:
SMWDecayer.h:356
Herwig::SMWDecayer::PS
double PS(double x1, double x2)
The matrix element, given , .
Herwig::SMWDecayer::initializeMECorrection
virtual void initializeMECorrection(RealEmissionProcessPtr, double &, double &)
Initialize the ME correction.
Herwig::SMWDecayer::FFGVertex_
AbstractFFVVertexPtr FFGVertex_
Pointer to the fermion-antifermion G vertex.
Definition:
SMWDecayer.h:346
Herwig::SMWDecayer::doinit
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
Herwig::SMWDecayer::d_rho_
double d_rho_
The rho parameter.
Definition:
SMWDecayer.h:408
Herwig::SMWDecayer::gluon_
tcPDPtr gluon_
Stuff for the POWHEG correction.
Definition:
SMWDecayer.h:460
Herwig::SMWDecayer::operator=
SMWDecayer & operator=(const SMWDecayer &)=delete
Private and non-existent assignment operator.
Herwig::SMWDecayer::modeNumber
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
Herwig::SMWDecayer::setKtilde2
void setKtilde2()
Set second , given the first.
Herwig::SMWDecayer::d_v_
double d_v_
The v parameter.
Definition:
SMWDecayer.h:413
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