herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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 
17 namespace Herwig {
18 
19 using namespace ThePEG;
20 
28 
29 public:
30 
35 
39  OpenLoopsProcInfo(int HID,int GID, string procstr,string typestr)
40  : theHOlpId(HID), theGOlpId(GID), theProcstr(procstr), theTypestr(typestr) {}
41 
45  int HID() const { return theHOlpId; }
46 
50  int GID() const { return theGOlpId; }
51 
55  const string& Pstr() const { return theProcstr; }
56 
60  const string& Tstr() const { return theTypestr; }
61 
65  void setGID(int g) { theGOlpId=g; }
66 
70  void setOAs(int i) { orderAlphas=i; }
71 
75  int orderAs() { return orderAlphas; }
76 
77 private:
78 
82  int theHOlpId;
83 
87  int theGOlpId;
88 
92  string theProcstr;
93 
97  string theTypestr;
98 
103 
104 public:
105 
110  os << theHOlpId << theGOlpId << theProcstr << theTypestr << orderAlphas;
111  }
112 
117  is >> theHOlpId >> theGOlpId >> theProcstr >> theTypestr >> orderAlphas;
118  }
119 
120 };
121 
129 
130 public:
131 
138 
142  virtual ~OpenLoopsAmplitude();
144 
145 public:
146 
147  virtual void fillOrderFile(const map<pair<Process,int>,int>& procs);
148 
149 
150  virtual bool isCS() const { return false; }
151  virtual bool isExpanded() const { return true; }
152  virtual bool isBDK() const { return false; }
153  //virtual bool isDR() const { return true; }
159  virtual bool checkOLPContract();
160 
164  virtual void startOLP(const string&, int& status);
165 
171  // virtual Energy2 mu2() const { return lastSHat(); }
172 
177  virtual bool startOLP(const map<pair<Process,int>,int>& procs);
178 
179 
184  virtual bool hasInitialAverage() const { return true; }
185 
190  virtual bool hasFinalStateSymmetry() const { return true; }
191 
195  void evalSubProcess() const;
196 
200  virtual void evalColourCorrelator(pair<int,int> ij) const;
201 
202 
206  virtual void evalSpinColourCorrelator(pair<int,int> ij) const;
207 
208 
212  virtual double spinColourCorrelatedME2(pair<int,int> ij,
213  const SpinCorrelationTensor& c) const;
214 
215 
216 public:
217 
224  void persistentOutput(PersistentOStream & os) const;
225 
231  void persistentInput(PersistentIStream & is, int version);
233 
240  static void Init();
241 
242 protected:
243 
250  virtual IBPtr clone() const;
251 
256  virtual IBPtr fullclone() const;
258 
259  virtual void doinitrun();
260 
261 
262 // If needed, insert declarations of virtual function defined in the
263 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
264 
265 
266 private:
267 
272  OpenLoopsAmplitude & operator=(const OpenLoopsAmplitude &) = delete;
273 
277  mutable vector<double> colourCorrelatorResults;
278 
282  mutable vector<double> spinColourCorrelatorResults;
283 
284 
288  static vector< int > idpair;
289 
290 
295  map<int , OpenLoopsProcInfo > processmap;
296 
297 
302 
307  bool use_cms;
308 
309 
313  bool theCollierLib=true;
314 
321 
325  static string OpenLoopsLibs_;
326 
330  static string OpenLoopsPrefix_;
331 
332 
337  void setOpenLoopsLibs(string p);
338  string getOpenLoopsLibs() const;
339 
340  void setOpenLoopsPrefix(string p);
341  string getOpenLoopsPrefix() const;
342 
343 
344 
345 
346 };
347 
348 }
349 
350 #endif /* Herwig_OpenLoopsAmplitude_H */
int HID() const
Document me.
void persistentInput(PersistentIStream &is)
Read from persistent stream.
const string & Tstr() const
Document me.
int GID() const
Document me.
string theTypestr
Document me.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual bool isCS() const
Return true, if one loop corrections are given in the conventions of the integrated dipoles...
virtual bool isExpanded() const
Return true, if one loop corrections are given in the conventions of everything expanded.
int psp_tolerance
parameter to set Phase space tolerance for massiv particles.
void setGID(int g)
Document me.
int orderAs()
Document me.
const string & Pstr() const
Document me.
static vector< int > idpair
first is the olp id from herwig, second the answer from openloops
OpenLoopsProcInfo()
Default constructor.
bool theHiggsEff
Interface for Higgs Effective.
map< int, OpenLoopsProcInfo > processmap
Helper map to store information in different procs.
virtual bool hasFinalStateSymmetry() const
Return true, if this amplitude already includes symmetry factors for identical outgoing particles...
static string OpenLoopsPrefix_
Location of the OpenLoops.
string theProcstr
Document me.
void setOAs(int i)
Document me.
-*- C++ -*-
bool use_cms
Complex Mass Scheme.
void persistentOutput(PersistentOStream &os) const
Write to persistent stream.
virtual bool isBDK() const
Return true, if one loop corrections are given in the conventions of BDK.
OpenLoopsProcInfo(int HID, int GID, string procstr, string typestr)
Construct giving data.
MatchboxOLPME implements OLP interfaces.
Definition: MatchboxOLPME.h:27
Process information for OpenLoops.
static string OpenLoopsLibs_
Location of the OpenLoops libraries.
virtual bool hasInitialAverage() const
Return true, if this amplitude already includes averaging over incoming parton&#39;s quantum numbers...
vector< double > spinColourCorrelatorResults
Store spin colour correlator results.
SpinCorrelationTensor represents a spin correlation tensor of the form.
OpenLoopsAmplitude implements an interface to OpenLoops.
vector< double > colourCorrelatorResults
Store colour correlator results.