herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MEfv2vf.h
1// -*- C++ -*-
2//
3// MEfv2vf.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_MEfv2vf_H
10#define HERWIG_MEfv2vf_H
11//
12// This is the declaration of the MEfv2vf class.
13//
14
15#include "GeneralHardME.h"
16#include "Herwig/MatrixElement/ProductionMatrixElement.h"
17#include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
18#include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
19#include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
20#include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
21#include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
22#include "ThePEG/Helicity/Vertex/AbstractFFVVVertex.h"
23
24namespace Herwig {
25using namespace ThePEG;
26
35class MEfv2vf: public GeneralHardME {
36
37public:
38
40 typedef vector<Helicity::SpinorWaveFunction> SpinorVector;
41
43 typedef vector<Helicity::SpinorBarWaveFunction> SpinorBarVector;
44
46 typedef vector<Helicity::VectorWaveFunction> VBVector;
47
48public:
49
59 virtual double me2() const;
61
66 virtual void constructVertex(tSubProPtr sub);
67
68private:
69
84 fv2vfHeME(const SpinorVector & spIn, const VBVector & vecIn,
85 const VBVector & vecOut, bool mc,
86 const SpinorBarVector & spbOut,
87 double & mesq, bool first) const;
88
101 fbv2vfbHeME(const SpinorBarVector & spbIn, const VBVector & vecIn,
102 const VBVector & vecOut, bool mc,
103 const SpinorVector & spOut,
104 double & mesq, bool first) const;
106
107protected:
108
114 virtual void debug(double me2) const;
115
116public:
117
125
131 void persistentInput(PersistentIStream & is, int version);
133
140 static void Init();
141
142
143protected:
144
152 virtual void doinit();
154
155protected:
156
163 virtual IBPtr clone() const {return new_ptr(*this);}
164
169 virtual IBPtr fullclone() const {return new_ptr(*this);}
171
172private:
173
178 MEfv2vf & operator=(const MEfv2vf &) = delete;
179
180private:
181
187 vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > fermion_;
188
192 vector<pair<AbstractFFVVertexPtr, AbstractVVVVertexPtr> > vector_;
193
197 vector<AbstractFFVVVertexPtr> four_;
199
200};
201
202}
203
204#endif /* HERWIG_MEfv2vf_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 implements the matrix element for a fermion and a vector boson to a fermion and a vector b...
Definition: MEfv2vf.h:35
vector< AbstractFFVVVertexPtr > four_
Four point vertices.
Definition: MEfv2vf.h:197
static void Init()
The standard Init function used to initialize the interfaces.
vector< Helicity::SpinorBarWaveFunction > SpinorBarVector
A vector of SpinorBarWaveFunctions.
Definition: MEfv2vf.h:43
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEfv2vf.h:169
vector< pair< AbstractFFVVertexPtr, AbstractFFVVertexPtr > > fermion_
A pair off FFVVertex pointers.
Definition: MEfv2vf.h:187
vector< pair< AbstractFFVVertexPtr, AbstractVVVVertexPtr > > vector_
A pair of FFVVertex, VVVertex pointers.
Definition: MEfv2vf.h:192
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
ProductionMatrixElement fbv2vfbHeME(const SpinorBarVector &spbIn, const VBVector &vecIn, const VBVector &vecOut, bool mc, const SpinorVector &spOut, double &mesq, bool first) const
Calculate the matrix element for an incoming anti-fermion.
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
MEfv2vf & operator=(const MEfv2vf &)=delete
The assignment operator is private and must never be called.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
vector< Helicity::VectorWaveFunction > VBVector
A vector of VectorWaveFunctions.
Definition: MEfv2vf.h:46
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
ProductionMatrixElement fv2vfHeME(const SpinorVector &spIn, const VBVector &vecIn, const VBVector &vecOut, bool mc, const SpinorBarVector &spbOut, double &mesq, bool first) const
Calculate the matrix element for an incoming fermion.
vector< Helicity::SpinorWaveFunction > SpinorVector
A vector of SpinorWaveFunctions.
Definition: MEfv2vf.h:40
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEfv2vf.h:163
virtual void debug(double me2) const
A debugging function to test the value of me2 against an analytic function.
virtual void constructVertex(tSubProPtr sub)
Construct the vertex information for the spin correlations.
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