herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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
17namespace Herwig {
18
19using namespace ThePEG;
20
28
29public:
30
36
41
48
49public:
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
79
84
88 const vector<Lorentz5Momentum>& amplitudeMomenta() const { return lastMatchboxXComb()->amplitudeMomenta(); }
89
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
111
116 const map<vector<int>,CVector>& lastOneLoopAmplitudes() const { return lastMatchboxXComb()->lastOneLoopAmplitudes(); }
117
123
127 double lastTreeME2() const { return lastMatchboxXComb()->lastTreeME2(); }
128
134
138 double lastLargeNME2() const { return lastMatchboxXComb()->lastLargeNME2(); }
139
145
150
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
242
246 int nDimAmplitude() const { return lastMatchboxXComb()->nDimAmplitude(); }
247
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
307protected:
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
332
337
342
346 vector<Lorentz5Momentum>& amplitudeMomenta() { return lastMatchboxXComb()->amplitudeMomenta(); }
347
352
357 map<vector<int>,CVector>& lastAmplitudes() { return lastMatchboxXComb()->lastAmplitudes(); }
358
364
369
375
379 void lastTreeME2(double v) const { lastMatchboxXComb()->lastTreeME2(v); }
380
384 void lastLargeNME2(double v) const { lastMatchboxXComb()->lastLargeNME2(v); }
385
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
427
434
441
446
451
456
461
466
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
502protected:
503
507 void lastMatchboxXComb(tStdXCombPtr xc) {
509 dynamic_cast<MatchboxXCombData*>(PtrTraits<tStdXCombPtr>::barePointer(xc)) : 0;
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
Provide easy access to MatchboxXComb XComb extensions.
void lastOneLoopPoles(pair< double, double > v) const
The last one-loop/tree-level interference.
const set< pair< size_t, size_t > > & singularLimits() const
Return the singular limits.
void nDimAmplitude(int d)
Set the number of degrees of freedom required by the amplitude.
void nLightProtonVec(int n)
Set the elements of the vector that contains the PDG ids of the light flavours, which are contained i...
void lastColourSpinCorrelator(const pair< int, int > &ij, Complex v) const
The colour/spin correlated matrix element.
void nDimInsertions(int d)
Set the number of degrees of freedom required by the insertion operators.
void fillOLPMomenta(const vector< Lorentz5Momentum > &mm, const cPDVector &mePartonData, const map< long, Energy > &reshuffleMap) const
Fill the olp momentum vector.
size_t colourBasisDim() const
Get the dimensionality of the colour basis for this process.
double lastLargeNColourCorrelator(const pair< int, int > &ij) const
The large-N colour correlated matrix element.
map< size_t, size_t > & amplitudeToColourMap()
The colour crossing information as filled by the last call to fillCrossingMap()
double symmetryFactor() const
Return the symmetry factor.
void nLightJetVec(int n)
Set the elements of the vector that contains the PDG ids of the light flavours, which are contained i...
double lastLargeNME2() const
The last tree-level matrix element squared.
const vector< double > & insertionRandomNumbers() const
Get the additional random numbers required by the insertion operator.
int nDimAmplitude() const
Return the number of degrees of freedom required by the amplitude.
MatchboxXCombData * theLastHeadMatchboxXComb
The head XComb pointer cast to MatchboxXComb.
double lastTreeME2() const
The last tree-level matrix element squared.
const vector< Lorentz5Momentum > & amplitudeMomenta() const
The crossed momenta.
cPDVector & amplitudePartonData()
The amplitude parton data.
void haveOneLoopAmplitudes(bool f=true)
True, if the the one-loop amplitudes need to be calculated.
void lastColourCorrelator(const pair< int, int > &ij, double v) const
The colour correlated matrix element.
LastMatchboxXCombInfo()
Default constructor.
vector< int > & crossingMap()
The crossing information as filled by the last call to fillCrossingMap()
void crossingSign(double c)
The crossing sign as filled by the last call to fillCrossingMap()
const map< size_t, size_t > & colourToAmplitudeMap() const
The colour crossing information as filled by the last call to fillCrossingMap()
bool calculateOneLoopInterference() const
True, if the one-loop/tree-level interference.
void lastRenormalizationScale(Energy2 lrs)
The last renormalization scale.
bool calculateSpinCorrelator(const pair< int, int > &ij) const
True, if the indexed spin correlated matrix element needs to be calculated.
unsigned int nLight() const
Return the number of light flavours to be considered for this process.
set< pair< size_t, size_t > > & singularLimits()
Access the singular limits.
double * olpMomenta() const
Return the olp momentum vector.
double crossingSign() const
The crossing sign as filled by the last call to fillCrossingMap()
bool calculateColourCorrelator(const pair< int, int > &ij) const
True, if the indexed colour correlated matrix element needs to be calculated.
vector< long > nHeavyJetVec() const
Return the vector that contains the PDG ids of the heavy flavours, which are contained in the jet par...
bool calculateLargeNColourCorrelator(const pair< int, int > &ij) const
True, if the indexed large-N colour correlated matrix element needs to be calculated.
MatchboxXCombData * lastHeadMatchboxXComb() const
If the last selected XComb object belongs to a group of XComb's return a pointer to the head XComb ob...
void hwStandardModel(Ptr< StandardModel >::tcptr sm)
Set the Herwig StandardModel object.
const map< vector< int >, CVector > & lastOneLoopAmplitudes() const
The one-loop amplitude values which have been contributing to the last call of prepareAmplitudes.
void colourBasisDim(size_t d)
Set the dimensionality of the colour basis for this process.
const map< vector< int >, CVector > & lastLargeNAmplitudes() const
The leading N amplitude values which have been contributing to the last call of prepareAmplitudes.
const map< int, double > & diagramWeights() const
Return the diagram weights indexed by diagram id.
map< vector< int >, CVector > & lastOneLoopAmplitudes()
The one-loop amplitude values which have been contributing to the last call of prepareAmplitudes.
void lastSpinCorrelator(const pair< int, int > &ij, Complex v) const
The spin correlated matrix element.
bool calculateTreeME2() const
True, if the tree-level matrix element squared needs to be calculated.
map< vector< int >, CVector > & lastAmplitudes()
The 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.
map< size_t, size_t > & colourToAmplitudeMap()
The colour crossing information as filled by the last call to fillCrossingMap()
map< int, double > & diagramWeights()
Access the diagram weights indexed by diagram id.
vector< double > & insertionRandomNumbers()
Access the additional random numbers required by the insertion operator.
void symmetryFactor(double f) const
Set the symmetry factor.
void nLight(unsigned int n)
Set the number of light flavours to be considered for this process.
MatchboxXCombData * theLastMatchboxXComb
The XComb pointer cast to MatchboxXComb.
Ptr< StandardModel >::tcptr hwStandardModel() const
Get the Herwig StandardModel object.
void lastTreeME2(double v) const
The last tree-level matrix element squared.
vector< long > nLightProtonVec() const
Return the vector that contains the PDG ids of the light flavours, which are contained in the proton ...
const cPDVector & amplitudePartonData() const
The amplitude parton data.
void lastLargeNME2(double v) const
The last tree-level matrix element squared.
bool calculateOneLoopPoles() const
True, if the one-loop/tree-level interference.
void lastLargeNColourCorrelator(const pair< int, int > &ij, double v) const
The large-N colour correlated matrix element.
void lastMatchboxXComb(tStdXCombPtr xc)
Set the XComb pointer cast to MatchboxXComb.
const vector< int > & olpId() const
Return the OLP process id.
const vector< double > & amplitudeRandomNumbers() const
Get the additional random numbers required by the amplitude.
vector< long > nLightJetVec() const
Return the vector that contains the PDG ids of the light flavours, which are contained in the jet par...
void haveTreeAmplitudes(bool f=true)
True, if the the tree level amplitudes need to be calculated.
Energy2 lastRenormalizationScale() const
The last renormalization scale.
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.
pair< double, double > lastOneLoopPoles() const
The last one-loop/tree-level interference.
set< pair< size_t, size_t > >::const_iterator & lastSingularLimit()
Access the last matched singular limit.
map< vector< int >, CVector > & lastLargeNAmplitudes()
The leading N amplitude values which have been contributing to the last call of prepareAmplitudes.
const map< vector< int >, CVector > & lastAmplitudes() const
The amplitude values which have been contributing to the last call of prepareAmplitudes.
vector< Lorentz5Momentum > & amplitudeMomenta()
The crossed momenta.
bool calculateColourSpinCorrelator(const pair< int, int > &ij) const
True, if the indexed colour/spin correlated matrix element needs to be calculated.
void nHeavyJetVec(int n)
Set the elements of the vector that contains the PDG ids of the heavy flavours, which are contained i...
bool calculateLargeNME2() const
True, if the tree-level matrix element squared needs to be calculated.
void lastOneLoopInterference(double v) const
The last one-loop/tree-level interference.
const set< pair< size_t, size_t > >::const_iterator & lastSingularLimit() const
Return the last matched singular limit.
void olpId(int pType, int id)
Set the OLP process id.
vector< double > & amplitudeRandomNumbers()
Access the additional random numbers required by the amplitude.
int nDimPhasespace() const
Return the number of degrees of freedom required by the phase space generator.
void nDimPhasespace(int d)
Set the number of degrees of freedom required by the phase space generator.
const vector< int > & crossingMap() const
The crossing information as filled by the last call to fillCrossingMap()
Complex lastSpinCorrelator(const pair< int, int > &ij) const
The spin correlated matrix element.
bool calculateOneLoopAmplitudes() const
True, if the the one-loop amplitudes need to be calculated.
double lastColourCorrelator(const pair< int, int > &ij) const
The colour correlated matrix element.
MatchboxXCombData * lastMatchboxXComb() const
Return a pointer to the last selected XComb.
Complex lastColourSpinCorrelator(const pair< int, int > &ij) const
The colour/spin correlated matrix element.
const map< size_t, size_t > & amplitudeToColourMap() const
The colour crossing information as filled by the last call to fillCrossingMap()
Matchbox extensions to StandardXComb.
const set< pair< size_t, size_t > >::const_iterator & lastSingularLimit() const
Return the last matched singular limit.
const cPDVector & amplitudePartonData() const
The amplitude parton data.
Complex lastColourSpinCorrelator(const pair< int, int > &ij) const
The colour/spin correlated matrix element.
double symmetryFactor() const
Return the symmetry factor.
const vector< double > & amplitudeRandomNumbers() const
Get the additional random numbers required by the amplitude.
bool calculateSpinCorrelator(const pair< int, int > &ij) const
True, if the indexed spin correlated matrix element needs to be calculated.
const map< size_t, size_t > & amplitudeToColourMap() const
The colour crossing information as filled by the last call to fillCrossingMap()
const vector< int > & olpId() const
Return the OLP process ids.
int nDimPhasespace() const
Return the number of degrees of freedom required by the phase space generator.
Energy2 lastRenormalizationScale() const
The last renormalization scale.
double lastLargeNME2() const
The last tree-level matrix element squared.
bool calculateColourCorrelator(pair< int, int > ij) const
True, if the indexed colour correlated matrix element needs to be calculated.
double lastColourCorrelator(pair< int, int > ij) const
The colour correlated matrix element.
const map< int, double > & diagramWeights() const
Return the diagram weights indexed by diagram id.
bool calculateOneLoopInterference() const
True, if the one-loop/tree-level interference.
const map< vector< int >, CVector > & lastAmplitudes() const
The amplitude values which have been contributing to the last call of prepareAmplitudes.
Complex lastSpinCorrelator(const pair< int, int > &ij) const
The spin correlated matrix element.
double lastLargeNColourCorrelator(pair< int, int > ij) const
The large-N colour correlated matrix element.
void hwStandardModel(Ptr< StandardModel >::tcptr sm)
Set the Herwig StandardModel object.
double crossingSign() const
The crossing sign as filled by the last call to fillCrossingMap()
size_t colourBasisDim() const
Get the dimensionality of the colour basis for this process.
bool calculateLargeNColourCorrelator(pair< int, int > ij) const
True, if the indexed large-N colour correlated matrix element needs to be calculated.
const map< vector< int >, CVector > & lastOneLoopAmplitudes() const
The one-loop amplitude values which have been contributing to the last call of prepareAmplitudes.
vector< long > nHeavyJetVec() const
Return the vector that contains the PDG ids of the heavy flavours, which are contained in the jet par...
bool calculateTreeAmplitudes() const
True, if the the tree level amplitudes need to be calculated.
bool calculateColourSpinCorrelator(const pair< int, int > &ij) const
True, if the indexed colour/spin correlated matrix element needs to be calculated.
const set< pair< size_t, size_t > > & singularLimits() const
Return the singular limits.
bool calculateTreeME2() const
True, if the tree-level matrix element squared needs to be calculated.
unsigned int nLight() const
Return the number of light flavours to be considered for this process.
double lastTreeME2() const
The last tree-level matrix element squared.
pair< double, double > lastOneLoopPoles() const
The last one-loop/tree-level interference.
void haveOneLoopAmplitudes(bool f=true)
True, if the the one-loop amplitudes need to be calculated.
const map< vector< int >, CVector > & lastLargeNAmplitudes() const
The leading N amplitude values which have been contributing to the last call of prepareAmplitudes.
double lastOneLoopInterference() const
The last one-loop/tree-level interference.
double * olpMomenta()
Return the olp momentum vector.
vector< long > nLightProtonVec() const
Return the vector that contains the PDG ids of the light flavours, which are contained in the proton ...
bool calculateOneLoopPoles() const
True, if the one-loop/tree-level interference.
vector< long > nLightJetVec() const
Return the vector that contains the PDG ids of the light flavours, which are contained in the jet par...
void fillOLPMomenta(const vector< Lorentz5Momentum > &mm, const cPDVector &mePartonData=cPDVector(), const map< long, Energy > &reshuffleMap=map< long, Energy >())
Fill the olp momentum vector.
int nDimAmplitude() const
Return the number of degrees of freedom required by the amplitude.
const vector< double > & insertionRandomNumbers() const
Get the additional random numbers required by the insertion operator.
int nDimInsertions() const
Return the number of degrees of freedom required by the insertion operators.
void haveTreeAmplitudes(bool f=true)
True, if the the tree level amplitudes need to be calculated.
const vector< Lorentz5Momentum > & amplitudeMomenta() const
The crossed momenta.
bool calculateOneLoopAmplitudes() const
True, if the the one-loop amplitudes need to be calculated.
const map< size_t, size_t > & colourToAmplitudeMap() const
The colour crossing information as filled by the last call to fillCrossingMap()
const vector< int > & crossingMap() const
The crossing information as filled by the last call to fillCrossingMap()
bool calculateLargeNME2() const
True, if the tree-level matrix element squared needs to be calculated.
boost::numeric::ublas::vector< Complex > CVector
Define complex vector from boost::uBLAS.
-*- C++ -*-
std::complex< double > Complex
vector< cPDPtr > cPDVector