herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEvv2vv.h
1 // -*- C++ -*-
2 //
3 // MEvv2vv.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_MEvv2vv_H
10 #define HERWIG_MEvv2vv_H
11 //
12 // This is the declaration of the MEvv2vv class.
13 //
14 
15 #include "GeneralHardME.h"
16 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
17 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
18 #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h"
19 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
20 #include "ThePEG/Helicity/Vertex/AbstractVVVVVertex.h"
21 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
22 
23 namespace Herwig {
24 using namespace ThePEG;
26 
35 class MEvv2vv: public GeneralHardME {
36 
37 public:
38 
42  typedef vector<VectorWaveFunction> VBVector;
43 
44 public:
45 
55  virtual double me2() const;
57 
62  virtual void constructVertex(tSubProPtr sub);
63 
64 private:
65 
81  vv2vvHeME(VBVector & vin1, VBVector & vin2,
82  VBVector & vout1, bool mc, VBVector & vout2, bool md,
83  double & me2, bool first ) const;
84 
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 protected:
121 
128  virtual IBPtr clone() const {return new_ptr(*this);}
129 
134  virtual IBPtr fullclone() const {return new_ptr(*this);}
136 
137 protected:
138 
146  virtual void doinit();
148 
149 private:
150 
155  MEvv2vv & operator=(const MEvv2vv &) = delete;
156 
157 private:
158 
162  vector<pair<AbstractVVSVertexPtr, AbstractVVSVertexPtr> > scalar_;
163 
167  vector<pair<AbstractVVVVertexPtr, AbstractVVVVertexPtr> > vector_;
168 
172  vector<pair<AbstractVVTVertexPtr, AbstractVVTVertexPtr> > tensor_;
173 
177  vector<AbstractVVVVVertexPtr> four_;
178 
182  map<unsigned int,vector<pair<unsigned int,double> > > fourFlow_;
183 
184 };
185 
186 }
187 
188 #endif /* HERWIG_MEvv2vv_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 clone() const
Make a simple clone of this object.
Definition: MEvv2vv.h:128
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEvv2vv.h:134
vector< VectorWaveFunction > VBVector
Typedef for VectorWaveFunction.
Definition: MEvv2vv.h:42
vector< pair< AbstractVVSVertexPtr, AbstractVVSVertexPtr > > scalar_
Store the dynamically casted VVSVertex pointers.
Definition: MEvv2vv.h:162
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
This is the implementation of the matrix element for massless vector-boson pair to vector-boson pair...
Definition: MEvv2vv.h:35
vector< pair< AbstractVVTVertexPtr, AbstractVVTVertexPtr > > tensor_
Store the dynamically casted VVTVertex pointers.
Definition: MEvv2vv.h:172
The storage of the helicity amplitude expression for the matrix element of a hard process...
vector< pair< AbstractVVVVertexPtr, AbstractVVVVertexPtr > > vector_
Store the dynamically casted VVVVertex pointers.
Definition: MEvv2vv.h:167
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
map< unsigned int, vector< pair< unsigned int, double > > > fourFlow_
Four points for colour flows.
Definition: MEvv2vv.h:182
vector< AbstractVVVVVertexPtr > four_
Store the dynamically casted VVVVVertex pointer.
Definition: MEvv2vv.h:177
-*- C++ -*-