herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Models
General
HardProcessConstructor.h
1
// -*- C++ -*-
2
#ifndef HERWIG_HardProcessConstructor_H
3
#define HERWIG_HardProcessConstructor_H
4
//
5
// This is the declaration of the HardProcessConstructor class.
6
//
7
8
#include "ThePEG/Interface/Interfaced.h"
9
#include "HPDiagram.h"
10
#include "Herwig/Models/StandardModel/StandardModel.h"
11
#include "ThePEG/Handlers/SubProcessHandler.h"
12
#include "ThePEG/Repository/EventGenerator.h"
13
#include "ThePEG/Handlers/StandardEventHandler.h"
14
#include "Herwig/MatrixElement/General/GeneralHardME.h"
15
#include "HardProcessConstructor.fh"
16
17
namespace
Herwig
{
18
19
using namespace
ThePEG
;
20
27
class
HardProcessConstructor
:
public
Interfaced
{
28
29
public
:
30
32
typedef
vector<HPDiagram>
HPDVector
;
33
34
public
:
35
41
HardProcessConstructor
() :
debug_
(false) {}
43
47
virtual
void
constructDiagrams
() = 0;
48
49
public
:
50
57
void
persistentOutput
(
PersistentOStream
& os)
const
;
58
64
void
persistentInput
(
PersistentIStream
& is,
int
version);
66
73
static
void
Init
();
74
75
protected
:
76
84
void
fixFSOrder
(
HPDiagram
& diag);
85
90
void
assignToCF
(
HPDiagram
& diag);
91
96
void
sChannelCF
(
HPDiagram
& diag);
97
102
void
tChannelCF
(
HPDiagram
& diag);
103
108
void
uChannelCF
(
HPDiagram
& diag);
109
114
void
fourPointCF
(
HPDiagram
& diag);
116
120
tHwSMPtr
model
()
const
{
return
model_
;}
121
125
tSubHdlPtr
subProcess
()
const
{
return
subProcess_
;}
126
132
bool
debug
()
const
{
return
debug_
;}
133
138
GeneralHardME::ColourStructure
colourFlow
(
const
tcPDVector
& extpart)
const
;
139
145
bool
duplicate
(
const
HPDiagram
& diagram,
146
const
HPDVector
& group)
const
;
147
151
bool
checkOrder
(
const
HPDiagram
& diag)
const
;
152
153
protected
:
154
162
virtual
void
doinit
();
164
165
private
:
166
171
HardProcessConstructor
&
operator=
(
const
HardProcessConstructor
&) =
delete
;
172
173
private
:
174
178
tHwSMPtr
model_
;
179
183
tSubHdlPtr
subProcess_
;
184
190
bool
debug_
;
191
192
};
193
194
namespace
HPC_helper {
195
// Helper functor for find_if in duplicate function.
196
class
SameIncomingAs
{
197
public
:
198
SameIncomingAs
(
tPDPair
in) : a(in.first->id()), b(in.second->id()) {}
199
bool
operator()(
tPDPair
ppair)
const
{
200
long
id1(ppair.first->id()), id2(ppair.second->id());
201
return
( id1 == a && id2 == b ) || ( id1 == b && id2 == a );
202
}
203
private
:
204
long
a, b;
205
};
206
207
inline
bool
duplicateIncoming(
tPDPair
ppair,
const
vector<tPDPair> &incPairs) {
208
vector<tPDPair>::const_iterator it =
209
find_if
( incPairs.begin(), incPairs.end(),
SameIncomingAs
(ppair) );
210
return
it != incPairs.end();
211
}
212
}
213
214
}
215
216
#endif
/* HERWIG_HardProcessConstructor_H */
Herwig::GeneralHardME::ColourStructure
ColourStructure
Enum for the possible colour structures.
Definition:
GeneralHardME.h:52
Herwig::HPC_helper::SameIncomingAs
Definition:
HardProcessConstructor.h:196
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::HardProcessConstructor::assignToCF
void assignToCF(HPDiagram &diag)
Assign a diagram to the appropriate colour flow(s).
Herwig::HardProcessConstructor::colourFlow
GeneralHardME::ColourStructure colourFlow(const tcPDVector &extpart) const
Get the correct colour factor matrix.
Herwig::HardProcessConstructor::HardProcessConstructor
HardProcessConstructor()
The default constructor.
Definition:
HardProcessConstructor.h:41
Herwig::HardProcessConstructor::constructDiagrams
virtual void constructDiagrams()=0
The main function to create diagrams etc for the processes.
Herwig::HardProcessConstructor::sChannelCF
void sChannelCF(HPDiagram &diag)
Assign a $s$-channel diagram to the appropriate colour flow(s).
Herwig::HardProcessConstructor::model
tHwSMPtr model() const
Pointer to the model being used.
Definition:
HardProcessConstructor.h:120
Herwig::HardProcessConstructor::subProcess_
tSubHdlPtr subProcess_
Pointer to the sub process handler.
Definition:
HardProcessConstructor.h:183
Herwig::HardProcessConstructor::debug_
bool debug_
Whether to print the debug information with the matrix element.
Definition:
HardProcessConstructor.h:190
Herwig::HardProcessConstructor::operator=
HardProcessConstructor & operator=(const HardProcessConstructor &)=delete
The assignment operator is private and must never be called.
Herwig::HardProcessConstructor::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::HardProcessConstructor::fourPointCF
void fourPointCF(HPDiagram &diag)
Assign a $u$-channel diagram to the appropriate colour flow(s).
Herwig::HardProcessConstructor::fixFSOrder
void fixFSOrder(HPDiagram &diag)
Functions to set up colour flows and matrix elements.
Herwig::HardProcessConstructor::checkOrder
bool checkOrder(const HPDiagram &diag) const
check the order of a diagram
Herwig::HardProcessConstructor::subProcess
tSubHdlPtr subProcess() const
Pointer to the sub process handler.
Definition:
HardProcessConstructor.h:125
Herwig::HardProcessConstructor::duplicate
bool duplicate(const HPDiagram &diagram, const HPDVector &group) const
Search for a diagram that has already been created.
Herwig::HardProcessConstructor::tChannelCF
void tChannelCF(HPDiagram &diag)
Assign a $t$-channel diagram to the appropriate colour flow(s).
Herwig::HardProcessConstructor::debug
bool debug() const
Whether to print the debug information with the matrix element.
Definition:
HardProcessConstructor.h:132
Herwig::HardProcessConstructor::model_
tHwSMPtr model_
Pointer to the model being used.
Definition:
HardProcessConstructor.h:178
Herwig::HardProcessConstructor::uChannelCF
void uChannelCF(HPDiagram &diag)
Assign a $u$-channel diagram to the appropriate colour flow(s).
Herwig::HardProcessConstructor::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::HardProcessConstructor::doinit
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Herwig::HardProcessConstructor::Init
static void Init()
The standard Init function used to initialize the interfaces.
ThePEG::Interfaced
ThePEG::PersistentIStream
ThePEG::PersistentOStream
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG
ThePEG::tPDPair
pair< tPDPtr, tPDPtr > tPDPair
ThePEG::find_if
Iterator find_if(IteratorRange< Iterator > r, Pred p)
ThePEG::tcPDVector
vector< tcPDPtr > tcPDVector
Herwig::HPDiagram
The HPDiagram struct contains information about a 2->2 hard-process that has been automatically gener...
Definition:
HPDiagram.h:42
Generated on Thu Jun 20 2024 17:50:53 for Herwig by
1.9.6