herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEfv2vf.h
1 // -*- C++ -*-
2 //
3 // MEfv2vf.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_MEfv2vf_H
10 #define HERWIG_MEfv2vf_H
11 //
12 // This is the declaration of the MEfv2vf class.
13 //
14 
15 #include "GeneralHardME.h"
16 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
17 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
18 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
19 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
20 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
21 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
22 #include "ThePEG/Helicity/Vertex/AbstractFFVVVertex.h"
23 
24 namespace Herwig {
25 using namespace ThePEG;
26 
35 class MEfv2vf: public GeneralHardME {
36 
37 public:
38 
40  typedef vector<Helicity::SpinorWaveFunction> SpinorVector;
41 
43  typedef vector<Helicity::SpinorBarWaveFunction> SpinorBarVector;
44 
46  typedef vector<Helicity::VectorWaveFunction> VBVector;
47 
48 public:
49 
59  virtual double me2() const;
61 
66  virtual void constructVertex(tSubProPtr sub);
67 
68 private:
69 
84  fv2vfHeME(const SpinorVector & spIn, const VBVector & vecIn,
85  const VBVector & vecOut, bool mc,
86  const SpinorBarVector & spbOut,
87  double & mesq, bool first) const;
88 
101  fbv2vfbHeME(const SpinorBarVector & spbIn, const VBVector & vecIn,
102  const VBVector & vecOut, bool mc,
103  const SpinorVector & spOut,
104  double & mesq, bool first) const;
106 
107 protected:
108 
114  virtual void debug(double me2) const;
115 
116 public:
117 
124  void persistentOutput(PersistentOStream & os) const;
125 
131  void persistentInput(PersistentIStream & is, int version);
133 
140  static void Init();
141 
142 
143 protected:
144 
152  virtual void doinit();
154 
155 protected:
156 
163  virtual IBPtr clone() const {return new_ptr(*this);}
164 
169  virtual IBPtr fullclone() const {return new_ptr(*this);}
171 
172 private:
173 
178  MEfv2vf & operator=(const MEfv2vf &) = delete;
179 
180 private:
181 
187  vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > fermion_;
188 
192  vector<pair<AbstractFFVVertexPtr, AbstractVVVVertexPtr> > vector_;
193 
197  vector<AbstractFFVVVertexPtr> four_;
199 
200 };
201 
202 }
203 
204 #endif /* HERWIG_MEfv2vf_H */
vector< Helicity::SpinorBarWaveFunction > SpinorBarVector
A vector of SpinorBarWaveFunctions.
Definition: MEfv2vf.h:43
This defines the GeneralHardME class that is designed to serve as a base class for matrix elements of...
Definition: GeneralHardME.h:40
This class implements the matrix element for a fermion and a vector boson to a fermion and a vector b...
Definition: MEfv2vf.h:35
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEfv2vf.h:163
vector< AbstractFFVVVertexPtr > four_
Four point vertices.
Definition: MEfv2vf.h:197
The storage of the helicity amplitude expression for the matrix element of a hard process...
vector< pair< AbstractFFVVertexPtr, AbstractVVVVertexPtr > > vector_
A pair of FFVVertex, VVVertex pointers.
Definition: MEfv2vf.h:192
vector< pair< AbstractFFVVertexPtr, AbstractFFVVertexPtr > > fermion_
A pair off FFVVertex pointers.
Definition: MEfv2vf.h:187
vector< Helicity::SpinorWaveFunction > SpinorVector
A vector of SpinorWaveFunctions.
Definition: MEfv2vf.h:40
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEfv2vf.h:169
vector< Helicity::VectorWaveFunction > VBVector
A vector of VectorWaveFunctions.
Definition: MEfv2vf.h:46
-*- C++ -*-