X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fcolor.h;h=4d4169a7ab119c597f4fdd6bf7880b5181a0a022;hp=299b3be8c885cbeadb4bb30ed71c6001659c8437;hb=dad107ff48f68d45e72469a8716df375ae145cf3;hpb=19c8f943c15dcc0d946fb4d5fef11e487d34857a diff --git a/ginac/color.h b/ginac/color.h index 299b3be8..4d4169a7 100644 --- a/ginac/color.h +++ b/ginac/color.h @@ -3,7 +3,7 @@ * Interface to GiNaC's color objects. */ /* - * GiNaC Copyright (C) 1999-2000 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2001 Johannes Gutenberg University Mainz, Germany * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,18 +28,29 @@ #include "indexed.h" #include "ex.h" -#ifndef NO_NAMESPACE_GINAC namespace GiNaC { -#endif // ndef NO_NAMESPACE_GINAC const unsigned MAX_REPRESENTATION_LABELS = 4; const unsigned COLOR_EIGHT = 8; // N*N-1 const unsigned COLOR_THREE = 3; // N -// typedef std::vector exvectorvector; -typedef std::vector exvectorvector; // CINT does not like vector<...,default_alloc> - -/** Base class for color object */ +// Cint doesn't like vector<..,default_alloc> but malloc_alloc is +// unstandardized and not supported by newer GCCs. +#if defined(__GNUC__) && ((__GNUC__ == 2) && (__GNUC_MINOR__ < 97)) +typedef std::vector exvectorvector; +#else +typedef std::vector exvectorvector; +#endif + + +/** This class holds an object carrying color indices (of class coloridx). + * It can represent the generators T_a and structure constants f_abc/d_abc + * of SU(3), the unity element ONE of the Lie algebra of SU(3), or the + * unity matrix delta8. Together, these objects are used to implement the + * Lie algebra su(3), as required for calculations in quantum + * chromodynamics. A representation label (an unsigned integer) is used to + * distinguish elements from different Lie algebras (only objects with the + * same representation label "interact" with each other). */ class color : public indexed { GINAC_DECLARE_REGISTERED_CLASS(color, indexed) @@ -66,31 +77,21 @@ class color : public indexed friend ex simplify_pure_color_string(const ex & e); friend ex simplify_color(const ex & e); - // types public: + /** Type of object */ typedef enum { - invalid, // not properly constructed by one of the friend functions - color_T, - color_f, - color_d, - color_delta8, - color_ONE + invalid, /**< not properly constructed */ + color_T, /**< one of the generators T_a of SU(3) (these are non-commutative) */ + color_f, /**< one of the antisymmetric structure constants f_abc of SU(3) */ + color_d, /**< one of the symmetric structure constants d_abc of SU(3) */ + color_delta8, /**< the unity matrix */ + color_ONE /**< the unity element of su(3) */ } color_types; // member functions - // default constructor, destructor, copy constructor assignment operator and helpers -public: - color(); - ~color(); - color(const color & other); - const color & operator=(const color & other); -protected: - void copy(const color & other); - void destroy(bool call_parent); - // other constructors protected: color(color_types const t, unsigned rl=0); @@ -103,15 +104,12 @@ protected: // functions overriding virtual functions from base classes public: - basic * duplicate() const; void printraw(std::ostream & os) const; void printtree(std::ostream & os, unsigned indent) const; void print(std::ostream & os, unsigned upper_precedence=0) const; - void printcsrc(std::ostream & os, unsigned type, unsigned upper_precedence=0) const; bool info(unsigned inf) const; ex eval(int level=0) const; protected: - int compare_same_type(const basic & other) const; bool is_equal_same_type(const basic & other) const; ex simplify_ncmul(const exvector & v) const; ex thisexprseq(const exvector & v) const; @@ -127,15 +125,10 @@ protected: // member variables protected: - color_types type; - unsigned representation_label; // to distiguish independent color matrices coming from separated fermion lines + color_types type; /**< Type of object (generator, structure constant etc.) */ + unsigned representation_label; /**< Representation label to distiguish independent color matrices coming from separated fermion lines */ }; -// global constants - -extern const color some_color; -extern const type_info & typeid_color; - // global functions inline const color &ex_to_color(const ex &e) { @@ -168,10 +161,6 @@ ex simplify_color(const ex & e); ex brute_force_sum_color_indices(const ex & e); -void append_exvector_to_exvector(exvector & dest, const exvector & source); - -#ifndef NO_NAMESPACE_GINAC } // namespace GiNaC -#endif // ndef NO_NAMESPACE_GINAC #endif // ndef __GINAC_COLOR_H__