herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEff2ss.h
1 // -*- C++ -*-
2 //
3 // MEff2ss.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_MEff2ss_H
10 #define HERWIG_MEff2ss_H
11 //
12 // This is the declaration of the MEff2ss class.
13 //
14 
15 #include "GeneralHardME.h"
16 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
17 #include "ThePEG/Helicity/Vertex/AbstractRFSVertex.h"
18 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
19 #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h"
20 #include "ThePEG/Helicity/Vertex/AbstractSSSVertex.h"
21 #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h"
22 #include "ThePEG/Helicity/Vertex/AbstractSSTVertex.h"
23 #include "ThePEG/Helicity/Vertex/AbstractFFSSVertex.h"
24 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
25 
26 namespace Herwig {
27 using namespace ThePEG;
31 
40 class MEff2ss: public GeneralHardME {
41 
42 public:
43 
45  typedef vector<SpinorWaveFunction> SpinorVector;
46 
48  typedef vector<SpinorBarWaveFunction> SpinorBarVector;
49 
50 public:
51 
61  virtual double me2() const;
63 
68  virtual void constructVertex(tSubProPtr sub);
69 
70 protected:
71 
77  virtual void debug(double me2) const;
78 
79 public:
80 
87  void persistentOutput(PersistentOStream & os) const;
88 
94  void persistentInput(PersistentIStream & is, int version);
96 
103  static void Init();
104 
105 
106 protected:
107 
115  virtual void doinit();
117 
118 protected:
119 
126  virtual IBPtr clone() const {return new_ptr(*this);}
127 
132  virtual IBPtr fullclone() const {return new_ptr(*this);}
134 
135 private:
136 
141  MEff2ss & operator=(const MEff2ss &) = delete;
142 
143 private:
144 
155  ProductionMatrixElement ff2ssME(const SpinorVector & sp,
156  const SpinorBarVector & sbar,
157  const ScalarWaveFunction & sca1,
158  const ScalarWaveFunction & sca2,
159  double & me2, bool first) const;
160 
161 private:
162 
167  vector<pair<AbstractFFSVertexPtr, AbstractSSSVertexPtr> > scalar_;
168 
173  vector<pair<AbstractFFSVertexPtr, AbstractFFSVertexPtr> > fermion_;
174 
179  vector<pair<AbstractFFVVertexPtr, AbstractVSSVertexPtr> > vector_;
180 
185  vector<pair<AbstractRFSVertexPtr, AbstractRFSVertexPtr> > RSfermion_;
186 
191  vector<pair<AbstractFFTVertexPtr, AbstractSSTVertexPtr> > tensor_;
192 
196  vector<AbstractFFSSVertexPtr> fourPoint_;
197 };
198 
199 }
200 
201 #endif /* HERWIG_MEff2ss_H */
This defines the GeneralHardME class that is designed to serve as a base class for matrix elements of...
Definition: GeneralHardME.h:40
The MEff2ss class is designed to implement the matrix element for a fermion-antifermion to scalar-sca...
Definition: MEff2ss.h:40
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEff2ss.h:126
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< SpinorBarWaveFunction > SpinorBarVector
Vector of SpinorBarWaveFunction objects.
Definition: MEff2ss.h:48
The storage of the helicity amplitude expression for the matrix element of a hard process...
vector< pair< AbstractFFVVertexPtr, AbstractVSSVertexPtr > > vector_
Storage for dynamically cast vertices for a diagram with intermediate vector.
Definition: MEff2ss.h:179
vector< pair< AbstractFFTVertexPtr, AbstractSSTVertexPtr > > tensor_
Storage for dynamically cast vertices for a diagram with intermediate tensor.
Definition: MEff2ss.h:191
vector< pair< AbstractFFSVertexPtr, AbstractFFSVertexPtr > > fermion_
Storage for dynamically cast vertices for a diagram with intermediate fermion.
Definition: MEff2ss.h:173
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
vector< SpinorWaveFunction > SpinorVector
Vector of SpinorWaveFunctions objects.
Definition: MEff2ss.h:45
vector< AbstractFFSSVertexPtr > fourPoint_
Storage for dynamically cast 4 point vertices.
Definition: MEff2ss.h:196
vector< pair< AbstractRFSVertexPtr, AbstractRFSVertexPtr > > RSfermion_
Storage for dynamically cast vertices for a diagram with intermediate fermion.
Definition: MEff2ss.h:185
-*- C++ -*-
vector< pair< AbstractFFSVertexPtr, AbstractSSSVertexPtr > > scalar_
Storage for dynamically cast vertices for a diagram with intermediate vector.
Definition: MEff2ss.h:167
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEff2ss.h:132