]> www.ginac.de Git - ginac.git/blobdiff - ginac/clifford.h
synced to head (dirac_trace()/color_trace())
[ginac.git] / ginac / clifford.h
index 2959a0f7bafabe0ad92990be6fc6ba2c5e1e018c..996a844ed3d50a9475f6d5098d27e9c94fda0a3e 100644 (file)
@@ -26,6 +26,8 @@
 #include "indexed.h"
 #include "tensor.h"
 
+#include <set>
+
 namespace GiNaC {
 
 
@@ -192,6 +194,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<unsigned char> & 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.