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