File indexing completed on 2025-12-15 10:12:02
0001
0002
0003 #ifndef EDM4EIC_Cov4f_H
0004 #define EDM4EIC_Cov4f_H
0005
0006 #include <ostream>
0007
0008 #if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
0009 #include "nlohmann/json_fwd.hpp"
0010 #endif
0011
0012 namespace edm4eic {
0013
0014
0015
0016
0017
0018
0019 class Cov4f {
0020 public:
0021 float xx{};
0022 float yy{};
0023 float zz{};
0024 float tt{};
0025 float xy{};
0026 float xz{};
0027 float xt{};
0028 float yz{};
0029 float yt{};
0030 float zt{};
0031
0032 Cov4f() : xx{0}, yy{0}, zz{0}, tt{0}, xy{0}, xz{0}, xt{0}, yz{0}, yt{0}, zt{0} {}
0033 Cov4f(double vx, double vy, double vz, double vt,
0034 double vxy = 0, double vxz = 0, double vxt = 0,
0035 double vyz = 0, double vyt = 0, double vzt = 0)
0036 : xx{static_cast<float>(vx)}, yy{static_cast<float>(vy)}, zz{static_cast<float>(vz)}, tt{static_cast<float>(vt)},
0037 xy{static_cast<float>(vxy)}, xz{static_cast<float>(vxz)}, xt{static_cast<float>(vxt)},
0038 yz{static_cast<float>(vyz)}, yt{static_cast<float>(vyt)}, zt{static_cast<float>(vzt)} {}
0039 float operator()(unsigned i, unsigned j) const {
0040
0041 if (i == j) {
0042 return *(&xx + i);
0043
0044 } else {
0045 if (i > j) {
0046 std::swap(i,j);
0047 }
0048 if (i == 0) {
0049 return *(&xy + j - 1);
0050 } else if (i == 1) {
0051 return *(&yz + j - 2);
0052 } else {
0053 return zt;
0054 }
0055 }
0056 }
0057
0058
0059 };
0060
0061 std::ostream& operator<<(std::ostream& o, const Cov4f& value);
0062
0063 #if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
0064 void to_json(nlohmann::json& j, const Cov4f& value);
0065 #endif
0066
0067 namespace v850 {
0068 using Cov4f = edm4eic::Cov4f;
0069 }
0070
0071
0072 }
0073
0074
0075 #endif