herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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 
31 
32 public:
33 
35  typedef set<tPDPtr> tPDSet;
36 
38  typedef multimap<HPDiagram, HPDiagram> HPDMap;
39 
42 
43 public:
44 
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 
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 
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 
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 */
pair< tcPDPtr, tcPDPtr > tcPDPair
PDVector outgoing_
Required final state particles.
PDVector incoming_
Required initial state particles.
HPDVector processes_
Store the configuration of the diagrams.
Exception class indicating setup problem.
vector< PDPtr > excluded_
Option to exclude certain intermediates.
multimap< HPDiagram, HPDiagram > HPDMap
Map of HPDiagrams.
double scaleFactor_
Prefactor for the scale calculation.
The TwoToTwoProcessConstructor is designed to construct the diagrams that are possible for a given se...
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
bool allDiagrams_
Whether to include all diagrams or just those with strong coupling in them.
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 > excludedExternal_
Option to exclude certain external particles.
vector< HPDiagram > HPDVector
Vector of HPDiagrams.
unsigned int scaleChoice_
Option for the scales.
unsigned int Nout_
Number of incoming particles.
unsigned int nv_
Number of vertices in the model.
ThePEG::Ptr< ParticleData >::pointer PDPtr
vector< tPDPair > incPairs_
Pairs of particles for initial state, ordered by spin or id.
pair< tPDPtr, tPDPtr > tPDPair
unsigned int processOption_
Which types of processes to generate.
pair< bool, bool > BPair
Pair of bool&#39;s.
Definition: HPDiagram.h:27
-*- C++ -*-
vector< PDPtr > PDVector
vector< VertexBasePtr > excludedVertexVector_
Excluded Vertices.
Channel
Enumeration for channel type.
Definition: HPDiagram.h:45
direction
Enumeration for the direction.
vector< VertexBasePtr > vertices_
The vertices.
TwoToTwoProcessConstructorError(const string &str, Severity sev)
Exception for error handling.
set< VertexBasePtr > excludedVertexSet_
Excluded Vertices.
set< tPDPtr > tPDSet
Set of ParticleData pointers.
Here is the documentation of the HardProcessConstructor class.