herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
LastMatchboxXCombInfo.h
1 // -*- C++ -*-
2 //
3 // MatchboxXComb.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_LastMatchboxXCombInfo_H
10 #define Herwig_LastMatchboxXCombInfo_H
11 //
12 // This is the declaration of the MatchboxXComb class.
13 //
14 
15 #include "Herwig/MatrixElement/Matchbox/Utility/MatchboxXCombData.h"
16 
17 namespace Herwig {
18 
19 using namespace ThePEG;
20 
28 
29 public:
30 
35  : theLastMatchboxXComb(0), theLastHeadMatchboxXComb(0) {}
36 
40  MatchboxXCombData* lastMatchboxXComb() const { return theLastMatchboxXComb; }
41 
47  MatchboxXCombData* lastHeadMatchboxXComb() const { return theLastHeadMatchboxXComb; }
48 
49 public:
50 
55  const vector<int>& crossingMap() const { return lastMatchboxXComb()->crossingMap(); }
56 
61  const map<size_t,size_t>& amplitudeToColourMap() const { return lastMatchboxXComb()->amplitudeToColourMap(); }
62 
67  const map<size_t,size_t>& colourToAmplitudeMap() const { return lastMatchboxXComb()->colourToAmplitudeMap(); }
68 
73  double crossingSign() const { return lastMatchboxXComb()->crossingSign(); }
74 
78  Energy2 lastRenormalizationScale() const { return lastMatchboxXComb()->lastRenormalizationScale(); }
79 
83  const cPDVector& amplitudePartonData() const { return lastMatchboxXComb()->amplitudePartonData(); }
84 
88  const vector<Lorentz5Momentum>& amplitudeMomenta() const { return lastMatchboxXComb()->amplitudeMomenta(); }
89 
93  bool calculateTreeAmplitudes() const { return lastMatchboxXComb()->calculateTreeAmplitudes(); }
94 
99  const map<vector<int>,CVector>& lastAmplitudes() const { return lastMatchboxXComb()->lastAmplitudes(); }
100 
105  const map<vector<int>,CVector>& lastLargeNAmplitudes() const { return lastMatchboxXComb()->lastLargeNAmplitudes(); }
106 
110  bool calculateOneLoopAmplitudes() const { return lastMatchboxXComb()->calculateOneLoopAmplitudes(); }
111 
116  const map<vector<int>,CVector>& lastOneLoopAmplitudes() const { return lastMatchboxXComb()->lastOneLoopAmplitudes(); }
117 
122  bool calculateTreeME2() const { return lastMatchboxXComb()->calculateTreeME2(); }
123 
127  double lastTreeME2() const { return lastMatchboxXComb()->lastTreeME2(); }
128 
133  bool calculateLargeNME2() const { return lastMatchboxXComb()->calculateLargeNME2(); }
134 
138  double lastLargeNME2() const { return lastMatchboxXComb()->lastLargeNME2(); }
139 
144  bool calculateOneLoopInterference() const { return lastMatchboxXComb()->calculateOneLoopInterference(); }
145 
149  double lastOneLoopInterference() const { return lastMatchboxXComb()->lastOneLoopInterference(); }
150 
155  bool calculateOneLoopPoles() const { return lastMatchboxXComb()->calculateOneLoopPoles(); }
156 
160  pair<double,double> lastOneLoopPoles() const { return lastMatchboxXComb()->lastOneLoopPoles(); }
161 
162 
167  bool calculateColourCorrelator(const pair<int,int>& ij) const { return lastMatchboxXComb()->calculateColourCorrelator(ij); }
168 
172  double lastColourCorrelator(const pair<int,int>& ij) const { return lastMatchboxXComb()->lastColourCorrelator(ij); }
173 
178  bool calculateLargeNColourCorrelator(const pair<int,int>& ij) const { return lastMatchboxXComb()->calculateLargeNColourCorrelator(ij); }
179 
183  double lastLargeNColourCorrelator(const pair<int,int>& ij) const { return lastMatchboxXComb()->lastLargeNColourCorrelator(ij); }
184 
189  bool calculateColourSpinCorrelator(const pair<int,int>& ij) const { return lastMatchboxXComb()->calculateColourSpinCorrelator(ij); }
190 
194  Complex lastColourSpinCorrelator(const pair<int,int>& ij) const { return lastMatchboxXComb()->lastColourSpinCorrelator(ij); }
195 
200  bool calculateSpinCorrelator(const pair<int,int>& ij) const { return lastMatchboxXComb()->calculateSpinCorrelator(ij); }
201 
205  Complex lastSpinCorrelator(const pair<int,int>& ij) const { return lastMatchboxXComb()->lastSpinCorrelator(ij); }
206 
210  unsigned int nLight() const { return lastMatchboxXComb()->nLight(); }
211 
217  vector<long> nLightJetVec() const { return lastMatchboxXComb()->nLightJetVec(); }
218 
224  vector<long> nHeavyJetVec() const { return lastMatchboxXComb()->nHeavyJetVec(); }
225 
231  vector<long> nLightProtonVec() const { return lastMatchboxXComb()->nLightProtonVec(); }
232 
236  size_t colourBasisDim() const { return lastMatchboxXComb()->colourBasisDim(); }
237 
241  int nDimPhasespace() const { return lastMatchboxXComb()->nDimPhasespace(); }
242 
246  int nDimAmplitude() const { return lastMatchboxXComb()->nDimAmplitude(); }
247 
251  int nDimInsertions() const { return lastMatchboxXComb()->nDimInsertions(); }
252 
256  const vector<double>& amplitudeRandomNumbers() const { return lastMatchboxXComb()->amplitudeRandomNumbers(); }
257 
261  const vector<double>& insertionRandomNumbers() const { return lastMatchboxXComb()->insertionRandomNumbers(); }
262 
266  const map<int,double>& diagramWeights() const { return lastMatchboxXComb()->diagramWeights(); }
267 
271  const set<pair<size_t,size_t> >& singularLimits() const { return lastMatchboxXComb()->singularLimits(); }
272 
276  const set<pair<size_t,size_t> >::const_iterator& lastSingularLimit() const { return lastMatchboxXComb()->lastSingularLimit(); }
277 
281  Ptr<StandardModel>::tcptr hwStandardModel() const { return lastMatchboxXComb()->hwStandardModel(); }
282 
286  double symmetryFactor() const { return lastMatchboxXComb()->symmetryFactor(); }
287 
291  const vector<int>& olpId() const { return lastMatchboxXComb()->olpId(); }
292 
296  double* olpMomenta() const { return lastMatchboxXComb()->olpMomenta(); }
297 
301  void fillOLPMomenta(const vector<Lorentz5Momentum>& mm,
302  const cPDVector& mePartonData,
303  const map<long,Energy>& reshuffleMap) const {
304  lastMatchboxXComb()->fillOLPMomenta(mm,mePartonData,reshuffleMap);
305  }
306 
307 protected:
308 
313  vector<int>& crossingMap() { return lastMatchboxXComb()->crossingMap(); }
314 
319  map<size_t,size_t>& amplitudeToColourMap() { return lastMatchboxXComb()->amplitudeToColourMap(); }
320 
325  map<size_t,size_t>& colourToAmplitudeMap() { return lastMatchboxXComb()->colourToAmplitudeMap(); }
326 
331  void crossingSign(double c) { lastMatchboxXComb()->crossingSign(c); }
332 
336  void lastRenormalizationScale(Energy2 lrs) { lastMatchboxXComb()->lastRenormalizationScale(lrs); }
337 
341  cPDVector& amplitudePartonData() { return lastMatchboxXComb()->amplitudePartonData(); }
342 
346  vector<Lorentz5Momentum>& amplitudeMomenta() { return lastMatchboxXComb()->amplitudeMomenta(); }
347 
351  void haveTreeAmplitudes(bool f = true) { lastMatchboxXComb()->haveTreeAmplitudes(f); }
352 
357  map<vector<int>,CVector>& lastAmplitudes() { return lastMatchboxXComb()->lastAmplitudes(); }
358 
363  map<vector<int>,CVector>& lastLargeNAmplitudes() { return lastMatchboxXComb()->lastLargeNAmplitudes(); }
364 
368  void haveOneLoopAmplitudes(bool f = true) { lastMatchboxXComb()->haveOneLoopAmplitudes(f); }
369 
374  map<vector<int>,CVector>& lastOneLoopAmplitudes() { return lastMatchboxXComb()->lastOneLoopAmplitudes(); }
375 
379  void lastTreeME2(double v) const { lastMatchboxXComb()->lastTreeME2(v); }
380 
384  void lastLargeNME2(double v) const { lastMatchboxXComb()->lastLargeNME2(v); }
385 
389  void lastOneLoopInterference(double v) const { lastMatchboxXComb()->lastOneLoopInterference(v); }
390 
394  void lastOneLoopPoles(pair<double,double> v) const { lastMatchboxXComb()->lastOneLoopPoles(v); }
395 
399  void lastColourCorrelator(const pair<int,int>& ij, double v) const { lastMatchboxXComb()->lastColourCorrelator(ij,v); }
400 
404  void lastLargeNColourCorrelator(const pair<int,int>& ij, double v) const { lastMatchboxXComb()->lastLargeNColourCorrelator(ij,v); }
405 
409  void lastColourSpinCorrelator(const pair<int,int>& ij, Complex v) const { lastMatchboxXComb()->lastColourSpinCorrelator(ij,v); }
410 
414  void lastSpinCorrelator(const pair<int,int>& ij, Complex v) const { lastMatchboxXComb()->lastSpinCorrelator(ij,v); }
415 
419  void nLight(unsigned int n) { lastMatchboxXComb()->nLight(n); }
420 
426  void nLightJetVec(int n) { lastMatchboxXComb()->nLightJetVec(n); }
427 
433  void nHeavyJetVec(int n) { lastMatchboxXComb()->nHeavyJetVec(n); }
434 
440  void nLightProtonVec(int n) { lastMatchboxXComb()->nLightProtonVec(n); }
441 
445  void colourBasisDim(size_t d) { lastMatchboxXComb()->colourBasisDim(d); }
446 
450  void nDimPhasespace(int d) { lastMatchboxXComb()->nDimPhasespace(d); }
451 
455  void nDimAmplitude(int d) { lastMatchboxXComb()->nDimAmplitude(d); }
456 
460  void nDimInsertions(int d) { lastMatchboxXComb()->nDimInsertions(d); }
461 
465  vector<double>& amplitudeRandomNumbers() { return lastMatchboxXComb()->amplitudeRandomNumbers(); }
466 
470  vector<double>& insertionRandomNumbers() { return lastMatchboxXComb()->insertionRandomNumbers(); }
471 
475  map<int,double>& diagramWeights() { return lastMatchboxXComb()->diagramWeights(); }
476 
480  set<pair<size_t,size_t> >& singularLimits() { return lastMatchboxXComb()->singularLimits(); }
481 
485  set<pair<size_t,size_t> >::const_iterator& lastSingularLimit() { return lastMatchboxXComb()->lastSingularLimit(); }
486 
490  void hwStandardModel(Ptr<StandardModel>::tcptr sm) { lastMatchboxXComb()->hwStandardModel(sm); }
491 
495  void symmetryFactor(double f) const { lastMatchboxXComb()->symmetryFactor(f); }
496 
500  void olpId(int pType, int id) { lastMatchboxXComb()->olpId(pType,id); }
501 
502 protected:
503 
507  void lastMatchboxXComb(tStdXCombPtr xc) {
508  theLastMatchboxXComb = xc ?
509  dynamic_cast<MatchboxXCombData*>(PtrTraits<tStdXCombPtr>::barePointer(xc)) : 0;
510  theLastHeadMatchboxXComb =
511  xc && xc->head() ?
512  dynamic_cast<MatchboxXCombData*>(PtrTraits<tStdXCombPtr>::barePointer(xc->head())) : 0;
513  }
514 
519 
524 
525 };
526 
527 }
528 
529 #endif // Herwig_LastMatchboxXCombInfo_H
530 
void lastColourSpinCorrelator(const pair< int, int > &ij, Complex v) const
The colour/spin correlated matrix element.
vector< long > nLightJetVec() const
Return the vector that contains the PDG ids of the light flavours, which are contained in the jet par...
void nLight(unsigned int n)
Set the number of light flavours to be considered for this process.
double symmetryFactor() const
Return the symmetry factor.
Ptr< StandardModel >::tcptr hwStandardModel() const
Get the Herwig StandardModel object.
std::complex< double > Complex
void lastLargeNME2(double v) const
The last tree-level matrix element squared.
double lastColourCorrelator(const pair< int, int > &ij) const
The colour correlated matrix element.
size_t colourBasisDim() const
Get the dimensionality of the colour basis for this process.
unsigned int nLight() const
Return the number of light flavours to be considered for this process.
map< size_t, size_t > & colourToAmplitudeMap()
The colour crossing information as filled by the last call to fillCrossingMap()
bool calculateLargeNColourCorrelator(const pair< int, int > &ij) const
True, if the indexed large-N colour correlated matrix element needs to be calculated.
LastMatchboxXCombInfo()
Default constructor.
map< vector< int >, CVector > & lastAmplitudes()
The amplitude values which have been contributing to the last call of prepareAmplitudes.
void nDimPhasespace(int d)
Set the number of degrees of freedom required by the phase space generator.
void nDimAmplitude(int d)
Set the number of degrees of freedom required by the amplitude.
map< int, double > & diagramWeights()
Access the diagram weights indexed by diagram id.
bool calculateOneLoopPoles() const
True, if the one-loop/tree-level interference.
void lastMatchboxXComb(tStdXCombPtr xc)
Set the XComb pointer cast to MatchboxXComb.
void lastTreeME2(double v) const
The last tree-level matrix element squared.
void olpId(int pType, int id)
Set the OLP process id.
void lastOneLoopPoles(pair< double, double > v) const
The last one-loop/tree-level interference.
const vector< int > & crossingMap() const
The crossing information as filled by the last call to fillCrossingMap()
void symmetryFactor(double f) const
Set the symmetry factor.
int nDimAmplitude() const
Return the number of degrees of freedom required by the amplitude.
cPDVector & amplitudePartonData()
The amplitude parton data.
vector< double > & amplitudeRandomNumbers()
Access the additional random numbers required by the amplitude.
map< vector< int >, CVector > & lastLargeNAmplitudes()
The leading N amplitude values which have been contributing to the last call of prepareAmplitudes.
bool calculateColourCorrelator(const pair< int, int > &ij) const
True, if the indexed colour correlated matrix element needs to be calculated.
pair< double, double > lastOneLoopPoles() const
The last one-loop/tree-level interference.
double crossingSign() const
The crossing sign as filled by the last call to fillCrossingMap()
const map< int, double > & diagramWeights() const
Return the diagram weights indexed by diagram id.
const set< pair< size_t, size_t > > & singularLimits() const
Return the singular limits.
void lastSpinCorrelator(const pair< int, int > &ij, Complex v) const
The spin correlated matrix element.
const map< vector< int >, CVector > & lastLargeNAmplitudes() const
The leading N amplitude values which have been contributing to the last call of prepareAmplitudes.
bool calculateTreeME2() const
True, if the tree-level matrix element squared needs to be calculated.
void nDimInsertions(int d)
Set the number of degrees of freedom required by the insertion operators.
bool calculateColourSpinCorrelator(const pair< int, int > &ij) const
True, if the indexed colour/spin correlated matrix element needs to be calculated.
bool calculateLargeNME2() const
True, if the tree-level matrix element squared needs to be calculated.
const map< size_t, size_t > & amplitudeToColourMap() const
The colour crossing information as filled by the last call to fillCrossingMap()
bool calculateSpinCorrelator(const pair< int, int > &ij) const
True, if the indexed spin correlated matrix element needs to be calculated.
vector< double > & insertionRandomNumbers()
Access the additional random numbers required by the insertion operator.
void haveTreeAmplitudes(bool f=true)
True, if the the tree level amplitudes need to be calculated.
int nDimPhasespace() const
Return the number of degrees of freedom required by the phase space generator.
Provide easy access to MatchboxXComb XComb extensions.
int nDimInsertions() const
Return the number of degrees of freedom required by the insertion operators.
double lastOneLoopInterference() const
The last one-loop/tree-level interference.
set< pair< size_t, size_t > >::const_iterator & lastSingularLimit()
Access the last matched singular limit.
MatchboxXCombData * lastHeadMatchboxXComb() const
If the last selected XComb object belongs to a group of XComb&#39;s return a pointer to the head XComb ob...
vector< long > nLightProtonVec() const
Return the vector that contains the PDG ids of the light flavours, which are contained in the proton ...
void hwStandardModel(Ptr< StandardModel >::tcptr sm)
Set the Herwig StandardModel object.
const vector< double > & insertionRandomNumbers() const
Get the additional random numbers required by the insertion operator.
map< size_t, size_t > & amplitudeToColourMap()
The colour crossing information as filled by the last call to fillCrossingMap()
bool calculateOneLoopAmplitudes() const
True, if the the one-loop amplitudes need to be calculated.
double lastLargeNME2() const
The last tree-level matrix element squared.
Matchbox extensions to StandardXComb.
const vector< Lorentz5Momentum > & amplitudeMomenta() const
The crossed momenta.
vector< cPDPtr > cPDVector
Complex lastColourSpinCorrelator(const pair< int, int > &ij) const
The colour/spin correlated matrix element.
void lastOneLoopInterference(double v) const
The last one-loop/tree-level interference.
vector< Lorentz5Momentum > & amplitudeMomenta()
The crossed momenta.
vector< long > nHeavyJetVec() const
Return the vector that contains the PDG ids of the heavy flavours, which are contained in the jet par...
void lastRenormalizationScale(Energy2 lrs)
The last renormalization scale.
void lastLargeNColourCorrelator(const pair< int, int > &ij, double v) const
The large-N colour correlated matrix element.
Complex lastSpinCorrelator(const pair< int, int > &ij) const
The spin correlated matrix element.
void nHeavyJetVec(int n)
Set the elements of the vector that contains the PDG ids of the heavy flavours, which are contained i...
Energy2 lastRenormalizationScale() const
The last renormalization scale.
double lastTreeME2() const
The last tree-level matrix element squared.
map< vector< int >, CVector > & lastOneLoopAmplitudes()
The one-loop amplitude values which have been contributing to the last call of prepareAmplitudes.
bool calculateOneLoopInterference() const
True, if the one-loop/tree-level interference.
const map< vector< int >, CVector > & lastOneLoopAmplitudes() const
The one-loop amplitude values which have been contributing to the last call of prepareAmplitudes.
bool calculateTreeAmplitudes() const
True, if the the tree level amplitudes need to be calculated.
double * olpMomenta() const
Return the olp momentum vector.
MatchboxXCombData * theLastHeadMatchboxXComb
The head XComb pointer cast to MatchboxXComb.
const set< pair< size_t, size_t > >::const_iterator & lastSingularLimit() const
Return the last matched singular limit.
void crossingSign(double c)
The crossing sign as filled by the last call to fillCrossingMap()
const cPDVector & amplitudePartonData() const
The amplitude parton data.
void haveOneLoopAmplitudes(bool f=true)
True, if the the one-loop amplitudes need to be calculated.
-*- C++ -*-
set< pair< size_t, size_t > > & singularLimits()
Access the singular limits.
boost::numeric::ublas::vector< Complex > CVector
Define complex vector from boost::uBLAS.
vector< int > & crossingMap()
The crossing information as filled by the last call to fillCrossingMap()
double lastLargeNColourCorrelator(const pair< int, int > &ij) const
The large-N colour correlated matrix element.
const vector< double > & amplitudeRandomNumbers() const
Get the additional random numbers required by the amplitude.
const map< size_t, size_t > & colourToAmplitudeMap() const
The colour crossing information as filled by the last call to fillCrossingMap()
const vector< int > & olpId() const
Return the OLP process id.
void lastColourCorrelator(const pair< int, int > &ij, double v) const
The colour correlated matrix element.
void colourBasisDim(size_t d)
Set the dimensionality of the colour basis for this process.
const map< vector< int >, CVector > & lastAmplitudes() const
The amplitude values which have been contributing to the last call of prepareAmplitudes.
void nLightJetVec(int n)
Set the elements of the vector that contains the PDG ids of the light flavours, which are contained i...
MatchboxXCombData * theLastMatchboxXComb
The XComb pointer cast to MatchboxXComb.
MatchboxXCombData * lastMatchboxXComb() const
Return a pointer to the last selected XComb.
void fillOLPMomenta(const vector< Lorentz5Momentum > &mm, const cPDVector &mePartonData, const map< long, Energy > &reshuffleMap) const
Fill the olp momentum vector.
void nLightProtonVec(int n)
Set the elements of the vector that contains the PDG ids of the light flavours, which are contained i...