herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
MatrixElement
Hadron
MEDiffraction.h
1
// -*- C++ -*-
2
#ifndef HERWIG_MEDiffraction_H
3
#define HERWIG_MEDiffraction_H
4
//
5
// This is the declaration of the MEDiffraction class.
6
//
7
8
#include "Herwig/MatrixElement/HwMEBase.h"
9
#include "Herwig/Shower/UEBase.h"
10
11
namespace
Herwig
{
12
13
using namespace
ThePEG
;
14
23
class
MEDiffraction
:
public
HwMEBase
{
24
25
public
:
26
27
MEDiffraction
();
28
35
virtual
unsigned
int
orderInAlphaS
()
const
;
36
41
virtual
unsigned
int
orderInAlphaEW
()
const
;
42
50
virtual
double
me2
()
const
;
51
56
double
correctionweight
()
const
;
57
61
virtual
Energy2
scale
()
const
;
62
70
virtual
void
setKinematics
();
71
76
virtual
int
nDim
()
const
;
77
86
virtual
bool
generateKinematics
(
const
double
* r);
87
92
virtual
CrossSection
dSigHatDR
()
const
;
93
97
virtual
void
getDiagrams
()
const
;
98
107
virtual
Selector<DiagramIndex>
diagrams
(
const
DiagramVector
& dv)
const
;
108
116
virtual
Selector<const ColourLines *>
117
colourGeometries
(tcDiagPtr diag)
const
;
119
123
/* virtual bool wantCMS() const { return false; } */
124
125
public
:
126
133
void
persistentOutput
(
PersistentOStream
& os)
const
;
134
140
void
persistentInput
(
PersistentIStream
& is,
int
version);
142
149
static
void
Init
();
150
151
protected
:
152
160
virtual
void
doinit
();
161
165
virtual
void
doinitrun
();
167
174
virtual
IBPtr
clone
()
const
;
175
180
virtual
IBPtr
fullclone
()
const
;
182
183
private
:
184
185
/* The matrix element squared */
186
double
theme2;
187
188
/* Use only delta as excited state */
189
bool
deltaOnly;
190
191
/* Only produce single-diffractive events */
192
// Default = off
193
bool
singleDiffractionOnly = 0;
194
195
/* Direction of the excited proton */
196
unsigned
int
diffDirection;
197
198
/* Number of clusters the dissociated proton decays into */
199
unsigned
int
dissociationDecay;
200
201
/* The mass of the consitutent quark */
202
Energy mq()
const
{
return
Energy(0.325*GeV);}
203
204
/* The mass of the constituent diquark */
205
Energy mqq()
const
{
return
Energy(0.650*GeV);}
206
207
/* The proton-pomeron slope */
208
double
theprotonPomeronSlope;
209
210
/* The soft pomeron intercept */
211
double
thesoftPomeronIntercept;
212
213
/* The soft pomeron slope */
214
double
thesoftPomeronSlope;
215
216
220
pair<pair<Energy2,Energy2>,Energy2>
diffractiveMassAndMomentumTransfer
()
const
;
221
222
226
Energy2
randomM2
()
const
;
227
231
Energy2
randomt
(Energy2 M2)
const
;
232
237
Energy2
doublediffrandomt
(Energy2 M12, Energy2 M22)
const
;
238
239
243
pair<Lorentz5Momentum,Lorentz5Momentum>
twoBodyDecayMomenta
(Lorentz5Momentum pp)
const
;
244
248
InvEnergy2
protonPomeronSlope
()
const
;
249
253
double
softPomeronIntercept
()
const
;
254
255
//M12 and M22 are masses squared of
256
//outgoing particles
257
262
Energy2
tminfun
(Energy2 s, Energy2 M12, Energy2 M22)
const
;
263
268
Energy2
tmaxfun
(Energy2 s , Energy2 M12, Energy2 M22)
const
;
269
273
//lowest possible mass given the constituent masses of quark and diquark
274
Energy2
M2min
()
const
{
return
sqr
(
getParticleData
(2212)->mass()+mq()+mqq());}
275
279
Energy2
M2max
()
const
{
280
return
sqr
(
generator
()->maximumCMEnergy()-
getParticleData
(2212)->mass());
281
}
//TODO:modify to get proper parameters
282
283
InvEnergy2 softPomeronSlope()
const
;
284
285
286
287
/* Kallen function */
288
template
<
typename
A,
typename
B,
typename
C>
289
auto
kallen(A a, B b, C c)
const
->
decltype
(a*a)
290
{
291
return
a*a + b*b + c*c - 2.0*(a*b + b*c + c*a);
292
}
293
294
295
300
MEDiffraction
&
operator=
(
const
MEDiffraction
&) =
delete
;
301
302
bool
isInRunPhase;
303
304
305
/* The proton mass */
306
Energy theProtonMass;
307
312
UEBasePtr
MPIHandler_
;
313
314
};
315
316
}
317
318
#endif
/* HERWIG_MEDiffraction_H */
Herwig::HwMEBase
The HwMEBase class serves a number of purposes.
Definition:
HwMEBase.h:35
Herwig::MEDiffraction
The MEDiffraction class provides a simple colour singlet exchange matrix element to be used in the so...
Definition:
MEDiffraction.h:23
Herwig::MEDiffraction::diffractiveMassAndMomentumTransfer
pair< pair< Energy2, Energy2 >, Energy2 > diffractiveMassAndMomentumTransfer() const
Sample the diffractive mass squared M2 and the momentum transfer t.
Herwig::MEDiffraction::M2max
Energy2 M2max() const
Returns the maximal possible value of diffractive mass.
Definition:
MEDiffraction.h:279
Herwig::MEDiffraction::orderInAlphaS
virtual unsigned int orderInAlphaS() const
Return the order in in which this matrix element is given.
Herwig::MEDiffraction::tmaxfun
Energy2 tmaxfun(Energy2 s, Energy2 M12, Energy2 M22) const
Returns the maximal possible value of momentum transfer t given the center of mass energy and diffrac...
Herwig::MEDiffraction::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::MEDiffraction::doinit
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Herwig::MEDiffraction::nDim
virtual int nDim() const
The number of internal degrees of freedom used in the matrix element.
Herwig::MEDiffraction::scale
virtual Energy2 scale() const
Return the scale associated with the last set phase space point.
Herwig::MEDiffraction::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Herwig::MEDiffraction::tminfun
Energy2 tminfun(Energy2 s, Energy2 M12, Energy2 M22) const
Returns the minimal possible value of momentum transfer t given the center of mass energy and diffrac...
Herwig::MEDiffraction::diagrams
virtual Selector< DiagramIndex > diagrams(const DiagramVector &dv) const
Get diagram selector.
Herwig::MEDiffraction::randomt
Energy2 randomt(Energy2 M2) const
Random value for t according to exp(diffSlope*t)
Herwig::MEDiffraction::setKinematics
virtual void setKinematics()
Set the typed and momenta of the incoming and outgoing partons to be used in subsequent calls to me()...
Herwig::MEDiffraction::correctionweight
double correctionweight() const
Correction weight to reweight the cross section to the diffractive cross section.
Herwig::MEDiffraction::me2
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
Herwig::MEDiffraction::orderInAlphaEW
virtual unsigned int orderInAlphaEW() const
Return the order in in which this matrix element is given.
Herwig::MEDiffraction::dSigHatDR
virtual CrossSection dSigHatDR() const
Return the matrix element squared differential in the variables given by the last call to generateKin...
Herwig::MEDiffraction::MPIHandler_
UEBasePtr MPIHandler_
a MPIHandler to administer the creation of several (semihard) partonic interactions.
Definition:
MEDiffraction.h:312
Herwig::MEDiffraction::generateKinematics
virtual bool generateKinematics(const double *r)
Generate internal degrees of freedom given nDim() uniform random numbers in the interval .
Herwig::MEDiffraction::M2min
Energy2 M2min() const
Returns the minimal possible value of diffractive mass.
Definition:
MEDiffraction.h:274
Herwig::MEDiffraction::doinitrun
virtual void doinitrun()
Initialize this object.
Herwig::MEDiffraction::operator=
MEDiffraction & operator=(const MEDiffraction &)=delete
The assignment operator is private and must never be called.
Herwig::MEDiffraction::doublediffrandomt
Energy2 doublediffrandomt(Energy2 M12, Energy2 M22) const
Random value for t according to exp(diffSlope*t) for double diffraction.
Herwig::MEDiffraction::randomM2
Energy2 randomM2() const
Random value for the diffractive mass squared M2 according to (M2/s0)^(-intercept)
Herwig::MEDiffraction::colourGeometries
virtual Selector< const ColourLines * > colourGeometries(tcDiagPtr diag) const
Return a Selector with possible colour geometries for the selected diagram weighted by their relative...
Herwig::MEDiffraction::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Herwig::MEDiffraction::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::MEDiffraction::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::MEDiffraction::protonPomeronSlope
InvEnergy2 protonPomeronSlope() const
Returns the proton-pomeron slope.
Herwig::MEDiffraction::twoBodyDecayMomenta
pair< Lorentz5Momentum, Lorentz5Momentum > twoBodyDecayMomenta(Lorentz5Momentum pp) const
Returns the momenta of the two-body decay of momentum pp.
Herwig::MEDiffraction::getDiagrams
virtual void getDiagrams() const
Add all possible diagrams with the add() function.
Herwig::MEDiffraction::softPomeronIntercept
double softPomeronIntercept() const
Returns the soft pomeron intercept.
ThePEG::Interfaced::getParticleData
PDPtr getParticleData(PID) const
ThePEG::Interfaced::generator
tEGPtr generator() const
ThePEG::MEBase::DiagramVector
vector< DiagPtr > DiagramVector
ThePEG::PersistentIStream
ThePEG::PersistentOStream
ThePEG::Selector
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::sqr
constexpr auto sqr(const T &x) -> decltype(x *x)
Generated on Thu Jun 20 2024 17:50:52 for Herwig by
1.9.6