herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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
23namespace Herwig {
24using namespace ThePEG;
26
35class MEvv2vv: public GeneralHardME {
36
37public:
38
42 typedef vector<VectorWaveFunction> VBVector;
43
44public:
45
55 virtual double me2() const;
57
62 virtual void constructVertex(tSubProPtr sub);
63
64private:
65
81 vv2vvHeME(VBVector & vin1, VBVector & vin2,
82 VBVector & vout1, bool mc, VBVector & vout2, bool md,
83 double & me2, bool first ) const;
84
85protected:
86
92 virtual void debug(double me2) const;
93
94public:
95
103
109 void persistentInput(PersistentIStream & is, int version);
111
118 static void Init();
119
120protected:
121
128 virtual IBPtr clone() const {return new_ptr(*this);}
129
134 virtual IBPtr fullclone() const {return new_ptr(*this);}
136
137protected:
138
146 virtual void doinit();
148
149private:
150
155 MEvv2vv & operator=(const MEvv2vv &) = delete;
156
157private:
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
This is the implementation of the matrix element for massless vector-boson pair to vector-boson pair...
Definition: MEvv2vv.h:35
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEvv2vv.h:128
vector< pair< AbstractVVTVertexPtr, AbstractVVTVertexPtr > > tensor_
Store the dynamically casted VVTVertex pointers.
Definition: MEvv2vv.h:172
ProductionMatrixElement vv2vvHeME(VBVector &vin1, VBVector &vin2, VBVector &vout1, bool mc, VBVector &vout2, bool md, double &me2, bool first) const
Compute the matrix element for .
virtual void constructVertex(tSubProPtr sub)
Construct the vertex information for the spin correlations.
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
virtual void debug(double me2) const
A debugging function to test the value of me2 against an analytic function.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEvv2vv.h:134
static void Init()
The standard Init function used to initialize the interfaces.
vector< pair< AbstractVVVVertexPtr, AbstractVVVVertexPtr > > vector_
Store the dynamically casted VVVVertex pointers.
Definition: MEvv2vv.h:167
vector< pair< AbstractVVSVertexPtr, AbstractVVSVertexPtr > > scalar_
Store the dynamically casted VVSVertex pointers.
Definition: MEvv2vv.h:162
vector< VectorWaveFunction > VBVector
Typedef for VectorWaveFunction.
Definition: MEvv2vv.h:42
MEvv2vv & operator=(const MEvv2vv &)=delete
The assignment operator is private and must never be called.
vector< AbstractVVVVVertexPtr > four_
Store the dynamically casted VVVVVertex pointer.
Definition: MEvv2vv.h:177
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
map< unsigned int, vector< pair< unsigned int, double > > > fourFlow_
Four points for colour flows.
Definition: MEvv2vv.h:182
The storage of the helicity amplitude expression for the matrix element of a hard process.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr