+
+ // non-virtual functions in this class
+protected:
+ void do_print(const print_context & c, unsigned level) const;
+ void do_print_latex(const print_latex & c, unsigned level) const;
+};
+
+
+/** This class represents the Dirac gamma5 object which anticommutes with
+ * all other gammas. */
+class diracgamma5 : public tensor
+{
+ GINAC_DECLARE_REGISTERED_CLASS(diracgamma5, tensor)
+
+ // non-virtual functions in this class
+protected:
+ void do_print(const print_context & c, unsigned level) const;
+ void do_print_latex(const print_latex & c, unsigned level) const;
+};
+
+
+/** This class represents the Dirac gammaL object which behaves like
+ * 1/2 (1-gamma5). */
+class diracgammaL : public tensor
+{
+ GINAC_DECLARE_REGISTERED_CLASS(diracgammaL, tensor)
+
+ // non-virtual functions in this class
+protected:
+ void do_print(const print_context & c, unsigned level) const;
+ void do_print_latex(const print_latex & c, unsigned level) const;
+};
+
+
+/** This class represents the Dirac gammaL object which behaves like
+ * 1/2 (1+gamma5). */
+class diracgammaR : public tensor
+{
+ GINAC_DECLARE_REGISTERED_CLASS(diracgammaR, tensor)
+
+ // non-virtual functions in this class
+protected:
+ void do_print(const print_context & c, unsigned level) const;
+ void do_print_latex(const print_latex & c, unsigned level) const;