herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MEQCD2to2.h
1// -*- C++ -*-
2//
3// MEQCD2to2.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_MEQCD2to2_H
10#define HERWIG_MEQCD2to2_H
11//
12// This is the declaration of the MEQCD2to2 class.
13//
14
15#include "Herwig/MatrixElement/HwMEBase.h"
16#include "Herwig/MatrixElement/ProductionMatrixElement.h"
17#include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
18#include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
19#include "ThePEG/Helicity/Vertex/AbstractVVVVVertex.h"
20#include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
21#include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
22#include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
23
24namespace Herwig {
25using namespace ThePEG;
26using namespace ThePEG::Helicity;
27
35class MEQCD2to2: public HwMEBase {
36
37public:
38
43
50 virtual unsigned int orderInAlphaS() const;
51
56 virtual unsigned int orderInAlphaEW() const;
57
65 virtual double me2() const;
66
70 virtual Energy2 scale() const;
71
75 virtual void getDiagrams() const;
76
86
95 colourGeometries(tcDiagPtr diag) const;
96
102
103public:
104
112
118 void persistentInput(PersistentIStream & is, int version);
120
127 static void Init();
128
129protected:
130
143 double gg2ggME(vector<VectorWaveFunction> &g1,vector<VectorWaveFunction> &g2,
144 vector<VectorWaveFunction> &g3,vector<VectorWaveFunction> &g4,
145 unsigned int flow) const;
146
155 double gg2qqbarME(vector<VectorWaveFunction> &g1,vector<VectorWaveFunction> &g2,
156 vector<SpinorBarWaveFunction> & q,vector<SpinorWaveFunction> & qbar,
157 unsigned int flow) const;
158
167 double qqbar2ggME(vector<SpinorWaveFunction> & q,vector<SpinorBarWaveFunction> & qbar,
168 vector<VectorWaveFunction> &g1,vector<VectorWaveFunction> &g2,
169 unsigned int flow) const;
170
179 double qg2qgME(vector<SpinorWaveFunction> & qin,vector<VectorWaveFunction> &g2,
180 vector<SpinorBarWaveFunction> & qout,vector<VectorWaveFunction> &g4,
181 unsigned int flow) const;
182
191 double qbarg2qbargME(vector<SpinorBarWaveFunction> & qin,
192 vector<VectorWaveFunction> &g2,
193 vector<SpinorWaveFunction> & qout,vector<VectorWaveFunction> &g4,
194 unsigned int flow) const;
195
204 double qq2qqME(vector<SpinorWaveFunction> & q1, vector<SpinorWaveFunction> & q2,
205 vector<SpinorBarWaveFunction> & q3, vector<SpinorBarWaveFunction> & q4,
206 unsigned int flow) const;
207
216 double qbarqbar2qbarqbarME(vector<SpinorBarWaveFunction> & q1,
217 vector<SpinorBarWaveFunction> & q2,
218 vector<SpinorWaveFunction> & q3,
219 vector<SpinorWaveFunction> & q4,
220 unsigned int flow) const;
221
230 double qqbar2qqbarME(vector<SpinorWaveFunction> & q1,
231 vector<SpinorBarWaveFunction> & q2,
232 vector<SpinorBarWaveFunction> & q3,
233 vector<SpinorWaveFunction> & q4,
234 unsigned int flow) const;
236
237protected:
238
245 virtual IBPtr clone() const { return new_ptr(*this); }
246
251 virtual IBPtr fullclone() const { return new_ptr(*this); }
253
254protected:
255
263 virtual void doinit();
264
274 virtual void rebind(const TranslationMap & trans)
275 ;
276
284
285
286private:
287
292 MEQCD2to2 & operator=(const MEQCD2to2 &) = delete;
293
294private:
295
303 AbstractVVVVVertexPtr _ggggvertex;
304
308 AbstractVVVVertexPtr _gggvertex;
309
313 AbstractFFVVertexPtr _qqgvertex;
315
319 unsigned int _maxflavour;
320
324 unsigned int _process;
325
329 mutable unsigned int _flow;
330
334 mutable unsigned int _diagram;
335
340
349
353 vector<PDPtr> _quark;
354
358 vector<PDPtr> _antiquark;
360};
361
362}
363
364#endif /* HERWIG_MEQCD2to2_H */
The HwMEBase class serves a number of purposes.
Definition: HwMEBase.h:35
The MEQCD2to2 class provides the matrix elements for QCD scattering processes in hadron-hadron colli...
Definition: MEQCD2to2.h:35
PDPtr _gluon
ParticleData objects of the partons.
Definition: MEQCD2to2.h:348
double qqbar2qqbarME(vector< SpinorWaveFunction > &q1, vector< SpinorBarWaveFunction > &q2, vector< SpinorBarWaveFunction > &q3, vector< SpinorWaveFunction > &q4, unsigned int flow) const
Matrix element for .
AbstractFFVVertexPtr _qqgvertex
vertex
Definition: MEQCD2to2.h:313
virtual void rebind(const TranslationMap &trans)
Rebind pointer to other Interfaced objects.
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
MEQCD2to2 & operator=(const MEQCD2to2 &)=delete
The assignment operator is private and must never be called.
unsigned int _maxflavour
Maximum numbere of quark flavours to include.
Definition: MEQCD2to2.h:319
unsigned int _flow
Colour flow.
Definition: MEQCD2to2.h:329
double gg2ggME(vector< VectorWaveFunction > &g1, vector< VectorWaveFunction > &g2, vector< VectorWaveFunction > &g3, vector< VectorWaveFunction > &g4, unsigned int flow) const
Members to calculate the matrix elements.
double qqbar2ggME(vector< SpinorWaveFunction > &q, vector< SpinorBarWaveFunction > &qbar, vector< VectorWaveFunction > &g1, vector< VectorWaveFunction > &g2, unsigned int flow) const
Matrix element for .
virtual void getDiagrams() const
Add all possible diagrams with the add() function.
virtual Selector< const ColourLines * > colourGeometries(tcDiagPtr diag) const
Return a Selector with possible colour geometries for the selected diagram weighted by their relative...
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEQCD2to2.h:245
double qg2qgME(vector< SpinorWaveFunction > &qin, vector< VectorWaveFunction > &g2, vector< SpinorBarWaveFunction > &qout, vector< VectorWaveFunction > &g4, unsigned int flow) const
Matrix element for .
vector< PDPtr > _quark
the quarks
Definition: MEQCD2to2.h:353
unsigned int _process
Processes to include.
Definition: MEQCD2to2.h:324
AbstractVVVVertexPtr _gggvertex
vertex
Definition: MEQCD2to2.h:308
double qbarg2qbargME(vector< SpinorBarWaveFunction > &qin, vector< VectorWaveFunction > &g2, vector< SpinorWaveFunction > &qout, vector< VectorWaveFunction > &g4, unsigned int flow) const
Matrix elements for .
virtual Selector< DiagramIndex > diagrams(const DiagramVector &dv) const
Get diagram selector.
virtual void constructVertex(tSubProPtr)
Construct the vertex of spin correlations.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
virtual unsigned int orderInAlphaEW() const
Return the order in in which this matrix element is given.
vector< PDPtr > _antiquark
the antiquarks
Definition: MEQCD2to2.h:358
virtual Energy2 scale() const
Return the scale associated with the last set phase space point.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEQCD2to2.h:251
AbstractVVVVVertexPtr _ggggvertex
Vertices needed to compute the diagrams.
Definition: MEQCD2to2.h:303
double qbarqbar2qbarqbarME(vector< SpinorBarWaveFunction > &q1, vector< SpinorBarWaveFunction > &q2, vector< SpinorWaveFunction > &q3, vector< SpinorWaveFunction > &q4, unsigned int flow) const
Matrix element for .
MEQCD2to2()
The default constructor.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
unsigned int _diagram
Diagram.
Definition: MEQCD2to2.h:334
ProductionMatrixElement _me
Matrix element.
Definition: MEQCD2to2.h:339
double qq2qqME(vector< SpinorWaveFunction > &q1, vector< SpinorWaveFunction > &q2, vector< SpinorBarWaveFunction > &q3, vector< SpinorBarWaveFunction > &q4, unsigned int flow) const
Matrix element for .
virtual unsigned int orderInAlphaS() const
Return the order in in which this matrix element is given.
double gg2qqbarME(vector< VectorWaveFunction > &g1, vector< VectorWaveFunction > &g2, vector< SpinorBarWaveFunction > &q, vector< SpinorWaveFunction > &qbar, unsigned int flow) const
Matrix element for .
static void Init()
The standard Init function used to initialize the interfaces.
virtual IVector getReferences()
Return a vector of all pointers to Interfaced objects used in this object.
The storage of the helicity amplitude expression for the matrix element of a hard process.
vector< DiagPtr > DiagramVector
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
ThePEG::Ptr< ParticleData >::pointer PDPtr
vector< IBPtr > IVector