herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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 
19 namespace Herwig {
20 using namespace ThePEG;
21 
31 
32 public:
33 
35  typedef set<tPDPtr> tPDSet;
36 
38  typedef vector<vector<double> > CFMatrix;
39 
42 
43 public:
44 
49  processOption_(0), scaleChoice_(1), scaleFactor_(1.),
50  incoming_(0), intermediates_(0),
51  outgoing_(0), diagrams_(0)
52  {}
53 
54 public:
55 
62  void persistentOutput(PersistentOStream & os) const;
63 
69  void persistentInput(PersistentIStream & is, int version);
71 
78  static void Init();
79 
83  void constructDiagrams() ;
84 
85 protected:
86 
93  virtual IBPtr clone() const;
94 
99  virtual IBPtr fullclone() const;
101 
102 protected:
103 
111  virtual void doinit();
113 
114 private:
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 
158 private:
159 
164  ResonantProcessConstructor & operator=(const ResonantProcessConstructor &) = delete;
165 
166 private:
167 
171  unsigned int processOption_;
172 
176  unsigned int scaleChoice_;
177 
181  double scaleFactor_;
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 */
double scaleFactor_
Prefactor for the scale calculation.
ResonantProcessConstructor()
The default constructor.
vector< PDPtr > outgoing_
Storage for the required intermediate particles.
vector< tcPDPtr > tcPDVector
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
Exception class indicating setup problem.
unsigned int processOption_
Which types of processes to generate.
pair< long, long > IDPair
Pair of particle ids.
Definition: HPDiagram.h:24
direction
Enumeration for the direction.
Iterator find(IteratorRange< Iterator > r, const T &t)
pair< VBPtr, VBPtr > VBPair
Pair of VertexBasePtrs.
Definition: HPDiagram.h:33
vector< PDPtr > incoming_
Storage for the required intermediate particles.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
vector< PDPtr > intermediates_
Storage for the required intermediate particles.
ThePEG::Ptr< ParticleData >::pointer PDPtr
This class is designed to construct the diagrams for resonant processes using a provdided set of part...
set< tPDPtr > tPDSet
Set of ParticleData pointers.
vector< vector< double > > CFMatrix
Nested vector of doubles.
vector< HPDiagram > diagrams_
Storage for the diagrams.
-*- C++ -*-
vector< PDPtr > PDVector
The HPDiagram struct contains information about a 2->2 hard-process that has been automatically gener...
Definition: HPDiagram.h:42
Here is the documentation of the HardProcessConstructor class.