X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fclifford.h;h=81abd9f5c879c956da862f009fc5f24f6b7bcbc4;hp=667d7befd9d400749188f8af6f28bcecee1ce83e;hb=ba0b56c5ac76274c5d748eaa29fbd83cb1d4fb9e;hpb=09f0415b7442714ea9adae30872d151452185962;ds=sidebyside diff --git a/ginac/clifford.h b/ginac/clifford.h index 667d7bef..81abd9f5 100644 --- a/ginac/clifford.h +++ b/ginac/clifford.h @@ -28,6 +28,8 @@ #include "symbol.h" #include "idx.h" +#include + namespace GiNaC { @@ -226,6 +228,26 @@ ex dirac_gammaR(unsigned char rl = 0); * @param rl Representation label */ ex dirac_slash(const ex & e, const ex & dim, unsigned char rl = 0); +/** Calculate dirac traces over the specified set of representation labels. + * The computed trace is a linear functional that is equal to the usual + * trace only in D = 4 dimensions. In particular, the functional is not + * always cyclic in D != 4 dimensions when gamma5 is involved. + * + * @param e Expression to take the trace of + * @param rls Set of representation labels + * @param trONE Expression to be returned as the trace of the unit matrix */ +ex dirac_trace(const ex & e, const std::set & rls, const ex & trONE = 4); + +/** Calculate dirac traces over the specified list of representation labels. + * The computed trace is a linear functional that is equal to the usual + * trace only in D = 4 dimensions. In particular, the functional is not + * always cyclic in D != 4 dimensions when gamma5 is involved. + * + * @param e Expression to take the trace of + * @param rll List of representation labels + * @param trONE Expression to be returned as the trace of the unit matrix */ +ex dirac_trace(const ex & e, const lst & rll, const ex & trONE = 4); + /** Calculate the trace of an expression containing gamma objects with * a specified representation label. The computed trace is a linear * functional that is equal to the usual trace only in D = 4 dimensions.