EICd
EIC data model
Cov3f.h
Go to the documentation of this file.
1// AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2
3#ifndef EICD_Cov3f_H
4#define EICD_Cov3f_H
5
6#include <ostream>
7
8#ifdef PODIO_JSON_OUTPUT
9#include "nlohmann/json.hpp"
10#endif
11
12namespace eicd {
13
14
15class Cov3f {
16public:
17 float xx{};
18 float yy{};
19 float zz{};
20 float xy{};
21 float xz{};
22 float yz{};
23
24 Cov3f() : xx{0}, yy{0}, zz{0}, xy{0}, xz{0}, yz{0} {}
25 Cov3f(double vx, double vy, double vz, double vxy = 0, double vxz = 0, double vyz = 0)
26 : xx{static_cast<float>(vx)}, yy{static_cast<float>(vy)}, zz{static_cast<float>(vz)},
27 xy{static_cast<float>(vxy)}, xz{static_cast<float>(vxz)}, yz{static_cast<float>(vyz)} {}
28 float operator()(unsigned i, unsigned j) const {
29 // diagonal
30 if (i == j) {
31 return *(&xx + i);
32 }
33 // off-diagonal
34 // we have as options (0, 1), (0, 2) and (1, 2) (and mirrored)
35 // note that, starting from xy, we find the correct element at (i+j-1)
36 return *(&xy + i + j - 1);
37 }
38
39
40};
41
42inline std::ostream& operator<<(std::ostream& o, const eicd::Cov3f& value) {
43 o << value.xx << " ";
44 o << value.yy << " ";
45 o << value.zz << " ";
46 o << value.xy << " ";
47 o << value.xz << " ";
48 o << value.yz << " ";
49
50 return o;
51}
52
53#ifdef PODIO_JSON_OUTPUT
54inline void to_json(nlohmann::json& j, const Cov3f& value) {
55 j = nlohmann::json{
56 {"xx", value.xx}
57 ,{"yy", value.yy}
58 ,{"zz", value.zz}
59 ,{"xy", value.xy}
60 ,{"xz", value.xz}
61 ,{"yz", value.yz}
62 };
63}
64#endif
65
66} // namespace eicd
67
68
69#endif
Definition: Cov3f.h:15
float xx
Definition: Cov3f.h:17
float xz
Definition: Cov3f.h:21
float zz
Definition: Cov3f.h:19
float yy
Definition: Cov3f.h:18
float yz
Definition: Cov3f.h:22
float operator()(unsigned i, unsigned j) const
Definition: Cov3f.h:28
Cov3f()
Definition: Cov3f.h:24
Cov3f(double vx, double vy, double vz, double vxy=0, double vxz=0, double vyz=0)
Definition: Cov3f.h:25
float xy
Definition: Cov3f.h:20
Definition: CalorimeterHit.cc:13
std::ostream & operator<<(std::ostream &o, const CalorimeterHit &value)
Definition: CalorimeterHit.cc:93