herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MEff2vv.h
1// -*- C++ -*-
2//
3// MEff2vv.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_MEff2vv_H
10#define HERWIG_MEff2vv_H
11//
12// This is the declaration of the MEff2vv class.
13//
14
15#include "GeneralHardME.h"
16#include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
17#include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h"
18#include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
19#include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
20#include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h"
21#include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
22#include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
23#include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
24#include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
25#include "Herwig/MatrixElement/ProductionMatrixElement.h"
26
27namespace Herwig {
28using namespace ThePEG;
32
40class MEff2vv: public GeneralHardME {
41public:
42
44 typedef vector<SpinorWaveFunction> SpinorVector;
45
47 typedef vector<SpinorBarWaveFunction> SpinorBarVector;
48
50 typedef vector<VectorWaveFunction> VBVector;
51
52public:
53
57 MEff2vv() : vector_(0), tensor_(0), scalar_(0) {}
58
68 virtual double me2() const;
70
75 virtual void constructVertex(tSubProPtr sub);
76
77
78protected:
79
85 virtual void debug(double me2) const;
86
87private:
88
102 ff2vvME(const SpinorVector & sp, const SpinorBarVector sbar,
103 const VBVector & v1, bool m1, const VBVector & v2, bool m2,
104 double & me2, bool first) const;
105
106public:
107
115
121 void persistentInput(PersistentIStream & is, int version);
123
130 static void Init();
131
132protected:
133
140 virtual IBPtr clone() const {return new_ptr(*this);}
141
146 virtual IBPtr fullclone() const {return new_ptr(*this);}
148
149protected:
150
158 virtual void doinit();
160
161private:
162
167 MEff2vv & operator=(const MEff2vv &) = delete;
168
169private:
170
175 vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > fermion_;
176
181 vector<pair<AbstractFFVVertexPtr, AbstractVVVVertexPtr> > vector_;
182
187 vector<pair<AbstractFFTVertexPtr, AbstractVVTVertexPtr> > tensor_;
188
193 vector<pair<AbstractFFSVertexPtr, AbstractVVSVertexPtr> > scalar_;
194};
195
196}
197
198#endif /* HERWIG_MEff2vv_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 calculation for a generic process.
Definition: MEff2vv.h:40
vector< pair< AbstractFFVVertexPtr, AbstractVVVVertexPtr > > vector_
Storage for a dynamically cast vertices for a schannel vector intermediate.
Definition: MEff2vv.h:181
virtual void debug(double me2) const
A debugging function to test the value of me2 against an analytic function.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
vector< SpinorWaveFunction > SpinorVector
Vector of SpinorWaveFunctions objects.
Definition: MEff2vv.h:44
MEff2vv()
The default constructor.
Definition: MEff2vv.h:57
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
virtual void constructVertex(tSubProPtr sub)
Construct the vertex information for the spin correlations.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
vector< pair< AbstractFFTVertexPtr, AbstractVVTVertexPtr > > tensor_
Storage for a dynamically cast vertices for a schannel scalar intermediate.
Definition: MEff2vv.h:187
ProductionMatrixElement ff2vvME(const SpinorVector &sp, const SpinorBarVector sbar, const VBVector &v1, bool m1, const VBVector &v2, bool m2, double &me2, bool first) const
Compute the production matrix element.
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEff2vv.h:140
MEff2vv & operator=(const MEff2vv &)=delete
The assignment operator is private and must never be called.
vector< pair< AbstractFFSVertexPtr, AbstractVVSVertexPtr > > scalar_
Storage for a dynamically cast vertices for a schannel scalar intermediate for massless external vect...
Definition: MEff2vv.h:193
vector< pair< AbstractFFVVertexPtr, AbstractFFVVertexPtr > > fermion_
Storage for a dynamically cast vertices for a tchannel vector intermediate.
Definition: MEff2vv.h:175
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEff2vv.h:146
static void Init()
The standard Init function used to initialize the interfaces.
vector< VectorWaveFunction > VBVector
Vector of VectorWaveFunction objects.
Definition: MEff2vv.h:50
vector< SpinorBarWaveFunction > SpinorBarVector
Vector of SpinorBarWaveFunction objects.
Definition: MEff2vv.h:47
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
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