194  typedef JHVTable::JHVTableTypes        JHVTableType_t;
 
  207  double      minHV       = -1500;
 
  208  double      maxHV       = - 800;
 
  225    JParser<> zap(
"Auxiliary program to treat failed high-voltage tuning results.");
 
  227    zap[
'f'] = 
make_field(inputFile,    
"input file");
 
  237  } 
catch(
const exception &error) {
 
  239    FATAL(error.what() << endl);
 
  242  if (login.empty() || locationID.empty()) {
 
  243    FATAL(
"Missing user information (please specify via -#login and -#locationID).");    
 
  247  const JUUID& UUID = JUUID::rndm();
 
  251  timer.
sub(elapsedTime);
 
  262  if (isJSONFile(inputFile.c_str())) {
 
  266    ifstream ifs(inputFile.c_str());
 
  273    json::const_iterator i0 = js.find(APIVersion_t);
 
  275    if (i0 != js.cend()) {
 
  277      istringstream iss(i0->get<
string>());
 
  284    json::const_iterator i1 = js.find(Data_t);
 
  287        (i1 != js.cend() && i1->size() > 0)) {
 
  289      DBTestType   = (*i1)[0].at(Test_t + Type_t).get<
string>();
 
  291      JHVCalibration_t::setVersion(getDBVersionTuneHV(DBTestType));
 
  294      metaInfoStr += (*i1)[0].at(Provenance_t + Info_t).at(Configuration_t).get<
string>();
 
  298      DBTestType   = js.at(Test_t + Type_t).get<
string>();
 
  300      JHVCalibration_t::setVersion(getDBVersionTuneHV(DBTestType));
 
  307    if (pmtSet.empty()) {
 
  309      for (JHVCalibration::iterator it = HVcals.begin(); it != HVcals.end(); ++it) {
 
  311        if (it->result != OK_t) {
 
  312          toEdit.push_back(*it);
 
  320        JHVCalibration::iterator pmt = find_if(HVcals.begin(), HVcals.end(),
 
  321                                               make_predicate(&JHVCalibration_t::getNumber, it->getNumber()));
 
  322        if (pmt != HVcals.end()) {
 
  324          if (pmt->result == OK_t) {
 
  325            WARNING(
"Editing " << OK_t << 
" result for " << pmt->getUPI() << endl);
 
  328          toEdit.push_back(*pmt);
 
  335    ERROR(inputFile << 
" is not a JSON file." << endl);
 
  339  if (!HVtable.second.empty()) {
 
  341    NOTICE(
"Setting " << (HVtable.first == JHVTableType_t::VENDOR_HV ? 
"vendor " : 
"run-specific ") <<
 
  342           "PMT high-voltages from file " <<  HVtable.second << 
"..." << endl);
 
  344    JHVTable getHV(HVtable.second.c_str(), HVtable.first);
 
  346    for (JHVCalibration::iterator i = toEdit.begin(); i != toEdit.end(); ++i) {
 
  349      const double  HV  = getHV(upi.
getNumber());
 
  351      if (HV > minHV && HV < maxHV) {
 
  353        i->supplyVoltage  = getHV(upi.
getNumber());
 
  358        WARNING(
"Invalid high-voltage for PMT " << upi   << 
" (" << 
FIXED(7,1) << HV    <<
 
  359                " not within [ " << 
FIXED(7,1)  << minHV << 
", " << 
FIXED(7,1) << maxHV << 
"]); skip." << endl);
 
  365    NOTICE(
"Setting high-voltages manually..." << endl);
 
  367    for (JHVCalibration::iterator i = toEdit.begin(); i != toEdit.end(); ++i) {
 
  369      NOTICE(
"Please specify high-voltage for " << 
RIGHT(30) << i->getUPI() << 
":" << endl);
 
  374      while (manualHV < minHV || manualHV > maxHV) {
 
  376        WARNING(
"Specified high-voltage is not within range ["     <<
 
  377                FIXED(7,1) << minHV << 
", " << 
FIXED(7,1) << maxHV <<
 
  378                "]; Please specify again." << endl);
 
  383      i->supplyVoltage = manualHV;
 
  393    json error           = { {Message_t,              
""                      },
 
  395                             {Arguments_t,            json::array()           } };
 
  397    json metaData        = { {Configuration_t,        metaInfoStr             },
 
  400    json data            = { {Provenance_t + Info_t,  
json(metaData)          },
 
  402                             {Location_t,             locationID              },
 
  403                             {Start_t + Time_t,       timer.
toString()        },
 
  404                             {End_t   + Time_t,       timer().
toString()      },
 
  405                             {Test_t  + Type_t,       DBTestType              },
 
  406                             {Tests_t,                
json(toEdit)            } };
 
  409    js[Data_t + Type_t]  = 
MAKE_STRING(
"ProductTestSession");
 
  411    js[Error_t]          = 
json(error);
 
  414    js[Data_t][0]        = 
json(data);
 
  419    js[Location_t]       = locationID;
 
  420    js[Test_t + Type_t]  = DBTestType;
 
  421    js[Start_t + Time_t] = timer.
toString();
 
  422    js[End_t + Time_t]   = timer().
toString();
 
  423    js[Tests_t]          = 
json(toEdit);
 
  429  ofs << setw(2) << setprecision(8);