Jpp 20.0.0-27-g39925593c-D
the software that should make you happy
Loading...
Searching...
No Matches
JPrintDataQuality.cc
Go to the documentation of this file.
1#include <iostream>
2#include <sstream>
3#include <fstream>
4#include <iomanip>
5#include <vector>
6#include <set>
7#include <map>
8
9#include "JDB/JDB.hh"
10#include "JDB/JSelector.hh"
12#include "JDB/JRunQuality.hh"
13#include "JDB/JRunsetups.hh"
14#include "JDB/JDBToolkit.hh"
15
16#include "JLang/JLangToolkit.hh"
17#include "JTools/JRange.hh"
18
19#include "JROOT/JRootPrinter.hh"
20#include "JROOT/JRootToolkit.hh"
21
23
24#include "Jeep/JPrint.hh"
25#include "Jeep/JParser.hh"
26#include "Jeep/JMessage.hh"
27
28/**
29 * \file
30 *
31 * Main program to print quality data from data base.
32 * \author mdejong
33 */
34int main(int argc, char **argv)
35{
36 using namespace std;
37 using namespace JPP;
38
39 typedef JRange<int> JRange_t;
40
41 JServer server;
42 string usr;
43 string pwd;
44 string cookie;
45 string inputFile;
46 string outputFile;
47 string detid;
48 JRange_t runs;
49 vector<string> source;
50 TRegexp regexp(".");
51 JSelector selection;
52 vector<string> format;
53 int debug;
54
55 try {
56
57 JParser<> zap("Main program to print quality data from data base.");
58
59 zap['s'] = make_field(server) = getServernames();
60 zap['u'] = make_field(usr) = "";
61 zap['!'] = make_field(pwd) = "";
62 zap['C'] = make_field(cookie) = "";
63 zap['D'] = make_field(detid);
64 zap['R'] = make_field(runs, "Run range") = JRange_t(1, JRange_t::getMaximum());
65 zap['S'] = make_field(source, "GIT versions") = getGITTags(TRegexp("v[0-9]*\\.[0-9]*\\.[0-9]*$"), JGITTags_t::key_type("2019-04-12"));
66 zap['r'] = make_field(regexp, "TRegexp for selection of run setup names.") = JPARSER::initialised();
67 zap['F'] = make_field(format, "column names: " << JEEPZ() << getColumns<JRunQuality>()) = JPARSER::initialised();
68 zap['@'] = make_field(selection) = JPARSER::initialised();
69 zap['d'] = make_field(debug, "Debug level") = 1;
70
71 zap(argc, argv);
72 }
73 catch(const exception &error) {
74 FATAL(error.what() << endl);
75 }
76
77
78 JRunsetups setups; // run -> value
79 set<JRunQuality> buffer; // storage
80
81 try {
82
83 JDB::reset(usr, pwd, cookie);
84
85 const int ID = getDetector<int> (detid);
86 detid = getDetector<string>(detid);
87
88 // run setups
89
90 selection += getSelector<JRuns>(ID, runs.getLowerLimit(), runs.getUpperLimit());
91
92 ResultSet& rs = getResultSet(getTable<JRuns>(), selection);
93
94 for (JRuns parameters; rs >> parameters; ) {
95 if (TString(parameters.RUNSETUPNAME.c_str()).Contains(regexp)) {
96 setups.put(parameters);
97 }
98 }
99
100 rs.Close();
101
102 // run summary data
103
104 for (vector<string>::const_iterator git = source.begin(); git != source.end() && buffer.size() < setups.size(); ++git) {
105
107 typedef map<int, data_type> map_type;
108
109 map_type zmap;
110
111 JSelector selector = getSelector<JRunSummaryNumbers>(detid, runs.getLowerLimit(), runs.getUpperLimit());
112
113 selector.add(&JRunSummaryNumbers::SOURCE_NAME, *git);
114
115 try {
116
117 ResultSet& rs = getResultSet(getTable<JRunSummaryNumbers>(), selector);
118
119 for (JRunSummaryNumbers parameters; rs >> parameters; ) {
120 if (setups.count(parameters.RUN) != 0) {
121 zmap[parameters.RUN].insert(make_pair(parameters.PARAMETER_NAME, parameters.DATA_VALUE));
122 }
123 }
124
125 rs.Close();
126 }
127 catch(const exception& error) {}
128
129 for (map_type::const_iterator run = zmap.begin(); run != zmap.end(); ++run) {
130
132
133 quality.GIT = *git;
134 quality.detector = ID;
135 quality.run = run->first;
136 quality.name = setups[run->first].name;
137 quality.value = setups[run->first].value;
138
139 for (data_type::const_iterator i = run->second.begin(); i != run->second.end(); ++i) {
140 quality.put(i->first, i->second);
141 }
142
143 buffer.insert(quality); // only insert if absent
144 }
145 }
146 }
147 catch(const exception& error) {
148 FATAL(error.what() << endl);
149 }
150
151
152 for (set<JRunQuality>::const_iterator quality = buffer.begin(); quality != buffer.end(); ++quality) {
153
154 for (vector<string>::const_iterator i = format.begin(); i != format.end(); ++i) {
155 JRootPrinter::print(cout, *quality, *i);
156 }
157
158 cout << endl;
159 }
160
161 return 0;
162}
string outputFile
Selection of GIT tags.
General purpose messaging.
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
int main(int argc, char **argv)
I/O formatting auxiliaries.
Auxiliary class to define a range between two values.
Print objects in ASCII format using ROOT dictionary.
Template definition of a multi-dimensional oscillation probability interpolation table.
Utility class to parse command line options.
Definition JParser.hh:1698
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Data structure for measured coincidence rates of all pairs of PMTs in optical module.
Definition JFitK40.hh:103
Auxiliary data structure for data quality.
Auxiliary class for run setup evaluation.
Definition JRunsetups.hh:36
Wrapper class for server name.
Definition JDB.hh:54
Auxiliary data structure for streaming of STL containers.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition JParser.hh:68