herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
SimpleColourBasis2.h
1// -*- C++ -*-
2//
3// SimpleColourBasis2.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_SimpleColourBasis2_H
10#define Herwig_SimpleColourBasis2_H
11//
12// This is the declaration of the SimpleColourBasis2 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) const;
57
58 /*
59 * Temporary to make it compile
60 */
61 virtual double sMatrixElement(size_t, size_t, size_t,
62 const vector<PDT::Colour>&,
63 const vector<PDT::Colour>&,
64 size_t, size_t,
65 const map<size_t,size_t>&
66 ) const {
67 assert( 0 == 1 );
68 return 0;
69 }
70
74 virtual bool canSplitGluons() const {
75 return false;
76 }
77
82 virtual bool colourConnected(const cPDVector&,
83 const vector<PDT::Colour>&,
84 const pair<int,bool>&,
85 const pair<int,bool>&,
86 size_t) const;
87
92 virtual bool haveColourFlows() const { return true; }
93
97 void makeIds() const;
98
104 virtual map<size_t,vector<vector<size_t> > > basisList(const vector<PDT::Colour>&) const;
105
106public:
107
115
121 void persistentInput(PersistentIStream & is, int version);
123
130 static void Init();
131
132protected:
133
140 virtual IBPtr clone() const;
141
146 virtual IBPtr fullclone() const;
148
149
150// If needed, insert declarations of virtual function defined in the
151// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
152
153
154private:
155
159 mutable vector<PDT::Colour> id88;
160
164 mutable vector<PDT::Colour> id33bar;
165
169 mutable vector<PDT::Colour> id888;
170
174 mutable vector<PDT::Colour> id33bar8;
175
179 mutable vector<PDT::Colour> id8888;
180
184 mutable vector<PDT::Colour> id33bar88;
185
189 mutable vector<PDT::Colour> id33bar33bar;
190
194 mutable vector<PDT::Colour> id88888;
195
199 mutable vector<PDT::Colour> id33bar888;
200
204 mutable vector<PDT::Colour> id33bar33bar8;
205
206private:
207
213
214};
215
216}
217
218#endif /* Herwig_SimpleColourBasis2_H */
ColourBasis is an interface to a colour basis implementation.
Definition: ColourBasis.h:46
SimpleColourBasis2 implements the colour algebra needed for processes with four coloured legs at NLO....
vector< PDT::Colour > id33bar888
id for 33bar888
virtual IBPtr clone() const
Make a simple clone of this object.
virtual size_t prepareBasis(const vector< PDT::Colour > &)
Prepare the basis for the normal ordered legs and return the dimensionality of the basis.
vector< PDT::Colour > id8888
id for 8888
virtual bool canSplitGluons() const
Return true, if this colour basis supports gluon splittings.
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.
static void Init()
The standard Init function used to initialize the interfaces.
vector< PDT::Colour > id33bar88
id for 33bar88
virtual bool haveColourFlows() const
Return true, if the colour basis is capable of assigning colour flows.
vector< PDT::Colour > id33bar33bar
id for 33bar33bar
vector< PDT::Colour > id888
id for 888
void makeIds() const
Create ids for bases.
vector< PDT::Colour > id88888
id for 88888
vector< PDT::Colour > id33bar
id for 33bar
vector< PDT::Colour > id33bar33bar8
id for 33bar33bar8
vector< PDT::Colour > id88
id for 88
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...
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
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,...
vector< PDT::Colour > id33bar8
id for 33bar8
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
SimpleColourBasis2 & operator=(const SimpleColourBasis2 &)=delete
The assignment operator is private and must never be called.
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...
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< cPDPtr > cPDVector