Herwig 7.3.0
|
ColourFlowBasis implements the colour flow basis. More...
#include <ColourFlowBasis.h>
Public Member Functions | |
Standard constructors and destructors. | |
ColourFlowBasis () | |
The default constructor. | |
virtual | ~ColourFlowBasis () |
The destructor. | |
virtual void | clear () |
Clear this colour basis. | |
virtual map< size_t, vector< vector< size_t > > > | basisList (const vector< PDT::Colour > &) const |
Return a map of basis tensor indices to vectors identifying a certain ordering corresponding to the given colour structure. | |
virtual size_t | prepareBasis (const vector< PDT::Colour > &) |
Prepare the basis for the normal ordered legs and return the dimensionality of the basis. | |
virtual void | readBasisDetails (const vector< PDT::Colour > &) |
Gather any implementation dependend details when reading a basis. | |
virtual double | scalarProduct (size_t a, size_t b, const vector< PDT::Colour > &abBasis) const |
Return the scalar product of basis tensors labelled a and b in the basis used for the given normal ordered legs. | |
virtual double | tMatrixElement (size_t i, size_t a, size_t b, const vector< PDT::Colour > &aBasis, const vector< PDT::Colour > &bBasis, size_t k, size_t l, const map< size_t, size_t > &dict) const |
Return the matrix element of a colour charge <c_{n+1,a}|T_i|c_{n,b}> between basis tensors a and b, with respect to aBasis and bBasis. | |
virtual bool | canSplitGluons () const |
Return true, if this colour basis supports gluon splittings. | |
virtual double | sMatrixElement (size_t i, size_t a, size_t b, const vector< PDT::Colour > &aBasis, const vector< PDT::Colour > &bBasis, size_t k, size_t l, const map< size_t, size_t > &dict) const |
Return the matrix element of a quark splitting matrix <c_{n+1,a}|T_i|c_{n,b}> between basis tensors a and b, with respect to aBasis and bBasis. | |
virtual bool | haveColourFlows () const |
Return true, if the colour basis is capable of assigning colour flows. | |
virtual bool | colourConnected (const cPDVector &, const vector< PDT::Colour > &, const pair< int, bool > &, const pair< int, bool > &, size_t) const |
Return true, if a large-N colour connection exists for the given external legs and basis tensor. | |
Public Member Functions inherited from Herwig::ColourBasis | |
ColourBasis () | |
The default constructor. | |
virtual | ~ColourBasis () |
The destructor. | |
Ptr< MatchboxFactory >::tptr | factory () const |
Return the factory which produced this matrix element. | |
Ptr< ColourBasis >::ptr | cloneMe () const |
Clone this colour basis. | |
size_t | prepare (const cPDVector &, bool) |
Prepare for the given sub process and return the basis dimensionality. | |
size_t | prepare (const MEBase::DiagramVector &, bool) |
Prepare for the given diagrams. | |
const map< cPDVector, map< size_t, size_t > > & | indexMap () const |
Return the index map. | |
const string & | orderingString (const cPDVector &sub, const map< size_t, size_t > &colourToAmplitude, size_t tensorId) |
Given a physical subprocess, a colour to amplitude label map and a basis tensor index, return an identifier of the ordering coresponding to the given colour structure. | |
const set< vector< size_t > > & | ordering (const cPDVector &sub, const map< size_t, size_t > &colourToAmplitude, size_t tensorId, size_t shift=0) |
Given a physical subprocess, a colour to amplitude label map and a basis tensor index, return an identifier of the ordering coresponding to the given colour structure. | |
double | me2 (const cPDVector &, const map< vector< int >, CVector > &) const |
For the given subprocess and amplitude vectors calculate the amplitude squared. | |
double | interference (const cPDVector &, const map< vector< int >, CVector > &, const map< vector< int >, CVector > &) const |
For the given subprocess and amplitude vectors calculate the interference. | |
double | colourCorrelatedME2 (const pair< size_t, size_t > &, const cPDVector &, const map< vector< int >, CVector > &) const |
For the given subprocess and amplitude vector calculate the colour correlated amplitude. | |
Complex | interference (const cPDVector &, const CVector &, const CVector &) const |
For the given subprocess and amplitude vector calculate the amplitude squared. | |
Complex | colourCorrelatedInterference (const pair< size_t, size_t > &, const cPDVector &, const CVector &, const CVector &) const |
For the given subprocess and amplitude vector calculate the colour correlated amplitude. | |
double | me2 (const cPDVector &, const matrix< Complex > &) const |
For the given subprocess and amplitude given as amp amp^\dagger calculate the amplitude squared. | |
double | colourCorrelatedME2 (const pair< size_t, size_t > &, const cPDVector &, const matrix< Complex > &) const |
For the given subprocess and amplitude given as amp amp^\dagger calculate the colour correlated amplitude. | |
const symmetric_matrix< double, upper > & | scalarProducts (const cPDVector &) const |
Return the scalar product matrix for the given process. | |
const symmetric_matrix< double, upper > & | correlator (const cPDVector &, const pair< size_t, size_t > &) const |
Return the correlator matrix for the given process. | |
Selector< const ColourLines * > | colourGeometries (tcDiagPtr diag, const map< vector< int >, CVector > &s) |
Return a Selector with possible colour geometries for the selected diagram weighted by their relative probabilities. | |
size_t | tensorIdFromFlow (tcDiagPtr diag, const ColourLines *cl) |
Return the colour tensor used for the selected colour flow. | |
virtual bool | largeN () const |
Return true, if this basis is running in large-N mode. | |
void | doLargeN (bool yes=true) |
Switch to large n. | |
vector< PDT::Colour > | projectColour (const cPDVector &) const |
Convert particle data to colour information. | |
virtual vector< PDT::Colour > | normalOrder (const vector< PDT::Colour > &) const |
Perform a normal ordering of the external legs. | |
vector< PDT::Colour > | normalOrderMap (const cPDVector &sub) |
Determine the mapping of process to colour indices and return the normal ordered vector of colour indices. | |
const vector< PDT::Colour > & | normalOrderedLegs (const cPDVector &sub) const |
Get the normal ordered legs. | |
const std::tuple< vector< PDT::Colour >, vector< PDT::Colour >, size_t, size_t, size_t, map< size_t, size_t > > & | normalOrderEmissionMap (const cPDVector &subFrom, const cPDVector &subTo, size_t ij, size_t i, size_t j, const map< size_t, size_t > &emissionMap) |
Generate the emission/splitting map for basis labels from sub-process information; we consider the splitting of leg ij from subprocess subFrom with the legs not participating in the splitting relabelled according to emissionMap. | |
const pair< compressed_matrix< double >, vector< pair< size_t, size_t > > > & | charge (const cPDVector &subFrom, const cPDVector &subTo, size_t ij, size_t i, size_t j, const map< size_t, size_t > &emissionMap) |
Return the colour charge matrix representation for the given splitting ij -> i,j with other legs relabbeled as indicated by the dictionary map. | |
string | file (const vector< PDT::Colour > &) const |
Convert the legs to a string. | |
void | chargeProduct (const compressed_matrix< double > &ti, const vector< pair< size_t, size_t > > &tiNonZero, const symmetric_matrix< double, upper > &X, const compressed_matrix< double > &tj, const vector< pair< size_t, size_t > > &tjNonZero, symmetric_matrix< double, upper > &result) const |
Calculate T_i^\dagger X T_j. | |
void | chargeProductAdd (const compressed_matrix< double > &ti, const vector< pair< size_t, size_t > > &tiNonZero, const matrix< Complex > &X, const compressed_matrix< double > &tj, const vector< pair< size_t, size_t > > &tjNonZero, matrix< Complex > &result, double factor=1.) const |
Calculate T_i X T_j^\dagger. | |
virtual map< size_t, size_t > | indexChange (const vector< PDT::Colour > &, const size_t, const map< size_t, size_t > &) const |
Returns a map of how the order of the vectors of a colour basis are changed when the indices are changed. | |
void | persistentOutput (PersistentOStream &os) const |
Function used to write out object persistently. | |
void | persistentInput (PersistentIStream &is, int version) |
Function used to read in object persistently. | |
Public Member Functions inherited from ThePEG::HandlerBaseT< UseRandom > | |
double | rnd () const |
double | rnd (double xu) const |
double | rnd (double xl, double xu) const |
bool | rndbool () const |
bool | rndbool (double p) const |
bool | rndbool (double p1, double p2) const |
int | rndsign (double p1, double p2, double p3) const |
int | rnd2 (double p0, double p1) const |
int | rnd3 (double p0, double p1, double p2) const |
int | rnd4 (double p0, double p1, double p2, double p3) const |
long | irnd (long xu=2) const |
long | irnd (long xl, long xu) const |
const StandardModelBase & | SM () const |
tSMPtr | standardModel () const |
Public Member Functions inherited from ThePEG::Interfaced | |
virtual bool | defaultInit () |
PPtr | getParticle (PID) const |
PDPtr | getParticleData (PID) const |
bool | used () const |
void | useMe () const |
tEGPtr | generator () const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
PPtr | getParticle (PID) const |
PDPtr | getParticleData (PID) const |
bool | used () const |
void | useMe () const |
tEGPtr | generator () const |
Public Member Functions inherited from ThePEG::InterfacedBase | |
string | fullName () const |
string | name () const |
string | path () const |
string | comment () const |
void | setup (istream &is) |
void | update () |
void | init () |
virtual bool | preInitialize () const |
void | initrun () |
void | finish () |
void | touch () |
void | reset () |
void | clear () |
InitState | state () const |
bool | locked () const |
bool | touched () const |
virtual IBPtr | fullclone () const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
virtual void | debugme () const |
void | update () |
void | init () |
virtual bool | preInitialize () const |
void | initrun () |
void | finish () |
void | touch () |
void | reset () |
void | clear () |
InitState | state () const |
bool | locked () const |
bool | touched () const |
virtual IBPtr | fullclone () const |
Public Member Functions inherited from ThePEG::Base | |
void | debug () const |
virtual void | debugme () const |
Public Member Functions inherited from ThePEG::Pointer::ReferenceCounted | |
CounterType | referenceCount () const |
Public Member Functions inherited from ThePEG::Named | |
Named (const string &newName=string()) | |
Named (const Named &)=default | |
const string & | name () const |
bool | operator== (const Named &other) const |
bool | operator< (const Named &other) const |
Clone Methods. | |
map< vector< PDT::Colour >, ColourFlowCrossing > | theCrossings |
Map colour signatures to colour crossings. | |
map< size_t, vector< ColourFlow > > | theFlows |
Colour flows indexed by basis size; note this is a unique assignment. | |
virtual IBPtr | clone () const |
Make a simple clone of this object. | |
virtual IBPtr | fullclone () const |
Make a clone of this object, possibly modifying the cloned object to make it sane. | |
ColourFlowBasis & | operator= (const ColourFlowBasis &)=delete |
The assignment operator is private and must never be called. | |
Functions used by the persistent I/O system. | |
void | persistentOutput (PersistentOStream &os) const |
Function used to write out object persistently. | |
void | persistentInput (PersistentIStream &is, int version) |
Function used to read in object persistently. | |
static void | Init () |
The standard Init function used to initialize the interfaces. | |
Additional Inherited Members | |
Public Types inherited from ThePEG::InterfacedBase | |
enum | InitState |
Public Types inherited from ThePEG::Pointer::ReferenceCounted | |
typedef unsigned int | CounterType |
Static Public Member Functions inherited from Herwig::ColourBasis | |
static list< pair< int, bool > > | colouredPath (pair< int, bool > a, pair< int, bool > b, Ptr< Tree2toNDiagram >::tcptr) |
Find a coloured path from a to b within the given diagram. | |
static list< list< list< pair< int, bool > > > > | colourFlows (Ptr< Tree2toNDiagram >::tcptr) |
Get all colour flows for the given diagram. | |
static string | cfstring (const list< list< pair< int, bool > > > &) |
Convert a flow to a string representation appropriate for ColourLines. | |
static void | Init () |
The standard Init function used to initialize the interfaces. | |
Static Public Member Functions inherited from ThePEG::HandlerBase | |
static void | Init () |
Static Public Member Functions inherited from ThePEG::Interfaced | |
static void | Init () |
Static Public Member Functions inherited from ThePEG::InterfacedBase | |
static void | Init () |
Static Public Member Functions inherited from ThePEG::Base | |
static void | Init () |
Public Attributes inherited from ThePEG::InterfacedBase | |
initializing | |
uninitialized | |
initialized | |
runready | |
Public Attributes inherited from ThePEG::Pointer::ReferenceCounted | |
const unsigned long | uniqueId |
Protected Member Functions inherited from Herwig::ColourBasis | |
virtual void | doinit () |
Initialize this object after the setup phase before saving an EventGenerator to disk. | |
virtual void | doinitrun () |
Initialize this object. | |
virtual void | dofinish () |
Finalize this object. | |
virtual bool | colourConnected (const vector< PDT::Colour > &, int, int, size_t) const |
Return true, if a large-N colour connection exists for the given external legs and basis tensor. | |
vector< string > | makeFlows (Ptr< Tree2toNDiagram >::tcptr, size_t) const |
Match up colour flows for given diagram to basis tensors. | |
map< Ptr< Tree2toNDiagram >::tcptr, vector< ColourLines * > > & | colourLineMap () |
Return the colour line map. | |
void | updateColourLines (Ptr< Tree2toNDiagram >::tcptr) |
Update the colour line map for a given diagram. | |
Protected Member Functions inherited from ThePEG::Interfaced | |
void | reporeg (IBPtr object, string name) const |
bool | setDefaultReference (PtrT &ptr, string classname, string objectname) |
Interfaced (const string &newName) | |
Interfaced (const Interfaced &i) | |
void | setGenerator (tEGPtr generator) |
Protected Member Functions inherited from ThePEG::InterfacedBase | |
virtual void | readSetup (istream &is) |
virtual void | doupdate () |
virtual void | doinit () |
virtual void | doinitrun () |
virtual void | dofinish () |
virtual IVector | getReferences () |
virtual void | rebind (const TranslationMap &) |
virtual IBPtr | clone () const=0 |
InterfacedBase (string newName) | |
InterfacedBase (const InterfacedBase &i) | |
virtual void | readSetup (istream &is) |
virtual void | doupdate () |
virtual void | doinit () |
virtual void | doinitrun () |
virtual void | dofinish () |
virtual IVector | getReferences () |
virtual void | rebind (const TranslationMap &) |
Protected Member Functions inherited from ThePEG::Pointer::ReferenceCounted | |
ReferenceCounted (const ReferenceCounted &) | |
ReferenceCounted & | operator= (const ReferenceCounted &) |
Protected Member Functions inherited from ThePEG::Named | |
const Named & | operator= (const Named &other) |
const string & | name (const string &newName) |
Static Protected Member Functions inherited from ThePEG::Interfaced | |
static void | registerRepository (IBPtr) |
static void | registerRepository (IBPtr, string newName) |
ColourFlowBasis implements the colour flow basis.
Definition at line 65 of file ColourFlowBasis.h.
|
virtual |
Return a map of basis tensor indices to vectors identifying a certain ordering corresponding to the given colour structure.
May not be supported by all colour basis implementations.
Reimplemented from Herwig::ColourBasis.
|
inlinevirtual |
Return true, if this colour basis supports gluon splittings.
Definition at line 128 of file ColourFlowBasis.h.
|
virtual |
Clear this colour basis.
Reimplemented from Herwig::ColourBasis.
|
protectedvirtual |
Make a simple clone of this object.
Implements ThePEG::InterfacedBase.
|
virtual |
Return true, if a large-N colour connection exists for the given external legs and basis tensor.
Reimplemented from Herwig::ColourBasis.
|
protectedvirtual |
Make a clone of this object, possibly modifying the cloned object to make it sane.
Reimplemented from ThePEG::InterfacedBase.
|
inlinevirtual |
Return true, if the colour basis is capable of assigning colour flows.
Reimplemented from Herwig::ColourBasis.
Definition at line 147 of file ColourFlowBasis.h.
|
static |
The standard Init function used to initialize the interfaces.
Called exactly once for each class by the class description system before the main function starts or when this class is dynamically loaded.
|
privatedelete |
The assignment operator is private and must never be called.
In fact, it should not even be implemented.
void CVolver::ColourFlowBasis::persistentInput | ( | PersistentIStream & | is, |
int | version | ||
) |
Function used to read in object persistently.
is | the persistent input stream read from. |
version | the version number of the object when written. |
void CVolver::ColourFlowBasis::persistentOutput | ( | PersistentOStream & | os | ) | const |
Function used to write out object persistently.
os | the persistent output stream written to. |
|
virtual |
Prepare the basis for the normal ordered legs and return the dimensionality of the basis.
Implements Herwig::ColourBasis.
|
virtual |
Gather any implementation dependend details when reading a basis.
Reimplemented from Herwig::ColourBasis.
|
virtual |
Return the scalar product of basis tensors labelled a and b in the basis used for the given normal ordered legs.
Implements Herwig::ColourBasis.
|
virtual |
Return the matrix element of a colour charge <c_{n+1,a}|T_i|c_{n,b}> between basis tensors a and b, with respect to aBasis and bBasis.
Implements Herwig::ColourBasis.
|
private |
Map colour signatures to colour crossings.
Definition at line 211 of file ColourFlowBasis.h.
|
private |
Colour flows indexed by basis size; note this is a unique assignment.
Definition at line 217 of file ColourFlowBasis.h.