herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEvv2ff.h
1 // -*- C++ -*-
2 //
3 // MEvv2ff.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_MEvv2ff_H
10 #define HERWIG_MEvv2ff_H
11 //
12 // This is the declaration of the MEvv2ff class.
13 //
14 
15 #include "GeneralHardME.h"
16 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
17 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
18 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
19 #include "ThePEG/Helicity/Vertex/AbstractRFVVertex.h"
20 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
21 #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h"
22 #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h"
23 #include "ThePEG/Helicity/Vertex/AbstractFFVVVertex.h"
24 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
25 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
26 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
27 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
28 
29 namespace Herwig {
30 using namespace ThePEG;
34 
43 class MEvv2ff: public GeneralHardME {
44 
45 public:
46 
48  typedef vector<VectorWaveFunction> VBVector;
49 
51  typedef vector<SpinorWaveFunction> SpinorVector;
52 
54  typedef vector<SpinorBarWaveFunction> SpinorBarVector;
55 
56 public:
57 
67  virtual double me2() const;
69 
74  virtual void constructVertex(tSubProPtr sub);
75 
76 private:
77 
81  ProductionMatrixElement vv2ffME(const VBVector & v1, const VBVector & v2,
82  const SpinorBarVector & sbar,
83  const SpinorVector & sp,
84  double & me2, bool first) const;
85 
86 protected:
87 
93  virtual void debug(double me2) const;
94 
95 public:
96 
103  void persistentOutput(PersistentOStream & os) const;
104 
110  void persistentInput(PersistentIStream & is, int version);
112 
119  static void Init();
120 
121 
122 protected:
123 
131  virtual void doinit();
133 
134 
135 protected:
136 
143  virtual IBPtr clone() const {return new_ptr(*this);}
144 
149  virtual IBPtr fullclone() const {return new_ptr(*this);}
151 
152 private:
153 
158  MEvv2ff & operator=(const MEvv2ff &) = delete;
159 
160 private:
161 
167  vector<pair<AbstractVVSVertexPtr, AbstractFFSVertexPtr > > scalar_;
168 
172  vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > fermion_;
173 
177  vector<pair<AbstractVVVVertexPtr, AbstractFFVVertexPtr> > vector_;
178 
182  vector<pair<AbstractRFVVertexPtr, AbstractRFVVertexPtr> > RSfermion_;
183 
187  vector<pair<AbstractVVTVertexPtr, AbstractFFTVertexPtr> > tensor_;
188 
192  vector<AbstractFFVVVertexPtr> four_;
194 };
195 
196 }
197 
198 #endif /* HERWIG_MEvv2ff_H */
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEvv2ff.h:143
This defines the GeneralHardME class that is designed to serve as a base class for matrix elements of...
Definition: GeneralHardME.h:40
vector< pair< AbstractVVSVertexPtr, AbstractFFSVertexPtr > > scalar_
Intermediate scalar.
Definition: MEvv2ff.h:167
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< pair< AbstractFFVVertexPtr, AbstractFFVVertexPtr > > fermion_
Intermediate fermion.
Definition: MEvv2ff.h:172
vector< pair< AbstractVVTVertexPtr, AbstractFFTVertexPtr > > tensor_
Intermediate tensor.
Definition: MEvv2ff.h:187
The storage of the helicity amplitude expression for the matrix element of a hard process...
vector< AbstractFFVVVertexPtr > four_
Four point vertices.
Definition: MEvv2ff.h:192
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
vector< VectorWaveFunction > VBVector
A Vector of VectorWaveFunction objects.
Definition: MEvv2ff.h:48
vector< pair< AbstractRFVVertexPtr, AbstractRFVVertexPtr > > RSfermion_
Intermediate RS fermion.
Definition: MEvv2ff.h:182
This class is designed to implement the matrix element for the process vector-vector to fermion-anti...
Definition: MEvv2ff.h:43
-*- C++ -*-
vector< SpinorBarWaveFunction > SpinorBarVector
A vector of SpinorBarWaveFunction objects.
Definition: MEvv2ff.h:54
vector< SpinorWaveFunction > SpinorVector
A vector of SpinorBarWaveFunction objects.
Definition: MEvv2ff.h:51
vector< pair< AbstractVVVVertexPtr, AbstractFFVVertexPtr > > vector_
Intermediate vector.
Definition: MEvv2ff.h:177
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEvv2ff.h:149