herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
MEfv2fs.h
1 // -*- C++ -*-
2 //
3 // MEfv2fs.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_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/AbstractVSSVertex.h"
24 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
25 
26 namespace Herwig {
27 using namespace ThePEG;
32 
33 
43 class MEfv2fs: public GeneralHardME {
44 
46  typedef vector<SpinorWaveFunction> SpinorVector;
47 
49  typedef vector<SpinorBarWaveFunction> SpinorBarVector;
50 
52  typedef vector<VectorWaveFunction> VecWFVector;
53 
54 public:
55 
59  MEfv2fs() : scalar_(0), fermion_(0), vector_(0) {}
60 
61 public:
62 
72  virtual double me2() const;
74 
79  virtual void constructVertex(tSubProPtr subp);
80 
81 private:
82 
95  ProductionMatrixElement fv2fbsHeME(const SpinorVector & spIn,
96  const VecWFVector & vecIn,
97  const SpinorBarVector & spbOut,
98  const ScalarWaveFunction & scaOut,
99  double & full_me, bool first) const;
100 
111  ProductionMatrixElement fbv2fsHeME(const SpinorBarVector & spbIn,
112  const VecWFVector & vecIn,
113  const SpinorVector & spOut,
114  const ScalarWaveFunction & scaOut,
115  double & full_me, bool first) const;
117 
118 protected:
119 
125  virtual void debug(double me2) const;
126 
127 public:
128 
135  void persistentOutput(PersistentOStream & os) const;
136 
142  void persistentInput(PersistentIStream & is, int version);
144 
151  static void Init();
152 
153 protected:
154 
162  void doinit();
164 
165 protected:
166 
173  virtual IBPtr clone() const {return new_ptr(*this);}
174 
179  virtual IBPtr fullclone() const {return new_ptr(*this);}
181 
182 private:
183 
188  MEfv2fs & operator=(const MEfv2fs &) = delete;
189 
190 private:
191 
195  vector<pair<AbstractFFSVertexPtr, AbstractVSSVertexPtr> > scalar_;
196 
200  vector<pair<AbstractFFSVertexPtr, AbstractFFVVertexPtr> > fermion_;
201 
205  vector<pair<AbstractFFVVertexPtr,AbstractVVSVertexPtr> > vector_;
206 
207 };
208 
209 }
210 
211 #endif /* HERWIG_MEfv2fs_H */
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:46
vector< pair< AbstractFFSVertexPtr, AbstractVSSVertexPtr > > scalar_
Store a pair of FFSVertex and VSSVertex pointers.
Definition: MEfv2fs.h:195
This class is designed to implement the matrix element for fermion-vector to fermion scalar...
Definition: MEfv2fs.h:43
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< VectorWaveFunction > VecWFVector
Vector of VectorWaveFunctions.
Definition: MEfv2fs.h:52
vector< pair< AbstractFFVVertexPtr, AbstractVVSVertexPtr > > vector_
Store a pair of VVSVertex and FFVVertex pointers.
Definition: MEfv2fs.h:205
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEfv2fs.h:173
The storage of the helicity amplitude expression for the matrix element of a hard process...
MEfv2fs()
The default constructor.
Definition: MEfv2fs.h:59
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
vector< pair< AbstractFFSVertexPtr, AbstractFFVVertexPtr > > fermion_
Store a pair of FFSVertex and FFVVertex pointers.
Definition: MEfv2fs.h:200
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEfv2fs.h:179
-*- C++ -*-
vector< SpinorBarWaveFunction > SpinorBarVector
Vector of SpinorBarWaveFunctions.
Definition: MEfv2fs.h:49