herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEfv2fs.h
1 // -*- C++ -*-
2 //
3 // MEfv2fs.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_MEfv2fs_H
10 #define HERWIG_MEfv2fs_H
11 //
12 // This is the declaration of the MEfv2fs class.
13 //
14 
15 #include "GeneralHardME.h"
16 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
17 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
18 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
19 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
20 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
21 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
22 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
23 #include "ThePEG/Helicity/Vertex/AbstractRFVVertex.h"
24 #include "ThePEG/Helicity/Vertex/AbstractRFSVertex.h"
25 #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h"
26 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
27 #include "ThePEG/Helicity/Vertex/AbstractFFVSVertex.h"
28 
29 namespace Herwig {
30 using namespace ThePEG;
35 
36 
44 class MEfv2fs: public GeneralHardME {
45 
47  typedef vector<SpinorWaveFunction> SpinorVector;
48 
50  typedef vector<SpinorBarWaveFunction> SpinorBarVector;
51 
53  typedef vector<VectorWaveFunction> VecWFVector;
54 
55 public:
56 
66  virtual double me2() const;
68 
73  virtual void constructVertex(tSubProPtr subp);
74 
75 private:
76 
89  ProductionMatrixElement fv2fbsHeME(const SpinorVector & spIn,
90  const VecWFVector & vecIn,
91  const SpinorBarVector & spbOut,
92  const ScalarWaveFunction & scaOut,
93  double & full_me, bool first) const;
94 
105  ProductionMatrixElement fbv2fsHeME(const SpinorBarVector & spbIn,
106  const VecWFVector & vecIn,
107  const SpinorVector & spOut,
108  const ScalarWaveFunction & scaOut,
109  double & full_me, bool first) const;
111 
112 protected:
113 
119  virtual void debug(double me2) const;
120 
121 public:
122 
129  void persistentOutput(PersistentOStream & os) const;
130 
136  void persistentInput(PersistentIStream & is, int version);
138 
145  static void Init();
146 
147 protected:
148 
156  void doinit();
158 
159 protected:
160 
167  virtual IBPtr clone() const {return new_ptr(*this);}
168 
173  virtual IBPtr fullclone() const {return new_ptr(*this);}
175 
176 private:
177 
182  MEfv2fs & operator=(const MEfv2fs &) = delete;
183 
184 private:
185 
189  vector<pair<AbstractFFSVertexPtr, AbstractVSSVertexPtr> > scalar_;
190 
194  vector<pair<AbstractFFSVertexPtr, AbstractFFVVertexPtr> > fermion_;
195 
199  vector<pair<AbstractFFVVertexPtr,AbstractVVSVertexPtr> > vector_;
200 
204  vector<pair<AbstractRFSVertexPtr, AbstractRFVVertexPtr> > RSfermion_;
205 
209  vector<AbstractFFVSVertexPtr> four_;
210 };
211 
212 }
213 
214 #endif /* HERWIG_MEfv2fs_H */
vector< AbstractFFVSVertexPtr > four_
Store any 4-point vertices.
Definition: MEfv2fs.h:209
This defines the GeneralHardME class that is designed to serve as a base class for matrix elements of...
Definition: GeneralHardME.h:40
vector< SpinorWaveFunction > SpinorVector
Vector of SpinorWaveFunctions.
Definition: MEfv2fs.h:47
vector< pair< AbstractFFSVertexPtr, AbstractVSSVertexPtr > > scalar_
Store a pair of FFSVertex and VSSVertex pointers.
Definition: MEfv2fs.h:189
This class is designed to implement the matrix element for fermion-vector to fermion scalar...
Definition: MEfv2fs.h:44
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< VectorWaveFunction > VecWFVector
Vector of VectorWaveFunctions.
Definition: MEfv2fs.h:53
vector< pair< AbstractFFVVertexPtr, AbstractVVSVertexPtr > > vector_
Store a pair of VVSVertex and FFVVertex pointers.
Definition: MEfv2fs.h:199
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEfv2fs.h:167
The storage of the helicity amplitude expression for the matrix element of a hard process...
vector< pair< AbstractRFSVertexPtr, AbstractRFVVertexPtr > > RSfermion_
Store a pair of FFSVertex and FFVVertex pointers.
Definition: MEfv2fs.h:204
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
vector< pair< AbstractFFSVertexPtr, AbstractFFVVertexPtr > > fermion_
Store a pair of FFSVertex and FFVVertex pointers.
Definition: MEfv2fs.h:194
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEfv2fs.h:173
-*- C++ -*-
vector< SpinorBarWaveFunction > SpinorBarVector
Vector of SpinorBarWaveFunctions.
Definition: MEfv2fs.h:50