35{
38
40
42 string usr;
43 string pwd;
44 string cookie;
45 string inputFile;
47 string detid;
48 JRange_t runs;
50 TRegexp regexp(".");
51 JSelector selection;
54
55 try {
56
57 JParser<> zap(
"Main program to print quality data from data base.");
58
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"));
70
71 zap(argc, argv);
72 }
73 catch(const exception &error) {
74 FATAL(error.what() << endl);
75 }
76
77
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
89
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
103
104 for (vector<string>::const_iterator git = source.begin(); git != source.end() && buffer.size() < setups.size(); ++git) {
105
108
109 map_type zmap;
110
112
113 selector.add(&JRunSummaryNumbers::SOURCE_NAME, *git);
114
115 try {
116
117 ResultSet& rs =
getResultSet(getTable<JRunSummaryNumbers>(), selector);
118
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
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);
144 }
145 }
146 }
147 catch(const exception& error) {
148 FATAL(error.what() << endl);
149 }
150
151
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}
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Utility class to parse command line options.
ResultSet & getResultSet(const std::string &query)
Get result set.
std::vector< JServer > getServernames()
Get list of names of available database servers.
std::vector< std::string > getGITTags(const TRegexp ®exp, const JGITTags_t::key_type &date)
Get selection of GIT tags.
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.
Auxiliary data structure for data quality.
double value
setup identifier (see JRunsetups)
void put(const std::string &key, const std::string &value)
Put value at given key.
std::string name
setup name (see JRunsetups)
std::string GIT
GIT version used to write QA/QC data.
int detector
detector identifier
Auxiliary class for run setup evaluation.
void put(const int run, const std::string setup)
Put run parameters.
Wrapper class for server name.
Template definition for getting table specific selector.
Auxiliary data structure for streaming of STL containers.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...