herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
MEfv2vf.h
1 // -*- C++ -*-
2 //
3 // MEfv2vf.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2017 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 
23 namespace Herwig {
24 using namespace ThePEG;
25 
34 class MEfv2vf: public GeneralHardME {
35 
36 public:
37 
39  typedef vector<Helicity::SpinorWaveFunction> SpinorVector;
40 
42  typedef vector<Helicity::SpinorBarWaveFunction> SpinorBarVector;
43 
45  typedef vector<Helicity::VectorWaveFunction> VBVector;
46 
47 public:
48 
58  virtual double me2() const;
60 
65  virtual void constructVertex(tSubProPtr sub);
66 
67 private:
68 
83  fv2vfHeME(const SpinorVector & spIn, const VBVector & vecIn,
84  const VBVector & vecOut, bool mc,
85  const SpinorBarVector & spbOut,
86  double & mesq, bool first) const;
87 
100  fbv2vfbHeME(const SpinorBarVector & spbIn, const VBVector & vecIn,
101  const VBVector & vecOut, bool mc,
102  const SpinorVector & spOut,
103  double & mesq, bool first) const;
105 
106 protected:
107 
113  virtual void debug(double me2) const;
114 
115 public:
116 
123  void persistentOutput(PersistentOStream & os) const;
124 
130  void persistentInput(PersistentIStream & is, int version);
132 
139  static void Init();
140 
141 
142 protected:
143 
151  virtual void doinit();
153 
154 protected:
155 
162  virtual IBPtr clone() const {return new_ptr(*this);}
163 
168  virtual IBPtr fullclone() const {return new_ptr(*this);}
170 
171 private:
172 
177  MEfv2vf & operator=(const MEfv2vf &) = delete;
178 
179 private:
180 
186  vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > fermion_;
187 
191  vector<pair<AbstractFFVVertexPtr, AbstractVVVVertexPtr> > vector_;
193 
194 };
195 
196 }
197 
198 #endif /* HERWIG_MEfv2vf_H */
vector< Helicity::SpinorBarWaveFunction > SpinorBarVector
A vector of SpinorBarWaveFunctions.
Definition: MEfv2vf.h:42
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:34
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEfv2vf.h:162
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:191
vector< pair< AbstractFFVVertexPtr, AbstractFFVVertexPtr > > fermion_
A pair off FFVVertex pointers.
Definition: MEfv2vf.h:186
vector< Helicity::SpinorWaveFunction > SpinorVector
A vector of SpinorWaveFunctions.
Definition: MEfv2vf.h:39
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:168
vector< Helicity::VectorWaveFunction > VBVector
A vector of VectorWaveFunctions.
Definition: MEfv2vf.h:45
-*- C++ -*-