herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
MEvv2ss.h
1 // -*- C++ -*-
2 //
3 // MEvv2ss.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2017 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_MEvv2ss_H
10 #define HERWIG_MEvv2ss_H
11 //
12 // This is the declaration of the MEvv2ss class.
13 //
14 
15 #include "GeneralHardME.h"
16 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
17 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
18 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
19 #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h"
20 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
21 #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h"
22 #include "ThePEG/Helicity/Vertex/AbstractSSTVertex.h"
23 #include "ThePEG/Helicity/Vertex/AbstractVVSSVertex.h"
24 #include "ThePEG/Helicity/Vertex/AbstractSSSVertex.h"
25 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
26 
27 namespace Herwig {
28 using namespace ThePEG;
31 
41 class MEvv2ss: public GeneralHardME {
42 
43 public:
44 
46  typedef vector<VectorWaveFunction> VBVector;
47 
48 public:
49 
59  virtual double me2() const;
61 
66  virtual void constructVertex(tSubProPtr sub);
67 
68 private:
69 
81  ProductionMatrixElement vv2ssME(const VBVector & v1, const VBVector & v2,
82  const ScalarWaveFunction & sca1,
83  const ScalarWaveFunction & sca2,
84  double & me2, bool first) const;
85 protected:
86 
92  virtual void debug(double me2) const;
93 
94 public:
95 
102  void persistentOutput(PersistentOStream & os) const;
103 
109  void persistentInput(PersistentIStream & is, int version);
111 
118  static void Init();
119 
120 
121 protected:
122 
130  virtual void doinit();
132 
133 
134 protected:
135 
142  virtual IBPtr clone() const {return new_ptr(*this);}
143 
148  virtual IBPtr fullclone() const {return new_ptr(*this);}
150 
151 private:
152 
157  MEvv2ss & operator=(const MEvv2ss &) = delete;
158 
159 private:
160 
166  vector<pair<AbstractVVSVertexPtr, AbstractSSSVertexPtr> > scalar1_;
167 
171  vector<pair<AbstractVSSVertexPtr, AbstractVSSVertexPtr> > scalar2_;
172 
176  vector<pair<AbstractVVSVertexPtr, AbstractVVSVertexPtr> > scalar3_;
177 
181  vector<pair<AbstractVVVVertexPtr, AbstractVSSVertexPtr> > vector_;
182 
186  vector<pair<AbstractVVTVertexPtr, AbstractSSTVertexPtr> > tensor_;
187 
191  AbstractVVSSVertexPtr contact_;
193 
194 
195 };
196 
197 }
198 
199 #endif /* HERWIG_MEvv2ss_H */
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: MEvv2ss.h:148
vector< VectorWaveFunction > VBVector
A vector of VectorWaveFunction objects.
Definition: MEvv2ss.h:46
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEvv2ss.h:142
This is the implementation of the matrix element for the process vector-vector to scalar-scalar...
Definition: MEvv2ss.h:41
The storage of the helicity amplitude expression for the matrix element of a hard process...
vector< pair< AbstractVSSVertexPtr, AbstractVSSVertexPtr > > scalar2_
Intermediate t-channel scalar.
Definition: MEvv2ss.h:171
vector< pair< AbstractVVTVertexPtr, AbstractSSTVertexPtr > > tensor_
Intermediate s-channel tensor.
Definition: MEvv2ss.h:186
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
vector< pair< AbstractVVSVertexPtr, AbstractVVSVertexPtr > > scalar3_
Intermediate t-channel scalar.
Definition: MEvv2ss.h:176
AbstractVVSSVertexPtr contact_
The contact vertex.
Definition: MEvv2ss.h:191
-*- C++ -*-
vector< pair< AbstractVVVVertexPtr, AbstractVSSVertexPtr > > vector_
Intermediate s-channel vector.
Definition: MEvv2ss.h:181
vector< pair< AbstractVVSVertexPtr, AbstractSSSVertexPtr > > scalar1_
Intermediate s-channel scalar.
Definition: MEvv2ss.h:166