Jpp  19.0.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
examples/JCalibrate/JPrintPMTThreshold.cc
Go to the documentation of this file.
1 #include <string>
2 #include <iostream>
3 #include <iomanip>
4 #include <fstream>
5 #include <algorithm>
6 
7 #include "JLang/JComparator.hh"
9 
10 #include "Jeep/JParser.hh"
11 #include "Jeep/JMessage.hh"
12 
13 
14 /**
15  * \file
16  *
17  * Auxiliary program to print PMT thresholds.
18  * \author mdejong
19  */
20 int main(int argc, char **argv)
21 {
22  using namespace std;
23  using namespace JPP;
24 
25  string inputFile;
26  int threshold;
27  int debug;
28 
29  try {
30 
31  JParser<> zap("Auxiliary program to print PMT thresholds.");
32 
33  zap['f'] = make_field(inputFile, "PMT threshold file (json format)");
34  zap['T'] = make_field(threshold) = 0;
35  zap['d'] = make_field(debug) = 1;
36 
37  zap(argc, argv);
38  }
39  catch(const exception &error) {
40  FATAL(error.what() << endl);
41  }
42 
43 
44  json js;
45 
46  istream* in = open<istream>(inputFile.c_str());
47 
48  *in >> js;
49 
50  close(in);
51 
52  try {
53 
54  JPMTThresholdCalibration calibration = js.at(Tests_t).get<JPMTThresholdCalibration>();
55 
56  sort(calibration.begin(), calibration.end(), make_comparator(&JPMTThresholdCalibration_t::getUPI));
57 
58  for (JPMTThresholdCalibration::const_iterator i = calibration.begin(); i != calibration.end(); ++i) {
59  if (i->threshold >= threshold) {
60  cout << "PMT " << left << setw(32) << static_cast<const JUPI_t&>(*i) << " -> " << right << setw(3) << i->threshold << endl;
61  }
62  }
63  }
64  catch(const exception& error) {
65  FATAL(error.what() << endl);
66  }
67 }
Utility class to parse command line options.
Definition: JParser.hh:1711
int main(int argc, char *argv[])
Definition: Main.cc:15
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
std::vector< JPMTThresholdCalibration_t > JPMTThresholdCalibration
PMT threshold calibration.
JUPIHelper & getUPI()
Auxiliary function for helper object initialisation.
Definition: JDBToolkit.hh:472
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:2158
void close(std::istream *pf)
Close file.
Definition: JeepToolkit.hh:391
General purpose messaging.
#define FATAL(A)
Definition: JMessage.hh:67
then fatal The output file must have the wildcard in the e g root fi eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:48
Utility class to parse command line options.
static const std::string Tests_t
int debug
debug level
nlohmann::json json