diff --git a/eic_data.yaml b/eic_data.yaml index bdbf6cb6017758bda333b815a733f846e3a0e11a..d629887e0303883440166193e505ba5d101acacb 100644 --- a/eic_data.yaml +++ b/eic_data.yaml @@ -183,16 +183,43 @@ components: double theta() const {return acos(z/mag());}\n double phi() const {return atan2(y,x);}\n double eta() const {return -log(tan(0.5*theta()));} - double energy() const {return t;}\n - double mass2() const {return t*t - x*x - y*y - z*z;}\n - double mass() const {return sqrt(t*t - x*x - y*y - z*z);}\n operator std::tuple<double, double, double, double>() {return {x, y, z, t};}\n - double dot(const VectorXYZT& rhs) const {return t*rhs.t - x*rhs.x - y*rhs.y - z*rhs.z;}\n VectorXYZT add(const VectorXYZT& rhs) const {return {x+rhs.x, y+rhs.y, z+rhs.z, t+rhs.t};}\n VectorXYZT subtract(const VectorXYZT& rhs) const {return {x-rhs.x, y-rhs.y, z-rhs.z, t-rhs.t};}\n VectorXYZT scale(double f) const {return {f*x, f*y, f*z, f*t};}\n " + + eic::LorentzVectorXYZT: + Members: + - double x // [mm] or [GeV] + - double y // + - double z // + - double t // [ns] or [GeV] + ExtraCode: + includes: "#include <cmath>\n#include <tuple>" + declaration: " + LorentzVectorXYZT() : x{0}, y{0}, z{0}, t{0} {}\n + LorentzVectorXYZT(double xx, double yy, double zz, double tt) : x{xx}, y{yy}, z{zz}, t{tt} {}\n + template<class VectorXYZType> LorentzVectorXYZT(const VectorXYZType& v, double tt): x{v.x()}, y{v.y()}, z{v.z()}, t{tt} {}\n + double& operator[](unsigned i) {return *(&x + i);}\n + const double& operator[](unsigned i) const {return *(&x + i);}\n + double mag2() const {return x*x + y*y + z*z - t*t;}\n + double mag() const {return std::sqrt(mag2());}\n + double r() const {return mag();}\n + double theta() const {return acos(z/mag());}\n + double phi() const {return atan2(y,x);}\n + double eta() const {return -log(tan(0.5*theta()));} + double energy() const {return t;}\n + double mass2() const {return t*t - x*x - y*y - z*z;}\n + double mass() const {return sqrt(t*t - x*x - y*y - z*z);}\n + operator std::tuple<double, double, double, double>() {return {x, y, z, t};}\n + double dot(const LorentzVectorXYZT& rhs) const {return t*rhs.t - x*rhs.x - y*rhs.y - z*rhs.z;}\n + LorentzVectorXYZT add(const LorentzVectorXYZT& rhs) const {return {x+rhs.x, y+rhs.y, z+rhs.z, t+rhs.t};}\n + LorentzVectorXYZT subtract(const LorentzVectorXYZT& rhs) const {return {x-rhs.x, y-rhs.y, z-rhs.z, t-rhs.t};}\n + LorentzVectorXYZT scale(double f) const {return {f*x, f*y, f*z, f*t};}\n + " + eic::CovDiagXYZ: Members: - float xx