herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEff2vs.h
1 // -*- C++ -*-
2 //
3 // MEff2vs.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_MEff2vs_H
10 #define HERWIG_MEff2vs_H
11 //
12 // This is the declaration of the MEff2vs class.
13 //
14 
15 #include "GeneralHardME.h"
16 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
17 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
18 #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h"
19 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
20 #include "ThePEG/Helicity/Vertex/AbstractFFVSVertex.h"
21 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
22 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
23 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
24 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
25 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
26 
27 namespace Herwig {
28 using namespace ThePEG;
33 
44 class MEff2vs: public GeneralHardME {
45 
46 public:
47 
53  typedef vector<SpinorWaveFunction> SpinorVector;
54 
58  typedef vector<SpinorBarWaveFunction> SpinorBarVector;
59 
63  typedef vector<VectorWaveFunction> VBVector;
65 
66 public:
67 
71  MEff2vs() : scalar_(0), vector_(0), fermion_(0) {}
72 
82  virtual double me2() const;
84 
89  virtual void constructVertex(tSubProPtr sub);
90 
91 public:
92 
99  void persistentOutput(PersistentOStream & os) const;
100 
106  void persistentInput(PersistentIStream & is, int version);
108 
115  static void Init();
116 
117 protected:
118 
126  virtual void doinit();
128 
129 protected:
130 
137  virtual IBPtr clone() const {return new_ptr(*this);}
138 
143  virtual IBPtr fullclone() const {return new_ptr(*this);}
145 
146 private:
147 
152  MEff2vs & operator=(const MEff2vs &) = delete;
153 
154 private:
155 
171  ffb2vsHeME(SpinorVector & sp, SpinorBarVector & spbar,
172  VBVector & vec, ScalarWaveFunction & sca,
173  double & me2,bool first) const;
175 
176 
177 private:
178 
183  vector<pair<AbstractFFSVertexPtr, AbstractVSSVertexPtr> > scalar_;
184 
189  vector<pair<AbstractFFVVertexPtr, AbstractVVSVertexPtr> > vector_;
190 
195  vector<pair<AbstractFFVVertexPtr, AbstractFFSVertexPtr> > fermion_;
196 
200  vector<AbstractFFVSVertexPtr> four_;
201 };
202 
203 }
204 
205 #endif /* HERWIG_MEff2vs_H */
This defines the GeneralHardME class that is designed to serve as a base class for matrix elements of...
Definition: GeneralHardME.h:40
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEff2vs.h:137
vector< pair< AbstractFFVVertexPtr, AbstractFFSVertexPtr > > fermion_
Storage for dynamically cast vertices for a diagram with intermediate fermion.
Definition: MEff2vs.h:195
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< SpinorWaveFunction > SpinorVector
A vector of SpinorWaveFunctions.
Definition: MEff2vs.h:53
vector< AbstractFFVSVertexPtr > four_
Four point vertices.
Definition: MEff2vs.h:200
vector< pair< AbstractFFVVertexPtr, AbstractVVSVertexPtr > > vector_
Storage for dynamically cast vertices for a diagram with intermediate vector.
Definition: MEff2vs.h:189
The storage of the helicity amplitude expression for the matrix element of a hard process...
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEff2vs.h:143
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
The MEff2vs class is designed to implement the matrix element for a fermion-antifermion to vector-sca...
Definition: MEff2vs.h:44
vector< pair< AbstractFFSVertexPtr, AbstractVSSVertexPtr > > scalar_
Storage for dynamically cast vertices for a diagram with intermediate scalar.
Definition: MEff2vs.h:183
-*- C++ -*-
vector< VectorWaveFunction > VBVector
A vector of VectorWaveFunctions.
Definition: MEff2vs.h:63
vector< SpinorBarWaveFunction > SpinorBarVector
A vector of SpinorWaveBarFunctions.
Definition: MEff2vs.h:58
MEff2vs()
The default constructor.
Definition: MEff2vs.h:71