herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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
17namespace Herwig {
18
19using namespace ThePEG;
20
32
33public:
34
39
40public:
41
47 virtual pair<double,double> kappaSupport(const DipoleSplittingInfo& dIndex) const;
48
53 virtual pair<double,double> xiSupport(const DipoleSplittingInfo& dIndex) const;
54
58 virtual pair<double,double> zBoundaries(Energy,
60 const DipoleSplittingKernel&) const {
61 return {0.0,1.0};
62 }
63
72 virtual Energy dipoleScale(const Lorentz5Momentum& pEmitter,
73 const Lorentz5Momentum& pSpectator) const;
74
78 virtual Energy ptMax(Energy dScale,
79 double emX, double specX,
80 const DipoleSplittingInfo& dInfo,
81 const DipoleSplittingKernel& split) const;
82
86 virtual Energy ptMax(Energy dScale,
87 double, double,
88 const DipoleIndex& dIndex,
89 const DipoleSplittingKernel& split,
90 tPPtr emitter, tPPtr) const;
91
95 virtual Energy ptMax(Energy,
96 double, double,
97 const DipoleIndex&,
98 const DipoleSplittingKernel&) const {
99 // Only the DipoleSplittingInfo version should be used for massive
100 // dipoles, for now anyway.
101 assert(false);
102 return ZERO;
103 }
104
108 virtual Energy QMax(Energy dScale,
109 double emX, double specX,
110 const DipoleSplittingInfo& dInfo,
111 const DipoleSplittingKernel& split) const;
112
116 virtual Energy QMax(Energy,
117 double, double,
118 const DipoleIndex&,
119 const DipoleSplittingKernel&) const {
120 // Only the DipoleSplittingInfo version should be used for massive
121 // dipoles, for now anyway.
122 assert(false);
123 return ZERO;
124 }
125
129 virtual Energy PtFromQ(Energy scale, const DipoleSplittingInfo&) const;
130
134 virtual Energy QFromPt(Energy scale, const DipoleSplittingInfo&) const;
135
140 virtual double ptToRandom(Energy pt, Energy dScale,
141 double emX, double specX,
142 const DipoleIndex& dIndex,
143 const DipoleSplittingKernel&) const;
144
150 virtual bool generateSplitting(double kappa, double xi, double phi,
151 DipoleSplittingInfo& dIndex,
152 const DipoleSplittingKernel&);
153
159 virtual void generateKinematics(const Lorentz5Momentum& pEmitter,
160 const Lorentz5Momentum& pSpectator,
161 const DipoleSplittingInfo& dInfo);
162
163public:
164
172
178 void persistentInput(PersistentIStream & is, int version);
180
187 static void Init();
188
189protected:
190
197 virtual IBPtr clone() const;
198
203 virtual IBPtr fullclone() const;
205
206
207// If needed, insert declarations of virtual function defined in the
208// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
209
210
211private:
212
218
224
225private:
226
231
232};
233
234}
235
236#include "ThePEG/Utilities/ClassTraits.h"
237
238namespace ThePEG {
239
244template <>
245struct BaseClassTrait<Herwig::IFMassiveKinematics,1> {
248};
249
252template <>
253struct ClassTraits<Herwig::IFMassiveKinematics>
254 : public ClassTraitsBase<Herwig::IFMassiveKinematics> {
256 static string className() { return "Herwig::IFMassiveKinematics"; }
264 static string library() { return "HwDipoleShower.so"; }
265};
266
269}
270
271#endif /* HERWIG_IFMassiveKinematics_H */
DipoleIndex is used to index splitting generators for a particular dipole.
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.
DipoleSplittingKernel is the base class for all kernels used within the dipole shower.
DipoleSplittingKinematics is the base class for dipole splittings as performed in the dipole shower.
IFMassiveKinematics implements massless splittings off an initial-final dipole.
virtual Energy dipoleScale(const Lorentz5Momentum &pEmitter, const Lorentz5Momentum &pSpectator) const
Return the dipole scale associated to the given pair of emitter and spectator.
virtual pair< double, double > kappaSupport(const DipoleSplittingInfo &dIndex) const
Return the boundaries in between the evolution variable random number is to be sampled; the lower cuo...
virtual Energy ptMax(Energy dScale, double emX, double specX, const DipoleSplittingInfo &dInfo, const DipoleSplittingKernel &split) const
Return the maximum pt for the given dipole scale.
virtual pair< double, double > zBoundaries(Energy, const DipoleSplittingInfo &, const DipoleSplittingKernel &) const
Return the boundaries on the momentum fraction.
IFMassiveKinematics & operator=(const IFMassiveKinematics &)=delete
The assignment operator is private and must never be called.
IFMassiveKinematics()
The default constructor.
bool theCollinearScheme
Wether or not to choose the ‘collinear’ scheme.
virtual Energy QMax(Energy, double, double, const DipoleIndex &, const DipoleSplittingKernel &) const
Return the maximum virtuality for the given dipole scale.
static void Init()
The standard Init function used to initialize the interfaces.
virtual Energy QFromPt(Energy scale, const DipoleSplittingInfo &) const
Return the virtuality given a pt.
virtual Energy ptMax(Energy, double, double, const DipoleIndex &, const DipoleSplittingKernel &) const
Return the maximum pt for the given dipole scale.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual Energy QMax(Energy dScale, double emX, double specX, const DipoleSplittingInfo &dInfo, const DipoleSplittingKernel &split) const
Return the maximum virtuality for the given dipole scale.
virtual Energy ptMax(Energy dScale, double, double, const DipoleIndex &dIndex, const DipoleSplittingKernel &split, tPPtr emitter, tPPtr) const
Return the maximum pt for the given dipole scale.
virtual pair< double, double > xiSupport(const DipoleSplittingInfo &dIndex) const
Return the boundaries in between the momentum fraction random number is to be sampled.
virtual double ptToRandom(Energy pt, Energy dScale, double emX, double specX, const DipoleIndex &dIndex, const DipoleSplittingKernel &) const
Return the random number associated to the given pt.
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...
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual Energy PtFromQ(Energy scale, const DipoleSplittingInfo &) const
Return the pt given a virtuality.
static ClassDescription< IFMassiveKinematics > initIFMassiveKinematics
The static object used to initialize the description of this class.
virtual IBPtr clone() const
Make a simple clone of this object.
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...
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
-*- C++ -*-
ThePEG::Ptr< Particle >::transient_pointer tPPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
constexpr ZeroUnit ZERO
static string className()
static string library()