herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
TraceBasis.h
1// -*- C++ -*-
2//
3// TraceBasis.h is a part of ColorFull
4// Copyright (C) 2010-2011 Simon Platzer & Malin Sjodahl
5//
6// ColorFull 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 COLORFULL_TraceBasis_H
10#define COLORFULL_TraceBasis_H
11//
12// This is the declaration of the TraceBasis class.
13//
14
15#include "Herwig/MatrixElement/Matchbox/Utility/ColourBasis.h"
16#include "Trace_basis.h"
17
18namespace ColorFull {
19
20using namespace ThePEG;
21using namespace Herwig;
22
30
31public:
32
39
43 virtual ~TraceBasis();
45
46public:
47
51 virtual void clear();
52
58 virtual map<size_t,vector<vector<size_t> > > basisList(const vector<PDT::Colour>&) const;
59
64 virtual size_t prepareBasis(const vector<PDT::Colour>&);
65
69 virtual void readBasisDetails(const vector<PDT::Colour>&);
70
75 virtual double scalarProduct(size_t a, size_t b,
76 const vector<PDT::Colour>& abBasis) const;
77
81 virtual bool canSplitGluons() const {
82 return false;
83 }
84
90 virtual double tMatrixElement(size_t i, size_t a, size_t b,
91 const vector<PDT::Colour>& aBasis,
92 const vector<PDT::Colour>& bBasis,
93 size_t k, size_t l,
94 const map<size_t,size_t>& dict) const;
95
108 virtual double sMatrixElement(size_t i, size_t a, size_t b,
109 const vector<PDT::Colour>& aBasis,
110 const vector<PDT::Colour>& bBasis,
111 size_t k, size_t l,
112 const map<size_t,size_t>& dict) const;
113
118 virtual bool haveColourFlows() const { return true; }
119
124 virtual bool colourConnected(const cPDVector&,
125 const vector<PDT::Colour>&,
126 const pair<int,bool>&,
127 const pair<int,bool>&,
128 size_t) const;
129
134 virtual map<size_t,size_t> indexChange(const vector<PDT::Colour>& basis,
135 const size_t dim,
136 const map<size_t,size_t>& legPerm) const;
137
138
139public:
140
148
154 void persistentInput(PersistentIStream & is, int version);
156
163 static void Init();
164
165protected:
166
173 virtual IBPtr clone() const;
174
179 virtual IBPtr fullclone() const;
181
182
183// If needed, insert declarations of virtual function defined in the
184// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
185
186private:
187
192
196 mutable map<vector<PDT::Colour>,Trace_basis> theBasisMap;
197
201 mutable map<string,Polynomial> theScalarProducts;
202
203private:
204
209 TraceBasis & operator=(const TraceBasis &) = delete;
210
211};
212
213}
214
215#endif /* COLORFULL_TraceBasis_H */
Library class containing functions for index contraction and numerical evaluation.
Definition: Col_functions.h:25
TraceBasis implements the trace colour basis.
Definition: TraceBasis.h:29
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual bool canSplitGluons() const
Return true, if this colour basis supports gluon splittings.
Definition: TraceBasis.h:81
virtual map< size_t, size_t > indexChange(const vector< PDT::Colour > &basis, const size_t dim, const map< size_t, size_t > &legPerm) const
Returns a map of how the order of the vectors of a colour basis are changed when the indices are chan...
static void Init()
The standard Init function used to initialize the interfaces.
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 g...
virtual void readBasisDetails(const vector< PDT::Colour > &)
Gather any implementation dependend details when reading a basis.
map< string, Polynomial > theScalarProducts
Memorize scalar product intermediate results.
Definition: TraceBasis.h:201
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
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 or...
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.
TraceBasis()
The default constructor.
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...
map< vector< PDT::Colour >, Trace_basis > theBasisMap
Map legs to known basis vectors.
Definition: TraceBasis.h:196
virtual void clear()
Clear this colour basis.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
TraceBasis & operator=(const TraceBasis &)=delete
The assignment operator is private and must never be called.
Col_functions colorFunctions
The color functions object to be used.
Definition: TraceBasis.h:191
virtual IBPtr clone() const
Make a simple clone of this object.
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,...
virtual bool haveColourFlows() const
Return true, if the colour basis is capable of assigning colour flows.
Definition: TraceBasis.h:118
virtual ~TraceBasis()
The destructor.
virtual size_t prepareBasis(const vector< PDT::Colour > &)
Prepare the basis for the normal ordered legs and return the dimensionality of the basis.
In a trace basis the basis vectors are closed or open quark-lines or products of close and open quark...
Definition: Trace_basis.h:19
ColourBasis is an interface to a colour basis implementation.
Definition: ColourBasis.h:46
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< cPDPtr > cPDVector