/usr/include/ThePEG/Helicity/epsilon.h is in libthepeg-dev 1.8.0-3build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | // -*- C++ -*-
//
// epsilon.h is a part of ThePEG - Toolkit for HEP Event Generation
// Copyright (C) 2003-2011 Peter Richardson, Leif Lonnblad
//
// ThePEG is licenced under version 2 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
#ifndef ThePEG_epsilon_H
#define ThePEG_epsilon_H
//
// This is the declaration of the epsilon class.
#include "ThePEG/Vectors/LorentzVector.h"
namespace ThePEG {
namespace Helicity {
/** \ingroup Helicity
* \author Peter Richardson
*
* This class is designed to combine 5-momenta and polarization
* vectors together with the result being the product with the
* eps function. The class is purely static and contains no data.
*
* @see LorentzPolarizationVector
* @see Lorentz5Vector
*/
/**
* Return the product
* \f$\epsilon^{\mu\alpha\beta\gamma}v_{1\alpha}v_{2\beta}v_{3\gamma}\f$.
* @param a The first vector \f$v_{1\alpha}\f$.
* @param b The second vector \f$v_{2\alpha}\f$.
* @param c The third vector \f$v_{3\alpha}\f$.
* @return The product
* \f$\epsilon^{\mu\alpha\beta\gamma}v_{1\alpha}v_{2\beta}v_{3\gamma}\f$.
*/
template <typename A, typename B, typename C>
inline LorentzVector<typename BinaryOpTraits<
typename BinaryOpTraits<A,B>::MulT, C>::MulT>
epsilon(const LorentzVector<A> & a,
const LorentzVector<B> & b,
const LorentzVector<C> & c) {
typedef typename BinaryOpTraits<A,B>::MulT ABType;
typedef typename BinaryOpTraits<ABType, C>::MulT ABCType;
typedef LorentzVector<ABCType> ResultType;
ABType diffxy = a.x() * b.y() - a.y() * b.x();
ABType diffxz = a.x() * b.z() - a.z() * b.x();
ABType diffxt = a.x() * b.t() - a.t() * b.x();
ABType diffyz = a.y() * b.z() - a.z() * b.y();
ABType diffyt = a.y() * b.t() - a.t() * b.y();
ABType diffzt = a.z() * b.t() - a.t() * b.z();
ResultType result;
result.setX( c.z() * diffyt - c.t() * diffyz - c.y() * diffzt);
result.setY( c.t() * diffxz - c.z() * diffxt + c.x() * diffzt);
result.setZ(-c.t() * diffxy + c.y() * diffxt - c.x() * diffyt);
result.setT(-c.z() * diffxy + c.y() * diffxz - c.x() * diffyz);
return result;
}
}
}
#endif /* ThePEG_epsilon_H */
|