herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
OpenLoopsAmplitude.h
1// -*- C++ -*-
2//
3// OpenLoopsAmplitude.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_OpenLoopsAmplitude_H
10#define Herwig_OpenLoopsAmplitude_H
11//
12// This is the declaration of the OpenLoopsAmplitude class.
13//
14
15#include "Herwig/MatrixElement/Matchbox/Base/MatchboxOLPME.h"
16#include "Herwig/Models/StandardModel/StandardCKM.h"
17
18namespace Herwig {
19
20using namespace ThePEG;
21
29
30public:
31
36
40 OpenLoopsProcInfo(int HID,int GID, string procstr,string typestr)
41 : theHOlpId(HID), theGOlpId(GID), theProcstr(procstr), theTypestr(typestr) {}
42
46 int HID() const { return theHOlpId; }
47
51 int GID() const { return theGOlpId; }
52
56 const string& Pstr() const { return theProcstr; }
57
61 const string& Tstr() const { return theTypestr; }
62
66 void setGID(int g) { theGOlpId=g; }
67
71 void setOAs(int i) { orderAlphas=i; }
72
76 int orderAs() { return orderAlphas; }
77
78private:
79
84
89
93 string theProcstr;
94
98 string theTypestr;
99
104
105public:
106
112 }
113
119 }
120
121};
122
130
131public:
132
139
145
146public:
147
148 virtual void fillOrderFile(const map<pair<Process,int>,int>& procs);
149
150
151 virtual bool isCS() const { return false; }
152 virtual bool isExpanded() const { return true; }
153 virtual bool isBDK() const { return false; }
154 //virtual bool isDR() const { return true; }
160 virtual bool checkOLPContract();
161
165 virtual void startOLP(const string&, int& status);
166
172 // virtual Energy2 mu2() const { return lastSHat(); }
173
178 virtual bool startOLP(const map<pair<Process,int>,int>& procs);
179
180
185 virtual bool hasInitialAverage() const { return true; }
186
191 virtual bool hasFinalStateSymmetry() const { return true; }
192
196 void evalSubProcess() const;
197
201 virtual void evalColourCorrelator(pair<int,int> ij) const;
202
203
207 virtual void evalSpinColourCorrelator(pair<int,int> ij) const;
208
209
213 virtual double spinColourCorrelatedME2(pair<int,int> ij,
214 const SpinCorrelationTensor& c) const;
215
216
217public:
218
226
232 void persistentInput(PersistentIStream & is, int version);
234
241 static void Init();
242
243protected:
244
251 virtual IBPtr clone() const;
252
257 virtual IBPtr fullclone() const;
259
260 virtual void doinitrun();
261
262
263// If needed, insert declarations of virtual function defined in the
264// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
265
266
267private:
268
274
278 mutable vector<double> colourCorrelatorResults;
279
283 mutable vector<double> spinColourCorrelatorResults;
284
285
289 static vector< int > idpair;
290
291
296 map<int , OpenLoopsProcInfo > processmap;
297
298
303
309
310
314 bool theCollierLib=true;
315
322
328
329
333 static string OpenLoopsLibs_;
334
338 static string OpenLoopsPrefix_;
339
340
345 void setOpenLoopsLibs(string p);
346 string getOpenLoopsLibs() const;
347
348 void setOpenLoopsPrefix(string p);
349 string getOpenLoopsPrefix() const;
350
351
352
353
354};
355
356}
357
358#endif /* Herwig_OpenLoopsAmplitude_H */
MatchboxOLPME implements OLP interfaces.
Definition: MatchboxOLPME.h:27
OpenLoopsAmplitude implements an interface to OpenLoops.
virtual bool isCS() const
Return true, if one loop corrections are given in the conventions of the integrated dipoles.
virtual bool startOLP(const map< pair< Process, int >, int > &procs)
Return the value of the dimensional regularization parameter.
virtual double spinColourCorrelatedME2(pair< int, int > ij, const SpinCorrelationTensor &c) const
Return the colour and spin correlated matrix element.
vector< double > spinColourCorrelatorResults
Store spin colour correlator results.
static string OpenLoopsPrefix_
Location of the OpenLoops.
int psp_tolerance
parameter to set Phase space tolerance for massiv particles.
static void Init()
The standard Init function used to initialize the interfaces.
virtual bool hasInitialAverage() const
Return true, if this amplitude already includes averaging over incoming parton's quantum numbers.
void setOpenLoopsLibs(string p)
Helper functions to make long strings static.
virtual bool checkOLPContract()
Start the one loop provider, if appropriate, giving order and contract files.
OpenLoopsAmplitude & operator=(const OpenLoopsAmplitude &)=delete
The assignment operator is private and must never be called.
virtual void evalColourCorrelator(pair< int, int > ij) const
Fill in results for the given colour correlator.
virtual void startOLP(const string &, int &status)
Start the one loop provider, if appropriate.
virtual void evalSpinColourCorrelator(pair< int, int > ij) const
Fill in results for the given colour/spin correlator.
static vector< int > idpair
first is the olp id from herwig, second the answer from openloops
map< int, OpenLoopsProcInfo > processmap
Helper map to store information in different procs.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
bool theHiggsEff
Interface for Higgs Effective.
vector< double > colourCorrelatorResults
Store colour correlator results.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
void evalSubProcess() const
Call OLP_EvalSubProcess and fill in the results.
virtual bool hasFinalStateSymmetry() const
Return true, if this amplitude already includes symmetry factors for identical outgoing particles.
virtual bool isBDK() const
Return true, if one loop corrections are given in the conventions of BDK.
virtual void doinitrun()
Initialize this object.
bool use_cms
Complex Mass Scheme.
virtual bool isExpanded() const
Return true, if one loop corrections are given in the conventions of everything expanded.
virtual IBPtr clone() const
Make a simple clone of this object.
static string OpenLoopsLibs_
Location of the OpenLoops libraries.
bool theDiagonal
True, if a diagonal CKM matrix should be assumed.
virtual ~OpenLoopsAmplitude()
The destructor.
bool theCollierLib
Use of Collier Lib (arXiv:1604.06792), available since OpenLoops 1.3.0.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
OpenLoopsAmplitude()
The default constructor.
Process information for OpenLoops.
int GID() const
Document me.
const string & Pstr() const
Document me.
OpenLoopsProcInfo(int HID, int GID, string procstr, string typestr)
Construct giving data.
void setGID(int g)
Document me.
int HID() const
Document me.
string theProcstr
Document me.
void persistentOutput(PersistentOStream &os) const
Write to persistent stream.
OpenLoopsProcInfo()
Default constructor.
void setOAs(int i)
Document me.
string theTypestr
Document me.
const string & Tstr() const
Document me.
void persistentInput(PersistentIStream &is)
Read from persistent stream.
SpinCorrelationTensor represents a spin correlation tensor of the form.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr