29 int 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());
167 if (!string->second.empty()) {
168 Q.
put(string->second(
x).getLength());
ROOT TTree parameter settings.
Data structure for detector geometry and calibration.
Dynamic detector calibration.
General purpose messaging.
#define DEBUG(A)
Message macros.
Scanning of objects from multiple files according a format that follows from the extension of each fi...
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
int main(int argc, char **argv)
Utility class to parse command line options.
General purpose class for object reading from a list of file names.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary data structure for floating point format specification.
data_type::const_iterator const_iterator
const_iterator end() const
end of calibration data
const_iterator begin() const
begin of calibration data
Dynamic detector calibration.
JPosition position
position calibration
bool update(const double t1_s)
Get detector calibrated at given time.
void load(JObjectIterator_t &input)
Load calibration data.