herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Shower
Dipole
Kinematics
IILightKinematics.h
1
// -*- C++ -*-
2
//
3
// IILightKinematics.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_IILightKinematics_H
10
#define HERWIG_IILightKinematics_H
11
//
12
// This is the declaration of the IILightKinematics class.
13
//
14
15
#include "DipoleSplittingKinematics.h"
16
17
namespace
Herwig
{
18
19
using namespace
ThePEG
;
20
31
class
IILightKinematics
:
public
DipoleSplittingKinematics
{
32
33
public
:
34
38
IILightKinematics
();
39
40
public
:
41
45
virtual
Energy
ptMax
(Energy dScale,
46
double
emX,
double
specX,
47
const
DipoleIndex
&,
48
const
DipoleSplittingKernel
&)
const
;
49
53
virtual
Energy
QMax
(Energy dScale,
54
double
emX,
double
specX,
55
const
DipoleIndex
& dIndex,
56
const
DipoleSplittingKernel
&)
const
;
57
61
virtual
Energy
PtFromQ
(Energy scale,
const
DipoleSplittingInfo
&)
const
;
62
66
virtual
Energy
QFromPt
(Energy scale,
const
DipoleSplittingInfo
&)
const
;
67
71
virtual
pair<double,double>
zBoundaries
(Energy pt,
72
const
DipoleSplittingInfo
& dInfo,
73
const
DipoleSplittingKernel
& split)
const
;
74
80
virtual
bool
generateSplitting
(
double
kappa,
double
xi,
double
phi,
81
DipoleSplittingInfo
& dIndex,
82
const
DipoleSplittingKernel
&);
83
89
virtual
void
generateKinematics
(
const
Lorentz5Momentum& pEmitter,
90
const
Lorentz5Momentum& pSpectator,
91
const
DipoleSplittingInfo
& dInfo);
92
98
virtual
bool
doesTransform
()
const
{
return
theCollinearScheme
|| didCollinear; }
99
103
virtual
void
setTransformation
() ;
104
105
/*
106
* perform the transformation, if existing
107
*/
108
virtual
void
transform (
PPtr
& part) {
109
if
( !
theCollinearScheme
&& !didCollinear )
return
;
110
111
Lorentz5Momentum mom = part->momentum();
112
113
// If particle has SpinInfo check that we're
114
// not dealing with an intermediate spectator.
115
if
( part->spinInfo()
116
&& !(part->spinInfo()->timelike() && part->children().size() == 1 )
117
&& !(!part->spinInfo()->timelike() && part->parents()[0]->children().size() == 1 ) ) {
118
119
if
( !
theTransformationCalculated
)
120
setTransformation
();
121
122
part->spinInfo()->transform(mom,
theRecoilTransformation
);
123
}
124
125
part->set5Momentum(mom-(2.*(KplusKtilde*mom)/KplusKtilde2)*KplusKtilde+(2.*(Ktilde*mom)/K2)*
K
);
126
127
}
128
129
/*
130
* SW 30/01/2019: Test feature only, not for release.
131
* Return true to only apply the transformation to non-coloured particles.
132
* Note this requires careful handling in DipoleEventRecord
133
*/
134
//virtual bool transformHardOnly() const { return theTransformHardOnly; }
135
136
141
// virtual void transformHard ( PPtr& hard ) {
142
// if ( !theTransformationCalculated ) {
143
// setTransformation();
144
// theTransformationCalculated = true;
145
// }
146
// hard->setMomentum(splitRecoilMomentum());
147
// hard->rescaleMass();
148
// }
149
150
151
public
:
152
159
void
persistentOutput
(
PersistentOStream
& os)
const
;
160
166
void
persistentInput
(
PersistentIStream
& is,
int
version);
168
175
static
void
Init
();
176
177
protected
:
178
185
virtual
IBPtr
clone
()
const
;
186
191
virtual
IBPtr
fullclone
()
const
;
193
194
195
// If needed, insert declarations of virtual function defined in the
196
// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
197
198
199
private
:
200
205
static
ClassDescription<IILightKinematics>
initIILightKinematics
;
206
211
IILightKinematics
&
operator=
(
const
IILightKinematics
&) =
delete
;
212
213
private
:
214
218
bool
theCollinearScheme
;
219
220
bool
didCollinear;
221
226
//bool theTransformHardOnly;
227
228
Lorentz5Momentum
K
;
229
Energy2 K2;
230
Lorentz5Momentum Ktilde;
231
Lorentz5Momentum KplusKtilde;
232
Energy2 KplusKtilde2;
233
240
LorentzRotation
theRecoilTransformation
;
241
246
bool
theTransformationCalculated
;
247
248
};
249
250
}
251
252
#include "ThePEG/Utilities/ClassTraits.h"
253
254
namespace
ThePEG
{
255
260
template
<>
261
struct
BaseClassTrait
<
Herwig
::IILightKinematics,1> {
263
typedef
Herwig::DipoleSplittingKinematics
NthBase
;
264
};
265
268
template
<>
269
struct
ClassTraits
<
Herwig
::IILightKinematics>
270
:
public
ClassTraitsBase
<Herwig::IILightKinematics> {
272
static
string
className
() {
return
"Herwig::IILightKinematics"
; }
280
static
string
library
() {
return
"HwDipoleShower.so"
; }
281
};
282
285
}
286
287
#endif
/* HERWIG_IILightKinematics_H */
Herwig::DipoleIndex
DipoleIndex is used to index splitting generators for a particular dipole.
Definition:
DipoleSplittingInfo.h:35
Herwig::DipoleSplittingInfo
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.
Definition:
DipoleSplittingInfo.h:209
Herwig::DipoleSplittingKernel
DipoleSplittingKernel is the base class for all kernels used within the dipole shower.
Definition:
DipoleSplittingKernel.h:41
Herwig::DipoleSplittingKinematics
DipoleSplittingKinematics is the base class for dipole splittings as performed in the dipole shower.
Definition:
DipoleSplittingKinematics.h:41
Herwig::IILightKinematics
IILightKinematics implements massless splittings off an initial-initial dipole.
Definition:
IILightKinematics.h:31
Herwig::IILightKinematics::theRecoilTransformation
LorentzRotation theRecoilTransformation
Store the LorentzRotation object equivalent to the transformation applied to the outgoing particles.
Definition:
IILightKinematics.h:240
Herwig::IILightKinematics::IILightKinematics
IILightKinematics()
The default constructor.
Herwig::IILightKinematics::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::IILightKinematics::setTransformation
virtual void setTransformation()
Calculate and store a required Lorentz transformation.
Herwig::IILightKinematics::doesTransform
virtual bool doesTransform() const
Return true, if there is a transformation which should be applied to all other final state particles ...
Definition:
IILightKinematics.h:98
Herwig::IILightKinematics::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::IILightKinematics::generateSplitting
virtual bool generateSplitting(double kappa, double xi, double phi, DipoleSplittingInfo &dIndex, const DipoleSplittingKernel &)
Generate splitting variables given three random numbers and the momentum fractions of the emitter and...
Herwig::IILightKinematics::K
Lorentz5Momentum K
SW 30/01/2019: Test feature only, not for release.
Definition:
IILightKinematics.h:228
Herwig::IILightKinematics::ptMax
virtual Energy ptMax(Energy dScale, double emX, double specX, const DipoleIndex &, const DipoleSplittingKernel &) const
Return the maximum pt for the given dipole scale.
Herwig::IILightKinematics::theTransformationCalculated
bool theTransformationCalculated
Bool to avoid unecessary recalculation of the Lorentz transformation.
Definition:
IILightKinematics.h:246
Herwig::IILightKinematics::initIILightKinematics
static ClassDescription< IILightKinematics > initIILightKinematics
The static object used to initialize the description of this class.
Definition:
IILightKinematics.h:205
Herwig::IILightKinematics::theCollinearScheme
bool theCollinearScheme
Wether or not to choose the ‘collinear’ scheme.
Definition:
IILightKinematics.h:218
Herwig::IILightKinematics::zBoundaries
virtual pair< double, double > zBoundaries(Energy pt, const DipoleSplittingInfo &dInfo, const DipoleSplittingKernel &split) const
Return the boundaries on the momentum fraction.
Herwig::IILightKinematics::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Herwig::IILightKinematics::generateKinematics
virtual void generateKinematics(const Lorentz5Momentum &pEmitter, const Lorentz5Momentum &pSpectator, const DipoleSplittingInfo &dInfo)
Generate the full kinematics given emitter and spectator momentum and a previously completeted Dipole...
Herwig::IILightKinematics::PtFromQ
virtual Energy PtFromQ(Energy scale, const DipoleSplittingInfo &) const
Return the pt given a virtuality.
Herwig::IILightKinematics::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Herwig::IILightKinematics::QFromPt
virtual Energy QFromPt(Energy scale, const DipoleSplittingInfo &) const
Return the virtuality given a pt.
Herwig::IILightKinematics::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::IILightKinematics::QMax
virtual Energy QMax(Energy dScale, double emX, double specX, const DipoleIndex &dIndex, const DipoleSplittingKernel &) const
Return the maximum virtuality for the given dipole scale.
Herwig::IILightKinematics::operator=
IILightKinematics & operator=(const IILightKinematics &)=delete
The assignment operator is private and must never be called.
ThePEG::ClassDescription
ThePEG::LorentzRotation
ThePEG::PersistentIStream
ThePEG::PersistentOStream
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::PPtr
ThePEG::Ptr< Particle >::pointer PPtr
ThePEG::BaseClassTrait
ThePEG::BaseClassTrait::NthBase
int NthBase
ThePEG::ClassTraitsBase
ThePEG::ClassTraitsBase::className
static string className()
ThePEG::ClassTraitsBase::library
static string library()
ThePEG::ClassTraits
Generated on Thu Jun 20 2024 17:50:53 for Herwig by
1.9.6