herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.2.1
Shower
Dipole
Kinematics
IFMassiveKinematics.h
1
// -*- C++ -*-
2
//
3
// IFLightKinematics.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_IFLightKinematics_H
10
#define HERWIG_IFLightKinematics_H
11
//
12
// This is the declaration of the IFLightKinematics class.
13
//
14
15
#include "DipoleSplittingKinematics.h"
16
17
namespace
Herwig
{
18
19
using namespace
ThePEG
;
20
31
class
IFMassiveKinematics
:
public
DipoleSplittingKinematics
{
32
33
public
:
34
40
IFMassiveKinematics
();
41
45
virtual
~
IFMassiveKinematics
();
47
48
public
:
49
55
virtual
pair<double,double> kappaSupport(
const
DipoleSplittingInfo
& dIndex)
const
;
56
61
virtual
pair<double,double> xiSupport(
const
DipoleSplittingInfo
& dIndex)
const
;
62
66
virtual
pair<double,double>
zBoundaries
(Energy,
67
const
DipoleSplittingInfo
&,
68
const
DipoleSplittingKernel
&)
const
{
69
return
{0.0,1.0};
70
}
71
80
virtual
Energy dipoleScale(
const
Lorentz5Momentum& pEmitter,
81
const
Lorentz5Momentum& pSpectator)
const
;
82
86
virtual
Energy ptMax(Energy dScale,
87
double
emX,
double
specX,
88
const
DipoleSplittingInfo
& dInfo,
89
const
DipoleSplittingKernel
& split)
const
;
90
94
virtual
Energy ptMax(Energy dScale,
95
double
,
double
,
96
const
DipoleIndex
& dIndex,
97
const
DipoleSplittingKernel
& split,
98
tPPtr
emitter,
tPPtr
)
const
;
99
103
virtual
Energy
ptMax
(Energy,
104
double
,
double
,
105
const
DipoleIndex
&,
106
const
DipoleSplittingKernel
&)
const
{
107
// Only the DipoleSplittingInfo version should be used for massive
108
// dipoles, for now anyway.
109
assert(
false
);
110
return
ZERO
;
111
}
112
116
virtual
Energy QMax(Energy dScale,
117
double
emX,
double
specX,
118
const
DipoleSplittingInfo
& dInfo,
119
const
DipoleSplittingKernel
& split)
const
;
120
124
virtual
Energy
QMax
(Energy,
125
double
,
double
,
126
const
DipoleIndex
&,
127
const
DipoleSplittingKernel
&)
const
{
128
// Only the DipoleSplittingInfo version should be used for massive
129
// dipoles, for now anyway.
130
assert(
false
);
131
return
ZERO
;
132
}
133
137
virtual
Energy PtFromQ(Energy scale,
const
DipoleSplittingInfo
&)
const
;
138
142
virtual
Energy QFromPt(Energy scale,
const
DipoleSplittingInfo
&)
const
;
143
148
virtual
double
ptToRandom(Energy pt, Energy dScale,
149
double
emX,
double
specX,
150
const
DipoleIndex
& dIndex,
151
const
DipoleSplittingKernel
&)
const
;
152
158
virtual
bool
generateSplitting(
double
kappa,
double
xi,
double
phi,
159
DipoleSplittingInfo
& dIndex,
160
const
DipoleSplittingKernel
&);
161
167
virtual
void
generateKinematics(
const
Lorentz5Momentum& pEmitter,
168
const
Lorentz5Momentum& pSpectator,
169
const
DipoleSplittingInfo
& dInfo);
170
171
public
:
172
179
void
persistentOutput(
PersistentOStream
& os)
const
;
180
186
void
persistentInput(
PersistentIStream
& is,
int
version);
188
195
static
void
Init();
196
197
protected
:
198
205
virtual
IBPtr
clone()
const
;
206
211
virtual
IBPtr
fullclone()
const
;
213
214
215
// If needed, insert declarations of virtual function defined in the
216
// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
217
218
219
private
:
220
225
static
ClassDescription<IFMassiveKinematics>
initIFMassiveKinematics
;
226
231
IFMassiveKinematics
& operator=(
const
IFMassiveKinematics
&);
232
233
private
:
234
238
bool
theCollinearScheme
;
239
240
};
241
242
}
243
244
#include "ThePEG/Utilities/ClassTraits.h"
245
246
namespace
ThePEG
{
247
252
template
<>
253
struct
BaseClassTrait
<Herwig::
IFMassiveKinematics
,1> {
255
typedef
Herwig::DipoleSplittingKinematics
NthBase;
256
};
257
260
template
<>
261
struct
ClassTraits
<Herwig::
IFMassiveKinematics
>
262
:
public
ClassTraitsBase
<Herwig::IFMassiveKinematics> {
264
static
string
className() {
return
"Herwig::IFMassiveKinematics"
; }
272
static
string
library() {
return
"HwDipoleShower.so"
; }
273
};
274
277
}
278
279
#endif
/* HERWIG_IFMassiveKinematics_H */
ThePEG::PersistentIStream
Herwig::DipoleSplittingKinematics
DipoleSplittingKinematics is the base class for dipole splittings as performed in the dipole shower...
Definition:
DipoleSplittingKinematics.h:41
ThePEG::ClassDescription
ThePEG::PersistentOStream
Herwig::IFMassiveKinematics
IFMassiveKinematics implements massless splittings off an initial-final dipole.
Definition:
IFMassiveKinematics.h:31
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
Herwig::DipoleIndex
DipoleIndex is used to index splitting generators for a particular dipole.
Definition:
DipoleSplittingInfo.h:35
Herwig::IFMassiveKinematics::zBoundaries
virtual pair< double, double > zBoundaries(Energy, const DipoleSplittingInfo &, const DipoleSplittingKernel &) const
Return the boundaries on the momentum fraction.
Definition:
IFMassiveKinematics.h:66
Herwig::IFMassiveKinematics::initIFMassiveKinematics
static ClassDescription< IFMassiveKinematics > initIFMassiveKinematics
The static object used to initialize the description of this class.
Definition:
IFMassiveKinematics.h:225
ThePEG
ThePEG::tPPtr
ThePEG::Ptr< Particle >::transient_pointer tPPtr
Herwig::IFMassiveKinematics::theCollinearScheme
bool theCollinearScheme
Wether or not to choose the `collinear' scheme.
Definition:
IFMassiveKinematics.h:238
Herwig::IFMassiveKinematics::ptMax
virtual Energy ptMax(Energy, double, double, const DipoleIndex &, const DipoleSplittingKernel &) const
Return the maximum pt for the given dipole scale.
Definition:
IFMassiveKinematics.h:103
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG::ClassTraits
Herwig::DipoleSplittingInfo
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.
Definition:
DipoleSplittingInfo.h:209
Herwig::IFMassiveKinematics::QMax
virtual Energy QMax(Energy, double, double, const DipoleIndex &, const DipoleSplittingKernel &) const
Return the maximum virtuality for the given dipole scale.
Definition:
IFMassiveKinematics.h:124
ThePEG::BaseClassTrait
ZERO
constexpr ZeroUnit ZERO
Herwig::DipoleSplittingKernel
DipoleSplittingKernel is the base class for all kernels used within the dipole shower.
Definition:
DipoleSplittingKernel.h:41
ThePEG::ClassTraitsBase
Generated on Sat Apr 11 2020 14:50:29 for Herwig by
1.8.13