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());