herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MatchboxOLPME.h
1// -*- C++ -*-
2//
3// MatchboxOLPME.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_MatchboxOLPME_H
10#define Herwig_MatchboxOLPME_H
11//
12// This is the declaration of the MatchboxOLPME class.
13//
14
15#include "Herwig/MatrixElement/Matchbox/Base/MatchboxAmplitude.h"
16
17namespace Herwig {
18
19using namespace ThePEG;
20
28
29public:
30
35
36public:
37
41 virtual bool canHandle(const PDVector& p,
42 Ptr<MatchboxFactory>::tptr,
43 bool) const;
44
49 virtual void orderInGs(unsigned int ogs) { theOrderInGs = ogs; }
50
55 virtual unsigned int orderInGs() const { return theOrderInGs; }
56
61 virtual void orderInGem(unsigned int oge) { theOrderInGem = oge; }
62
67 virtual unsigned int orderInGem() const { return theOrderInGem; }
68
72 virtual bool isOLPTree() const { return true; }
73
77 virtual bool isOLPLoop() const { return true; }
78
83 virtual bool haveColourFlows() const { return false; }
84
88 virtual void setXComb(tStdXCombPtr xc);
89
94 virtual void prepareAmplitudes(Ptr<MatchboxMEBase>::tcptr) {}
95
99 virtual double me2() const;
100
104 virtual double colourCorrelatedME2(pair<int,int> ij) const;
105
109 virtual double largeNColourCorrelatedME2(pair<int,int>,
110 Ptr<ColourBasis>::tptr) const;
111
115 virtual double largeNME2(Ptr<ColourBasis>::tptr largeNBasis) const;
116
120 virtual double spinColourCorrelatedME2(pair<int,int> ij,
121 const SpinCorrelationTensor& c) const;
122
126 virtual double spinCorrelatedME2(pair<int,int> ij,
127 const SpinCorrelationTensor& c) const;
128
132 virtual bool treeAmplitudes() const { return false; }
133
138 virtual bool haveOneLoop() const { return true; }
139
144 virtual bool onlyOneLoop() const { return false; }
145
149 virtual bool oneLoopAmplitudes() const { return false; }
150
155 virtual bool isExpanded() const { return true; }
156
162 virtual Energy2 mu2() const;
163
167 virtual bool hasRunningAlphaS() const;
168
172 virtual bool hasRunningAlphaEW() const;
173
177 virtual double oneLoopDoublePole() const;
178
182 virtual double oneLoopSinglePole() const;
183
188 virtual void prepareOneLoopAmplitudes(Ptr<MatchboxMEBase>::tcptr) {}
189
193 virtual double oneLoopInterference() const;
194
195public:
196
200 virtual void evalSubProcess() const = 0;
201
205 virtual void evalColourCorrelator(pair<int,int> ij) const = 0;
206
210 virtual void evalSpinColourCorrelator(pair<int,int> ij) const = 0;
211
215 virtual void evalSpinCorrelator(pair<int,int> ij) const;
216
217public:
218
226
232 void persistentInput(PersistentIStream & is, int version);
234
241 static void Init();
242
243
244// If needed, insert declarations of virtual function defined in the
245// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
246
247
248protected:
249
257 virtual void doinit();
258
263 virtual void doinitrun();
265
269 static string& optionalContractFile() {
270 static string s = "";
271 return s;
272 }
273
277 static bool& didStartOLP() {
278 static bool f = false;
279 return f;
280 }
281
282private:
283
289
294 unsigned int theOrderInGs;
295
300 unsigned int theOrderInGem;
301
307
313
319
320};
321
322}
323
324#endif /* Herwig_MatchboxOLPME_H */
MatchboxAmplitude is the base class for amplitude implementations inside Matchbox.
MatchboxOLPME implements OLP interfaces.
Definition: MatchboxOLPME.h:27
virtual unsigned int orderInGem() const
Return the (tree-level) order in in which this matrix element is given.
Definition: MatchboxOLPME.h:67
virtual double spinCorrelatedME2(pair< int, int > ij, const SpinCorrelationTensor &c) const
Return the spin correlated matrix element.
virtual void doinitrun()
Initialize this object.
virtual double colourCorrelatedME2(pair< int, int > ij) const
Return the colour correlated matrix element.
virtual bool treeAmplitudes() const
Return true, if tree-level contributions will be evaluated at amplitude level.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
MatchboxOLPME()
The default constructor.
virtual void evalSubProcess() const =0
Call OLP_EvalSubProcess and fill in the results.
bool theUseRunningAlphaEW
Use the running alpha_ew instead of the reference alpha_ew.
virtual bool hasRunningAlphaEW() const
Indicate that this amplitude is running alphaew by itself.
virtual bool isOLPLoop() const
Return true, if this amplitude is handled by a BLHA one-loop provider.
Definition: MatchboxOLPME.h:77
virtual void prepareOneLoopAmplitudes(Ptr< MatchboxMEBase >::tcptr)
Calculate the one-loop amplitudes for the phasespace point stored in lastXComb, if provided.
virtual double largeNME2(Ptr< ColourBasis >::tptr largeNBasis) const
Return the largeN matrix element squared.
virtual Energy2 mu2() const
Return the value of the dimensional regularization parameter.
static string & optionalContractFile()
Set an optional contract file name to be used.
virtual void evalSpinCorrelator(pair< int, int > ij) const
Fill in results for the given spin correlator; may not be supported.
MatchboxOLPME & operator=(const MatchboxOLPME &)=delete
The assignment operator is private and must never be called.
virtual bool onlyOneLoop() const
Return true, if this amplitude only provides one-loop (QCD) corrections.
virtual void evalSpinColourCorrelator(pair< int, int > ij) const =0
Fill in results for the given colour/spin correlator.
virtual bool isOLPTree() const
Return true, if this amplitude is handled by a BLHA one-loop provider.
Definition: MatchboxOLPME.h:72
virtual unsigned int orderInGs() const
Return the (tree-level) order in in which this matrix element is given.
Definition: MatchboxOLPME.h:55
virtual double oneLoopSinglePole() const
If defined, return the coefficient of the pole in epsilon.
bool theUseRunningAlphaS
Use the running alpha_s instead of the reference alpha_s.
bool theSetMuToMuR
Set the value of the dimensional regularization parameter to the value of the renormalization scale.
virtual bool canHandle(const PDVector &p, Ptr< MatchboxFactory >::tptr, bool) const
Return true, if this amplitude can handle the given process.
virtual bool oneLoopAmplitudes() const
Return true, if one-loop contributions will be evaluated at amplitude level.
virtual double spinColourCorrelatedME2(pair< int, int > ij, const SpinCorrelationTensor &c) const
Return the colour and spin correlated matrix element.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual double oneLoopInterference() const
Return the one-loop/tree interference.
virtual double largeNColourCorrelatedME2(pair< int, int >, Ptr< ColourBasis >::tptr) const
Return the large-N colour correlated matrix element.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual double me2() const
Return the matrix element squared.
virtual void orderInGs(unsigned int ogs)
Set the (tree-level) order in in which this matrix element should be evaluated.
Definition: MatchboxOLPME.h:49
virtual void setXComb(tStdXCombPtr xc)
Set the xcomb object.
unsigned int theOrderInGem
The (tree-level) order in in which this matrix element is given.
virtual void orderInGem(unsigned int oge)
Set the (tree-level) order in in which this matrix element should be evaluated.
Definition: MatchboxOLPME.h:61
unsigned int theOrderInGs
The (tree-level) order in in which this matrix element is given.
static void Init()
The standard Init function used to initialize the interfaces.
virtual bool isExpanded() const
Return true, if one loop corrections are given in the conventions of everything expanded.
virtual void prepareAmplitudes(Ptr< MatchboxMEBase >::tcptr)
Calculate the tree level amplitudes for the phasespace point stored in lastXComb.
Definition: MatchboxOLPME.h:94
virtual double oneLoopDoublePole() const
If defined, return the coefficient of the pole in epsilon^2.
virtual void evalColourCorrelator(pair< int, int > ij) const =0
Fill in results for the given colour correlator.
virtual bool haveColourFlows() const
Return true, if the colour basis is capable of assigning colour flows.
Definition: MatchboxOLPME.h:83
static bool & didStartOLP()
Indicate that the OLP has been started.
virtual bool hasRunningAlphaS() const
Indicate that this amplitude is running alphas by itself.
virtual bool haveOneLoop() const
Return true, if this amplitude is capable of calculating one-loop (QCD) corrections.
SpinCorrelationTensor represents a spin correlation tensor of the form.
-*- C++ -*-
vector< PDPtr > PDVector