herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MEvv2ff.h
1// -*- C++ -*-
2//
3// MEvv2ff.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_MEvv2ff_H
10#define HERWIG_MEvv2ff_H
11//
12// This is the declaration of the MEvv2ff class.
13//
14
15#include "GeneralHardME.h"
16#include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
17#include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
18#include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
19#include "ThePEG/Helicity/Vertex/AbstractRFVVertex.h"
20#include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
21#include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h"
22#include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h"
23#include "ThePEG/Helicity/Vertex/AbstractFFVVVertex.h"
24#include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
25#include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
26#include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
27#include "Herwig/MatrixElement/ProductionMatrixElement.h"
28
29namespace Herwig {
30using namespace ThePEG;
34
43class MEvv2ff: public GeneralHardME {
44
45public:
46
48 typedef vector<VectorWaveFunction> VBVector;
49
51 typedef vector<SpinorWaveFunction> SpinorVector;
52
54 typedef vector<SpinorBarWaveFunction> SpinorBarVector;
55
56public:
57
67 virtual double me2() const;
69
74 virtual void constructVertex(tSubProPtr sub);
75
76private:
77
82 const SpinorBarVector & sbar,
83 const SpinorVector & sp,
84 double & me2, bool first) const;
85
86protected:
87
93 virtual void debug(double me2) const;
94
95public:
96
104
110 void persistentInput(PersistentIStream & is, int version);
112
119 static void Init();
120
121
122protected:
123
131 virtual void doinit();
133
134
135protected:
136
143 virtual IBPtr clone() const {return new_ptr(*this);}
144
149 virtual IBPtr fullclone() const {return new_ptr(*this);}
151
152private:
153
158 MEvv2ff & operator=(const MEvv2ff &) = delete;
159
160private:
161
167 vector<pair<AbstractVVSVertexPtr, AbstractFFSVertexPtr > > scalar_;
168
172 vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > fermion_;
173
177 vector<pair<AbstractVVVVertexPtr, AbstractFFVVertexPtr> > vector_;
178
182 vector<pair<AbstractRFVVertexPtr, AbstractRFVVertexPtr> > RSfermion_;
183
187 vector<pair<AbstractVVTVertexPtr, AbstractFFTVertexPtr> > tensor_;
188
192 vector<AbstractFFVVVertexPtr> four_;
194};
195
196}
197
198#endif /* HERWIG_MEvv2ff_H */
This defines the GeneralHardME class that is designed to serve as a base class for matrix elements of...
Definition: GeneralHardME.h:40
This class is designed to implement the matrix element for the process vector-vector to fermion-anti...
Definition: MEvv2ff.h:43
vector< pair< AbstractVVVVertexPtr, AbstractFFVVertexPtr > > vector_
Intermediate vector.
Definition: MEvv2ff.h:177
virtual void debug(double me2) const
A debugging function to test the value of me2 against an analytic function.
MEvv2ff & operator=(const MEvv2ff &)=delete
The assignment operator is private and must never be called.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEvv2ff.h:149
ProductionMatrixElement vv2ffME(const VBVector &v1, const VBVector &v2, const SpinorBarVector &sbar, const SpinorVector &sp, double &me2, bool first) const
Calculate the value of the matrix element.
vector< VectorWaveFunction > VBVector
A Vector of VectorWaveFunction objects.
Definition: MEvv2ff.h:48
vector< SpinorBarWaveFunction > SpinorBarVector
A vector of SpinorBarWaveFunction objects.
Definition: MEvv2ff.h:54
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
vector< pair< AbstractVVTVertexPtr, AbstractFFTVertexPtr > > tensor_
Intermediate tensor.
Definition: MEvv2ff.h:187
vector< pair< AbstractRFVVertexPtr, AbstractRFVVertexPtr > > RSfermion_
Intermediate RS fermion.
Definition: MEvv2ff.h:182
vector< pair< AbstractFFVVertexPtr, AbstractFFVVertexPtr > > fermion_
Intermediate fermion.
Definition: MEvv2ff.h:172
virtual void constructVertex(tSubProPtr sub)
Construct the vertex information for the spin correlations.
static void Init()
The standard Init function used to initialize the interfaces.
vector< pair< AbstractVVSVertexPtr, AbstractFFSVertexPtr > > scalar_
Intermediate scalar.
Definition: MEvv2ff.h:167
vector< AbstractFFVVVertexPtr > four_
Four point vertices.
Definition: MEvv2ff.h:192
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEvv2ff.h:143
vector< SpinorWaveFunction > SpinorVector
A vector of SpinorBarWaveFunction objects.
Definition: MEvv2ff.h:51
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
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