herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEff2ts.h
1 // -*- C++ -*-
2 #ifndef HERWIG_MEff2ts_H
3 #define HERWIG_MEff2ts_H
4 //
5 // This is the declaration of the MEff2ts class.
6 //
7 
8 #include "GeneralHardME.h"
9 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
10 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
11 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
12 #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h"
13 #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h"
14 #include "ThePEG/Helicity/Vertex/AbstractSSTVertex.h"
15 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
16 #include "ThePEG/Helicity/Vertex/AbstractFFSTVertex.h"
17 
18 namespace Herwig {
19 
20 using namespace ThePEG;
25 
30 class MEff2ts: public GeneralHardME {
31 
32 public:
33 
39  typedef vector<SpinorWaveFunction> SpinorVector;
40 
44  typedef vector<SpinorBarWaveFunction> SpinorBarVector;
45 
49  typedef vector<TensorWaveFunction> TBVector;
51 
52 public:
53 
57  MEff2ts() : fermion_(0), scalar_(0), fourPoint_(0) {}
58 
66  virtual double me2() const;
67 
72  virtual void constructVertex(tSubProPtr sub);
73 
74 public:
75 
82  void persistentOutput(PersistentOStream & os) const;
83 
89  void persistentInput(PersistentIStream & is, int version);
91 
98  static void Init();
99 
100 protected:
101 
108  virtual IBPtr clone() const;
109 
114  virtual IBPtr fullclone() const;
116 
117 protected:
118 
126  void doinit();
128 
129 private:
130 
135  MEff2ts & operator=(const MEff2ts &) = delete;
136 
137 private:
138 
154  ffb2tsHeME(SpinorVector & sp, SpinorBarVector & spbar,
155  TBVector & ten, ScalarWaveFunction & sca,
156  double & me2,bool first) const;
158 
159 private:
160 
164  vector<pair<AbstractFFTVertexPtr, AbstractFFSVertexPtr> > fermion_;
165 
169  vector<pair<AbstractFFSVertexPtr, AbstractSSTVertexPtr> > scalar_;
170 
174  vector<AbstractFFSTVertexPtr> fourPoint_;
175 
176 };
177 
178 }
179 
180 #endif /* HERWIG_MEff2ts_H */
This defines the GeneralHardME class that is designed to serve as a base class for matrix elements of...
Definition: GeneralHardME.h:40
vector< pair< AbstractFFSVertexPtr, AbstractSSTVertexPtr > > scalar_
Store a pair of FFTVertex and VVTVertex pointers.
Definition: MEff2ts.h:169
vector< AbstractFFSTVertexPtr > fourPoint_
The four point vertex.
Definition: MEff2ts.h:174
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
The storage of the helicity amplitude expression for the matrix element of a hard process...
vector< SpinorBarWaveFunction > SpinorBarVector
A vector of SpinorWaveBarFunctions.
Definition: MEff2ts.h:44
vector< pair< AbstractFFTVertexPtr, AbstractFFSVertexPtr > > fermion_
Store a pair of FFTVertex and FFVVertex pointers.
Definition: MEff2ts.h:164
The MEff2ts class implements the general matrix element for fermion fermion -> tensor scalar...
Definition: MEff2ts.h:30
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
vector< SpinorWaveFunction > SpinorVector
A vector of SpinorWaveFunctions.
Definition: MEff2ts.h:39
-*- C++ -*-
MEff2ts()
The default constructor.
Definition: MEff2ts.h:57
vector< TensorWaveFunction > TBVector
A vector of VectorWaveFunctions.
Definition: MEff2ts.h:49