40   inline JDAQHeader getDAQHeader(
const char* 
const file_name)
 
   66 int main(
const int argc, 
const char * 
const argv[])
 
   86     JParser<> zap(
"Auxiliary program to compute the PMT thresholds according to the small time-over-threshold fraction.");
 
   92     zap[
'f'] = 
make_field(inputFile,         
"list of file names (output of JCalibrateToT)");
 
   95     zap[
't'] = 
make_field(fraction,          
"maximal fraction of signal allowed for noise.") = 0.5;
 
   96     zap[
'T'] = 
make_field(testType,          
"test type")                                     = 
"TH-TUNING-SEA-v1";
 
  101   catch(
const exception& error) {
 
  102     FATAL(error.what() << endl);
 
  106   if (inputFile.empty()) {
 
  107     FATAL(
"No input files.");
 
  123   catch(
const exception& error) {
 
  124     FATAL(error.what() << endl);
 
  128   const JDAQHeader header = getDAQHeader(inputFile[0].c_str());
 
  141       detector[parameters.DOMID][parameters.CABLEPOS] = parameters;
 
  146   catch(
const exception& error) {
 
  147     FATAL(error.what() << endl);
 
  151   struct parameters_type {
 
  165     const JDAQHeader header = getDAQHeader(i->c_str());
 
  173     TFile* in = TFile::Open(i->c_str(), 
"exist");
 
  175     if (in == NULL || !in->IsOpen()) {
 
  176       FATAL(
"File: " << *i << 
" not opened." << endl);
 
  179     for (detector_type::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  181       if (!module->second.empty()) {
 
  187           for (
int ix = 1; ix <= h2s->GetXaxis()->GetNbins(); ++ix) {
 
  192             for (
int iy = 1; iy <= h2s->GetYaxis()->GetNbins(); ++iy) {
 
  194               const double x = h2s->GetYaxis()->GetBinCenter(iy);
 
  195               const double y = h2s->GetBinContent(ix, iy);
 
  204             const JUPI_t upi = module->second.at(ix-1).PMTUPI;
 
  206             data[upi].push_back({ getPMTThreshold(upi).value, signal, noise});
 
  211           WARNING(
"No histogram for module " << module->first << 
"; skip." << endl);
 
  222   for (map_type::iterator i = 
data.begin(); i != 
data.end(); ++i) {
 
  224     sort(i->second.begin(), i->second.end(), 
make_comparator(¶meters_type::threshold));
 
  226     int threshold = i->second.begin()->threshold;
 
  228     for (data_type::const_iterator p = i->second.begin(); p != i->second.end(); ++p) {
 
  230       if (p->noise <= fraction * p->signal) {
 
  232         threshold = p->threshold;
 
  238     if (
debug >= 
debug_t || threshold > i->second.begin()->threshold) {
 
  240       cout << 
"PMT " << left << setw(32) << i->first << 
" -> " << right << setw(3) << threshold << 
" (" << i->second.begin()->threshold << 
")" << endl;
 
  242       for (data_type::const_iterator p = i->second.begin(); p != i->second.end(); ++p) {
 
  243         DEBUG(setw(3) << p->threshold << 
' ' << 
FIXED(7,0) << p->noise << 
"/" << 
FIXED(7,0) << p->signal << 
' ' << (p->noise <= fraction * p->signal) << endl);
 
  264     out << setw(2) << setprecision(8);
 
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
 
General purpose messaging.
 
#define DEBUG(A)
Message macros.
 
#define ASSERT(A,...)
Assert macro.
 
Utility class to parse command line options.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
#define MAKE_CSTRING(A)
Make C-string.
 
Auxiliary class to define a range between two values.
 
int main(const int argc, const char *const argv[])
 
Auxiliary class for PMT thresholds.
 
Utility class to parse command line options.
 
int getDetectorID() const
Get detector identifier.
 
int getRunNumber() const
Get run number.
 
static const char *const _2SToT
Histogram naming.
 
ResultSet & getResultSet(const std::string &query)
Get result set.
 
std::vector< JServer > getServernames()
Get list of names of available database servers.
 
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
std::vector< event_type > data_type
 
static const std::string Tests_t
 
static const std::string User_t
 
static const std::string Location_t
 
static const std::string Time_t
 
static const std::string Test_t
 
static const std::string OK_t
 
static const std::string End_t
 
static const std::string Type_t
 
static const std::string Start_t
 
std::map< int, range_type > map_type
 
Auxiliary data structure for floating point format specification.
 
Type definition of range.
 
Wrapper class for server name.
 
Universal product identifier (UPI).
 
Template definition for getting table specific selector.
 
Data structure for PMT threshold calibration.
 
Auxiliary class for date and time.
 
std::string toString() const
Get ASCII formatted date and time.