herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEfv2rv.h
1 // -*- C++ -*-
2 #ifndef Herwig_MEfv2rv_H
3 #define Herwig_MEfv2rv_H
4 //
5 // This is the declaration of the MEfv2rv class.
6 //
7 
8 #include "GeneralHardME.h"
9 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
10 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
11 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
12 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
13 #include "ThePEG/Helicity/WaveFunction/RSSpinorWaveFunction.h"
14 #include "ThePEG/Helicity/WaveFunction/RSSpinorBarWaveFunction.h"
15 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
16 #include "ThePEG/Helicity/Vertex/AbstractRFVVertex.h"
17 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
18 #include "ThePEG/Helicity/Vertex/AbstractRFVVVertex.h"
19 
20 namespace Herwig {
21 
22 using namespace ThePEG;
23 
32 class MEfv2rv: public GeneralHardME {
33 
34 public:
35 
37  typedef vector<Helicity::SpinorWaveFunction> SpinorVector;
38 
40  typedef vector<Helicity::SpinorBarWaveFunction> SpinorBarVector;
41 
43  typedef vector<Helicity::RSSpinorWaveFunction> RSSpinorVector;
44 
46  typedef vector<Helicity::RSSpinorBarWaveFunction> RSSpinorBarVector;
47 
49  typedef vector<Helicity::VectorWaveFunction> VBVector;
50 
51 public:
52 
62  virtual double me2() const;
64 
69  virtual void constructVertex(tSubProPtr sub);
70 
71 private:
72 
87  fv2rvHeME(const SpinorVector & spIn, const VBVector & vecIn,
88  const RSSpinorBarVector & spbOut,
89  const VBVector & vecOut, bool mc,
90  double & mesq, bool first) const;
91 
104  fbv2rbvHeME(const SpinorBarVector & spbIn, const VBVector & vecIn,
105  const RSSpinorVector & spOut,
106  const VBVector & vecOut, bool mc,
107  double & mesq, bool first) const;
109 
110 public:
111 
118  void persistentOutput(PersistentOStream & os) const;
119 
125  void persistentInput(PersistentIStream & is, int version);
127 
134  static void Init();
135 
136 protected:
137 
144  virtual IBPtr clone() const;
145 
150  virtual IBPtr fullclone() const;
152 
153 protected:
154 
162  virtual void doinit();
164 
165 private:
166 
171  MEfv2rv & operator=(const MEfv2rv &) = delete;
172 
173 private:
174 
180  vector<pair<AbstractFFVVertexPtr, AbstractRFVVertexPtr> > fermion_;
181 
185  vector<pair<AbstractRFVVertexPtr, AbstractVVVVertexPtr> > vector_;
186 
190  vector<AbstractRFVVVertexPtr> four_;
192 
193 };
194 
195 }
196 
197 #endif /* Herwig_MEfv2rv_H */
This defines the GeneralHardME class that is designed to serve as a base class for matrix elements of...
Definition: GeneralHardME.h:40
vector< pair< AbstractRFVVertexPtr, AbstractVVVVertexPtr > > vector_
A pair of FFVVertex, VVVertex pointers.
Definition: MEfv2rv.h:185
vector< AbstractRFVVVertexPtr > four_
Four point vertices.
Definition: MEfv2rv.h:190
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< Helicity::VectorWaveFunction > VBVector
A vector of VectorWaveFunctions.
Definition: MEfv2rv.h:49
vector< Helicity::SpinorBarWaveFunction > SpinorBarVector
A vector of SpinorBarWaveFunctions.
Definition: MEfv2rv.h:40
This class implements the matrix element for a fermion and a vector boson to a vector boson and a RS ...
Definition: MEfv2rv.h:32
The storage of the helicity amplitude expression for the matrix element of a hard process...
vector< Helicity::SpinorWaveFunction > SpinorVector
A vector of SpinorWaveFunctions.
Definition: MEfv2rv.h:37
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
vector< Helicity::RSSpinorBarWaveFunction > RSSpinorBarVector
A vector of SpinorBarWaveFunctions.
Definition: MEfv2rv.h:46
vector< Helicity::RSSpinorWaveFunction > RSSpinorVector
A vector of SpinorWaveFunctions.
Definition: MEfv2rv.h:43
-*- C++ -*-
vector< pair< AbstractFFVVertexPtr, AbstractRFVVertexPtr > > fermion_
A pair off FFVVertex pointers.
Definition: MEfv2rv.h:180