Jpp
JDetectorCalibration.hh
Go to the documentation of this file.
1 #ifndef __JDETECTOR__JDETECTORCALIBRATION__
2 #define __JDETECTOR__JDETECTORCALIBRATION__
3 
4 #include <string>
5 #include <vector>
6 
7 #include "JSon/JSon.hh"
8 #include "JLang/JObjectID.hh"
12 
13 
14 /**
15  * \author mdejong
16  */
17 
18 namespace JDETECTOR {}
19 namespace JPP { using namespace JDETECTOR; }
20 
21 /**
22  * Auxiliary classes and methods for detector calibration.
23  */
24 namespace JDETECTOR {
25 
26  using JSON::json;
27  using JLANG::JObjectID;
30 
31  /**
32  * Detector calibration key words for JSON I/O.
33  */
34  static const std::string Result_t = "Result";
35  static const std::string Comment_t = "Comment";
36  static const std::string Data_t = "Data";
37 
38  static const std::string PMTT0s_t = "PMTT0s";
39  static const std::string DOMPositions_t = "DOMPositions";
40  static const std::string DOMRotations_t = "DOMRotations";
41 
42  static const std::string PMTSerial_t = "PMTSerial";
43  static const std::string DOMSerial_t = "DOMSerial";
44  static const std::string DOMId_t = "DOMId";
45  static const std::string T0_t = "T0";
46  static const std::string PX_t = "PX";
47  static const std::string PY_t = "PY";
48  static const std::string PZ_t = "PZ";
49  static const std::string Q0_t = "Q0";
50  static const std::string QX_t = "QX";
51  static const std::string QY_t = "QY";
52  static const std::string QZ_t = "QZ";
53 
54  static const std::string OK_t = "OK";
55 
56 
57  /**
58  * Check validity of JSon data.
59  *
60  * \param js JSon data
61  * \return true if valid; else false
62  */
63  inline bool is_valid(const json& js)
64  {
65  return js.contains(Result_t) && js[Result_t] == OK_t;
66  }
67 
68 
69  /**
70  * Auxiliary data structure for PMT calibration.
71  */
73  public JObjectID,
74  public JCalibration
75  {
76  /**
77  * Default constructor.
78  */
80  {}
81 
82 
83  /**
84  * Constructor.
85  *
86  * \param id PMT identifier
87  * \param calibration PMT calibration
88  */
90  const JCalibration& calibration) :
91  JObjectID (id),
92  JCalibration(calibration)
93  {}
94  };
95 
96 
97  /**
98  * Convert PMT calibration to JSon.
99  *
100  * \param js json
101  * \param object PMT calibration
102  */
103  inline void to_json(json& js, const JPMTCalibration_t& object)
104  {
105  js = json{ { PMTSerial_t, object.getID() },
106  { T0_t, object.getT0() } };
107  }
108 
109 
110  /**
111  * Convert JSon to PMT calibration.
112  *
113  * \param js json
114  * \param object PMT calibration
115  */
116  inline void from_json(const json& js, JPMTCalibration_t& object)
117  {
118  object.setID(js.at(PMTSerial_t).get<int>());
119 
120  object.setT0(js.at(T0_t).get<double>());
121  }
122 
123  /**
124  * Auxiliary data structure for module position.
125  */
127  public JObjectID,
128  public JPosition3D
129  {
130  /**
131  * Default constructor.
132  */
134  {}
135 
136 
137  /**
138  * Constructor.
139  *
140  * \param id module identifier
141  * \param position module position
142  */
144  const JPosition3D& position) :
145  JObjectID (id),
146  JPosition3D(position)
147  {}
148  };
149 
150 
151  /**
152  * Convert module position to JSon.
153  *
154  * \param js json
155  * \param object module position
156  */
157  inline void to_json(json& js, const JModulePosition_t& object)
158  {
159  js = json{ { DOMId_t, object.getID() },
160  { PX_t, object.getX() },
161  { PY_t, object.getY() },
162  { PZ_t, object.getZ() } };
163  }
164 
165 
166  /**
167  * Convert JSon to module position.
168  *
169  * \param js json
170  * \param object module position
171  */
172  inline void from_json(const json& js, JModulePosition_t& object)
173  {
174  object.setID(js.at(DOMSerial_t).get<int>());
175 
176  object.setPosition(JPosition3D(js.at(PX_t).get<double>(),
177  js.at(PY_t).get<double>(),
178  js.at(PZ_t).get<double>()));
179  }
180 
181  /**
182  * Auxiliary data structure for module rotation.
183  */
185  public JObjectID,
186  public JQuaternion3D
187  {
188  /**
189  * Default constructor.
190  */
192  {}
193 
194 
195  /**
196  * Constructor.
197  *
198  * \param id module identifier
199  * \param rotation module rotation
200  */
202  const JQuaternion3D& rotation) :
203  JObjectID (id),
204  JQuaternion3D(rotation)
205  {}
206  };
207 
208 
209  /**
210  * Convert module rotation to JSon.
211  *
212  * \param js json
213  * \param object module rotation
214  */
215  inline void to_json(json& js, const JModuleRotation_t& object)
216  {
217  js = json{ { DOMId_t, object.getID() },
218  { Q0_t, object.getA() },
219  { QX_t, object.getB() },
220  { QY_t, object.getC() },
221  { QZ_t, object.getD() } };
222  }
223 
224 
225  /**
226  * Convert JSon to module rotation.
227  *
228  * \param js json
229  * \param object module rotation
230  */
231  inline void from_json(const json& js, JModuleRotation_t& object)
232  {
233  object.setID(js.at(DOMSerial_t).get<int>());
234 
235  object.setQuaternion(JQuaternion3D(js.at(Q0_t).get<double>(),
236  js.at(QX_t).get<double>(),
237  js.at(QY_t).get<double>(),
238  js.at(QZ_t).get<double>()));
239  }
240 
241  typedef std::vector<JPMTCalibration_t> JPMTCalibration; //!< PMT calibration
242  typedef std::vector<JModulePosition_t> JModulePosition; //!< Module position
243  typedef std::vector<JModuleRotation_t> JModuleRotation; //!< Module rotation
244 }
245 
246 #endif
JDETECTOR::JModulePosition
std::vector< JModulePosition_t > JModulePosition
Module position.
Definition: JDetectorCalibration.hh:242
JDETECTOR::JModuleRotation_t::JModuleRotation_t
JModuleRotation_t()
Default constructor.
Definition: JDetectorCalibration.hh:191
JDETECTOR::QZ_t
static const std::string QZ_t
Definition: JDetectorCalibration.hh:52
JDETECTOR::JModulePosition_t
Auxiliary data structure for module position.
Definition: JDetectorCalibration.hh:126
JPosition3D.hh
JDETECTOR::is_valid
bool is_valid(const json &js)
Check validity of JSon data.
Definition: JDetectorCalibration.hh:63
JDETECTOR::JCalibration
Data structure for PMT calibration.
Definition: JDetector/JCalibration.hh:35
JDETECTOR::JModulePosition_t::JModulePosition_t
JModulePosition_t(const JObjectID &id, const JPosition3D &position)
Constructor.
Definition: JDetectorCalibration.hh:143
JDETECTOR::PZ_t
static const std::string PZ_t
Definition: JDetectorCalibration.hh:48
std::vector
Definition: JSTDTypes.hh:12
JObjectID.hh
JDETECTOR::Q0_t
static const std::string Q0_t
Definition: JDetectorCalibration.hh:49
JQuaternion3D.hh
JDETECTOR::T0_t
static const std::string T0_t
Definition: JDetectorCalibration.hh:45
JDETECTOR::JModuleRotation_t::JModuleRotation_t
JModuleRotation_t(const JObjectID &id, const JQuaternion3D &rotation)
Constructor.
Definition: JDetectorCalibration.hh:201
JSon.hh
JPP
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JAAnetToolkit.hh:37
JDETECTOR::JPMTCalibration_t::JPMTCalibration_t
JPMTCalibration_t()
Default constructor.
Definition: JDetectorCalibration.hh:79
JDETECTOR::to_json
void to_json(json &js, const JModuleRotation_t &object)
Convert module rotation to JSon.
Definition: JDetectorCalibration.hh:215
JDETECTOR::PMTT0s_t
static const std::string PMTT0s_t
Definition: JDetectorCalibration.hh:38
JGEOMETRY3D::JPosition3D
Data structure for position in three dimensions.
Definition: JPosition3D.hh:35
JDETECTOR::from_json
void from_json(const json &js, JModuleRotation_t &object)
Convert JSon to module rotation.
Definition: JDetectorCalibration.hh:231
JDETECTOR::PY_t
static const std::string PY_t
Definition: JDetectorCalibration.hh:47
JDETECTOR::JPMTCalibration
std::vector< JPMTCalibration_t > JPMTCalibration
PMT calibration.
Definition: JDetectorCalibration.hh:241
JDETECTOR::Data_t
static const std::string Data_t
Definition: JDetectorCalibration.hh:36
JDETECTOR::QY_t
static const std::string QY_t
Definition: JDetectorCalibration.hh:51
JGEOMETRY3D::JQuaternion3D
Data structure for quaternion in three dimensions.
Definition: JQuaternion3D.hh:240
JDETECTOR::QX_t
static const std::string QX_t
Definition: JDetectorCalibration.hh:50
JDETECTOR::PX_t
static const std::string PX_t
Definition: JDetectorCalibration.hh:46
JLANG::JObjectID
Auxiliary class for object identification.
Definition: JObjectID.hh:27
JCalibration.hh
JDETECTOR::JModuleRotation
std::vector< JModuleRotation_t > JModuleRotation
Module rotation.
Definition: JDetectorCalibration.hh:243
JDETECTOR::Comment_t
static const std::string Comment_t
Definition: JDetectorCalibration.hh:35
JDETECTOR::DOMRotations_t
static const std::string DOMRotations_t
Definition: JDetectorCalibration.hh:40
JDETECTOR::DOMPositions_t
static const std::string DOMPositions_t
Definition: JDetectorCalibration.hh:39
JDETECTOR::JPMTCalibration_t
Auxiliary data structure for PMT calibration.
Definition: JDetectorCalibration.hh:72
JDETECTOR::OK_t
static const std::string OK_t
Definition: JDetectorCalibration.hh:54
JDETECTOR::JModulePosition_t::JModulePosition_t
JModulePosition_t()
Default constructor.
Definition: JDetectorCalibration.hh:133
JDETECTOR::PMTSerial_t
static const std::string PMTSerial_t
Definition: JDetectorCalibration.hh:42
JDETECTOR::Result_t
static const std::string Result_t
Detector calibration key words for JSON I/O.
Definition: JDetectorCalibration.hh:34
JDETECTOR::JModuleRotation_t
Auxiliary data structure for module rotation.
Definition: JDetectorCalibration.hh:184
JDETECTOR::DOMId_t
static const std::string DOMId_t
Definition: JDetectorCalibration.hh:44
JDETECTOR::DOMSerial_t
static const std::string DOMSerial_t
Definition: JDetectorCalibration.hh:43
JDETECTOR::JPMTCalibration_t::JPMTCalibration_t
JPMTCalibration_t(const JObjectID &id, const JCalibration &calibration)
Constructor.
Definition: JDetectorCalibration.hh:89
JDETECTOR
Auxiliary classes and methods for detector calibration.
Definition: JAnchor.hh:12