herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
MatrixElement
Matchbox
ColorFull
Col_basis.h
1
// -*- C++ -*-
2
/*
3
* Col_basis.h
4
* Contains the declarations of the class Col_basis, related types and operators.
5
* Created on: Aug 9, 2012
6
* Author: Malin Sjodahl
7
*/
8
9
#ifndef COLORFULL_Col_basis_h
10
#define COLORFULL_Col_basis_h
11
12
13
#include "Col_functions.h"
14
15
16
namespace
ColorFull {
17
19
typedef
std::vector<Col_amp> col_basis;
20
24
class
Col_basis
{
25
26
public
:
27
29
Col_basis
(){
30
nq
=0;
31
ng
=0;
32
trace_basis =
false
;
33
tree_level_gluon_basis =
false
;
34
orthogonal_basis =
false
;
35
}
36
38
virtual
~Col_basis
(){}
39
42
int
nq
;
43
46
int
ng
;
47
50
col_basis
cb
;
51
53
Poly_matr
P_spm
;
54
56
Poly_matr
leading_P_spm
;
57
59
dmatr
d_spm
;
60
62
dmatr
leading_d_spm
;
63
65
Col_functions
Col_fun
;
66
68
bool
is_Trace_basis
()
const
{
return
trace_basis;}
69
71
bool
is_Orthogonal_basis
()
const
{
return
orthogonal_basis;}
72
74
bool
is_Tree_level_gluon_basis
()
const
{
return
tree_level_gluon_basis;}
75
77
uint
size
()
const
{
return
cb
.size();}
78
80
const
Col_amp
&
at
(
const
int
i )
const
{
return
cb
.at(i);}
81
83
Col_amp
&
at
(
const
int
i ) {
return
cb
.at(i);}
84
86
bool
empty
()
const
{
return
cb
.empty(); }
87
89
void
clear
() {
cb
.clear(); }
90
92
void
append
(
Col_amp
Ca ) {
cb
.push_back( Ca ); }
93
95
void
append
( col_basis cb_in );
96
97
98
/******************** Functions for scalar products **********************/
99
100
109
void
scalar_product_matrix
();
110
113
void
scalar_product_matrix_num
();
114
117
virtual
void
scalar_product_matrix_no_mem
();
118
121
void
scalar_product_matrix_num_no_mem
();
122
128
void
leading_scalar_product_matrix
();
129
134
virtual
Polynomial
scalar_product
(
const
Col_amp
& Ca1,
const
Col_amp
& Ca2 );
135
140
virtual
cnum
scalar_product_num
(
const
Col_amp
& Ca1,
const
Col_amp
& Ca2 );
141
147
virtual
cnum
scalar_product_num
(
const
cvec & v1,
const
cvec & v2 );
148
155
cnum
scalar_product_num_diagonal
(
const
cvec & v1,
const
cvec & v2 );
156
157
158
/******************** Functions for reading and writing **********************/
159
160
// Functions for naming files
161
164
std::string
basis_file_name
()
const
;
165
171
std::string
spm_file_name
(
const
bool
leading,
const
bool
poly)
const
;
172
187
virtual
void
read_in_Col_basis
( std::string filename );
188
191
virtual
void
read_in_Col_basis
();
192
201
void
read_in_d_spm
( std::string filename );
202
211
void
read_in_d_spm
( );
212
220
void
read_in_leading_d_spm
( std::string filename );
221
229
void
read_in_leading_d_spm
( );
230
238
void
read_in_P_spm
( std::string filename );
239
247
void
read_in_P_spm
( );
248
257
void
read_in_leading_P_spm
( std::string filename );
258
266
void
read_in_leading_P_spm
( );
267
268
269
// Functions for writing
270
272
virtual
void
write_out_Col_basis
( std::string filename)
const
;
273
276
virtual
void
write_out_Col_basis
()
const
;
277
279
void
write_out_d_spm
( std::string filename )
const
;
280
282
void
write_out_d_spm
( )
const
;
283
285
void
write_out_P_spm
( std::string filename )
const
;
286
288
void
write_out_P_spm
( )
const
;
289
291
void
write_out_leading_d_spm
( std::string filename )
const
;
292
294
void
write_out_leading_d_spm
( )
const
;
295
297
void
write_out_leading_P_spm
( std::string filename )
const
;
298
300
void
write_out_leading_P_spm
( )
const
;
301
302
/******************** Other functions **********************/
303
306
void
simplify
();
307
310
virtual
Poly_vec
decompose
(
const
Col_amp
& Ca );
311
315
Col_amp
exchange_gluon
( uint vec,
int
p1,
int
p2 );
316
327
Poly_matr
color_gamma
(
int
p1,
int
p2 );
328
332
int
n_quark_check
()
const
;
333
337
int
n_gluon_check
()
const
;
338
341
void
rename_indices
(
Col_str
& Cs1,
Col_str
& Cs2 )
const
;
342
343
/******************** Internal functions **********************/
344
345
protected
:
346
347
bool
trace_basis;
348
bool
tree_level_gluon_basis;
349
bool
orthogonal_basis;
350
361
virtual
void
scalar_product_matrix
(
bool
save_P_spm,
bool
save_d_spm,
bool
use_mem );
362
364
virtual
Polynomial
ij_entry
(
const
int
i,
const
int
j )
const
;
365
369
bool
check_diagonal
(
const
dmatr & matr )
const
;
370
374
bool
check_symmetry
(
const
dmatr & matr )
const
;
375
377
void
check_spm
()
const
;
378
381
void
Col_basis_of_str
( std::string str );
382
385
virtual
std::ostream&
write_out_Col_basis_to_stream
( std::ostream& out )
const
;
386
389
friend
std::ostream&
operator<<
( std::ostream& out,
const
Col_basis
& Cb );
390
391
};
// end class Col_basis
392
393
395
std::ostream&
operator<<
( std::ostream& out,
const
col_basis & cb );
396
397
399
std::ostream&
operator<<
( std::ostream& out,
const
Col_basis
& Cb );
400
401
}
// end namespace ColorFull
402
403
404
#endif
/* COLBASIS_H_ */
405
ColorFull::Col_amp
The full color amplitude is Scalar + Cs1+Cs2+Cs3... Col_amp is a class to contain info on several Col...
Definition:
Col_amp.h:24
ColorFull::Col_basis
To contain a color basis, where each basis vector is a Col_amp.
Definition:
Col_basis.h:24
ColorFull::Col_basis::basis_file_name
std::string basis_file_name() const
Returns a standard filename, used for writing out the basis to a file.
ColorFull::Col_basis::n_quark_check
int n_quark_check() const
Returns the number of quarks in the Col_basis after checking that each Col_str in each Col_amp has th...
ColorFull::Col_basis::write_out_leading_d_spm
void write_out_leading_d_spm(std::string filename) const
Writes out leading_d_spm to the file filename.
ColorFull::Col_basis::scalar_product_matrix
virtual void scalar_product_matrix(bool save_P_spm, bool save_d_spm, bool use_mem)
The underlying function for calculation of scalar product matrices.
ColorFull::Col_basis::empty
bool empty() const
Is the col_basis empty?
Definition:
Col_basis.h:86
ColorFull::Col_basis::read_in_P_spm
void read_in_P_spm(std::string filename)
Read in a Polynomial matrix from the file filename and save it as a Poly_matr in the member variable ...
ColorFull::Col_basis::check_spm
void check_spm() const
Makes consistency checks on the scalar product matrix.
ColorFull::Col_basis::ng
int ng
The number of gluons, initially set to 0 and (possibly) changed with create_basis,...
Definition:
Col_basis.h:46
ColorFull::Col_basis::is_Tree_level_gluon_basis
bool is_Tree_level_gluon_basis() const
Is it a Tree_level_gluon_basis?
Definition:
Col_basis.h:74
ColorFull::Col_basis::P_spm
Poly_matr P_spm
To contain the Polynomial version of the scalar product matrix.
Definition:
Col_basis.h:53
ColorFull::Col_basis::append
void append(col_basis cb_in)
Appends the Col_amps in cb_in to the col_basis member cb.
ColorFull::Col_basis::append
void append(Col_amp Ca)
Appends a Col_amp to the basis, stored in cb.
Definition:
Col_basis.h:92
ColorFull::Col_basis::scalar_product_matrix
void scalar_product_matrix()
Function for calculating the scalar products matrix.
ColorFull::Col_basis::at
const Col_amp & at(const int i) const
Returns the Col_amp (basis vector) at place i.
Definition:
Col_basis.h:80
ColorFull::Col_basis::leading_P_spm
Poly_matr leading_P_spm
To contain the Polynomial version of the leading part of the scalar product matrix.
Definition:
Col_basis.h:56
ColorFull::Col_basis::write_out_Col_basis_to_stream
virtual std::ostream & write_out_Col_basis_to_stream(std::ostream &out) const
Function for writing out the basis in a human readable format to an ostream.
ColorFull::Col_basis::is_Orthogonal_basis
bool is_Orthogonal_basis() const
Is it an Orthogonal_basis?
Definition:
Col_basis.h:71
ColorFull::Col_basis::write_out_leading_P_spm
void write_out_leading_P_spm() const
Writes out leading_P_spm to the standard filename, see spm_file_name.
ColorFull::Col_basis::nq
int nq
The number of qqbar-pairs, initially set to 0 and (possibly) changed with create_basis,...
Definition:
Col_basis.h:42
ColorFull::Col_basis::leading_d_spm
dmatr leading_d_spm
To contain the double version of the leading part of the scalar product matrix.
Definition:
Col_basis.h:62
ColorFull::Col_basis::read_in_P_spm
void read_in_P_spm()
Read in a Polynomial matrix from a file with default filename (see spm_file_name) and save it as a Po...
ColorFull::Col_basis::operator<<
friend std::ostream & operator<<(std::ostream &out, const Col_basis &Cb)
The operator << for Col_basis operator must be able to access the write_out_Col_basis_to_stream opera...
ColorFull::Col_basis::Col_basis_of_str
void Col_basis_of_str(std::string str)
Converts a text string (in a file) to a basis, used by the read_in_basis functions.
ColorFull::Col_basis::write_out_d_spm
void write_out_d_spm() const
Writes out d_spm to the standard filename, see spm_file_name.
ColorFull::Col_basis::scalar_product_num_diagonal
cnum scalar_product_num_diagonal(const cvec &v1, const cvec &v2)
Calculates the scalar product between numerical (complex) amplitudes v1, v2 using the numerical scala...
ColorFull::Col_basis::at
Col_amp & at(const int i)
Returns the Col_amp (basis vector) at place i.
Definition:
Col_basis.h:83
ColorFull::Col_basis::read_in_leading_d_spm
void read_in_leading_d_spm(std::string filename)
Read in a numerical matrix from the file filename and save it as a double matrix, dmatr,...
ColorFull::Col_basis::read_in_leading_d_spm
void read_in_leading_d_spm()
Read in a numerical matrix from a file with default filename (see spm_file_name) and save it as a dou...
ColorFull::Col_basis::write_out_Col_basis
virtual void write_out_Col_basis() const
Function for writing out the basis to a file with default name (see basis_file_name).
ColorFull::Col_basis::Col_basis
Col_basis()
Default constructor.
Definition:
Col_basis.h:29
ColorFull::Col_basis::size
uint size() const
Returns the number of basis vectors.
Definition:
Col_basis.h:77
ColorFull::Col_basis::read_in_leading_P_spm
void read_in_leading_P_spm()
Reads in a Polynomial matrix from default filename (see spm_file_name) and save it as a Poly_matr in ...
ColorFull::Col_basis::write_out_d_spm
void write_out_d_spm(std::string filename) const
Writes out d_spm to the file filename.
ColorFull::Col_basis::write_out_leading_P_spm
void write_out_leading_P_spm(std::string filename) const
Writes out leading_P_spm to the file filename.
ColorFull::Col_basis::check_symmetry
bool check_symmetry(const dmatr &matr) const
Checking that a numerical (double) matrix (the scalar product matrix) is symmetric.
ColorFull::Col_basis::Col_fun
Col_functions Col_fun
To contain the set of Col_functions used.
Definition:
Col_basis.h:65
ColorFull::Col_basis::write_out_Col_basis
virtual void write_out_Col_basis(std::string filename) const
Function for writing out the basis to a file with name filename.
ColorFull::Col_basis::scalar_product_num
virtual cnum scalar_product_num(const cvec &v1, const cvec &v2)
Calculates the scalar product between numerical (complex) amplitudes v1, V2 using the numerical scala...
ColorFull::Col_basis::read_in_d_spm
void read_in_d_spm()
Read in a numerical matrix from a file with default filename (see spm_file_name) and save it as a dou...
ColorFull::Col_basis::scalar_product_matrix_num
void scalar_product_matrix_num()
This function works as scalar_product_matrix, but does the calculation numerically.
ColorFull::Col_basis::scalar_product_matrix_num_no_mem
void scalar_product_matrix_num_no_mem()
This function works like scalar_product_matrix_num, but does not use memoization.
ColorFull::Col_basis::scalar_product
virtual Polynomial scalar_product(const Col_amp &Ca1, const Col_amp &Ca2)
Function for calculating scalar products algebraically using the basis and the scalar product matrix ...
ColorFull::Col_basis::rename_indices
void rename_indices(Col_str &Cs1, Col_str &Cs2) const
A function to rename the indices in two Col_strs, such that in the first they are called 1,...
ColorFull::Col_basis::scalar_product_matrix_no_mem
virtual void scalar_product_matrix_no_mem()
This function works like scalar_product_matrix, but does not use memoization.
ColorFull::Col_basis::write_out_P_spm
void write_out_P_spm(std::string filename) const
Writes out P_spm to the file filename.
ColorFull::Col_basis::check_diagonal
bool check_diagonal(const dmatr &matr) const
Checking that a numerical (double) matrix is diagonal.
ColorFull::Col_basis::exchange_gluon
Col_amp exchange_gluon(uint vec, int p1, int p2)
Function for finding the resulting Col_amp after exchanging a gluon between parton p1 and parton p2 i...
ColorFull::Col_basis::n_gluon_check
int n_gluon_check() const
Returns the number of gluons in the Col_basis after checking that each Col_str in each Col_amp has th...
ColorFull::Col_basis::color_gamma
Poly_matr color_gamma(int p1, int p2)
Function for calculating the color structure part of the soft anomalous dimension matrix.
ColorFull::Col_basis::d_spm
dmatr d_spm
To contain the double version of the scalar product matrix.
Definition:
Col_basis.h:59
ColorFull::Col_basis::~Col_basis
virtual ~Col_basis()
Destructor.
Definition:
Col_basis.h:38
ColorFull::Col_basis::write_out_leading_d_spm
void write_out_leading_d_spm() const
Writes out leading_d_spm to the standard filename, see spm_file_name.
ColorFull::Col_basis::write_out_P_spm
void write_out_P_spm() const
Writes out P_spm to the standard filename, see spm_file_name.
ColorFull::Col_basis::cb
col_basis cb
To actually contain the info about the basis vectors cb= vector1, vector2... .
Definition:
Col_basis.h:50
ColorFull::Col_basis::clear
void clear()
Erase the basis, stored in cb.
Definition:
Col_basis.h:89
ColorFull::Col_basis::leading_scalar_product_matrix
void leading_scalar_product_matrix()
Finds the leading Nc scalar product matrices, leading_P_spm and leading_d_spm.
ColorFull::Col_basis::is_Trace_basis
bool is_Trace_basis() const
Is it a Trace_basis?
Definition:
Col_basis.h:68
ColorFull::Col_basis::ij_entry
virtual Polynomial ij_entry(const int i, const int j) const
Calculates element i,j in scalar product matrix using the scalar product.
ColorFull::Col_basis::scalar_product_num
virtual cnum scalar_product_num(const Col_amp &Ca1, const Col_amp &Ca2)
Function for calculating scalar products numerically, knowing the basis and the scalar product matrix...
ColorFull::Col_basis::read_in_d_spm
void read_in_d_spm(std::string filename)
Read in a numerical matrix from a file filename (see spm_file_name) and save it as a double matrix,...
ColorFull::Col_basis::simplify
void simplify()
Simplifies all the basis vectors by using simplify on the individual Col_amps in the basis.
ColorFull::Col_basis::read_in_leading_P_spm
void read_in_leading_P_spm(std::string filename)
Read in a Polynomial matrix from a file with default filename (see spm_file_name) and save it as a Po...
ColorFull::Col_basis::read_in_Col_basis
virtual void read_in_Col_basis(std::string filename)
Function for reading in the basis from the file filename.
ColorFull::Col_basis::read_in_Col_basis
virtual void read_in_Col_basis()
Function for reading in the basis from default filename (see basis_file_name).
ColorFull::Col_basis::decompose
virtual Poly_vec decompose(const Col_amp &Ca)
Each type of color basis has to implement a function for decomposing an amplitude in the color basis.
ColorFull::Col_basis::spm_file_name
std::string spm_file_name(const bool leading, const bool poly) const
Returns a standard filename, used for writing out scalar product matrices.
ColorFull::Col_functions
Library class containing functions for index contraction and numerical evaluation.
Definition:
Col_functions.h:25
ColorFull::Col_str
A class to contain ONE color structure, a direct product of Quark_lines, multiplying a Polynomial,...
Definition:
Col_str.h:26
ColorFull::Poly_matr
Class for containing a Polynomial matrix, and functions for Polynomial matrices.
Definition:
Poly_matr.h:26
ColorFull::Poly_vec
Class for containing vector of Polynomials, and functions for Polynomial vectors.
Definition:
Poly_vec.h:25
ColorFull::Polynomial
For containing a Polynomial (in Nc, CF and TR), as a sum of Monomials.
Definition:
Polynomial.h:30
ThePEG::operator<<
ostream & operator<<(ostream &, const Collision &)
Generated on Thu Jun 20 2024 17:50:52 for Herwig by
1.9.6