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)...