9 #ifndef ThePEG_epsilon_H 10 #define ThePEG_epsilon_H 14 #include "ThePEG/Vectors/LorentzVector.h" 39 template <
typename A,
typename B,
typename C>
45 typedef typename BinaryOpTraits<A,B>::MulT ABType;
49 ABType diffxy = a.x() * b.y() - a.y() * b.x();
50 ABType diffxz = a.x() * b.z() - a.z() * b.x();
51 ABType diffxt = a.x() * b.t() - a.t() * b.x();
52 ABType diffyz = a.y() * b.z() - a.z() * b.y();
53 ABType diffyt = a.y() * b.t() - a.t() * b.y();
54 ABType diffzt = a.z() * b.t() - a.t() * b.z();
57 result.setX( c.z() * diffyt - c.t() * diffyz - c.y() * diffzt);
58 result.setY( c.t() * diffxz - c.z() * diffxt + c.x() * diffzt);
59 result.setZ(-c.t() * diffxy + c.y() * diffxt - c.x() * diffyt);
60 result.setT(-c.z() * diffxy + c.y() * diffxz - c.x() * diffyz);
A 4-component Lorentz vector.
This is the main namespace within which all identifiers in ThePEG are declared.
LorentzVector< typename BinaryOpTraits< typename BinaryOpTraits< A, B >::MulT, C >::MulT > epsilon(const LorentzVector< A > &a, const LorentzVector< B > &b, const LorentzVector< C > &c)
Return the product .
BinaryOpTraits should be specialized with typdefs called MulT and DivT which gives the type resulting...