herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEff2vv.h
1 // -*- C++ -*-
2 //
3 // MEff2vv.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_MEff2vv_H
10 #define HERWIG_MEff2vv_H
11 //
12 // This is the declaration of the MEff2vv class.
13 //
14 
15 #include "GeneralHardME.h"
16 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
17 #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h"
18 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
19 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
20 #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h"
21 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
22 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
23 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
24 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
25 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
26 
27 namespace Herwig {
28 using namespace ThePEG;
32 
40 class MEff2vv: public GeneralHardME {
41 public:
42 
44  typedef vector<SpinorWaveFunction> SpinorVector;
45 
47  typedef vector<SpinorBarWaveFunction> SpinorBarVector;
48 
50  typedef vector<VectorWaveFunction> VBVector;
51 
52 public:
53 
57  MEff2vv() : vector_(0), tensor_(0), scalar_(0) {}
58 
68  virtual double me2() const;
70 
75  virtual void constructVertex(tSubProPtr sub);
76 
77 
78 protected:
79 
85  virtual void debug(double me2) const;
86 
87 private:
88 
102  ff2vvME(const SpinorVector & sp, const SpinorBarVector sbar,
103  const VBVector & v1, bool m1, const VBVector & v2, bool m2,
104  double & me2, bool first) const;
105 
106 public:
107 
114  void persistentOutput(PersistentOStream & os) const;
115 
121  void persistentInput(PersistentIStream & is, int version);
123 
130  static void Init();
131 
132 protected:
133 
140  virtual IBPtr clone() const {return new_ptr(*this);}
141 
146  virtual IBPtr fullclone() const {return new_ptr(*this);}
148 
149 protected:
150 
158  virtual void doinit();
160 
161 private:
162 
167  MEff2vv & operator=(const MEff2vv &) = delete;
168 
169 private:
170 
175  vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > fermion_;
176 
181  vector<pair<AbstractFFVVertexPtr, AbstractVVVVertexPtr> > vector_;
182 
187  vector<pair<AbstractFFTVertexPtr, AbstractVVTVertexPtr> > tensor_;
188 
193  vector<pair<AbstractFFSVertexPtr, AbstractVVSVertexPtr> > scalar_;
194 };
195 
196 }
197 
198 #endif /* HERWIG_MEff2vv_H */
vector< pair< AbstractFFTVertexPtr, AbstractVVTVertexPtr > > tensor_
Storage for a dynamically cast vertices for a schannel scalar intermediate.
Definition: MEff2vv.h:187
This defines the GeneralHardME class that is designed to serve as a base class for matrix elements of...
Definition: GeneralHardME.h:40
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEff2vv.h:146
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEff2vv.h:140
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< SpinorWaveFunction > SpinorVector
Vector of SpinorWaveFunctions objects.
Definition: MEff2vv.h:44
vector< VectorWaveFunction > VBVector
Vector of VectorWaveFunction objects.
Definition: MEff2vv.h:50
The storage of the helicity amplitude expression for the matrix element of a hard process...
MEff2vv()
The default constructor.
Definition: MEff2vv.h:57
vector< pair< AbstractFFSVertexPtr, AbstractVVSVertexPtr > > scalar_
Storage for a dynamically cast vertices for a schannel scalar intermediate for massless external vect...
Definition: MEff2vv.h:193
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
vector< pair< AbstractFFVVertexPtr, AbstractFFVVertexPtr > > fermion_
Storage for a dynamically cast vertices for a tchannel vector intermediate.
Definition: MEff2vv.h:175
-*- C++ -*-
vector< SpinorBarWaveFunction > SpinorBarVector
Vector of SpinorBarWaveFunction objects.
Definition: MEff2vv.h:47
vector< pair< AbstractFFVVertexPtr, AbstractVVVVertexPtr > > vector_
Storage for a dynamically cast vertices for a schannel vector intermediate.
Definition: MEff2vv.h:181
This class implements the matrix element calculation for a generic process.
Definition: MEff2vv.h:40