herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Models
General
TwoToTwoProcessConstructor.h
1
// -*- C++ -*-
2
//
3
// TwoToTwoProcessConstructor.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_TwoToTwoProcessConstructor_H
10
#define HERWIG_TwoToTwoProcessConstructor_H
11
//
12
// This is the declaration of the TwoToTwoProcessConstructor class.
13
//
14
15
#include "HardProcessConstructor.h"
16
#include "ThePEG/Utilities/Exception.h"
17
#include "TwoToTwoProcessConstructor.fh"
18
19
namespace
Herwig
{
20
using namespace
ThePEG
;
21
30
class
TwoToTwoProcessConstructor
:
public
HardProcessConstructor
{
31
32
public
:
33
35
typedef
set<tPDPtr>
tPDSet
;
36
38
typedef
multimap<HPDiagram, HPDiagram>
HPDMap
;
39
41
enum
direction
{incoming, outgoing};
42
43
public
:
44
48
TwoToTwoProcessConstructor
();
49
50
public
:
51
58
void
persistentOutput
(
PersistentOStream
& os)
const
;
59
65
void
persistentInput
(
PersistentIStream
& is,
int
version);
67
74
static
void
Init
();
75
76
public
:
77
82
void
constructDiagrams
();
83
84
protected
:
85
92
virtual
IBPtr
clone
()
const
;
93
98
virtual
IBPtr
fullclone
()
const
;
100
101
102
protected
:
103
111
virtual
void
doinit
();
113
114
private
:
115
120
TwoToTwoProcessConstructor
&
operator=
(
const
TwoToTwoProcessConstructor
&) =
delete
;
121
122
private
:
123
137
tPDSet
search
(VertexBasePtr vertex,
long
part1,
direction
d1,
138
long
part2,
direction
d2,
direction
d3 = outgoing);
139
153
tPDSet
search
(VertexBasePtr vertex,
long
part1,
direction
d1,
long
part2,
154
direction
d2,
long
part3,
direction
d3,
155
direction
d4 = outgoing);
156
163
void
createSChannels
(
tcPDPair
inpp,
long
fs, tVertexBasePtr vertex);
164
171
void
createTChannels
(
tPDPair
inpp,
long
fs, tVertexBasePtr vertex);
172
183
void
makeDiagrams
(
IDPair
in,
long
out1,
const
tPDSet
& out2,
PDPtr
inter,
184
HPDiagram::Channel
chan,
VBPair
vertices,
BPair
order);
185
193
void
makeFourPointDiagrams
(
long
parta,
long
partb,
long
partc,
194
VertexBasePtr vert);
195
202
void
createMatrixElement
(
const
HPDVector
& process)
const
;
204
205
211
string
MEClassname
(
const
vector<tcPDPtr> & extpart,
212
string
& objname)
const
;
213
214
private
:
215
219
PDVector
incoming_
;
220
227
vector<tPDPair>
incPairs_
;
228
232
PDVector
outgoing_
;
233
237
unsigned
int
Nout_
;
238
242
unsigned
int
nv_
;
243
247
vector<VertexBasePtr>
vertices_
;
248
252
HPDVector
processes_
;
253
258
bool
allDiagrams_
;
259
263
unsigned
int
processOption_
;
264
268
unsigned
int
scaleChoice_
;
269
273
double
scaleFactor_
;
274
278
vector<PDPtr>
excluded_
;
279
283
vector<PDPtr>
excludedExternal_
;
284
288
vector<VertexBasePtr>
excludedVertexVector_
;
289
293
set<VertexBasePtr>
excludedVertexSet_
;
294
};
295
297
class
TwoToTwoProcessConstructorError
:
public
Exception
{
298
299
public
:
300
306
TwoToTwoProcessConstructorError
(
const
string
& str,
Severity
sev)
307
:
Exception
(str,sev) {}
308
309
};
310
311
}
312
313
#endif
/* HERWIG_TwoToTwoProcessConstructor_H */
Herwig::HardProcessConstructor
Here is the documentation of the HardProcessConstructor class.
Definition:
HardProcessConstructor.h:27
Herwig::HardProcessConstructor::HPDVector
vector< HPDiagram > HPDVector
Vector of HPDiagrams.
Definition:
HardProcessConstructor.h:32
Herwig::TwoToTwoProcessConstructorError
Exception class indicating setup problem.
Definition:
TwoToTwoProcessConstructor.h:297
Herwig::TwoToTwoProcessConstructorError::TwoToTwoProcessConstructorError
TwoToTwoProcessConstructorError(const string &str, Severity sev)
Exception for error handling.
Definition:
TwoToTwoProcessConstructor.h:306
Herwig::TwoToTwoProcessConstructor
The TwoToTwoProcessConstructor is designed to construct the diagrams that are possible for a given se...
Definition:
TwoToTwoProcessConstructor.h:30
Herwig::TwoToTwoProcessConstructor::Nout_
unsigned int Nout_
Number of incoming particles.
Definition:
TwoToTwoProcessConstructor.h:237
Herwig::TwoToTwoProcessConstructor::excludedExternal_
vector< PDPtr > excludedExternal_
Option to exclude certain external particles.
Definition:
TwoToTwoProcessConstructor.h:283
Herwig::TwoToTwoProcessConstructor::direction
direction
Enumeration for the direction.
Definition:
TwoToTwoProcessConstructor.h:41
Herwig::TwoToTwoProcessConstructor::excludedVertexVector_
vector< VertexBasePtr > excludedVertexVector_
Excluded Vertices.
Definition:
TwoToTwoProcessConstructor.h:288
Herwig::TwoToTwoProcessConstructor::search
tPDSet search(VertexBasePtr vertex, long part1, direction d1, long part2, direction d2, long part3, direction d3, direction d4=outgoing)
Given a vertex and 3 particle id's find the possible states that can be the 4th external particle.
Herwig::TwoToTwoProcessConstructor::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::TwoToTwoProcessConstructor::outgoing_
PDVector outgoing_
Required final state particles.
Definition:
TwoToTwoProcessConstructor.h:232
Herwig::TwoToTwoProcessConstructor::processes_
HPDVector processes_
Store the configuration of the diagrams.
Definition:
TwoToTwoProcessConstructor.h:252
Herwig::TwoToTwoProcessConstructor::search
tPDSet search(VertexBasePtr vertex, long part1, direction d1, long part2, direction d2, direction d3=outgoing)
Functions to create the diagrams.
Herwig::TwoToTwoProcessConstructor::makeFourPointDiagrams
void makeFourPointDiagrams(long parta, long partb, long partc, VertexBasePtr vert)
Create diagrams from 4 point vertices.
Herwig::TwoToTwoProcessConstructor::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Herwig::TwoToTwoProcessConstructor::operator=
TwoToTwoProcessConstructor & operator=(const TwoToTwoProcessConstructor &)=delete
The assignment operator is private and must never be called.
Herwig::TwoToTwoProcessConstructor::MEClassname
string MEClassname(const vector< tcPDPtr > &extpart, string &objname) const
Contruct the classname and object name for the matrix element.
Herwig::TwoToTwoProcessConstructor::scaleChoice_
unsigned int scaleChoice_
Option for the scales.
Definition:
TwoToTwoProcessConstructor.h:268
Herwig::TwoToTwoProcessConstructor::createTChannels
void createTChannels(tPDPair inpp, long fs, tVertexBasePtr vertex)
Create the scattering diagrams.
Herwig::TwoToTwoProcessConstructor::scaleFactor_
double scaleFactor_
Prefactor for the scale calculation.
Definition:
TwoToTwoProcessConstructor.h:273
Herwig::TwoToTwoProcessConstructor::nv_
unsigned int nv_
Number of vertices in the model.
Definition:
TwoToTwoProcessConstructor.h:242
Herwig::TwoToTwoProcessConstructor::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::TwoToTwoProcessConstructor::constructDiagrams
void constructDiagrams()
Main function called to start constructing the diagrams for the 2->2 process.
Herwig::TwoToTwoProcessConstructor::excludedVertexSet_
set< VertexBasePtr > excludedVertexSet_
Excluded Vertices.
Definition:
TwoToTwoProcessConstructor.h:293
Herwig::TwoToTwoProcessConstructor::tPDSet
set< tPDPtr > tPDSet
Set of ParticleData pointers.
Definition:
TwoToTwoProcessConstructor.h:35
Herwig::TwoToTwoProcessConstructor::HPDMap
multimap< HPDiagram, HPDiagram > HPDMap
Map of HPDiagrams.
Definition:
TwoToTwoProcessConstructor.h:38
Herwig::TwoToTwoProcessConstructor::allDiagrams_
bool allDiagrams_
Whether to include all diagrams or just those with strong coupling in them.
Definition:
TwoToTwoProcessConstructor.h:258
Herwig::TwoToTwoProcessConstructor::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Herwig::TwoToTwoProcessConstructor::doinit
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Herwig::TwoToTwoProcessConstructor::createSChannels
void createSChannels(tcPDPair inpp, long fs, tVertexBasePtr vertex)
Create the resonance diagrams.
Herwig::TwoToTwoProcessConstructor::TwoToTwoProcessConstructor
TwoToTwoProcessConstructor()
The default constructor.
Herwig::TwoToTwoProcessConstructor::processOption_
unsigned int processOption_
Which types of processes to generate.
Definition:
TwoToTwoProcessConstructor.h:263
Herwig::TwoToTwoProcessConstructor::incoming_
PDVector incoming_
Required initial state particles.
Definition:
TwoToTwoProcessConstructor.h:219
Herwig::TwoToTwoProcessConstructor::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::TwoToTwoProcessConstructor::vertices_
vector< VertexBasePtr > vertices_
The vertices.
Definition:
TwoToTwoProcessConstructor.h:247
Herwig::TwoToTwoProcessConstructor::incPairs_
vector< tPDPair > incPairs_
Pairs of particles for initial state, ordered by spin or id.
Definition:
TwoToTwoProcessConstructor.h:227
Herwig::TwoToTwoProcessConstructor::excluded_
vector< PDPtr > excluded_
Option to exclude certain intermediates.
Definition:
TwoToTwoProcessConstructor.h:278
Herwig::TwoToTwoProcessConstructor::createMatrixElement
void createMatrixElement(const HPDVector &process) const
Create the matrix element that will calculate me2() for this process.
Herwig::TwoToTwoProcessConstructor::makeDiagrams
void makeDiagrams(IDPair in, long out1, const tPDSet &out2, PDPtr inter, HPDiagram::Channel chan, VBPair vertices, BPair order)
Populate the diagram structure.
ThePEG::Exception
ThePEG::Exception::Severity
Severity
ThePEG::PersistentIStream
ThePEG::PersistentOStream
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
Herwig::BPair
pair< bool, bool > BPair
Pair of bool's.
Definition:
HPDiagram.h:27
Herwig::IDPair
pair< long, long > IDPair
Pair of particle ids.
Definition:
HPDiagram.h:24
Herwig::VBPair
pair< VBPtr, VBPtr > VBPair
Pair of VertexBasePtrs.
Definition:
HPDiagram.h:33
ThePEG
ThePEG::PDVector
vector< PDPtr > PDVector
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::tPDPair
pair< tPDPtr, tPDPtr > tPDPair
ThePEG::tcPDPair
pair< tcPDPtr, tcPDPtr > tcPDPair
ThePEG::PDPtr
ThePEG::Ptr< ParticleData >::pointer PDPtr
Herwig::HPDiagram::Channel
Channel
Enumeration for channel type.
Definition:
HPDiagram.h:45
Generated on Thu Jun 20 2024 17:50:53 for Herwig by
1.9.6