herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEPP2VV.h
1 // -*- C++ -*-
2 #ifndef HERWIG_MEPP2VV_H
3 #define HERWIG_MEPP2VV_H
4 //
5 // This is the declaration of the MEPP2VV class.
6 //
7 
8 #include "Herwig/MatrixElement/HwMEBase.h"
9 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
10 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
11 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
12 
13 namespace Herwig {
14 
15 using namespace ThePEG;
16 
24 class MEPP2VV: public HwMEBase {
25 
26 public:
27 
31  MEPP2VV();
32 
33 public:
34 
41  virtual unsigned int orderInAlphaS() const;
42 
47  virtual unsigned int orderInAlphaEW() const;
48 
56  virtual double me2() const;
57 
61  virtual Energy2 scale() const;
62 
66  virtual int process() const { return process_; }
67 
71  virtual void getDiagrams() const;
72 
81  virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const;
82 
91  colourGeometries(tcDiagPtr diag) const;
92 
97  virtual double getCosTheta(double cthmin, double cthmax, const double r);
98 
102  virtual void constructVertex(tSubProPtr);
104 
105 public:
106 
113  void persistentOutput(PersistentOStream & os) const;
114 
120  void persistentInput(PersistentIStream & is, int version);
122 
129  static void Init();
130 
131 protected:
132 
141  double WWME(vector<SpinorWaveFunction> & f1,
142  vector<SpinorBarWaveFunction> & a1,
143  vector<VectorWaveFunction> & v1,
144  vector<VectorWaveFunction> & v2,
145  bool me) const;
146 
155  double WZME(vector<SpinorWaveFunction> & f1,
156  vector<SpinorBarWaveFunction> & a1,
157  vector<VectorWaveFunction> & v1,
158  vector<VectorWaveFunction> & v2,
159  bool me) const;
160 
169  double ZZME(vector<SpinorWaveFunction> & f1,
170  vector<SpinorBarWaveFunction> & a1,
171  vector<VectorWaveFunction> & v1,
172  vector<VectorWaveFunction> & v2,
173  bool me) const;
174 
175 protected:
176 
183  virtual IBPtr clone() const;
184 
189  virtual IBPtr fullclone() const;
191 
192 protected:
193 
201  virtual void doinit();
203 
204 private:
205 
210  MEPP2VV & operator=(const MEPP2VV &) = delete;
211 
212 private:
213 
221  AbstractFFVVertexPtr FFPvertex_;
222 
226  AbstractFFVVertexPtr FFWvertex_;
227 
231  AbstractFFVVertexPtr FFZvertex_;
232 
236  AbstractVVVVertexPtr WWWvertex_;
238 
242  unsigned int process_;
243 
248 
252  unsigned int massOption_;
253 
258 };
259 
260 }
261 
262 #endif /* HERWIG_MEPP2VV_H */
AbstractVVVVertexPtr WWWvertex_
WWW Vertex.
Definition: MEPP2VV.h:236
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
AbstractFFVVertexPtr FFPvertex_
Vertices.
Definition: MEPP2VV.h:221
unsigned int massOption_
Treatment of the the boson masses.
Definition: MEPP2VV.h:252
AbstractFFVVertexPtr FFZvertex_
FFZVertex.
Definition: MEPP2VV.h:231
The storage of the helicity amplitude expression for the matrix element of a hard process...
ProductionMatrixElement me_
The matrix element.
Definition: MEPP2VV.h:257
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
unsigned int process_
Processes.
Definition: MEPP2VV.h:242
vector< DiagPtr > DiagramVector
-*- C++ -*-
int maxflavour_
Allowed flavours of the incoming quarks.
Definition: MEPP2VV.h:247
The HwMEBase class serves a number of purposes.
Definition: HwMEBase.h:35
The MEPP2VV class implements the production of , and in hadron-hadron collisions.
Definition: MEPP2VV.h:24
virtual int process() const
Return the process being run (WW/ZZ/WZ).
Definition: MEPP2VV.h:66
AbstractFFVVertexPtr FFWvertex_
FFWVertex.
Definition: MEPP2VV.h:226