herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
MatrixElement
Matchbox
Phasespace
InvertedTildeKinematics.h
1
// -*- C++ -*-
2
//
3
// InvertedTildeKinematics.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_InvertedTildeKinematics_H
10
#define HERWIG_InvertedTildeKinematics_H
11
//
12
// This is the declaration of the InvertedTildeKinematics class.
13
//
14
15
#include "ThePEG/Handlers/HandlerBase.h"
16
#include "ThePEG/Handlers/StandardXComb.h"
17
#include "ThePEG/Repository/EventGenerator.h"
18
#include "Herwig/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h"
19
20
namespace
Herwig
{
21
22
using namespace
ThePEG
;
23
33
class
InvertedTildeKinematics
:
public
HandlerBase
{
34
35
public
:
36
40
InvertedTildeKinematics
();
41
42
public
:
43
49
const
Lorentz5Momentum&
realEmitterMomentum
()
const
{
return
theRealEmitterMomentum
; }
50
54
const
Lorentz5Momentum&
realEmissionMomentum
()
const
{
return
theRealEmissionMomentum
; }
55
59
const
Lorentz5Momentum&
realSpectatorMomentum
()
const
{
return
theRealSpectatorMomentum
; }
60
64
const
Lorentz5Momentum&
bornEmitterMomentum
()
const
{
65
return
theBornXComb
->meMomenta()[
theDipole
->bornEmitter()];
66
}
67
71
const
Lorentz5Momentum&
bornSpectatorMomentum
()
const
{
72
return
theBornXComb
->meMomenta()[
theDipole
->bornSpectator()];
73
}
74
78
double
emitterX
()
const
{
79
return
80
theDipole
->bornEmitter() == 0 ?
81
theBornXComb
->lastX1() :
82
theBornXComb
->lastX2();
83
}
84
88
double
spectatorX
()
const
{
89
return
90
theDipole
->bornSpectator() == 0 ?
91
theBornXComb
->lastX1() :
92
theBornXComb
->lastX2();
93
}
94
98
const
vector<double>&
subtractionParameters
()
const
{
return
theDipole
->subtractionParameters(); }
99
104
virtual
bool
doesTransform
()
const
{
return
false
; }
105
111
virtual
Lorentz5Momentum
transform
(
const
Lorentz5Momentum& p)
const
{
return
p; }
112
116
Energy2
sHat
()
const
{
return
theBornXComb
->lastSHat(); }
118
119
public
:
120
124
Ptr<InvertedTildeKinematics>::ptr
cloneMe
()
const
{
125
return
dynamic_ptr_cast<Ptr<InvertedTildeKinematics>::ptr>(
clone
());
126
}
127
134
void
prepare
(tcStdXCombPtr newRealXComb,
135
tcStdXCombPtr newBornXComb) {
136
theRealXComb
= newRealXComb;
theBornXComb
= newBornXComb;
137
}
138
142
tcStdXCombPtr
realXComb
()
const
{
return
theRealXComb
; }
143
147
tcStdXCombPtr
bornXComb
()
const
{
return
theBornXComb
; }
148
152
void
dipole
(Ptr<SubtractionDipole>::tptr dip) {
theDipole
= dip; }
153
157
Ptr<SubtractionDipole>::tptr
dipole
() {
return
theDipole
; }
158
162
Ptr<SubtractionDipole>::tcptr
dipole
()
const
{
return
theDipole
; }
163
169
virtual
int
nDimRadiation
()
const
{
return
3; }
170
179
virtual
bool
doMap
(
const
double
*) = 0;
180
185
void
ptCut
(Energy pt) {
thePtCut
= pt; }
186
191
Energy
ptCut
()
const
{
return
thePtCut
; }
192
197
virtual
int
evolutionVariable
()
const
{
return
0; }
198
203
virtual
double
evolutionCutoff
()
const
{
return
0.0; }
204
208
virtual
Energy
lastPt
()
const
= 0;
209
213
virtual
double
lastZ
()
const
= 0;
214
218
virtual
Energy
lastScale
()
const
;
219
223
virtual
Energy
ptMax
()
const
= 0;
224
229
virtual
pair<double,double>
zBounds
(Energy pt, Energy hardPt =
ZERO
)
const
= 0;
230
234
virtual
pair<Energy,double>
generatePtZ
(
double
& jac,
const
double
* r,
235
double
power=1., vector<double>* values = NULL)
const
;
236
241
double
jacobian
()
const
{
return
theJacobian
; }
242
246
cPDPtr
realEmitterData
()
const
{
247
return
248
(
theDipole
&&
theRealXComb
) ?
249
theRealXComb
->mePartonData()[
theDipole
->realEmitter()] :
250
cPDPtr
();
251
}
252
256
cPDPtr
realEmissionData
()
const
{
257
return
258
(
theDipole
&&
theRealXComb
) ?
259
theRealXComb
->mePartonData()[
theDipole
->realEmission()] :
260
cPDPtr
();
261
}
262
266
cPDPtr
realSpectatorData
()
const
{
267
return
268
(
theDipole
&&
theRealXComb
) ?
269
theRealXComb
->mePartonData()[
theDipole
->realSpectator()] :
270
cPDPtr
();
271
}
272
276
cPDPtr
bornEmitterData
()
const
{
277
return
278
(
theDipole
&&
theBornXComb
) ?
279
theBornXComb
->mePartonData()[
theDipole
->bornEmitter()] :
280
cPDPtr
();
281
}
282
286
cPDPtr
bornSpectatorData
()
const
{
287
return
288
(
theDipole
&&
theBornXComb
) ?
289
theBornXComb
->mePartonData()[
theDipole
->bornSpectator()] :
290
cPDPtr
();
291
}
293
294
protected
:
295
299
Lorentz5Momentum&
realEmitterMomentum
() {
return
theRealEmitterMomentum
; }
300
304
Lorentz5Momentum&
realEmissionMomentum
() {
return
theRealEmissionMomentum
; }
305
309
Lorentz5Momentum&
realSpectatorMomentum
() {
return
theRealSpectatorMomentum
; }
310
314
vector<double>&
subtractionParameters
() {
return
theDipole
->subtractionParameters(); }
315
320
void
jacobian
(
double
w) {
theJacobian
= w; }
321
326
Lorentz5Momentum
getKt
(
const
Lorentz5Momentum& p1,
327
const
Lorentz5Momentum& p2,
328
Energy pt,
329
double
phi,
330
bool
spacelike =
false
)
const
;
331
332
public
:
333
340
void
persistentOutput
(
PersistentOStream
& os)
const
;
341
347
void
persistentInput
(
PersistentIStream
& is,
int
version);
349
356
static
void
Init
();
357
358
359
// If needed, insert declarations of virtual function defined in the
360
// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
361
362
protected
:
363
375
virtual
void
rebind
(
const
TranslationMap
& trans);
376
382
virtual
IVector
getReferences
();
384
385
386
private
:
387
391
Ptr<SubtractionDipole>::tptr
theDipole
;
392
396
tcStdXCombPtr
theRealXComb
;
397
401
tcStdXCombPtr
theBornXComb
;
402
406
Lorentz5Momentum
theRealEmitterMomentum
;
407
411
Lorentz5Momentum
theRealEmissionMomentum
;
412
416
Lorentz5Momentum
theRealSpectatorMomentum
;
417
422
double
theJacobian
;
423
428
Energy
thePtCut
;
429
430
private
:
431
436
InvertedTildeKinematics
&
operator=
(
const
InvertedTildeKinematics
&) =
delete
;
437
438
};
439
440
}
441
442
#endif
/* HERWIG_InvertedTildeKinematics_H */
Herwig::InvertedTildeKinematics
InvertedTildeKinematics is the base class for the inverted 'tilde' kinematics being used for subtract...
Definition:
InvertedTildeKinematics.h:33
Herwig::InvertedTildeKinematics::dipole
void dipole(Ptr< SubtractionDipole >::tptr dip)
Set the current dipole.
Definition:
InvertedTildeKinematics.h:152
Herwig::InvertedTildeKinematics::spectatorX
double spectatorX() const
Return the momentum fraction of the spectator.
Definition:
InvertedTildeKinematics.h:88
Herwig::InvertedTildeKinematics::theRealXComb
tcStdXCombPtr theRealXComb
The XComb object describing the real emission process.
Definition:
InvertedTildeKinematics.h:396
Herwig::InvertedTildeKinematics::generatePtZ
virtual pair< Energy, double > generatePtZ(double &jac, const double *r, double power=1., vector< double > *values=NULL) const
Generate pt and z.
Herwig::InvertedTildeKinematics::theRealSpectatorMomentum
Lorentz5Momentum theRealSpectatorMomentum
The momentum of the spectator in the real emission process.
Definition:
InvertedTildeKinematics.h:416
Herwig::InvertedTildeKinematics::thePtCut
Energy thePtCut
The optional cutoff on the emission's transverse momentum.
Definition:
InvertedTildeKinematics.h:428
Herwig::InvertedTildeKinematics::bornEmitterData
cPDPtr bornEmitterData() const
Return the particle type of the emitter in the underlying Born process.
Definition:
InvertedTildeKinematics.h:276
Herwig::InvertedTildeKinematics::theRealEmissionMomentum
Lorentz5Momentum theRealEmissionMomentum
The momentum of the emission in the real emission process.
Definition:
InvertedTildeKinematics.h:411
Herwig::InvertedTildeKinematics::bornSpectatorData
cPDPtr bornSpectatorData() const
Return the particle type of the spectator in the underlying Born process.
Definition:
InvertedTildeKinematics.h:286
Herwig::InvertedTildeKinematics::getKt
Lorentz5Momentum getKt(const Lorentz5Momentum &p1, const Lorentz5Momentum &p2, Energy pt, double phi, bool spacelike=false) const
Calculate a transverse momentum for the given momenta, invariant pt and azimuth.
Herwig::InvertedTildeKinematics::subtractionParameters
vector< double > & subtractionParameters()
Access the vector of dimensionless variables calculated.
Definition:
InvertedTildeKinematics.h:314
Herwig::InvertedTildeKinematics::InvertedTildeKinematics
InvertedTildeKinematics()
The default constructor.
Herwig::InvertedTildeKinematics::realEmitterMomentum
Lorentz5Momentum & realEmitterMomentum()
Access the momentum of the emitter in the real emission process.
Definition:
InvertedTildeKinematics.h:299
Herwig::InvertedTildeKinematics::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::InvertedTildeKinematics::theDipole
Ptr< SubtractionDipole >::tptr theDipole
The last dipole this InvertedTildeKinematics has been selected for.
Definition:
InvertedTildeKinematics.h:391
Herwig::InvertedTildeKinematics::sHat
Energy2 sHat() const
Return the centre of mass energy for the underlying Born configuration.
Definition:
InvertedTildeKinematics.h:116
Herwig::InvertedTildeKinematics::evolutionVariable
virtual int evolutionVariable() const
Return the random number index corresponding to the evolution variable.
Definition:
InvertedTildeKinematics.h:197
Herwig::InvertedTildeKinematics::realEmitterData
cPDPtr realEmitterData() const
Return the particle type of the emitter in the real emission process.
Definition:
InvertedTildeKinematics.h:246
Herwig::InvertedTildeKinematics::theRealEmitterMomentum
Lorentz5Momentum theRealEmitterMomentum
The momentum of the emitter in the real emission process.
Definition:
InvertedTildeKinematics.h:406
Herwig::InvertedTildeKinematics::jacobian
void jacobian(double w)
Set the single particle phase space weight in units of sHat() for the last selected configuration.
Definition:
InvertedTildeKinematics.h:320
Herwig::InvertedTildeKinematics::bornXComb
tcStdXCombPtr bornXComb() const
Return the Born xcomb.
Definition:
InvertedTildeKinematics.h:147
Herwig::InvertedTildeKinematics::dipole
Ptr< SubtractionDipole >::tcptr dipole() const
Return the current dipole.
Definition:
InvertedTildeKinematics.h:162
Herwig::InvertedTildeKinematics::ptCut
void ptCut(Energy pt)
Set an optional cutoff on the emission's transverse momentum.
Definition:
InvertedTildeKinematics.h:185
Herwig::InvertedTildeKinematics::ptMax
virtual Energy ptMax() const =0
Return the upper bound on pt.
Herwig::InvertedTildeKinematics::realXComb
tcStdXCombPtr realXComb() const
Return the real xcomb.
Definition:
InvertedTildeKinematics.h:142
Herwig::InvertedTildeKinematics::lastPt
virtual Energy lastPt() const =0
Return the pt associated to the last generated splitting.
Herwig::InvertedTildeKinematics::operator=
InvertedTildeKinematics & operator=(const InvertedTildeKinematics &)=delete
The assignment operator is private and must never be called.
Herwig::InvertedTildeKinematics::realEmissionData
cPDPtr realEmissionData() const
Return the particle type of the emission in the real emission process.
Definition:
InvertedTildeKinematics.h:256
Herwig::InvertedTildeKinematics::realEmissionMomentum
const Lorentz5Momentum & realEmissionMomentum() const
Return the momentum of the emission in the real emission process.
Definition:
InvertedTildeKinematics.h:54
Herwig::InvertedTildeKinematics::ptCut
Energy ptCut() const
Return the optional cutoff on the emission's transverse momentum.
Definition:
InvertedTildeKinematics.h:191
Herwig::InvertedTildeKinematics::emitterX
double emitterX() const
Return the momentum fraction of the emitter.
Definition:
InvertedTildeKinematics.h:78
Herwig::InvertedTildeKinematics::jacobian
double jacobian() const
Return the single particle phase space weight in units of sHat() for the last selected configuration.
Definition:
InvertedTildeKinematics.h:241
Herwig::InvertedTildeKinematics::realSpectatorData
cPDPtr realSpectatorData() const
Return the particle type of the spectator in the real emission process.
Definition:
InvertedTildeKinematics.h:266
Herwig::InvertedTildeKinematics::transform
virtual Lorentz5Momentum transform(const Lorentz5Momentum &p) const
If this InvertedTildeKinematics object needs to transform all other particles in the process except t...
Definition:
InvertedTildeKinematics.h:111
Herwig::InvertedTildeKinematics::bornSpectatorMomentum
const Lorentz5Momentum & bornSpectatorMomentum() const
Return the momentum of the spectator in the underlying Born process.
Definition:
InvertedTildeKinematics.h:71
Herwig::InvertedTildeKinematics::prepare
void prepare(tcStdXCombPtr newRealXComb, tcStdXCombPtr newBornXComb)
Prepare given a dipole, and XCombs describing the real emission and underlying Born processes,...
Definition:
InvertedTildeKinematics.h:134
Herwig::InvertedTildeKinematics::doMap
virtual bool doMap(const double *)=0
Perform the mapping of the tilde kinematics for the last selected process and store all dimensionless...
Herwig::InvertedTildeKinematics::theBornXComb
tcStdXCombPtr theBornXComb
The XComb object describing the underlying Born process.
Definition:
InvertedTildeKinematics.h:401
Herwig::InvertedTildeKinematics::getReferences
virtual IVector getReferences()
Return a vector of all pointers to Interfaced objects used in this object.
Herwig::InvertedTildeKinematics::dipole
Ptr< SubtractionDipole >::tptr dipole()
Return the current dipole.
Definition:
InvertedTildeKinematics.h:157
Herwig::InvertedTildeKinematics::bornEmitterMomentum
const Lorentz5Momentum & bornEmitterMomentum() const
Return the momentum of the emitter in the underlying Born process.
Definition:
InvertedTildeKinematics.h:64
Herwig::InvertedTildeKinematics::rebind
virtual void rebind(const TranslationMap &trans)
Rebind pointer to other Interfaced objects.
Herwig::InvertedTildeKinematics::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::InvertedTildeKinematics::zBounds
virtual pair< double, double > zBounds(Energy pt, Energy hardPt=ZERO) const =0
Given a pt and a hard pt, return the boundaries on z; if the hard pt is zero, ptMax() will be used.
Herwig::InvertedTildeKinematics::realEmitterMomentum
const Lorentz5Momentum & realEmitterMomentum() const
Return the momentum of the emitter in the real emission process.
Definition:
InvertedTildeKinematics.h:49
Herwig::InvertedTildeKinematics::lastScale
virtual Energy lastScale() const
Return the relevant dipole scale.
Herwig::InvertedTildeKinematics::realSpectatorMomentum
const Lorentz5Momentum & realSpectatorMomentum() const
Return the momentum of the spectator in the real emission process.
Definition:
InvertedTildeKinematics.h:59
Herwig::InvertedTildeKinematics::subtractionParameters
const vector< double > & subtractionParameters() const
Return the vector of dimensionless variables calculated.
Definition:
InvertedTildeKinematics.h:98
Herwig::InvertedTildeKinematics::realEmissionMomentum
Lorentz5Momentum & realEmissionMomentum()
Access the momentum of the emission in the real emission process.
Definition:
InvertedTildeKinematics.h:304
Herwig::InvertedTildeKinematics::doesTransform
virtual bool doesTransform() const
Return true, if this InvertedTildeKinematics object needs to transform all other particles in the pro...
Definition:
InvertedTildeKinematics.h:104
Herwig::InvertedTildeKinematics::realSpectatorMomentum
Lorentz5Momentum & realSpectatorMomentum()
Access the momentum of the spectator in the real emission process.
Definition:
InvertedTildeKinematics.h:309
Herwig::InvertedTildeKinematics::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::InvertedTildeKinematics::nDimRadiation
virtual int nDimRadiation() const
Return the number of random numbers needed to generate a real emission configuration off the underlyi...
Definition:
InvertedTildeKinematics.h:169
Herwig::InvertedTildeKinematics::lastZ
virtual double lastZ() const =0
Return the momentum fraction associated to the last splitting.
Herwig::InvertedTildeKinematics::evolutionCutoff
virtual double evolutionCutoff() const
Return the cutoff on the evolution random number corresponding to the pt cut.
Definition:
InvertedTildeKinematics.h:203
Herwig::InvertedTildeKinematics::theJacobian
double theJacobian
Return the single particle phase space weight in units of sHat() for the last selected configuration.
Definition:
InvertedTildeKinematics.h:422
Herwig::InvertedTildeKinematics::cloneMe
Ptr< InvertedTildeKinematics >::ptr cloneMe() const
Clone this object.
Definition:
InvertedTildeKinematics.h:124
ThePEG::HandlerBase
ThePEG::InterfacedBase::clone
virtual IBPtr clone() const=0
ThePEG::PersistentIStream
ThePEG::PersistentOStream
ThePEG::Rebinder
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG
ThePEG::ZERO
constexpr ZeroUnit ZERO
ThePEG::cPDPtr
ThePEG::Ptr< ParticleData >::const_pointer cPDPtr
ThePEG::IVector
vector< IBPtr > IVector
Generated on Thu Jun 20 2024 17:50:53 for Herwig by
1.9.6