herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
ResonantProcessConstructor.h
1// -*- C++ -*-
2//
3// ResonantProcessConstructor.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_ResonantProcessConstructor_H
10#define HERWIG_ResonantProcessConstructor_H
11//
12// This is the declaration of the ResonantProcessConstructor class.
13//
14
15#include "HardProcessConstructor.h"
16#include "ThePEG/Utilities/Exception.h"
17#include "ResonantProcessConstructor.fh"
18
19namespace Herwig {
20using namespace ThePEG;
21
31
32public:
33
35 typedef set<tPDPtr> tPDSet;
36
38 typedef vector<vector<double> > CFMatrix;
39
41 enum direction {incoming, outgoing};
42
43public:
44
51 outgoing_(0), diagrams_(0)
52 {}
53
54public:
55
63
69 void persistentInput(PersistentIStream & is, int version);
71
78 static void Init();
79
84
85protected:
86
93 virtual IBPtr clone() const;
94
99 virtual IBPtr fullclone() const;
101
102protected:
103
111 virtual void doinit();
113
114private:
115
119 void constructVertex2(IDPair in, VertexBasePtr vertex,
120 PDPtr partc);
121
125 void makeResonantDiagram(IDPair in, PDPtr offshell, long outa,
126 long outb, VBPair vertices);
127
139 tPDSet search(VertexBasePtr vertex, long part1, direction d1,
140 long part2, direction d2, direction d3 = outgoing);
141
145 IDPair find(long part, const PDVector & out) const;
146
150 void createMatrixElement(const HPDiagram & diag) const;
151
155 string MEClassname(const tcPDVector & extpart, tcPDPtr inter,
156 string & objname) const;
157
158private:
159
165
166private:
167
171 unsigned int processOption_;
172
176 unsigned int scaleChoice_;
177
182
186 vector<PDPtr> incoming_;
187
191 vector<PDPtr> intermediates_;
192
196 vector<PDPtr> outgoing_;
197
201 vector<HPDiagram> diagrams_;
202
203};
204
206 class RPConstructorError : public Exception {};
207
208}
209
210
211#endif /* HERWIG_ResonantProcessConstructor_H */
Here is the documentation of the HardProcessConstructor class.
Exception class indicating setup problem.
This class is designed to construct the diagrams for resonant processes using a provdided set of part...
set< tPDPtr > tPDSet
Set of ParticleData pointers.
void makeResonantDiagram(IDPair in, PDPtr offshell, long outa, long outb, VBPair vertices)
Function to create the appropriate diagrams.
unsigned int processOption_
Which types of processes to generate.
vector< PDPtr > incoming_
Storage for the required intermediate particles.
vector< vector< double > > CFMatrix
Nested vector of doubles.
vector< PDPtr > intermediates_
Storage for the required intermediate particles.
void createMatrixElement(const HPDiagram &diag) const
Create a matrix element from the given resonant process diagram.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
IDPair find(long part, const PDVector &out) const
Return the pair of outgoing particles from the list.
ResonantProcessConstructor & operator=(const ResonantProcessConstructor &)=delete
The assignment operator is private and must never be called.
void constructDiagrams()
The main function to create the resonant diagrams.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
static void Init()
The standard Init function used to initialize the interfaces.
tPDSet search(VertexBasePtr vertex, long part1, direction d1, long part2, direction d2, direction d3=outgoing)
Given a vertex and 2 particle id's find the possible states that can be the 3rd external particle.
vector< HPDiagram > diagrams_
Storage for the diagrams.
direction
Enumeration for the direction.
ResonantProcessConstructor()
The default constructor.
vector< PDPtr > outgoing_
Storage for the required intermediate particles.
virtual IBPtr clone() const
Make a simple clone of this object.
string MEClassname(const tcPDVector &extpart, tcPDPtr inter, string &objname) const
Create the correct classname and objectname for a matrix element.
void constructVertex2(IDPair in, VertexBasePtr vertex, PDPtr partc)
Utility function to help second vertex.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
double scaleFactor_
Prefactor for the scale calculation.
-*- C++ -*-
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
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
ThePEG::Ptr< ParticleData >::pointer PDPtr
vector< tcPDPtr > tcPDVector
The HPDiagram struct contains information about a 2->2 hard-process that has been automatically gener...
Definition: HPDiagram.h:42