herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MEff2ss.h
1// -*- C++ -*-
2//
3// MEff2ss.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_MEff2ss_H
10#define HERWIG_MEff2ss_H
11//
12// This is the declaration of the MEff2ss class.
13//
14
15#include "GeneralHardME.h"
16#include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
17#include "ThePEG/Helicity/Vertex/AbstractRFSVertex.h"
18#include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
19#include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h"
20#include "ThePEG/Helicity/Vertex/AbstractSSSVertex.h"
21#include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h"
22#include "ThePEG/Helicity/Vertex/AbstractSSTVertex.h"
23#include "ThePEG/Helicity/Vertex/AbstractFFSSVertex.h"
24#include "Herwig/MatrixElement/ProductionMatrixElement.h"
25
26namespace Herwig {
27using namespace ThePEG;
31
40class MEff2ss: public GeneralHardME {
41
42public:
43
45 typedef vector<SpinorWaveFunction> SpinorVector;
46
48 typedef vector<SpinorBarWaveFunction> SpinorBarVector;
49
50public:
51
61 virtual double me2() const;
63
68 virtual void constructVertex(tSubProPtr sub);
69
70protected:
71
77 virtual void debug(double me2) const;
78
79public:
80
88
94 void persistentInput(PersistentIStream & is, int version);
96
103 static void Init();
104
105
106protected:
107
115 virtual void doinit();
117
118protected:
119
126 virtual IBPtr clone() const {return new_ptr(*this);}
127
132 virtual IBPtr fullclone() const {return new_ptr(*this);}
134
135private:
136
141 MEff2ss & operator=(const MEff2ss &) = delete;
142
143private:
144
156 const SpinorBarVector & sbar,
157 const ScalarWaveFunction & sca1,
158 const ScalarWaveFunction & sca2,
159 double & me2, bool first) const;
160
161private:
162
167 vector<pair<AbstractFFSVertexPtr, AbstractSSSVertexPtr> > scalar_;
168
173 vector<pair<AbstractFFSVertexPtr, AbstractFFSVertexPtr> > fermion_;
174
179 vector<pair<AbstractFFVVertexPtr, AbstractVSSVertexPtr> > vector_;
180
185 vector<pair<AbstractRFSVertexPtr, AbstractRFSVertexPtr> > RSfermion_;
186
191 vector<pair<AbstractFFTVertexPtr, AbstractSSTVertexPtr> > tensor_;
192
196 vector<AbstractFFSSVertexPtr> fourPoint_;
197};
198
199}
200
201#endif /* HERWIG_MEff2ss_H */
This defines the GeneralHardME class that is designed to serve as a base class for matrix elements of...
Definition: GeneralHardME.h:40
The MEff2ss class is designed to implement the matrix element for a fermion-antifermion to scalar-sca...
Definition: MEff2ss.h:40
vector< pair< AbstractFFVVertexPtr, AbstractVSSVertexPtr > > vector_
Storage for dynamically cast vertices for a diagram with intermediate vector.
Definition: MEff2ss.h:179
vector< SpinorWaveFunction > SpinorVector
Vector of SpinorWaveFunctions objects.
Definition: MEff2ss.h:45
ProductionMatrixElement ff2ssME(const SpinorVector &sp, const SpinorBarVector &sbar, const ScalarWaveFunction &sca1, const ScalarWaveFunction &sca2, double &me2, bool first) const
Calculate the matrix element.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEff2ss.h:132
vector< SpinorBarWaveFunction > SpinorBarVector
Vector of SpinorBarWaveFunction objects.
Definition: MEff2ss.h:48
MEff2ss & operator=(const MEff2ss &)=delete
The assignment operator is private and must never be called.
vector< pair< AbstractFFSVertexPtr, AbstractFFSVertexPtr > > fermion_
Storage for dynamically cast vertices for a diagram with intermediate fermion.
Definition: MEff2ss.h:173
static void Init()
The standard Init function used to initialize the interfaces.
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< AbstractFFSSVertexPtr > fourPoint_
Storage for dynamically cast 4 point vertices.
Definition: MEff2ss.h:196
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
virtual void debug(double me2) const
A debugging function to test the value of me2 against an analytic function.
vector< pair< AbstractFFTVertexPtr, AbstractSSTVertexPtr > > tensor_
Storage for dynamically cast vertices for a diagram with intermediate tensor.
Definition: MEff2ss.h:191
vector< pair< AbstractFFSVertexPtr, AbstractSSSVertexPtr > > scalar_
Storage for dynamically cast vertices for a diagram with intermediate vector.
Definition: MEff2ss.h:167
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEff2ss.h:126
vector< pair< AbstractRFSVertexPtr, AbstractRFSVertexPtr > > RSfermion_
Storage for dynamically cast vertices for a diagram with intermediate fermion.
Definition: MEff2ss.h:185
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