herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Decay
PerturbativeDecayer.h
1
// -*- C++ -*-
2
#ifndef Herwig_PerturbativeDecayer_H
3
#define Herwig_PerturbativeDecayer_H
4
//
5
// This is the declaration of the PerturbativeDecayer class.
6
//
7
8
#include "Herwig/Decay/DecayIntegrator.h"
9
#include "Herwig/Shower/ShowerAlpha.h"
10
#include "Herwig/Shower/ShowerInteraction.h"
11
12
namespace
Herwig
{
13
14
using namespace
ThePEG
;
15
23
class
PerturbativeDecayer
:
public
DecayIntegrator
{
24
25
protected
:
26
30
enum
dipoleType
{FFa, FFc, IFa, IFc, IFba, IFbc, FFg};
31
35
enum
phaseSpaceRegion
{emissionFromB,emissionFromC,emissionFromA1,emissionFromA2,deadZone};
36
40
struct
DipoleType
{
41
42
DipoleType
() {}
43
44
DipoleType
(
dipoleType
a,
ShowerInteraction
b)
45
: type(a), interaction(b)
46
{}
47
48
dipoleType
type;
49
50
ShowerInteraction
interaction;
51
};
52
53
public
:
54
58
PerturbativeDecayer
() :
inter_
(
ShowerInteraction
::QCD),
59
pTmin_
(GeV),
useMEforT2_
(true),
60
C_
(5.),
ymax_
(10.),
phaseOpt_
(1),
61
pT_
(
ZERO
),
mb_
(
ZERO
),
e_
(0.),
62
s_
(0.),
e2_
(0.),
s2_
(0.),
enhance_
(1.)
63
{}
64
68
virtual
POWHEGType
hasPOWHEGCorrection
() {
return
No;}
69
73
virtual
RealEmissionProcessPtr
generateHardest
(RealEmissionProcessPtr);
74
78
virtual
RealEmissionProcessPtr
applyHardMatrixElementCorrection
(RealEmissionProcessPtr);
79
80
public
:
81
88
void
persistentOutput
(
PersistentOStream
& os)
const
;
89
95
void
persistentInput
(
PersistentIStream
& is,
int
version);
97
104
static
void
Init
();
105
106
protected
:
107
111
virtual
double
matrixElementRatio
(
const
Particle
& inpart,
const
ParticleVector
& decay2,
112
const
ParticleVector
& decay3,
MEOption
meopt,
113
ShowerInteraction
inter);
114
118
bool
identifyDipoles
(vector<DipoleType> & dipoles,
119
PPtr
& aProgenitor,
120
PPtr
& bProgenitor,
121
PPtr
& cProgenitor,
122
ShowerInteraction
inter)
const
;
123
127
ShowerAlphaPtr
alphaS
() {
return
alphaS_
;}
128
132
ShowerAlphaPtr
alphaEM
() {
return
alphaEM_
;}
133
137
vector<Lorentz5Momentum>
hardMomenta
(
PPtr
in,
PPtr
emitter,
138
PPtr
spectator,
139
const
vector<DipoleType> & dipoles,
140
int
i,
bool
inDeadZone);
141
145
bool
calcMomenta
(
int
j, Energy
pT
,
double
y,
double
phi,
double
& xg,
146
double
& xs,
double
& xe,
double
& xe_z,
147
vector<Lorentz5Momentum>& particleMomenta);
148
152
bool
psCheck
(
const
double
xg,
const
double
xs);
153
157
pair<double,double>
calculateDipole
(
const
DipoleType
& dipoleId,
158
const
Particle
& inpart,
159
const
ParticleVector
& decay3);
160
164
double
dipoleSpinFactor
(
tcPDPtr
emitter,
double
z);
165
169
double
colourCoeff
(
tcPDPtr
emitter,
tcPDPtr
spectator,
170
tcPDPtr
other,
DipoleType
dipole);
171
175
void
getColourLines
(RealEmissionProcessPtr real);
176
180
RealEmissionProcessPtr
getHardEvent
(RealEmissionProcessPtr born,
181
bool
inDeadZone,
182
ShowerInteraction
inter);
183
187
bool
inTotalDeadZone
(
double
xg,
double
xs,
188
const
vector<DipoleType> & dipoles,
189
int
i);
190
194
phaseSpaceRegion
inInitialFinalDeadZone
(
double
xg,
double
xa,
double
a,
double
c)
const
;
195
199
phaseSpaceRegion
inFinalFinalDeadZone
(
double
xb,
double
xc,
double
b,
double
c)
const
;
200
204
bool
useMEforT2
()
const
{
return
useMEforT2_
;}
205
206
protected
:
207
215
const
Energy &
pT
()
const
{
return
pT_
;}
216
220
const
Energy &
mb
()
const
{
return
mb_
;}
221
225
const
double
&
e
()
const
{
return
e_
;}
226
230
const
double
&
s
()
const
{
return
s_
;}
231
235
const
double
&
e2
()
const
{
return
e2_
;}
236
240
const
double
&
s2
()
const
{
return
s2_
;}
242
243
private
:
244
249
PerturbativeDecayer
&
operator=
(
const
PerturbativeDecayer
&) =
delete
;
250
251
private
:
252
260
ShowerInteraction
inter_
;
261
265
ShowerAlphaPtr
alphaS_
;
266
270
ShowerAlphaPtr
alphaEM_
;
271
275
Energy
pTmin_
;
276
282
bool
useMEforT2_
;
283
287
double
C_
;
288
292
double
ymax_
;
293
297
unsigned
int
phaseOpt_
;
299
300
private
:
301
309
Energy
pT_
;
310
314
Energy
mb_
;
315
319
double
e_
;
320
324
double
s_
;
325
329
double
e2_
;
330
334
double
s2_
;
335
339
mutable
double
enhance_
;
341
};
342
343
}
344
345
#endif
/* Herwig_PerturbativeDecayer_H */
Herwig::DecayIntegrator
Main class for Decayers implementing multi-channel phase space integration.
Definition:
DecayIntegrator.h:60
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::e2
const double & e2() const
Reduced mass of emitter child particle squared.
Definition:
PerturbativeDecayer.h:235
Herwig::PerturbativeDecayer::e
const double & e() const
Reduced mass of emitter child particle.
Definition:
PerturbativeDecayer.h:225
Herwig::PerturbativeDecayer::hardMomenta
vector< Lorentz5Momentum > hardMomenta(PPtr in, PPtr emitter, PPtr spectator, const vector< DipoleType > &dipoles, int i, bool inDeadZone)
Return the momenta including the hard emission.
Herwig::PerturbativeDecayer::alphaEM
ShowerAlphaPtr alphaEM()
Coupling for the generation of hard QED radiation.
Definition:
PerturbativeDecayer.h:132
Herwig::PerturbativeDecayer::inter_
ShowerInteraction inter_
Members for the generation of the hard radiation.
Definition:
PerturbativeDecayer.h:260
Herwig::PerturbativeDecayer::generateHardest
virtual RealEmissionProcessPtr generateHardest(RealEmissionProcessPtr)
Member to generate the hardest emission in the POWHEG scheme.
Herwig::PerturbativeDecayer::inTotalDeadZone
bool inTotalDeadZone(double xg, double xs, const vector< DipoleType > &dipoles, int i)
Is the point in the dead-zone for all the dipoles.
Herwig::PerturbativeDecayer::e_
double e_
Reduced mass of emitter child particle.
Definition:
PerturbativeDecayer.h:319
Herwig::PerturbativeDecayer::alphaEM_
ShowerAlphaPtr alphaEM_
Coupling for the generation of hard QED radiation.
Definition:
PerturbativeDecayer.h:270
Herwig::PerturbativeDecayer::useMEforT2_
bool useMEforT2_
This flag determines whether the T2 region in the decay shower (JHEP12(2003)_045) is populated by the...
Definition:
PerturbativeDecayer.h:282
Herwig::PerturbativeDecayer::e2_
double e2_
Reduced mass of emitter child particle squared.
Definition:
PerturbativeDecayer.h:329
Herwig::PerturbativeDecayer::dipoleType
dipoleType
Type of dipole.
Definition:
PerturbativeDecayer.h:30
Herwig::PerturbativeDecayer::useMEforT2
bool useMEforT2() const
For me corrections use the shower or me for the T2 region.
Definition:
PerturbativeDecayer.h:204
Herwig::PerturbativeDecayer::calculateDipole
pair< double, double > calculateDipole(const DipoleType &dipoleId, const Particle &inpart, const ParticleVector &decay3)
Return dipole corresponding to the DipoleType dipoleId.
Herwig::PerturbativeDecayer::s2_
double s2_
Reduced mass of spectator child particle squared.
Definition:
PerturbativeDecayer.h:334
Herwig::PerturbativeDecayer::inInitialFinalDeadZone
phaseSpaceRegion inInitialFinalDeadZone(double xg, double xa, double a, double c) const
Is the point in the dead-zone for an initial-final colour connection.
Herwig::PerturbativeDecayer::mb
const Energy & mb() const
Mass of decaying particle.
Definition:
PerturbativeDecayer.h:220
Herwig::PerturbativeDecayer::getHardEvent
RealEmissionProcessPtr getHardEvent(RealEmissionProcessPtr born, bool inDeadZone, ShowerInteraction inter)
Generate a hard emission.
Herwig::PerturbativeDecayer::C_
double C_
Prefactor for the sampling.
Definition:
PerturbativeDecayer.h:287
Herwig::PerturbativeDecayer::s_
double s_
Reduced mass of spectator child particle.
Definition:
PerturbativeDecayer.h:324
Herwig::PerturbativeDecayer::pT_
Energy pT_
Mmeber variables for the kinematics of the hard emission.
Definition:
PerturbativeDecayer.h:309
Herwig::PerturbativeDecayer::enhance_
double enhance_
Enhancement prefactor for special cases.
Definition:
PerturbativeDecayer.h:339
Herwig::PerturbativeDecayer::pT
const Energy & pT() const
Access to the kinematics for inheriting classes.
Definition:
PerturbativeDecayer.h:215
Herwig::PerturbativeDecayer::applyHardMatrixElementCorrection
virtual RealEmissionProcessPtr applyHardMatrixElementCorrection(RealEmissionProcessPtr)
Apply the hard matrix element correction to a given hard process or decay.
Herwig::PerturbativeDecayer::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::PerturbativeDecayer::pTmin_
Energy pTmin_
Minimum .
Definition:
PerturbativeDecayer.h:275
Herwig::PerturbativeDecayer::calcMomenta
bool calcMomenta(int j, Energy pT, double y, double phi, double &xg, double &xs, double &xe, double &xe_z, vector< Lorentz5Momentum > &particleMomenta)
Calculate momenta of all the particles.
Herwig::PerturbativeDecayer::alphaS
ShowerAlphaPtr alphaS()
Coupling for the generation of hard QCD radiation.
Definition:
PerturbativeDecayer.h:127
Herwig::PerturbativeDecayer::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::PerturbativeDecayer::s
const double & s() const
Reduced mass of spectator child particle.
Definition:
PerturbativeDecayer.h:230
Herwig::PerturbativeDecayer::ymax_
double ymax_
Maximum value for y.
Definition:
PerturbativeDecayer.h:292
Herwig::PerturbativeDecayer::PerturbativeDecayer
PerturbativeDecayer()
The default constructor.
Definition:
PerturbativeDecayer.h:58
Herwig::PerturbativeDecayer::psCheck
bool psCheck(const double xg, const double xs)
Check the calculated momenta are physical.
Herwig::PerturbativeDecayer::mb_
Energy mb_
Mass of decaying particle.
Definition:
PerturbativeDecayer.h:314
Herwig::PerturbativeDecayer::hasPOWHEGCorrection
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition:
PerturbativeDecayer.h:68
Herwig::PerturbativeDecayer::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::PerturbativeDecayer::colourCoeff
double colourCoeff(tcPDPtr emitter, tcPDPtr spectator, tcPDPtr other, DipoleType dipole)
Return the colour coefficient of the dipole.
Herwig::PerturbativeDecayer::matrixElementRatio
virtual double matrixElementRatio(const Particle &inpart, const ParticleVector &decay2, const ParticleVector &decay3, MEOption meopt, ShowerInteraction inter)
Calculate matrix element ratio .
Herwig::PerturbativeDecayer::alphaS_
ShowerAlphaPtr alphaS_
Coupling for the generation of hard QCD radiation.
Definition:
PerturbativeDecayer.h:265
Herwig::PerturbativeDecayer::dipoleSpinFactor
double dipoleSpinFactor(tcPDPtr emitter, double z)
Return contribution to dipole that depends on the spin of the emitter.
Herwig::PerturbativeDecayer::inFinalFinalDeadZone
phaseSpaceRegion inFinalFinalDeadZone(double xb, double xc, double b, double c) const
Is the point in the dead-zone for a final-final colour connection.
Herwig::PerturbativeDecayer::s2
const double & s2() const
Reduced mass of spectator child particle squared.
Definition:
PerturbativeDecayer.h:240
Herwig::PerturbativeDecayer::phaseSpaceRegion
phaseSpaceRegion
Phase-space region for an emission (assumes .
Definition:
PerturbativeDecayer.h:35
Herwig::PerturbativeDecayer::operator=
PerturbativeDecayer & operator=(const PerturbativeDecayer &)=delete
The assignment operator is private and must never be called.
Herwig::PerturbativeDecayer::phaseOpt_
unsigned int phaseOpt_
Option for phase-space sampling.
Definition:
PerturbativeDecayer.h:297
Herwig::PerturbativeDecayer::identifyDipoles
bool identifyDipoles(vector< DipoleType > &dipoles, PPtr &aProgenitor, PPtr &bProgenitor, PPtr &cProgenitor, ShowerInteraction inter) const
Work out the type of process.
Herwig::PerturbativeDecayer::getColourLines
void getColourLines(RealEmissionProcessPtr real)
Set up the colour lines.
ThePEG::Particle
ThePEG::PersistentIStream
ThePEG::PersistentOStream
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::PPtr
ThePEG::Ptr< Particle >::pointer PPtr
ThePEG::ParticleVector
vector< PPtr > ParticleVector
ThePEG::ZERO
constexpr ZeroUnit ZERO
ThePEG::tcPDPtr
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
Herwig::PerturbativeDecayer::DipoleType
Type of dipole.
Definition:
PerturbativeDecayer.h:40
Generated on Thu Jun 20 2024 17:50:52 for Herwig by
1.9.6