Jpp  18.1.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JCheckTriggerParameters.cc
Go to the documentation of this file.
1 #include <string>
2 #include <iostream>
3 #include <sstream>
4 #include <map>
5 
8 
10 #include "JDAQ/JDAQEventIO.hh"
12 
14 
19 #include "JSupport/JSupport.hh"
20 #include "JSupport/JMeta.hh"
21 
23 
24 #include "JDB/JDB.hh"
25 #include "JDB/JDBToolkit.hh"
26 #include "JDB/JSelector.hh"
28 #include "JDB/JDetectors.hh"
29 #include "JDB/JRuns.hh"
30 #include "JDB/JAllParams.hh"
31 #include "JDB/JRunsetupParams.hh"
32 
33 #include "Jeep/JParser.hh"
34 #include "Jeep/JMessage.hh"
35 
36 
37 /**
38  * \file
39  * Auxiliary program to check trigger parameters in a given ROOT files against the values from the database.
40  * \author lnauta
41  */
42 int main(const int argc, const char * const argv[])
43 {
44  using namespace std;
45  using namespace JPP;
46  using namespace KM3NETDAQ;
47 
50  JServer server;
51  string usr;
52  string pwd;
53  string cookie;
54  int debug;
55 
56  try {
57 
58  JParser<> zap("Auxiliary program to check trigger parameters in a given ROOT files against the values from the database.");
59 
60  zap['f'] = make_field(inputFile);
61  zap['s'] = make_field(server) = getServernames();
62  zap['u'] = make_field(usr) = "";
63  zap['!'] = make_field(pwd) = "";
64  zap['C'] = make_field(cookie) = "";
65  zap['o'] = make_field(outputFile) = "";
66  zap['d'] = make_field(debug) = 1;
67 
68  zap(argc, argv);
69  }
70  catch(const exception& error) {
71  FATAL(error.what() << endl);
72  }
73 
74 
75  const double Dmax_m = 9999.0;
76 
77  JTriggerParameters parametersA;
78  JTriggerParameters parametersB;
79 
80 
81  try {
82  parametersA = getTriggerParameters(inputFile);
83  }
84  catch(const JException& error) {
85  FATAL("No trigger parameters from input." << endl);
86  }
87 
88  parametersA.set(Dmax_m);
89 
90  DEBUG(parametersA);
91 
92 
93  int detector_id = 0;
94  int run_number = 0;
95 
97 
98  if (in.hasNext()) {
99 
100  detector_id = in.next()->getDetectorID();
101  run_number = in.next()->getRunNumber();
102 
103  } else {
104 
105  FATAL("File does not contain a valid run number. Aborting" << endl);
106  }
107 
108 
109  try {
110  JDB::reset(usr, pwd, cookie);
111  }
112  catch(const exception& error) {
113  FATAL(error.what() << endl);
114  }
115 
116 
117  string rs_oid;
118 
119  try {
120 
121  JRuns buffer;
122 
123  ResultSet& rs = getResultSet(getTable<JRuns>(), getSelector<JRuns>(detector_id, run_number));
124 
125  if (rs >> buffer) {
126  rs_oid = buffer.RUNSETUPID;
127  }
128 
129  rs.Close();
130  }
131  catch(const exception& error) {
132  FATAL(error.what() << endl);
133  }
134 
135 
136  map<string, string> zmap;
137 
138  try {
139 
140  JAllParams buffer;
141 
142  ResultSet& rs = getResultSet(getTable<JAllParams>(), getSelector<JAllParams>("DATAACQUISITION"));
143 
144  while (rs >> buffer) {
145 
146  string::size_type pos = buffer.NAME.find(PREFIX_DATAFILTER);
147 
148  if (pos != string::npos) {
149 
150  pos = buffer.NAME.find('=', pos + PREFIX_DATAFILTER.length());
151 
152  zmap[buffer.OID] = buffer.NAME.erase(0, pos + 1);
153  }
154  }
155 
156  rs.Close();
157  }
158  catch(const exception& error) {
159  FATAL(error.what() << endl);
160  }
161 
162 
163  stringstream data;
164 
165  try {
166 
167  JRunsetupParams buffer;
168 
169  ResultSet& rs = getResultSet(getTable<JRunsetupParams>(), getSelector<JRunsetupParams>(getDetector(detector_id), rs_oid));
170 
171  while (rs >> buffer) {
172 
173  map<string, string>::const_iterator i = zmap.find(buffer.PAR_OID);
174 
175  if (i != zmap.end()) {
176  data << i->second << "=" << buffer.VALUE << ";\n";
177  }
178  }
179 
180  rs.Close();
181  }
182  catch(const exception& error) {
183  FATAL(error.what() << endl);
184  }
185 
186 
187  data >> parametersB;
188 
189  parametersB.set(Dmax_m);
190  parametersB.actionAtFileRead();
191 
192  DEBUG(parametersB);
193 
194 
195  if (outputFile.getFilename() != "") {
196 
197  DEBUG("Write to " << outputFile << "... " << flush);
198 
199  outputFile.open();
200 
201  outputFile.put(parametersB);
202 
204 
205  io >> outputFile;
206 
207  outputFile.close();
208 
209  DEBUG("OK" << endl);
210  }
211 
212 
213  const bool is_equal = (parametersA == parametersB);
214 
215  if (is_equal)
216  NOTICE(GREEN << "The parameters for run " << run_number << " are equivalent." << RESET << endl);
217  else
218  ERROR (RED << "The parameters for run " << run_number << " are NOT equivalent." << RESET << endl);
219 
220  return (is_equal ? 0 : 1);
221 }
Object writing to file.
Utility class to parse command line options.
Definition: JParser.hh:1514
General exception.
Definition: JException.hh:24
int main(int argc, char *argv[])
Definition: Main.cc:15
ROOT TTree parameter settings of various packages.
Recording of objects on file according a format that follows from the file name extension.
Auxiliary class for multiplexing object iterators.
string outputFile
JDetectorsHelper & getDetector()
Auxiliary function for helper object initialisation.
Definition: JDBToolkit.hh:378
Scanning of objects from a single file according a format that follows from the extension of each fil...
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1989
ROOT I/O of application specific meta data.
#define NOTICE(A)
Definition: JMessage.hh:64
#define ERROR(A)
Definition: JMessage.hh:66
virtual const pointer_type & next() override
Get next element.
virtual bool hasNext() override
Check availability of next element.
General purpose messaging.
#define FATAL(A)
Definition: JMessage.hh:67
void reset(T &value)
Reset value.
static const std::string PREFIX_DATAFILTER
This string is prepended to every parameter in the database output for the corresponding process...
Definition: JDB.hh:182
Utility class to parse command line options.
ResultSet & getResultSet(const std::string &query)
Get result set.
Definition: JDB.hh:436
std::vector< JServer > getServernames()
Get list of names of available database servers.
Definition: JDB.hh:106
Wrapper class for server name.
Definition: JDB.hh:50
Object reading from a list of files.
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] 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:46
Template definition for getting table specific selector.
JTriggerParameters getTriggerParameters(const JMultipleFileScanner_t &file_list)
Get trigger parameters.
int debug
debug level
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62
std::string RUNSETUPID
Definition: JRuns.hh:26