ThePEG
1.8.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
MatrixElement
MEBase.h
1
// -*- C++ -*-
2
//
3
// MEBase.h is a part of ThePEG - Toolkit for HEP Event Generation
4
// Copyright (C) 1999-2011 Leif Lonnblad
5
//
6
// ThePEG is licenced under version 2 of the GPL, see COPYING for details.
7
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
8
//
9
#ifndef ThePEG_MEBase_H
10
#define ThePEG_MEBase_H
11
// This is the declaration of the MEBase class.
12
13
#include "ThePEG/Handlers/HandlerBase.h"
14
#include "ThePEG/EventRecord/SubProcess.h"
15
#include "ThePEG/MatrixElement/DiagramBase.h"
16
#include "ThePEG/MatrixElement/ColourLines.h"
17
#include "ThePEG/MatrixElement/Amplitude.h"
18
#include "ThePEG/Handlers/LastXCombInfo.h"
19
#include "ThePEG/Handlers/StandardXComb.fh"
20
#include "ReweightBase.h"
21
22
#include "MEBase.fh"
23
24
namespace
ThePEG {
25
67
class
MEBase
:
public
HandlerBase
,
public
LastXCombInfo
<StandardXComb> {
68
69
public
:
70
72
typedef
vector<DiagPtr>
DiagramVector
;
74
typedef
DiagramVector::size_type
DiagramIndex
;
76
typedef
vector<ReweightPtr>
ReweightVector
;
77
78
public
:
79
85
MEBase
();
86
90
virtual
~MEBase
();
92
93
public
:
94
101
virtual
unsigned
int
orderInAlphaS
()
const
= 0;
102
107
virtual
unsigned
int
orderInAlphaEW
()
const
= 0;
108
114
virtual
double
me2
()
const
= 0;
115
120
virtual
Energy2
scale
()
const
= 0;
121
127
virtual
double
alphaS
()
const
;
128
134
virtual
double
alphaEM
()
const
;
135
140
void
setKinematics
(
tPPair
in,
const
PVector
& out);
141
149
virtual
void
setKinematics
();
150
154
virtual
void
constructVertex
(
tSubProPtr
sub);
155
160
virtual
int
nDim
()
const
;
161
170
virtual
bool
generateKinematics
(
const
double
* r) = 0;
171
176
virtual
bool
wantCMS
()
const
{
return
true
; }
177
184
virtual
bool
headCuts
()
const
{
return
false
; }
185
190
virtual
bool
ignoreCuts
()
const
{
return
false
; }
191
196
virtual
bool
apply
()
const
{
return
true
; }
197
202
virtual
CrossSection
dSigHatDR
()
const
= 0;
203
212
virtual
bool
haveX1X2
()
const
{
return
false
; }
213
218
virtual
bool
havePDFWeight1
()
const
{
return
false
; }
219
224
virtual
bool
havePDFWeight2
()
const
{
return
false
; }
225
231
virtual
bool
keepRandomNumbers
()
const
{
return
false
; }
232
240
virtual
void
generateSubCollision
(
SubProcess
&);
241
246
virtual
void
clearKinematics
();
247
251
virtual
void
getDiagrams
()
const
= 0;
252
260
virtual
bool
noMirror
()
const
{
return
false
; }
261
265
const
DiagramVector
&
diagrams
()
const
{
266
if
(
theDiagrams
.empty() )
getDiagrams
();
267
return
theDiagrams
;
268
}
269
274
virtual
Selector<const ColourLines *>
275
colourGeometries
(
tcDiagPtr
diag)
const
= 0;
276
282
virtual
const
ColourLines
&
283
selectColourGeometry
(
tcDiagPtr
diag)
const
;
284
291
virtual
Selector<DiagramIndex>
diagrams
(
const
DiagramVector
&)
const
{
292
return
Selector<DiagramIndex>
();
293
}
294
295
302
virtual
DiagramIndex
diagram
(
const
DiagramVector
&)
const
;
303
308
inline
bool
reweighted
()
const
{
309
return
reweights
.size() > 0 ||
preweights
.size() > 0;
310
}
311
317
double
reWeight
()
const
;
318
324
double
preWeight
()
const
;
325
329
void
addReweighter
(
tReweightPtr
rw);
330
334
void
addPreweighter
(
tReweightPtr
rw);
335
341
Ptr<Amplitude>::pointer
amplitude
()
const
{
return
theAmplitude
; }
342
346
void
amplitude
(
Ptr<Amplitude>::pointer
amp) {
theAmplitude
= amp; }
348
349
public
:
350
356
Energy2
sHat
()
const
{
return
theLastSHat
; }
357
362
double
preweight
()
const
{
return
lastPreweight
; }
363
369
virtual
void
flushCaches
() {}
370
375
virtual
void
setXComb
(
tStdXCombPtr
);
376
381
const
DVector
&
meInfo
()
const
;
382
387
void
meInfo
(
const
DVector
& info)
const
;
388
395
int
maxMultCKKW
()
const
{
return
theMaxMultCKKW
; }
396
403
int
minMultCKKW
()
const
{
return
theMinMultCKKW
; }
404
410
virtual
void
setVetoScales
(
tSubProPtr
)
const
{}
412
413
public
:
414
421
void
persistentOutput
(
PersistentOStream
& os)
const
;
422
428
void
persistentInput
(
PersistentIStream
& is,
int
version);
430
434
static
void
Init
();
435
436
protected
:
437
442
void
add
(
DiagPtr
dp)
const
{
theDiagrams
.push_back(dp); }
443
447
vector<Lorentz5Momentum> &
meMomenta
();
448
using
LastXCombInfo<StandardXComb>::meMomenta
;
449
455
void
lastME2
(
double
v)
const
;
456
using
LastXCombInfo<StandardXComb>::lastME2
;
457
463
void
lastMECrossSection
(
CrossSection
v)
const
;
464
using
LastXCombInfo<StandardXComb>::lastMECrossSection
;
465
472
void
lastMEPDFWeight
(
double
v)
const
;
473
using
LastXCombInfo<StandardXComb>::lastMEPDFWeight
;
474
479
void
jacobian
(
double
j);
480
using
LastXCombInfo<StandardXComb>::jacobian
;
481
488
void
use
(
tcMEPtr
other);
489
493
void
useDiagrams
(
tcMEPtr
other)
const
;
494
495
private
:
496
500
mutable
DiagramVector
theDiagrams
;
501
505
Energy2
theLastSHat
;
506
510
ReweightVector
reweights
;
511
515
ReweightVector
preweights
;
516
520
mutable
double
lastPreweight
;
521
525
Ptr<Amplitude>::pointer
theAmplitude
;
526
533
int
theMaxMultCKKW
;
534
541
int
theMinMultCKKW
;
542
543
private
:
544
548
static
AbstractClassDescription<MEBase>
initMEBase
;
549
553
MEBase
&
operator=
(
const
MEBase
&);
554
555
};
556
557
}
558
559
560
namespace
ThePEG {
561
568
template
<>
569
struct
BaseClassTrait<MEBase,1>:
public
ClassTraitsType {
571
typedef
HandlerBase
NthBase
;
572
};
573
578
template
<>
579
struct
ClassTraits<MEBase>:
public
ClassTraitsBase<MEBase> {
581
static
string
className
() {
return
"ThePEG::MEBase"
; }
582
};
583
586
}
587
588
#include "ThePEG/Handlers/StandardXComb.h"
589
590
#endif
/* ThePEG_MEBase_H */
Generated on Sat Jun 16 2012 16:51:04 for ThePEG by
1.8.1.1