herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEff2rf.h
1 // -*- C++ -*-
2 #ifndef Herwig_MEff2rf_H
3 #define Herwig_MEff2rf_H
4 //
5 // This is the declaration of the MEff2rf 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/RSSpinorWaveFunction.h"
12 #include "ThePEG/Helicity/WaveFunction/RSSpinorBarWaveFunction.h"
13 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
14 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
15 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
16 #include "ThePEG/Helicity/Vertex/AbstractRFSVertex.h"
17 #include "ThePEG/Helicity/Vertex/AbstractRFVVertex.h"
18 
19 namespace Herwig {
20 
21 using namespace ThePEG;
26 
34 class MEff2rf: public GeneralHardME {
35 
36 public:
37 
39  typedef vector<SpinorWaveFunction> SpinorVector;
40 
42  typedef vector<SpinorBarWaveFunction> SpinorBarVector;
43 
45  typedef vector<RSSpinorWaveFunction> RSSpinorVector;
46 
48  typedef vector<RSSpinorBarWaveFunction> RSSpinorBarVector;
49 
50 public:
51 
61  virtual double me2() const;
63 
64 private:
65 
77  ffb2rfbHeME(double & me2, bool first) const;
78 
88  ffb2rbfHeME(double & me2, bool first) const;
89 
97  ProductionMatrixElement ff2rfHeME(double & me2, bool first) const;
98 
108  ProductionMatrixElement fbfb2rbfbHeME(double & me2, bool first) const;
109 
119  ffb2mfmfHeME(double & me2, bool first) const;
121 
126  virtual void constructVertex(tSubProPtr sub);
127 
128 public:
129 
136  void persistentOutput(PersistentOStream & os) const;
137 
143  void persistentInput(PersistentIStream & is, int version);
145 
152  static void Init();
153 
154 protected:
155 
162  virtual IBPtr clone() const;
163 
168  virtual IBPtr fullclone() const;
170 
171 protected:
172 
180  virtual void doinit();
182 
183 private:
184 
189  MEff2rf & operator=(const MEff2rf &) = delete;
190 
191 private:
192 
196  vector<pair<AbstractFFSVertexPtr, AbstractRFSVertexPtr> > scalar_;
197 
201  vector<pair<AbstractFFVVertexPtr, AbstractRFVVertexPtr> > vector_;
202 
206  mutable std::array<SpinorVector,3> spin_;
207 
211  mutable std::array<SpinorBarVector,3> sbar_;
212 
213  mutable RSSpinorVector rs_;
214  mutable RSSpinorBarVector rsbar_;
215 };
216 
217 }
218 
219 #endif /* Herwig_MEff2rf_H */
vector< pair< AbstractFFVVertexPtr, AbstractRFVVertexPtr > > vector_
Store the vector of FFVVertex pairs.
Definition: MEff2rf.h:201
This defines the GeneralHardME class that is designed to serve as a base class for matrix elements of...
Definition: GeneralHardME.h:40
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
This is the implementation of the matrix element for a fermion-fermion to fermion RS fermion process...
Definition: MEff2rf.h:34
The storage of the helicity amplitude expression for the matrix element of a hard process...
vector< pair< AbstractFFSVertexPtr, AbstractRFSVertexPtr > > scalar_
Store the vector of FFSVertex pairs.
Definition: MEff2rf.h:196
std::array< SpinorBarVector, 3 > sbar_
Barred spinors.
Definition: MEff2rf.h:211
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
std::array< SpinorVector, 3 > spin_
Spinors.
Definition: MEff2rf.h:206
-*- C++ -*-
vector< RSSpinorBarWaveFunction > RSSpinorBarVector
Vector of RSSpinorBarWaveFunctions.
Definition: MEff2rf.h:48
vector< RSSpinorWaveFunction > RSSpinorVector
Vector of RSSpinorWaveFunctions.
Definition: MEff2rf.h:45
vector< SpinorWaveFunction > SpinorVector
Vector of SpinorWaveFunctions.
Definition: MEff2rf.h:39
vector< SpinorBarWaveFunction > SpinorBarVector
Vector of SpinorBarWaveFunctions.
Definition: MEff2rf.h:42