herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
SimpleColourBasis.h
1// -*- C++ -*-
2//
3// SimpleColourBasis.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_SimpleColourBasis_H
10#define Herwig_SimpleColourBasis_H
11//
12// This is the declaration of the SimpleColourBasis class.
13//
14
15#include "Herwig/MatrixElement/Matchbox/Utility/ColourBasis.h"
16
17namespace Herwig {
18
19using namespace ThePEG;
20
31
32public:
33
38 virtual size_t prepareBasis(const vector<PDT::Colour>&);
39
44 virtual double scalarProduct(size_t a, size_t b,
45 const vector<PDT::Colour>& abBasis) const;
46
52 virtual double tMatrixElement(size_t i, size_t a, size_t b,
53 const vector<PDT::Colour>& aBasis,
54 const vector<PDT::Colour>& bBasis,
55 size_t k, size_t l,
56 const map<size_t,size_t>& dict
57 ) const;
58
59 virtual double sMatrixElement(size_t, size_t, size_t,
60 const vector<PDT::Colour>&,
61 const vector<PDT::Colour>&,
62 size_t, size_t,
63 const map<size_t,size_t>&
64 ) const {
65 assert( 0 == 1 );
66 return 0;
67 }
68
72 virtual bool canSplitGluons() const {
73 return false;
74 }
75
80 virtual bool colourConnected(const cPDVector&,
81 const vector<PDT::Colour>&,
82 const pair<int,bool>&,
83 const pair<int,bool>&,
84 size_t) const;
85
90 virtual bool haveColourFlows() const { return true; }
91
95 void makeIds() const;
96
97public:
98
106
112 void persistentInput(PersistentIStream & is, int version);
114
121 static void Init();
122
123protected:
124
131 virtual IBPtr clone() const;
132
137 virtual IBPtr fullclone() const;
139
140
141// If needed, insert declarations of virtual function defined in the
142// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
143
144
145private:
146
150 mutable vector<PDT::Colour> id88;
151
155 mutable vector<PDT::Colour> id33bar;
156
160 mutable vector<PDT::Colour> id888;
161
165 mutable vector<PDT::Colour> id33bar8;
166
170 mutable vector<PDT::Colour> id8888;
171
175 mutable vector<PDT::Colour> id33bar88;
176
180 mutable vector<PDT::Colour> id33bar33bar;
181
182private:
183
189
190};
191
192}
193
194#endif /* Herwig_SimpleColourBasis_H */
ColourBasis is an interface to a colour basis implementation.
Definition: ColourBasis.h:46
SimpleColourBasis implements the colour algebra needed for electroweak boson and electroweak boson + ...
vector< PDT::Colour > id33bar8
id for 33bar8
virtual bool haveColourFlows() const
Return true, if the colour basis is capable of assigning colour flows.
virtual IBPtr clone() const
Make a simple clone of this object.
SimpleColourBasis & operator=(const SimpleColourBasis &)=delete
The assignment operator is private and must never be called.
virtual size_t prepareBasis(const vector< PDT::Colour > &)
Prepare the basis for the normal ordered legs and return the dimensionality of the basis.
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.
vector< PDT::Colour > id33bar
id for 33bar
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 canSplitGluons() const
Return true, if this colour basis supports gluon splittings.
vector< PDT::Colour > id33bar33bar
id for 33bar33bar
vector< PDT::Colour > id8888
id for 8888
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
void makeIds() const
Create ids for bases.
static void Init()
The standard Init function used to initialize the interfaces.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
vector< PDT::Colour > id88
id for 88
vector< PDT::Colour > id33bar88
id for 33bar88
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
vector< PDT::Colour > id888
id for 888
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,...
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< cPDPtr > cPDVector