herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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 
17 namespace Herwig {
18 
19 using namespace ThePEG;
20 
28 
29 public:
30 
36  MatchboxOLPME();
37 
41  virtual ~MatchboxOLPME();
43 
44 public:
45 
49  virtual bool canHandle(const PDVector& p,
50  Ptr<MatchboxFactory>::tptr,
51  bool) const;
52 
57  virtual void orderInGs(unsigned int ogs) { theOrderInGs = ogs; }
58 
63  virtual unsigned int orderInGs() const { return theOrderInGs; }
64 
69  virtual void orderInGem(unsigned int oge) { theOrderInGem = oge; }
70 
75  virtual unsigned int orderInGem() const { return theOrderInGem; }
76 
80  virtual bool isOLPTree() const { return true; }
81 
85  virtual bool isOLPLoop() const { return true; }
86 
91  virtual bool haveColourFlows() const { return false; }
92 
96  virtual void setXComb(tStdXCombPtr xc);
97 
102  virtual void prepareAmplitudes(Ptr<MatchboxMEBase>::tcptr) {}
103 
107  virtual double me2() const;
108 
112  virtual double colourCorrelatedME2(pair<int,int> ij) const;
113 
117  virtual double largeNColourCorrelatedME2(pair<int,int>,
118  Ptr<ColourBasis>::tptr) const;
119 
123  virtual double largeNME2(Ptr<ColourBasis>::tptr largeNBasis) const;
124 
128  virtual double spinColourCorrelatedME2(pair<int,int> ij,
129  const SpinCorrelationTensor& c) const;
130 
134  virtual double spinCorrelatedME2(pair<int,int> ij,
135  const SpinCorrelationTensor& c) const;
136 
140  virtual bool treeAmplitudes() const { return false; }
141 
146  virtual bool haveOneLoop() const { return true; }
147 
152  virtual bool onlyOneLoop() const { return false; }
153 
157  virtual bool oneLoopAmplitudes() const { return false; }
158 
163  virtual bool isExpanded() const { return true; }
164 
170  virtual Energy2 mu2() const;
171 
175  virtual bool hasRunningAlphaS() const;
176 
180  virtual bool hasRunningAlphaEW() const;
181 
185  virtual double oneLoopDoublePole() const;
186 
190  virtual double oneLoopSinglePole() const;
191 
196  virtual void prepareOneLoopAmplitudes(Ptr<MatchboxMEBase>::tcptr) {}
197 
201  virtual double oneLoopInterference() const;
202 
203 public:
204 
208  virtual void evalSubProcess() const = 0;
209 
213  virtual void evalColourCorrelator(pair<int,int> ij) const = 0;
214 
218  virtual void evalSpinColourCorrelator(pair<int,int> ij) const = 0;
219 
223  virtual void evalSpinCorrelator(pair<int,int> ij) const;
224 
225 public:
226 
233  void persistentOutput(PersistentOStream & os) const;
234 
240  void persistentInput(PersistentIStream & is, int version);
242 
249  static void Init();
250 
251 
252 // If needed, insert declarations of virtual function defined in the
253 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
254 
255 
256 protected:
257 
265  virtual void doinit();
266 
271  virtual void doinitrun();
273 
277  static string& optionalContractFile() {
278  static string s = "";
279  return s;
280  }
281 
285  static bool& didStartOLP() {
286  static bool f = false;
287  return f;
288  }
289 
290 private:
291 
296  MatchboxOLPME & operator=(const MatchboxOLPME &) = delete;
297 
302  unsigned int theOrderInGs;
303 
308  unsigned int theOrderInGem;
309 
315 
321 
327 
328 };
329 
330 }
331 
332 #endif /* Herwig_MatchboxOLPME_H */
virtual bool isExpanded() const
Return true, if one loop corrections are given in the conventions of everything expanded.
unsigned int theOrderInGs
The (tree-level) order in in which this matrix element is given.
virtual bool oneLoopAmplitudes() const
Return true, if one-loop contributions will be evaluated at amplitude level.
virtual void orderInGem(unsigned int oge)
Set the (tree-level) order in in which this matrix element should be evaluated.
Definition: MatchboxOLPME.h:69
virtual bool isOLPTree() const
Return true, if this amplitude is handled by a BLHA one-loop provider.
Definition: MatchboxOLPME.h:80
virtual bool treeAmplitudes() const
Return true, if tree-level contributions will be evaluated at amplitude level.
virtual unsigned int orderInGem() const
Return the (tree-level) order in in which this matrix element is given.
Definition: MatchboxOLPME.h:75
virtual void prepareOneLoopAmplitudes(Ptr< MatchboxMEBase >::tcptr)
Calculate the one-loop amplitudes for the phasespace point stored in lastXComb, if provided...
MatchboxAmplitude is the base class for amplitude implementations inside Matchbox.
static bool & didStartOLP()
Indicate that the OLP has been started.
virtual bool isOLPLoop() const
Return true, if this amplitude is handled by a BLHA one-loop provider.
Definition: MatchboxOLPME.h:85
bool theSetMuToMuR
Set the value of the dimensional regularization parameter to the value of the renormalization scale...
virtual bool haveOneLoop() const
Return true, if this amplitude is capable of calculating one-loop (QCD) corrections.
static string & optionalContractFile()
Set an optional contract file name to be used.
virtual bool haveColourFlows() const
Return true, if the colour basis is capable of assigning colour flows.
Definition: MatchboxOLPME.h:91
virtual unsigned int orderInGs() const
Return the (tree-level) order in in which this matrix element is given.
Definition: MatchboxOLPME.h:63
virtual void orderInGs(unsigned int ogs)
Set the (tree-level) order in in which this matrix element should be evaluated.
Definition: MatchboxOLPME.h:57
unsigned int theOrderInGem
The (tree-level) order in in which this matrix element is given.
-*- C++ -*-
vector< PDPtr > PDVector
virtual bool onlyOneLoop() const
Return true, if this amplitude only provides one-loop (QCD) corrections.
bool theUseRunningAlphaS
Use the running alpha_s instead of the reference alpha_s.
virtual void prepareAmplitudes(Ptr< MatchboxMEBase >::tcptr)
Calculate the tree level amplitudes for the phasespace point stored in lastXComb. ...
MatchboxOLPME implements OLP interfaces.
Definition: MatchboxOLPME.h:27
bool theUseRunningAlphaEW
Use the running alpha_ew instead of the reference alpha_ew.
SpinCorrelationTensor represents a spin correlation tensor of the form.