EICd
EIC data model
Cov4f.h
Go to the documentation of this file.
1// AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2
3#ifndef EICD_Cov4f_H
4#define EICD_Cov4f_H
5
6#include <ostream>
7
8#ifdef PODIO_JSON_OUTPUT
9#include "nlohmann/json.hpp"
10#endif
11
12namespace eicd {
13
14
15class Cov4f {
16public:
17 float xx{};
18 float yy{};
19 float zz{};
20 float tt{};
21 float xy{};
22 float xz{};
23 float xt{};
24 float yz{};
25 float yt{};
26 float zt{};
27
28 Cov4f() : xx{0}, yy{0}, zz{0}, tt{0}, xy{0}, xz{0}, xt{0}, yz{0}, yt{0}, zt{0} {}
29 Cov4f(double vx, double vy, double vz, double vt,
30 double vxy = 0, double vxz = 0, double vxt = 0,
31 double vyz = 0, double vyt = 0, double vzt = 0)
32 : xx{static_cast<float>(vx)}, yy{static_cast<float>(vy)}, zz{static_cast<float>(vz)}, tt{static_cast<float>(vt)},
33 xy{static_cast<float>(vxy)}, xz{static_cast<float>(vxz)}, xt{static_cast<float>(vxt)},
34 yz{static_cast<float>(vyz)}, yt{static_cast<float>(vyt)}, zt{static_cast<float>(vzt)} {}
35 float operator()(unsigned i, unsigned j) const {
36 // diagonal
37 if (i == j) {
38 return *(&xx + i);
39 // off-diagonal, can probably be done with less if statements
40 } else {
41 if (i > j) {
42 std::swap(i,j);
43 }
44 if (i == 0) {
45 return *(&xy + j - 1);
46 } else if (i == 1) {
47 return *(&yz + j - 2);
48 } else {
49 return zt;
50 }
51 }
52 }
53
54
55};
56
57inline std::ostream& operator<<(std::ostream& o, const eicd::Cov4f& value) {
58 o << value.xx << " ";
59 o << value.yy << " ";
60 o << value.zz << " ";
61 o << value.tt << " ";
62 o << value.xy << " ";
63 o << value.xz << " ";
64 o << value.xt << " ";
65 o << value.yz << " ";
66 o << value.yt << " ";
67 o << value.zt << " ";
68
69 return o;
70}
71
72#ifdef PODIO_JSON_OUTPUT
73inline void to_json(nlohmann::json& j, const Cov4f& value) {
74 j = nlohmann::json{
75 {"xx", value.xx}
76 ,{"yy", value.yy}
77 ,{"zz", value.zz}
78 ,{"tt", value.tt}
79 ,{"xy", value.xy}
80 ,{"xz", value.xz}
81 ,{"xt", value.xt}
82 ,{"yz", value.yz}
83 ,{"yt", value.yt}
84 ,{"zt", value.zt}
85 };
86}
87#endif
88
89} // namespace eicd
90
91
92#endif
Definition: Cov4f.h:15
float tt
Definition: Cov4f.h:20
float zz
Definition: Cov4f.h:19
float yy
Definition: Cov4f.h:18
float xt
Definition: Cov4f.h:23
float zt
Definition: Cov4f.h:26
float yt
Definition: Cov4f.h:25
float operator()(unsigned i, unsigned j) const
Definition: Cov4f.h:35
Cov4f(double vx, double vy, double vz, double vt, double vxy=0, double vxz=0, double vxt=0, double vyz=0, double vyt=0, double vzt=0)
Definition: Cov4f.h:29
float xx
Definition: Cov4f.h:17
float xz
Definition: Cov4f.h:22
float xy
Definition: Cov4f.h:21
float yz
Definition: Cov4f.h:24
Cov4f()
Definition: Cov4f.h:28
Definition: CalorimeterHit.cc:13
std::ostream & operator<<(std::ostream &o, const CalorimeterHit &value)
Definition: CalorimeterHit.cc:93