9 #ifndef ThePEG_epsilon_H
10 #define ThePEG_epsilon_H
14 #include "ThePEG/Vectors/LorentzVector.h"
39 template <
typename A,
typename B,
typename C>
41 typename BinaryOpTraits<A,B>::MulT, C>::MulT>
45 typedef typename BinaryOpTraits<A,B>::MulT ABType;
46 typedef typename BinaryOpTraits<ABType, C>::MulT ABCType;
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);