ColorFull: a C++ library for calculations in SU(Nc) color space
 578 Downloads
 5 Citations
Abstract
ColorFull, a C++ package for treating QCD color structure, is presented. ColorFull, which utilizes the trace basis approach, is intended for interfacing with event generators, but can also be used as a standalone package for squaring QCD amplitudes, calculating interferences, and describing the effect of gluon emission and gluon exchange.
Keywords
Parton Shower Color Structure Gluon Emission Gluon Exchange Member Function1 Introduction
The description of QCD color structure in the presence of many external colored partons is a field of increased importance. Some methods for performing automatic color summations of fully contracted vacuum bubbles, for example as implemented in FeynCalc [1], in the C program COLOR [2], or as presented in [3], have been around for a while, and recently a more flexible Mathematica package, ColorMath [4], allowing color structures with any number of open indices, has been published. Yet other general purpose event generator codes, such as MadGraph [5], have separate built in routines for dealing with the color structure.
In the present paper a standalone C++ code, ColorFull, designed for dealing with color contraction using color bases is presented.^{1} ColorFull is written with interfacing to event generators in mind, and is currently interfaced to Herwig++ (2.7) [6, 7], but can also be used as a standalone package for investigations in color space.
ColorFull is based on trace bases [8, 9, 10, 11, 12, 13, 14, 15, 16], where the basis vectors are given by (products of) closed and open quarklines, but the code also offers functionality for reading in and treating any (orthogonal) basis for color space, such as multiplet bases [17, 18].
The intent of this paper is to convey the underlying idea of ColorFull. For full technical details we refer to the online Doxygen documentation^{2}. To set the stage, a brief introduction to the QCD color space is given in Sect. 2 and the trace basis approach is presented in Sect. 3. Following this, some remarks about the computational strategy are made in Sect. 4 and the key design features are presented in Sect. 5, whereas examples of standalone usage are given in Sect. 6, and the interface to Herwig++ is commented upon in Sect. 7. The following section, Sect. 8, describes the classes of ColorFull and code validation is discussed in Sect. 9. Finally some concluding remarks are made in Sect. 10.
2 Color space
Clearly, in any QCD calculation, the color amplitudes, \(\mathbf {c}_1\) and \( \mathbf {c}_2\), may be kept as they are, with color structure read off from the contributing Feynman diagrams. Alternatively – and this is likely to be the preferred solutions for more than a few partons – they may be decomposed into a color basis (spanning set), such as a trace basis [8, 9, 10, 11, 12, 13, 14, 15, 16], a color flow basis [19] or a multiplet basis [17, 18].
3 Trace bases
Using this relation on every triplegluon vertex in any amplitude results in general in a sum of products of (connected) traces over SU(\(N_c\)) generators and open quarklines. More specifically, there is one open quarkline for every incoming quark/outgoing antiquark and outgoing quark/incoming antiquark. (Note that, from a color perspective outgoing antiquarks are equivalent to incoming quarks; we will here refer to them collectively as quarks. Similarly outgoing quarks are equivalent to incoming antiquarks, and will be referred to as antiquarks.)
Finally, we note that, if, on top of the quarkloops, there are also \(l_g\) loops from gluon exchanges in the Feynman diagram, these may contribute with up to one additional quarkline each (such as in Eq. (3.9)), completing the argument that for \(n_l=l_q+l_g\) loops, a general color structure in pure QCD can be written in terms of sums of products of closed and open quarklines, where each product contains at most \(\text{ min }[\text{ max }(1,N_q) +n_l, N_q+\lfloor N_g/2 \rfloor ]\) traces and open quarklines.
4 Computational strategy

For given external particles (quarks, antiquarks and gluons), we may always decompose the color space into a linear combination of closed and open quarklines, as described in Sect. 3. (Other color bases may be expressed in terms of linear combinations of these terms.)

We can always evaluate scalar products by first replacing triplegluon vertices using Eq. (3.1), then removing all gluon propagators using Eq. (3.2), and finally contracting the remaining product of \(q\overline{q}\)delta functions.
 1.
Contract all quarkends, giving a sum of products of closed quarklines.
 2.
On the individual quarklines, contract all neighboring gluons (giving a factor \(C_F\)) and all next to neighboring gluons, giving a factor \(T_R/N_c\) each, as only the color suppressed term in the Fierz identity, Eq. (3.2), survives. Also, contract traces of two gluons, \(\text{ tr }(t^{g_1}t^{g_2}) = \delta ^{g_1 g_2}T_{R}\).
 3.
Look for gluons to contract within the quarklines. Each such contraction may give rise to two terms, but at least the new traces tend to be shorter.
 4.
Look for gluon index contractions between the quarklines.
5 ColorFull at a glance

Square any QCD amplitude and calculate any interference term.

Create a trace basis for any number of quarks and gluons, and to arbitrary order.

Read in and write out color bases, including nontrace bases.

Calculate scalar product matrices, i.e., the matrices of scalar products between the basis vectors, write these out and read them in again.

Describe the effect of gluon exchange, including calculating the color soft anomalous dimension matrices.

Describe the effect of gluon emission.
5.1 Technical overview
Below is a complete list of the ColorFull classes, ordered by dependence, such that, a certain class only depends on classes standing above it in the list
Class  Functionality 

\(\mathtt {Monomial}\)  Class for containing a single term of form \(\mathtt {Nc}^{\mathtt {pow\_Nc}} \times \mathtt {TR}^{\mathtt {pow\_TR}} \times \) \(\mathtt {CF}^{\mathtt {pow\_CF}} \times \mathtt {int\_part} \times \mathtt {{cnum\_part}}\) and associated functions. 
\(\mathtt {Polynomial}\)  Class for containing a sum of Monomials and associated functions. 
\(\mathtt {Poly\_vec}\)  Class for containing a vector of Polynomials and associated functions. 
\(\mathtt {Poly\_matr}\)  Class for containing a matrix of Polynomials and associated functions. 
\(\mathtt {Quark\_line}\)  Class for containing a single closed or open quarkline multiplying a \(\mathtt {Polynomial}\) and associated functions. For example a term of the form \(\text{ tr }[t^{g_1}t^{g_2}t^{g_3}t^{g_4}]\) \(\sim \mathtt {(1,2,3,4)}\) or of the form \((t^{g_3}t^{g_4})^{q_1}_{q_2}\sim \mathtt {\{1,3,4,2\}}\) times a \(\mathtt {Polynomial}\). 
\(\mathtt {Col\_str}\)  Class for containing a product of Quark_lines multiplying a \(\mathtt {Polynomial}\), and associated functions. For example a polynomial \((N_c^21)\) may multiply the Quark_lines, \(\delta ^{q_1}{}_{q_2}\delta ^{g_1 g_4}\), in total giving the \(\mathtt {Col\_str}\) \(\sim \) ( \(\mathtt {Nc}\) 21) [{1,2}(3,4)]. 
\(\mathtt {Col\_amp}\)  Class for containing a sum of Col_strs such as \(\text{ tr }[t^{g_1}t^{g_2}t^{g_3}t^{g_4}]+\text{ tr }[t^{g_1}t^{g_2}]\text{ tr }[t^{g_3}t^{g_4}]\) \(\sim \) (1,2,3,4)+(1,2)(3,4) and associated functions. 
\(\mathtt {Col\_functions}\)  Library class containing functions for performing numerical evaluations, taking the leading \(N_c\) limit, evaluating scalar products, and describing gluon emission and exchange. 
Col_basis  Base class for all basis classes, see below. 
Trace_type_basis  Base class for \(\mathtt {Trace\_basis}\) and Tree_level_gluon_basis. 
\(\mathtt {Trace\_basis}\)  Class for creating and using trace bases. Perhaps the most important basis class. 
Tree_level_gluon_basis  Class for bases needed for treelevel gluon calculations, where each basis vector is a single trace plus an implicit complex conjugate. 
Orthogonal_basis  Class for utilizing the benefits of orthogonal bases such as multiplet bases [17, 18]. 
As contraction of indices gives rise to polynomials in \(N_c\), \(T_R\) and \(C_F\), ColorFull by necessity needs minimal classes for dealing with such polynomials. This is implemented in the classes \(\mathtt {Monomial}\) (a single term in a polynomial^{5}), \(\mathtt {Polynomial}\) (a sum of Monomials), \(\mathtt {Poly\_vec}\) (a vector of Polynomials) and \(\mathtt {Poly\_matr}\) (a matrix of Polynomials).
For the color structure itself, ColorFull uses the class \(\mathtt {Quark\_line}\) for treating an individual closed or open quarkline, a class \(\mathtt {Col\_str}\) for treating a product of Quark_lines and a class \(\mathtt {Col\_amp}\) for treating a general color amplitudes, i.e., a linear combination of Col_strs.
For performing numerical evaluations, taking the leading \(N_c\) limit, evaluating scalar products, and describing gluon emission and exchange, ColorFull has a library class \(\mathtt {Col\_functions}\).
Finally, ColorFull has classes for describing color bases. The classes intended for the user, \(\mathtt {Trace\_basis}\), Tree_level_gluon_basis and Orthogonal_basis, are derived from the base class Col_basis (in the case of the first two via the class Trace_type_basis).
All ColorFull classes are listed in Table 1 according to dependencies, meaning that each class only depends on classes listed above it. The next section will give an introduction to using ColorFull in standalone mode.
6 Standalone usage
ColorFull is mainly designed to deal with relatively large color spaces where it is advantageous to use bases in which color structures coming from Feynman diagrams – or alternative recursive strategies – are decomposed.
While the number of colors in QCD is three, ColorFull can deal with any \(N_c\), both algebraically and numerically. Numerical evaluation is handled by the \(\mathtt {Col\_functions}\) class, using the (private) member variables \(\mathtt {Nc}\), \(\mathtt {TR}\) and \(\mathtt {CF}\). Thus also \(T_R\) and \(C_F\) can be changed independently. The reason for keeping \(C_F\) as a parameter technically independent of \(N_c\) is that this allows for keeping the color suppressed part of \(C_F\), \(T_R/N_c\), in a consistent way. This choice has proved useful for accounting for subleading \(N_c\) effects in several phenomenological studies [23, 24].
7 Interfacing to Herwig via matchbox
ColorFull can also be interfaced to Herwig++ (\(\ge \)2.7) [7] via the Matchbox component [20], and can be used to treat the hard interaction, as in for example [25], as well as the parton shower itself [23]. When linked to Herwig++, ColorFull is hooked into the boost linear algebra package, enabling a very efficient treatment of numerical linear algebra. From the next major release of Herwig++, ColorFull will be directly shipped with the Herwig++, code.
8 ColorFull code
8.1 Operators
Standard operators for color structure and polynomial classes. (Operators for both orders of arguments are defined for the arithmetic operators +,  and *.)
Operator  Classes 

+ and   \(\mathtt {Polynomial}\) \(\mathtt {+/}\) (\(\mathtt {Monomial}\), \(\mathtt {Polynomial}\)) 
\(\mathtt {Col\_amp}\) \(\mathtt {+/}\) (\(\mathtt {Col\_str}\), \(\mathtt {Col\_amp}\))  
+=  \(\mathtt {Polynomial}\) \(\mathtt {+=}\) (\(\mathtt {Monomial}\), \(\mathtt {Polynomial}\)) 
\(\mathtt {Col\_amp}\) \(\mathtt {+=}\) (\(\mathtt {Col\_str}\), \(\mathtt {Col\_amp}\))  
*  \(\mathtt {Monomial}\) *(int, cnum, double, \(\mathtt {Monomial}\)) 
\(\mathtt {Polynomial}\) *(int, cnum, double, \(\mathtt {Monomial}\), \(\mathtt {Polynomial}\))  
\(\mathtt {Quark\_line}\) *(int, cnum, double, \(\mathtt {Monomial}\), \(\mathtt {Polynomial}\), \(\mathtt {Quark\_line}\))  
\(\mathtt {Col\_str}\) *(int, cnum, double, \(\mathtt {Monomial}\), \(\mathtt {Polynomial}\), \(\mathtt {Quark\_line}\), \(\mathtt {Col\_str}\))  
\(\mathtt {Col\_amp}\) *(int, cnum, double, \(\mathtt {Monomial}\), \(\mathtt {Polynomial}\), \(\mathtt {Quark\_line}\), \(\mathtt {Col\_str}\),  
\(\mathtt {Col\_amp}\))  
*=  \(\mathtt {Monomial}\) *=(int, cnum, double, \(\mathtt {Monomial}\)) 
\(\mathtt {Polynomial}\) *=(int, cnum, double, \(\mathtt {Monomial}\), \(\mathtt {Polynomial}\))  
\(\mathtt {Col\_amp}\) *=(\(\mathtt {Col\_str}\), \(\mathtt {Col\_amp}\))  
==  \(\mathtt {Monomial}\) == \(\mathtt {Monomial}\) 
\(\mathtt {Polynomial}\) == \(\mathtt {Polynomial}\)  
\(\mathtt {Poly\_vec}\) == \(\mathtt {Poly\_vec}\)  
\(\mathtt {Poly\_matr}\) == \(\mathtt {Poly\_matr}\)  
\(\mathtt {Quark\_line}\) == \(\mathtt {Quark\_line}\)  
\(\mathtt {Col\_str}\) == \(\mathtt {Col\_str}\)  
\(\mathtt {Col\_amp}\) == \(\mathtt {Col\_amp}\)  
!=  \(\mathtt {Monomial}\) != \(\mathtt {Monomial}\) 
\(\mathtt {Polynomial}\) != \(\mathtt {Polynomial}\)  
\(\mathtt {Poly\_vec}\) != \(\mathtt {Poly\_vec}\)  
\(\mathtt {Poly\_matr}\) != \(\mathtt {Poly\_matr}\)  
\(\mathtt {Quark\_line}\) != \(\mathtt {Quark\_line}\)  
\(\mathtt {Col\_str}\) != \(\mathtt {Col\_str}\)  
\(\mathtt {Col\_amp}\) != \(\mathtt {Col\_amp}\)  
\(\mathtt {<}\)  \(\mathtt {Monomial}\) \(\mathtt {<}\) \(\mathtt {Monomial}\) 
The Monomials are ordered first according to \(\mathtt {pow\_Nc}+\mathtt {pow\_CF}\), then according to \(\mathtt {pow\_Nc}\) (for same \(\mathtt {pow\_Nc}+\mathtt {pow\_CF}\)), then according to int_part*abs(cnum_part), then according to int_part and finally according to \(\mathtt {pow\_TR}\). This is thus not a magnitude operator.  
\(\mathtt {<<}\)  \(\mathtt {Monomial}\), \(\mathtt {Polynomial}\), \(\mathtt {Poly\_vec}\), \(\mathtt {Poly\_matr}\), \(\mathtt {Quark\_line}\), \(\mathtt {Col\_str}\), \(\mathtt {Col\_amp}\), Col_basis 
8.2 Classes for polynomials
The result of color index contraction can always be written as a sum of terms of the form \(N_c{}^a T_R{}^b C_F{}^c \,\times \text{ constant }\) where we allow for negative integers a, b, c. For the purpose of treating contracted color structures, ColorFull has a minimalistic set of classes for basic manipulation of color factors arising when contracting color indices. One such term is defined as a \(\mathtt {Monomial}\), and a sum of such terms as a \(\mathtt {Polynomial}\). To decompose vectors in a color space we also need a vector of Polynomials, contained in a \(\mathtt {Poly\_vec}\), and for a scalar product matrix (or soft anomalous dimension matrix) we need a matrix of polynomials, a \(\mathtt {Poly\_matr}\).
Apart from the \(\mathtt {Monomial}\) class, these classes have the actual polynomial information contained in uncapitalized typedefs carrying the same name as the class in question. There are thus \(\mathtt {polynomial}\), \(\mathtt {poly\_vec}\), and \(\mathtt {poly\_matr}\) typedefs. For manipulating the polynomial classes, the operators listed in Table 2 may be used. For example, we may multiply a \(\mathtt {Polynomial}\) and a \(\mathtt {Monomial}\).
8.2.1 Monomial
By default, using the standard constructor, \(\mathtt {Monomial}\) (), a \(\mathtt {Monomial}\) is set to 1, by letting cnum_part=1, int_part=1 and setting all powers to 0^{6}. A \(\mathtt {Monomial}\) with different integer part can be obtained by using the constructor taking an int as argument, and a general \(\mathtt {Monomial}\) can be constructed using the string constructor (see Table 3 in Appendix A.
8.2.2 Polynomial
8.2.3 Poly_vec
8.2.4 Poly_matr
8.3 Classes containing the color structure
This section describes the building blocks used by ColorFull to treat the color structure. All classes used to carry the color structure, \(\mathtt {Quark\_line}\), \(\mathtt {Col\_str}\), \(\mathtt {Col\_amp}\), including the basis classes Col_basis – from which Trace_type_basis, \(\mathtt {Trace\_basis}\), Tree_level_gluon_basis and Orthogonal_basis are derived – have the property that the actual information of the color structure is contained in a type with corresponding name, whereas the class acts as a container for related functions. Thus, for example, the color amplitude information in a \(\mathtt {Col\_amp}\) is contained in a \(\mathtt {col\_amp}\) variable.
8.3.1 Quark_line
8.3.2 Col_str
The \(\mathtt {Col\_str}\) member functions, listed in Table 8 in Appendix A, overlap to a high degree with the \(\mathtt {Quark\_line}\) member functions. In particular there are functions for contracting neighboring and next to neighboring gluons, and a normal_order member function. Apart from normal ordering the individual Quark_lines, the \(\mathtt {Col\_str}\) normal_order() member function sorts the Quark_lines as described in Table 8, where the public members of \(\mathtt {Col\_str}\) are listed.
For \(\mathtt {Col\_str}\) (and \(\mathtt {Quark\_line}\) and \(\mathtt {Col\_amp}\)), there is also a simplify() member function. This function removes quarklines with 0 quarks, (these are \(\mathtt {Nc}\) for closed Quark_lines and 1 for open Quark_lines), normal orders the col_strs, and simplifies the Polynomials. Potential Polynomials multiplying individual Quark_lines are also moved to the \(\mathtt {Col\_str}\) member variable Poly.
8.3.3 Col_amp
8.4 Col_functions: a library class
\(\mathtt {Col\_functions}\) is a library class containing functions which cannot, in a natural way, be attributed to one class, or functions which act on many classes and are therefore conveniently collected into one class.
In particular, \(\mathtt {Col\_functions}\) contains classes for evaluating scalar products, for numerical evaluation, for taking the leading \(N_c\) limit, and for describing the effect of gluon emission or gluon exchange.
8.4.1 Numerical evaluation
8.4.2 Leading \(N_c\) evaluation
\(\mathtt {Col\_functions}\) also contains functions for taking the leading \(N_c\) limit of the classes \(\mathtt {Polynomial}\), \(\mathtt {Poly\_vec}\) and \(\mathtt {Poly\_matr}\). The leading \(N_c\) terms can be evaluated in two different ways, either by taking the strict \(N_c\rightarrow \infty \) limit and dropping all color suppressed terms (default), or by keeping the color suppressed terms in \(C_F=T_R(N_c^21)/N_c\), while dropping other color suppressed terms. For keeping the full \(C_F\) in numerical evaluations the member variable full_CF must be set to true using set_full_CF(true).
8.4.3 Scalar products
8.4.4 Gluon exchange and gluon emission
8.5 Classes for color bases
Although ColorFull may perform calculations with individual Quark_lines, Col_strs and Col_amps, the intended usage is via the color basis classes \(\mathtt {Trace\_basis}\) (in particular), Tree_level_gluon_basis and Orthogonal_basis.
As these classes share much of the most important functionality, they all inherit from one base class, Col_basis. The \(\mathtt {Trace\_basis}\) and Tree_level_gluon_basis classes inherit from Col_basis via Trace_type_basis, whereas Orthogonal_basis inherits directly from Col_basis.
8.5.1 Col_basis
The most important Col_basis member function is probably the scalar_product_matrix() function which calculates the matrix of scalar products between the basis vectors. In its default from, this function uses memoization, as this speeds up the calculations, but this may be circumvented in using the scalar_product_matrix_no_mem() version.
In order not to have to calculate scalar product matrices over and over again Col_basis also has functions for reading in and writing out scalar product matrices, both in numerical and polynomial form.
Col_basis also contains functions for reading in and writing out the basis itself. This is essential for the Orthogonal_basis class which cannot (presently) construct the orthogonal bases, but may read them in.
The decomposition of color amplitudes into bases is done with the (virtual) decompose(\(\mathtt {Col\_amp}\)) member function, which does the decomposition by exploring the coefficients in front of traces and products of traces for \(\mathtt {Trace\_basis}\) and Tree_level_gluon_basis and by evaluating scalar products for the Orthogonal_basis case.
Another important function is the color_gamma function which (using decompose) calculates the soft anomalous dimension matrix, i.e., calculates the matrix describing the effect of gluon exchange between two partons. The result is returned as a Poly_matr where component i, j gives the amplitude for ending up in vector i, if starting in vector j, see also Sect. 6. A list of public members and functions for Col_basis is found in Table 11.
8.5.2 Trace_type_basis
Trace_type_basis is a small helper class for keeping track of functions which are similar for \(\mathtt {Trace\_basis}\) and Tree_level_gluon_basis. It inherits from Col_basis and is inherited from by \(\mathtt {Trace\_basis}\) and Tree_level_gluon_basis. Most importantly, this is where decompose is implemented for these two classes, see Table 12.
8.5.3 Trace_basis
Although the observation that each color amplitude may be decomposed into products of open and closed quarklines is a guiding principle for ColorFull, the \(\mathtt {Trace\_basis}\) class itself is rather small, containing mainly functions for creating bases.
A trace basis is created by first contracting all \(q\overline{q}\)pairs in all \(N_q!\) ways, and then attaching gluons to these closed quarklines, and to additional closed quarklines, such that at least two gluons are attached to each closed quarkline.
8.5.4 Tree_level_gluon_basis
In the case of gluononly color structures, charge conjugation implies that each trace must appear with its conjugate, in linear combinations of the form \(\text{ tr }[t^{g1}t^{g2}\ldots t^{gn}] + (1)^{N_g}\text{ tr }[t^{gn}\ldots t^{g2}t^{g1}]\). In the trace type basis class Tree_level_gluon_basis this is used to reduce the number of basis vectors and speed up calculations. More information can be found in Table 14.
8.5.5 Orthogonal_basis
ColorFull can not – in its present form – automatically create multiplet bases. However, orthogonal bases may be read in using the (Col_basis) function read_in_Col_basis(std::string) member function.
For dealing with orthogonal bases, ColorFull offers special functions for calculating the matrix of scalar products and decomposing vectors. The syntax for basis reading is the same as for basis writing. Bases thus appear much as in Eq. (8.23), see Tables 11 and 15.
9 Validation
For a code with order 10,000 lines, validation is essential. For this reason ColorFull is continuously validated using a test suite, which aims at testing all the various components. The applied tests starts with checking basic functions for reading in and writing out files, and dealing with polynomials. After this, the creation of bases is tested, and scalar products are tested by changing the order of index contraction, and by switching on and off memoization. The scalar product matrices have further been tested against ColorMath [4] and, for processes occurring in the context of [25], also against another private Mathematica code. The functions describing gluon emission and gluon exchange are crosschecked against each other.
10 Conclusion and outlook
ColorFull, a C++ standalone QCD color algebra package, designed for interfacing with event generators, has been presented.
ColorFull is based on trace bases, which can automatically be created, and color contraction is performed by repeated usage of the Fierz identity. Employing these bases, one can in principle describe any QCD process. In reality, the scalar product matrices, which may be calculated once and for all, become hard to manage for more than approximately 8 gluons plus \(q\overline{q}\)pairs. This limitation is inherent for the trace bases, since they are nonorthogonal, and for this reason ColorFull is written to be able to load and use orthogonal (multiplet) bases.
ColorFull does, however, not – in its present form – perform index contraction in terms of group invariants as described in for example [18, 26]. Extending ColorFull to inherently construct orthogonal multiplet bases and efficiently perform index contraction using 3j and 6j coefficient may speed up the treatment of QCD color space very significantly.
Footnotes
 1.
ColorFull can be downloaded from http://colorfull.hepforge.org/.
 2.
The automatically generated Doxygen documentation is available at http://colorfull.hepforge.org/doxygen.
 3.
It is not hard to prove that this actually is a scalar product.
 4.
To enhance the similarity with C++, the vector numbering starts at 0 here.
 5.
Throughout the ColorFull documentation terms of form constant\(\times N_c^a\, T_R^b \,C_F^c\) will be referred to as monomials, despite the possible occurrence of negative powers. Similarly sums of such terms will be referred to as polynomials.
 6.
A default \(\mathtt {Monomial}\) is thus the neutral element under multiplication, rather than under addition.
Notes
Acknowledgments
Simon Plätzer is thanked for interfacing ColorFull to Herwig++ and for writing the build system. I also want to thank Simon Plätzer and Johan Grönqvist for many valuable discussions on the organization of this code. This work was supported by a Marie Curie Experienced Researcher fellowship of the MCnet Research Training network, contract MRTNCT2006035606, by the Helmholtz Alliance "Physics at the Terascale" and by the Swedish Research Council, contract number 62120103326, 62120122744 and 62120134287.
References
 1.R. Mertig, M. Bohm, A. Denner, FEYN CALC: computer algebraic calculation of Feynman amplitudes. Comput. Phys. Commun. 64, 345–359 (1991)MathSciNetADSCrossRefGoogle Scholar
 2.J. Hakkinen, H. Kharraziha, COLOR: a computer program for QCD color factor calculations. Comput. Phys. Commun. 100, 311–321 (1997). arXiv:hepph/9603229
 3.T. van Ritbergen, A. Schellekens, J. Vermaseren, Group theory factors for Feynman diagrams. Int. J. Mod. Phys. A 14, 41–96 (1999). arXiv:hepph/9802376
 4.M. Sjodahl, ColorMath—a package for color summed calculations in SU(Nc). Eur. Phys. J. C 73, 2310 (2013). arXiv:1211.2099 ADSCrossRefGoogle Scholar
 5.J. Alwall, M. Herquet, F. Maltoni, O. Mattelaer, T. Stelzer, MadGraph 5: going beyond. JHEP 1106, 128 (2011). arXiv:1106.0522 ADSCrossRefGoogle Scholar
 6.M. Bahr et al., Herwig++ physics and manual. Eur. Phys. J. C 58, 639–707 (2008). arXiv:0803.0883 ADSCrossRefGoogle Scholar
 7.J. Bellm, S. Gieseke, D. Grellscheid, A. Papaefstathiou, S. Platzer, et al., Herwig++ 2.7 Release Note. arXiv:1310.6877
 8.J.E. Paton, H.M. Chan, Generalized Veneziano model with isospin. Nucl. Phys. B 10, 516–520 (1969)ADSCrossRefGoogle Scholar
 9.P. Dittner, Invariant tensors in SU(3). II. Commun. Math. Phys. 27, 44–52 (1972)MATHMathSciNetADSCrossRefGoogle Scholar
 10.P. Cvitanović, Group theory for Feynman diagrams in nonAbelian gauge theories. Phys. Rev. D 14, 1536–1553 (1976)MathSciNetADSCrossRefGoogle Scholar
 11.P. Cvitanović, P. Lauwers, P. Scharbach, Gauge invariance structure of quantum chromodynamics. Nucl. Phys. B 186, 165–186 (1981)ADSCrossRefGoogle Scholar
 12.F.A. Berends, W. Giele, The six gluon process as an example of Weyl–Van Der Waerden spinor calculus. Nucl. Phys. B 294, 700 (1987)ADSCrossRefGoogle Scholar
 13.M.L. Mangano, S.J. Parke, Z. Xu, Duality and multigluon scattering. Nucl. Phys. B 298, 653 (1988)ADSCrossRefGoogle Scholar
 14.M.L. Mangano, The color structure of gluon emission. Nucl. Phys. B 309, 461 (1988)ADSCrossRefGoogle Scholar
 15.Z. Nagy, D.E. Soper, Parton showers with quantum interference. JHEP 09, 114 (2007). arXiv:0706.0017 ADSCrossRefGoogle Scholar
 16.M. Sjodahl, Color structure for soft gluon resummation—a general recipe. JHEP 0909, 087 (2009). arXiv:0906.1121 ADSCrossRefGoogle Scholar
 17.S. Keppeler, M. Sjodahl, Orthogonal multiplet bases in SU(Nc) color space. JHEP 1209, 124 (2012). arXiv:1207.0609 MathSciNetADSCrossRefGoogle Scholar
 18.M. Sjodahl, J. Thoren, Decomposing color structure into multiplet bases. work in preparationGoogle Scholar
 19.F. Maltoni, K. Paul, T. Stelzer, S. Willenbrock, Color flow decomposition of QCD amplitudes. Phys. Rev. D 67, 014026 (2003). arXiv:hepph/0209271ADSCrossRefGoogle Scholar
 20.S. Platzer, S. Gieseke, Dipole showers and automated NLO matching in Herwig++. Eur. Phys. J. C 72, 2187 (2012). arXiv:1109.6256 ADSCrossRefGoogle Scholar
 21.Y.J. Du, M. Sjödahl, J. Thorén, Recursion in multiplet bases for treelevel MHV gluon amplitudes. arXiv:1503.0053
 22.E. Gerwick, S. Hoeche, S. Marzani, S. Schumann, Soft evolution of multijet final states. arXiv:1411.7325
 23.S. Platzer, M. Sjodahl, Subleading \(N_c\) improved parton showers. JHEP 1207, 042 (2012). arXiv:1201.0260 ADSCrossRefGoogle Scholar
 24.S. Platzer, Summing large\(N\) towers in colour flow evolution. Eur. Phys. J. C 74(6), 2907 (2014). arXiv:1312.2448
 25.F. Campanario, T.M. Figy, S. Platzer, M. Sjodahl, Electroweak Higgs boson plus three jet production at nexttoleadingorder QCD. Phys. Rev. Lett. 111(21), 211802 (2013). arXiv:1308.2932
 26.P. Cvitanović, Group Theory: Birdtracks, Lie’s, and Exceptional Groups. Princeton University Press, Princeton (2008). http://www.birdtracks.eu
Copyright information
Open AccessThis article is distributed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license, and indicate if changes were made.
Funded by SCOAP^{3}.