ThePEG
1.8.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
Handlers
StandardXComb.h
1
// -*- C++ -*-
2
//
3
// StandardXComb.h is a part of ThePEG - Toolkit for HEP Event Generation
4
// Copyright (C) 1999-2011 Leif Lonnblad
5
// Copyright (C) 2009-2011 Simon Platzer
6
//
7
// ThePEG is licenced under version 2 of the GPL, see COPYING for details.
8
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
9
//
10
#ifndef ThePEG_StandardXComb_H
11
#define ThePEG_StandardXComb_H
12
// This is the declaration of the StandardXComb class.
13
14
#include "ThePEG/Config/ThePEG.h"
15
#include "SubProcessHandler.fh"
16
#include "ThePEG/PDF/PartonExtractor.fh"
17
#include "ThePEG/PDF/PartonBin.h"
18
#include "ThePEG/PDF/PartonBinInstance.h"
19
#include "ThePEG/Utilities/VSelector.h"
20
#include "ThePEG/Utilities/ClassDescription.h"
21
#include "ThePEG/Utilities/Maths.h"
22
#include "ThePEG/Utilities/XSecStat.h"
23
#include "ThePEG/EventRecord/Particle.h"
24
#include "ThePEG/MatrixElement/MEBase.h"
25
#include "ThePEG/Handlers/XComb.h"
26
#include "ThePEG/Handlers/StandardEventHandler.h"
27
#include "ThePEG/Handlers/SubProcessHandler.fh"
28
#include "StandardXComb.fh"
29
30
namespace
ThePEG {
31
53
class
StandardXComb
:
public
XComb
{
54
55
public
:
56
58
typedef
MEBase::DiagramVector
DiagramVector
;
59
61
typedef
MEBase::DiagramIndex
DiagramIndex
;
62
64
friend
class
MEBase
;
65
66
public
:
67
73
StandardXComb
(
Energy
newMaxEnergy,
const
cPDPair
& inc,
74
tEHPtr
newEventHandler,
tSubHdlPtr
newSubProcessHandler,
75
tPExtrPtr
newExtractor,
tCascHdlPtr
newCKKW,
76
const
PBPair
& newPartonBins,
tCutsPtr
newCuts,
tMEPtr
newME,
77
const
DiagramVector
& newDiagrams,
bool
mir,
78
tStdXCombPtr
newHead =
tStdXCombPtr
());
79
83
StandardXComb
();
84
88
virtual
~StandardXComb
();
89
93
StandardXComb
(
tMEPtr
me,
const
tPVector
& parts,
DiagramIndex
i);
94
96
103
tcSubHdlPtr
subProcessHandler
()
const
{
return
theSubProcessHandler
; }
104
108
tMEPtr
matrixElement
()
const
{
return
theME
; }
109
115
tStdXCombPtr
head
()
const
{
return
theHead
; }
116
120
void
head
(
tStdXCombPtr
headXC) {
theHead
= headXC; }
122
128
virtual
bool
checkInit
();
129
134
int
nDim
()
const
{
return
theNDim
; }
135
139
bool
willPassCuts
()
const
;
140
146
virtual
CrossSection
dSigDR
(
const
pair<double,double> ll,
int
nr,
const
double
* r);
147
151
double
lastPDFWeight
()
const
{
return
theLastPDFWeight
; }
152
156
CrossSection
lastCrossSection
()
const
{
return
theLastCrossSection
; }
157
161
virtual
tSubProPtr
construct
();
163
169
virtual
const
XSecStat
&
stats
()
const
{
return
theStats
; }
170
175
virtual
void
select
(
double
weight) {
theStats
.
select
(weight); }
176
180
virtual
void
accept
() {
theStats
.
accept
(); }
181
185
void
reweight
(
double
oldWeight,
double
newWeight) {
186
theStats
.
reweight
(oldWeight,newWeight);
187
}
188
194
virtual
void
reject
(
double
weight = 1.0) {
theStats
.
reject
(weight); }
195
199
virtual
void
reset
() {
theStats
.
reset
(); }
201
207
const
DiagramVector
&
diagrams
()
const
{
return
theDiagrams
; }
208
213
bool
mirror
()
const
{
return
isMirror
; }
214
220
const
vector<Lorentz5Momentum> &
meMomenta
()
const
{
return
theMEMomenta
; }
221
225
tcDiagPtr
lastDiagram
()
const
{
return
diagrams
()[
lastDiagramIndex
()]; }
226
232
const
cPDVector
&
mePartonData
()
const
{
return
theMEPartonData
; }
233
237
DiagramIndex
lastDiagramIndex
()
const
{
return
theLastDiagramIndex
; }
238
244
const
DVector
&
meInfo
()
const
{
return
theMEInfo
; }
245
251
void
meInfo
(
const
DVector
& info) {
theMEInfo
= info; }
252
258
const
DVector
&
lastRandomNumbers
()
const
{
return
theLastRandomNumbers
; }
259
264
double
jacobian
()
const
{
return
theLastJacobian
; }
265
271
double
lastME2
()
const
{
return
theLastME2
; }
272
278
CrossSection
lastMECrossSection
()
const
{
return
theLastMECrossSection
; }
279
286
double
lastMEPDFWeight
()
const
{
return
theLastMEPDFWeight
; }
288
289
protected
:
290
295
virtual
void
newSubProcess
(
bool
group =
false
);
296
302
vector<Lorentz5Momentum> &
meMomenta
() {
return
theMEMomenta
; }
303
309
DVector
&
lastRandomNumbers
() {
return
theLastRandomNumbers
; }
310
316
cPDVector
&
mePartonData
() {
return
theMEPartonData
; }
317
321
void
lastDiagramIndex
(
DiagramIndex
i) {
theLastDiagramIndex
= i; }
322
326
void
lastPDFWeight
(
double
w) {
theLastPDFWeight
= w; }
327
331
void
lastCrossSection
(
CrossSection
s) {
theLastCrossSection
= s; }
332
337
void
jacobian
(
double
j) {
theLastJacobian
= j; }
338
344
void
lastME2
(
double
v) {
theLastME2
= v; }
345
351
void
lastMECrossSection
(
CrossSection
v) {
theLastMECrossSection
= v; }
352
359
void
lastMEPDFWeight
(
double
v) {
theLastMEPDFWeight
= v; }
360
361
public
:
362
369
void
persistentOutput
(
PersistentOStream
& os)
const
;
370
376
void
persistentInput
(
PersistentIStream
& is,
int
version);
378
382
static
void
Init
();
383
384
private
:
385
389
tSubHdlPtr
theSubProcessHandler
;
390
394
tMEPtr
theME
;
395
399
XSecStat
theStats
;
400
404
DiagramVector
theDiagrams
;
405
410
bool
isMirror
;
411
416
int
theNDim
;
417
418
protected
:
419
424
pair<int,int>
partonDims
;
425
426
private
:
427
433
vector<Lorentz5Momentum>
theMEMomenta
;
434
440
cPDVector
theMEPartonData
;
441
445
DiagramIndex
theLastDiagramIndex
;
446
452
DVector
theMEInfo
;
453
459
DVector
theLastRandomNumbers
;
460
464
double
theLastPDFWeight
;
465
469
CrossSection
theLastCrossSection
;
470
475
double
theLastJacobian
;
476
482
double
theLastME2
;
483
489
CrossSection
theLastMECrossSection
;
490
497
double
theLastMEPDFWeight
;
498
504
tStdXCombPtr
theHead
;
505
506
private
:
507
511
static
ClassDescription<StandardXComb>
initStandardXComb
;
512
516
StandardXComb
&
operator=
(
const
StandardXComb
&);
517
518
};
519
526
template
<>
527
struct
BaseClassTrait
<
StandardXComb
,1>:
public
ClassTraitsType
{
529
typedef
XComb
NthBase
;
530
};
531
536
template
<>
537
struct
ClassTraits<StandardXComb>:
538
public
ClassTraitsBase<StandardXComb> {
540
static
string
className
() {
return
"ThePEG::StandardXComb"
; }
541
};
542
545
}
546
547
#endif
/* ThePEG_StandardXComb_H */
Generated on Mon Jul 2 2012 16:06:48 for ThePEG by
1.8.1.1