herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MEff2vs.h
1// -*- C++ -*-
2//
3// MEff2vs.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_MEff2vs_H
10#define HERWIG_MEff2vs_H
11//
12// This is the declaration of the MEff2vs class.
13//
14
15#include "GeneralHardME.h"
16#include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
17#include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
18#include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h"
19#include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
20#include "ThePEG/Helicity/Vertex/AbstractFFVSVertex.h"
21#include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
22#include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
23#include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
24#include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
25#include "Herwig/MatrixElement/ProductionMatrixElement.h"
26
27namespace Herwig {
28using namespace ThePEG;
33
44class MEff2vs: public GeneralHardME {
45
46public:
47
53 typedef vector<SpinorWaveFunction> SpinorVector;
54
58 typedef vector<SpinorBarWaveFunction> SpinorBarVector;
59
63 typedef vector<VectorWaveFunction> VBVector;
65
66public:
67
71 MEff2vs() : scalar_(0), vector_(0), fermion_(0) {}
72
82 virtual double me2() const;
84
89 virtual void constructVertex(tSubProPtr sub);
90
91public:
92
100
106 void persistentInput(PersistentIStream & is, int version);
108
115 static void Init();
116
117protected:
118
126 virtual void doinit();
128
129protected:
130
137 virtual IBPtr clone() const {return new_ptr(*this);}
138
143 virtual IBPtr fullclone() const {return new_ptr(*this);}
145
146private:
147
152 MEff2vs & operator=(const MEff2vs &) = delete;
153
154private:
155
172 VBVector & vec, ScalarWaveFunction & sca,
173 double & me2,bool first) const;
175
176
177private:
178
183 vector<pair<AbstractFFSVertexPtr, AbstractVSSVertexPtr> > scalar_;
184
189 vector<pair<AbstractFFVVertexPtr, AbstractVVSVertexPtr> > vector_;
190
195 vector<pair<AbstractFFVVertexPtr, AbstractFFSVertexPtr> > fermion_;
196
200 vector<AbstractFFVSVertexPtr> four_;
201};
202
203}
204
205#endif /* HERWIG_MEff2vs_H */
This defines the GeneralHardME class that is designed to serve as a base class for matrix elements of...
Definition: GeneralHardME.h:40
The MEff2vs class is designed to implement the matrix element for a fermion-antifermion to vector-sca...
Definition: MEff2vs.h:44
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
vector< SpinorBarWaveFunction > SpinorBarVector
A vector of SpinorWaveBarFunctions.
Definition: MEff2vs.h:58
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
MEff2vs()
The default constructor.
Definition: MEff2vs.h:71
vector< SpinorWaveFunction > SpinorVector
A vector of SpinorWaveFunctions.
Definition: MEff2vs.h:53
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEff2vs.h:137
MEff2vs & operator=(const MEff2vs &)=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: MEff2vs.h:143
virtual void constructVertex(tSubProPtr sub)
Construct the vertex information for the spin correlations.
vector< pair< AbstractFFVVertexPtr, AbstractVVSVertexPtr > > vector_
Storage for dynamically cast vertices for a diagram with intermediate vector.
Definition: MEff2vs.h:189
vector< pair< AbstractFFSVertexPtr, AbstractVSSVertexPtr > > scalar_
Storage for dynamically cast vertices for a diagram with intermediate scalar.
Definition: MEff2vs.h:183
vector< VectorWaveFunction > VBVector
A vector of VectorWaveFunctions.
Definition: MEff2vs.h:63
vector< pair< AbstractFFVVertexPtr, AbstractFFSVertexPtr > > fermion_
Storage for dynamically cast vertices for a diagram with intermediate fermion.
Definition: MEff2vs.h:195
ProductionMatrixElement ffb2vsHeME(SpinorVector &sp, SpinorBarVector &spbar, VBVector &vec, ScalarWaveFunction &sca, double &me2, bool first) const
Compute the matrix element for .
vector< AbstractFFVSVertexPtr > four_
Four point vertices.
Definition: MEff2vs.h:200
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
static void Init()
The standard Init function used to initialize the interfaces.
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