herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.2.1
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
192
/* Direction of the excited proton */
193
unsigned
int
diffDirection;
194
195
/* Number of clusters the dissociated proton decays into */
196
unsigned
int
dissociationDecay;
197
198
/* The mass of the consitutent quark */
199
Energy mq()
const
{
return
Energy(0.325*GeV);}
200
201
/* The mass of the constituent diquark */
202
Energy mqq()
const
{
return
Energy(0.650*GeV);}
203
204
/* The proton-pomeron slope */
205
double
theprotonPomeronSlope;
206
207
/* The soft pomeron intercept */
208
double
thesoftPomeronIntercept;
209
210
/* The soft pomeron slope */
211
double
thesoftPomeronSlope;
212
213
217
pair<pair<Energy2,Energy2>,Energy2> diffractiveMassAndMomentumTransfer()
const
;
218
219
223
Energy2 randomM2()
const
;
224
228
Energy2 randomt(Energy2 M2)
const
;
229
234
Energy2 doublediffrandomt(Energy2 M12, Energy2 M22)
const
;
235
236
240
pair<Lorentz5Momentum,Lorentz5Momentum> twoBodyDecayMomenta(Lorentz5Momentum pp)
const
;
241
245
InvEnergy2 protonPomeronSlope()
const
;
246
250
double
softPomeronIntercept()
const
;
251
252
//M12 and M22 are masses squared of
253
//outgoing particles
254
259
Energy2 tminfun(Energy2 s, Energy2 M12, Energy2 M22)
const
;
260
265
Energy2 tmaxfun(Energy2 s , Energy2 M12, Energy2 M22)
const
;
266
270
//lowest possible mass given the constituent masses of quark and diquark
271
Energy2
M2min
()
const
{
return
sqr
(getParticleData(2212)->mass()+mq()+mqq());}
272
276
Energy2
M2max
()
const
{
277
return
sqr
(generator()->maximumCMEnergy()-getParticleData(2212)->mass());
278
}
//TODO:modify to get proper parameters
279
280
InvEnergy2 softPomeronSlope()
const
;
281
282
283
284
/* Kallen function */
285
template
<
typename
A,
typename
B,
typename
C>
286
auto
kallen(A a, B b, C c)
const
-> decltype(a*a)
287
{
288
return
a*a + b*b + c*c - 2.0*(a*b + b*c + c*a);
289
}
290
291
292
297
MEDiffraction
& operator=(
const
MEDiffraction
&) =
delete
;
298
299
bool
isInRunPhase;
300
301
302
/* The proton mass */
303
Energy theProtonMass;
304
309
UEBasePtr
MPIHandler_
;
310
311
};
312
313
}
314
315
#endif
/* HERWIG_MEDiffraction_H */
ThePEG::PersistentIStream
Herwig::MEDiffraction::MPIHandler_
UEBasePtr MPIHandler_
a MPIHandler to administer the creation of several (semihard) partonic interactions.
Definition:
MEDiffraction.h:309
ThePEG::PersistentOStream
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
sqr
constexpr auto sqr(const T &x) -> decltype(x *x)
ThePEG
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::M2min
Energy2 M2min() const
Returns the minimal possible value of diffractive mass.
Definition:
MEDiffraction.h:271
ThePEG::Selector
ThePEG::MEBase::DiagramVector
vector< DiagPtr > DiagramVector
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
Herwig::MEDiffraction::M2max
Energy2 M2max() const
Returns the maximal possible value of diffractive mass.
Definition:
MEDiffraction.h:276
Herwig::HwMEBase
The HwMEBase class serves a number of purposes.
Definition:
HwMEBase.h:35
Generated on Sat Apr 11 2020 14:50:30 for Herwig by
1.8.13