herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.2.1
UnderlyingEvent
ProcessHandler.h
1
// -*- C++ -*-
2
//
3
// ProcessHandler.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_ProcessHandler_H
10
#define HERWIG_ProcessHandler_H
11
//
12
// This is the declaration of the ProcessHandler class.
13
//
14
#include "ThePEG/Interface/Interfaced.h"
15
#include "ThePEG/Handlers/StandardEventHandler.h"
16
#include "ThePEG/Handlers/StandardXComb.h"
17
#include "ThePEG/Handlers/SubProcessHandler.h"
18
#include "ThePEG/Handlers/LuminosityFunction.h"
19
#include "ThePEG/Repository/EventGenerator.h"
20
#include "ThePEG/Handlers/SamplerBase.h"
21
#include "ThePEG/Cuts/Cuts.h"
22
#include "ThePEG/MatrixElement/MEBase.h"
23
#include "ThePEG/Handlers/CascadeHandler.h"
24
25
#include <cassert>
26
27
#include "ProcessHandler.fh"
28
#include "stat.h"
29
30
namespace
Herwig
{
31
using namespace
ThePEG
;
32
48
class
ProcessHandler
:
public
Interfaced
,
public
LastXCombInfo
<> {
49
50
public
:
51
53
typedef
Selector<StdXCombPtr>
XSelector
;
54
56
typedef
vector<StdXCombPtr>
XVector
;
57
59
typedef
vector<CrossSection>
XSVector
;
60
63
typedef
map<tMEPtr,XVector>
MEXMap
;
64
65
public
:
66
72
ProcessHandler
();
73
77
ProcessHandler
(
const
ProcessHandler
&);
78
82
virtual
~
ProcessHandler
();
84
85
public
:
86
89
94
inline
tStdXCombPtr
generate
();
96
97
104
void
persistentOutput(
PersistentOStream
& os)
const
;
105
111
void
persistentInput(
PersistentIStream
& is,
int
version);
113
120
static
void
Init();
121
126
void
initialize(tSubHdlPtr sub, tCutsPtr cuts,
tEHPtr
eh);
127
131
CrossSection integratedXSec()
const
;
132
137
void
statistics(ostream &,
Stat
&)
const
;
138
146
virtual
CrossSection dSigDR(
const
vector<double> & r);
147
148
151
157
inline
int
statLevel()
const
;
158
162
inline
const
cPDPair
&
incoming
()
const
;
163
167
inline
const
LuminosityFunction
& lumiFn()
const
;
168
173
inline
int
lumiDim()
const
;
174
179
int
nBins()
const
;
180
185
inline
int
maxDim(
int
bin)
const
;
186
191
inline
int
nDim(
int
bin)
const
;
192
197
inline
long
maxLoop()
const
;
198
199
200
protected
:
201
215
virtual
CrossSection dSigDR(
const
pair<double,double> ll, Energy2 maxS,
216
int
ibin,
int
nr,
const
double
* r);
217
218
224
tStdXCombPtr select(
int
bin,
double
weight);
225
238
void
addME(Energy maxEnergy, tSubHdlPtr sub,
tPExtrPtr
extractor, tCutsPtr cuts,
239
tCascHdlPtr
ckkw, tMEPtr me,
const
PBPair & pBins);
240
244
inline
const
XVector & xCombs()
const
;
245
249
inline
XVector & xCombs();
250
254
inline
const
XSVector & xSecs()
const
;
255
259
inline
XSVector & xSecs();
260
268
inline
int
binStrategy()
const
;
269
270
277
inline
virtual
IBPtr
clone()
const
;
278
283
inline
virtual
IBPtr
fullclone()
const
;
285
286
private
:
287
296
inline
tEHPtr
eventHandler()
const
;
297
301
inline
tSamplerPtr sampler();
302
306
inline
tcSamplerPtr sampler()
const
;
307
313
inline
tCutsPtr cuts()
const
;
314
318
inline
tSubHdlPtr subProcess();
319
320
321
protected
:
322
329
virtual
void
doinitrun();
330
332
333
private
:
334
339
ProcessHandler
& operator=(
const
ProcessHandler
&) =
delete
;
340
345
SamplerPtr
theSampler
;
346
353
tEHPtr
theHandler
;
354
358
tCutsPtr
theCuts
;
//used a transient pointer,
359
//because regular pointer is already in MPIHandler
360
361
365
tSubHdlPtr
theSubProcess
;
//used a transient pointer,
366
//because regular pointer is already in MPIHandler
367
371
XVector
theXCombs
;
372
377
XSVector
theXSecs
;
378
386
int
theBinStrategy
;
387
392
MEXMap
theMEXMap
;
393
394
399
vector<int>
theMaxDims
;
400
401
402
403
protected
:
404
412
class
InitError:
public
Exception
{};
413
416
};
417
418
}
419
420
#include "ProcessHandler.icc"
421
422
#endif
/* HERWIG_ProcessHandler_H */
Herwig::ProcessHandler::theSubProcess
tSubHdlPtr theSubProcess
The SubProcessHandler that is connected to this ProcessHandler.
Definition:
ProcessHandler.h:365
ThePEG::PersistentIStream
Herwig::ProcessHandler::theXSecs
XSVector theXSecs
The (incrementally summed) cross sections associated with the StandardXComb objects for the last sele...
Definition:
ProcessHandler.h:377
ThePEG::LuminosityFunction
ThePEG::PersistentOStream
ThePEG::LastXCombInfo
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
Herwig::Stat
Documentation for the statistics struct.
Definition:
stat.h:18
ThePEG::Helicity::incoming
incoming
ThePEG
Herwig::ProcessHandler::XSVector
vector< CrossSection > XSVector
A vector of cross sections.
Definition:
ProcessHandler.h:59
Herwig::ProcessHandler::MEXMap
map< tMEPtr, XVector > MEXMap
Map of pointers to StandardXComb objects indexed by pointers to the corresponding MEBase object...
Definition:
ProcessHandler.h:63
Herwig::ProcessHandler::theXCombs
XVector theXCombs
The StandardXComb objects.
Definition:
ProcessHandler.h:371
ThePEG::tEHPtr
ThePEG::Ptr< EventHandler >::transient_pointer tEHPtr
ThePEG::tCascHdlPtr
ThePEG::Ptr< CascadeHandler >::transient_pointer tCascHdlPtr
Herwig::ProcessHandler::theMaxDims
vector< int > theMaxDims
The number of degrees of freedom needed to generate the phase space for the different bins...
Definition:
ProcessHandler.h:399
Herwig::ProcessHandler::theBinStrategy
int theBinStrategy
The strategy to be used when sampling different StandardXComb objects.
Definition:
ProcessHandler.h:386
Herwig::ProcessHandler::XSelector
Selector< StdXCombPtr > XSelector
A weighted list of pointers to StandardXComb objects.
Definition:
ProcessHandler.h:53
ThePEG::Interfaced
Herwig::RandomHelpers::generate
pair< double, double > generate(const Generator< Density > &gen, double r)
Generate a random variable and return its weight.
Definition:
RandomHelpers.h:182
ThePEG::Exception
Herwig::ProcessHandler::theCuts
tCutsPtr theCuts
The kinematical cuts used for this collision handler.
Definition:
ProcessHandler.h:358
ThePEG::Selector
Herwig::ProcessHandler::theMEXMap
MEXMap theMEXMap
The map used to store all XBins with the same matrix element for option 1 in theBinStrategy.
Definition:
ProcessHandler.h:392
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
Herwig::ProcessHandler
This class is for handling the sampling of semi hard partonic interactions.
Definition:
ProcessHandler.h:48
ThePEG::cPDPair
pair< cPDPtr, cPDPtr > cPDPair
Herwig::ProcessHandler::XVector
vector< StdXCombPtr > XVector
A vector of pointers to StandardXComb objects.
Definition:
ProcessHandler.h:56
Herwig::ProcessHandler::theHandler
tEHPtr theHandler
A pointer to the EventHandler that calls us.
Definition:
ProcessHandler.h:353
Herwig::ProcessHandler::theSampler
SamplerPtr theSampler
The phase space sampler responsible for generating phase space points according to the cross section ...
Definition:
ProcessHandler.h:345
ThePEG::tPExtrPtr
ThePEG::Ptr< PartonExtractor >::transient_pointer tPExtrPtr
Generated on Sat Apr 11 2020 14:50:31 for Herwig by
1.8.13