29int main(
int argc,
char **argv)
34 const char*
const short_t =
"short";
35 const char*
const long_t =
"long";
36 const char*
const fft_t =
"fft";
47 JParser<> zap(
"Example program to print dynamic detector calibration.");
52 zap[
'F'] =
make_field(format) = short_t, long_t, fft_t;
58 catch(
const exception &error) {
59 FATAL(error.what() << endl);
74 dynamics.
load(calibrationFile);
82 ostream os(buffer.is_open() ? &buffer : cout.rdbuf());
86 comment.
add(
"documentation: https://common.pages.km3net.de/jpp/Position_calibration.PDF");
88 if (format == short_t)
89 comment.
add(
"format: string number; UTC [s]; Tx; Ty");
90 else if (format == long_t)
91 comment.
add(
"format: https://indico.cern.ch/event/1014814/contributions/4259426/attachments/2201529/3724129/KM3NeT_position_file_format.pdf");
92 else if (format == fft_t)
93 comment.
add(
"format: <T>");
104 if (format == short_t) {
111 os << setw(4) <<
string->first <<
';'
112 <<
FIXED(20,5) << i->getX() <<
';'
113 <<
FIXED( 9,6) << i->getY().tx <<
';'
114 <<
FIXED( 9,6) << i->getY().ty << endl;
119 if (format == long_t) {
126 const double t1 = i->getX();
130 os <<
FIXED(20,5) << t1 <<
' '
131 <<
FIXED(20,5) << t1 <<
' '
132 << setw(4) <<
detector.size() << endl;
134 for (JDetector::const_iterator module = dynamics.begin(); module != dynamics.end(); ++module) {
136 os << setw(4) << module->getString() <<
' '
137 << setw(2) <<
module->getFloor() << ' '
138 << setw(10) << module->getID() << endl;
140 os <<
FIXED(9,2) << module->getX() <<
' '
141 <<
FIXED(9,2) <<
module->getY() << ' '
142 << FIXED(9,2) << module->getZ() << ' '
143 << FIXED(9,2) << -1.0 << ' '
144 << FIXED(9,2) << -1.0 << ' '
145 << FIXED(9,2) << -1.0 << endl;
150 if (format == fft_t) {
152 double xmin = numeric_limits<double>::max();
153 double xmax = numeric_limits<double>::lowest();
156 if (!string->second.empty()) {
157 xmin = min(xmin, string->second.getXmin());
158 xmax = max(xmax, string->second.getXmax());
162 for (
double x = xmin; x <= xmax; x += Tmax_s) {
167 if (!string->second.empty()) {
168 Q.
put(string->second(x).getLength());