93int main(
int argc,
char **argv)
99 string parametersFile;
106 JParser<> zap(
"Auxiliary program to apply test criteria to file.");
108 zap[
'f'] =
make_field(inputFile,
"<input file>:<object name>");
109 zap[
'P'] =
make_field(parametersFile,
"ASCII formatted input file with test criteria");
111 zap[
'F'] =
make_field(facet,
"Color facet") = get_keys(color_facets);
116 catch(
const exception &error) {
117 FATAL(error.what() << endl);
127 ifstream in(parametersFile.c_str());
132 JParameters_t parameters;
134 for (
string buffer; getline(in, buffer); ) {
136 if (!buffer.empty() && buffer[0] != JParameters_t::SKIPLINE) {
138 istringstream is(buffer);
140 if (is >> key >> parameters) {
141 zmap [key] = parameters;
150 FATAL(
"Error opening file: " << parametersFile << endl);
153 if (
debug >= debug_t) {
154 for (map_type::const_iterator i = zmap.begin(); i != zmap.end(); ++i) {
155 cout << setw(48) << left << i->first <<
' ' << i->second << endl;
160 TDirectory* dir = getDirectory(inputFile);
169 cout.imbue(locale(cout.getloc(), color_facets[facet]->clone()));
171 int number_of_tests = 0;
172 int number_of_failures = 0;
176 TIter iter(dir->GetListOfKeys());
178 for (TKey* key; (key = (TKey*) iter.Next()) != NULL; ) {
180 const TString tag(key->GetName());
182 DEBUG(
"Key: " << tag <<
" match = " << tag.Contains(regexp) << endl);
186 if (tag.Contains(regexp) && isTObject(key) && strcmp(key->GetClassName(),TGraph::Class_Name()) == 0) {
188 TGraph*
g1 =
dynamic_cast<TGraph*
>(key->ReadObj());
190 DEBUG(key->GetName() <<
' ' << (
g1 != NULL) << endl);
194 map_type::const_iterator p = zmap.find(
g1->GetName());
196 if (p != zmap.end()) {
198 counts[p->first] += 1;
200 const JParameters_t& parameters = p->second;
202 const int number_of_entries =
g1->GetN();
204 int number_of_outliers = 0;
206 for (
int i = 0; i !=
g1->GetN(); ++i) {
207 if (!parameters.range(
g1->GetY()[i])) {
208 ++number_of_outliers;
212 const bool status = (number_of_entries >= parameters.number_of_entries &&
213 number_of_outliers <= parameters.number_of_outliers);
215 cout << (status ? GREEN : RED) <<
"Test " <<
g1->GetName() <<
' '
216 << (status ?
"passed" :
"failed") <<
' '
217 << (number_of_entries >= parameters.number_of_entries ?
"" :
"too few entries") <<
' '
218 << (number_of_outliers <= parameters.number_of_outliers ?
"" :
"too many outliers") <<
'.'
221 if (out != NULL && !status) {
227 out->WriteTObject(
g1);
230 number_of_tests += 1;
231 number_of_failures += (status ? 0 : 1);
238 if (i->second == 0) {
240 cout << RED <<
"Test " << i->first <<
" missing data." << RESET << endl;
242 number_of_tests += 1;
243 number_of_failures += 1;
247 cout << (number_of_tests > 0 && number_of_failures == 0 ? GREEN : RED) <<
"Number of tests/failures " << number_of_tests <<
"/" << number_of_failures << RESET << endl;