Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:24:11

0001 // -*- C++ -*-
0002 /*
0003  * Trace_basis.h
0004  * Contains the declarations of the class Trace_basis, related types and operators
0005  * Created on: Aug 9, 2012
0006  * Author: Malin Sjodahl
0007  */
0008 
0009 #ifndef COLORFULL_Trace_basis_h
0010 #define COLORFULL_Trace_basis_h
0011 
0012 #include "Trace_type_basis.h"
0013 
0014 namespace ColorFull {
0015 
0016 
0017 /// In a trace basis the basis vectors are closed or open quark-lines
0018 /// or products of close and open quark-lines.
0019 class Trace_basis:public Trace_type_basis {
0020 public:
0021 
0022     /// Default constructor.
0023     Trace_basis():Trace_type_basis(){
0024         initialize();
0025     }
0026 
0027     /// Constructor for creating a trace basis for n_quark qqbar-pairs
0028     /// and n_gluon gluons.
0029     Trace_basis( int n_quark, int n_gluon ){
0030         initialize();
0031         create_basis( n_quark, n_gluon );
0032     }
0033 
0034     /// Constructor for creating a trace basis for n_quark qqbar-pairs
0035     /// and n_gluon gluons, keeping only those color structures that
0036     /// can appear to order n_loop in pure QCD.
0037     /// (Note: For electroweak interactions more color structures may
0038     /// be needed.)
0039     Trace_basis( int n_quark, int n_gluon, int n_loop ){
0040         initialize();
0041         create_basis( n_quark, n_gluon, n_loop );
0042     }
0043 
0044 
0045     /******************** Functions for basis creation **********************/
0046 
0047     /// Creates a trace basis with basis vectors saved in the cb member.
0048     /// Keeps all possible basis vectors, i.e., the basis is valid to any order
0049     /// in perturbation theory.
0050     void create_basis( int n_q, int n_g );
0051 
0052     /// Creates a trace basis with basis vectors saved in the cb member.
0053     /// Keeps only basis vectors needed up to n_loop in pure QCD.
0054     void create_basis( int n_q, int n_g, int n_loop );
0055 
0056 
0057 private:
0058 
0059     /******************** Internal function for basis creation **********************/
0060 
0061     /// Little helper function, called by all constructors.
0062     void initialize(){
0063         nq=0;
0064         ng=0;
0065         tree_level_gluon_basis = false;
0066         orthogonal_basis = false;
0067         trace_basis = true;
0068     }
0069 
0070     /// Function for creating a basis with n_q=n_qbar
0071     /// quarks and ng gluons to order n_loop,
0072     /// i.e. each Col_str is a product of at most
0073     /// max(1+nq)+n_loop Quark_lines.
0074     Col_amp create_trace_basis( int n_q, int n_g, int n_loop ) const;
0075 
0076     /// Connect the n_q quarks in all n_q! ways.
0077     /// This function is used when creating a basis.
0078     Col_amp connect_quarks( int n_quark ) const;
0079 
0080     /// Compute the new basis states coming from
0081     /// one old vector when one gluon, g_new, is added.
0082     Col_amp add_one_gluon( const Col_str & Cs, int g_new ) const;
0083 
0084     /// Compute the basis if one gluon is added to the old basis Old_basis.
0085     /// If n_loop==0, only tree level states are constructed.
0086     Col_amp add_one_gluon( const Col_amp & Old_basis, int n_q, int g_new, int n_loop ) const;
0087 
0088 };
0089 
0090 } /* namespace ColorFull */
0091 #endif /* COLORFULL_Trace_basis_h */