48     JUPITable(
const char* 
const fileName)
 
   53       ifstream 
in(fileName);
 
   55       for (
string buffer; 
getline(
in, buffer); ) {
 
   57         istringstream 
is(buffer);
 
   93       if (p == number2upi[pbs].end()) {
 
   95         p = number2upi[
pbs].find(number);
 
   97         if (p == number2upi[pbs].end()) {
 
  117 int main(
int argc, 
char **argv)
 
  132   double           HVstepMin   = 2 * 3.14;              
 
  158     JParser<> zap(
"Example program to find optimal HV-settings.");
 
  160     zap[
'f'] = 
make_field(inputFile,    
"input    file (ROOT format)");
 
  162     zap[
'a'] = 
make_field(detectorFile, 
"detector file");
 
  163     zap[
'b'] = 
make_field(UPIFile,      
"PMT UPI ASCII table");
 
  170   catch(
const exception &error) {
 
  171     FATAL(error.what() << endl);
 
  174   if (login.empty() || locationID.empty()) {
 
  176     FATAL(
"Missing user information (please specify via -#login and -#locationID");
 
  178   } 
else if (testType.empty()) {
 
  180     FATAL(
"Missing database test type (please specify via -#testType)");
 
  184   const JUUID& UUID = JUUID::rndm();
 
  189   timer->tm_sec -= elapsedTime;
 
  196   catch (
const exception& error) {
 
  197     FATAL(error.what() << endl);
 
  202   JUPITable     fetchUPI(UPIFile.c_str());
 
  207   TFile input(inputFile.c_str(), 
"READ");
 
  221   JHVInterpolator::setMinHVDistance(HVstepMin);
 
  222   JHVInterpolator::setHVRange      (HVrange);
 
  223   JHVInterpolator::setGainRange    (gainRange);
 
  225   NOTICE(
"Searching optimal high-voltage settings..." << endl <<
 
  226          LEFT(30) << 
"UPI" << 
CENTER(35) << 
"(identifer / location)" << 
RIGHT(35) << 
"Inter-/Extrapolated high-voltage [-]" << endl);
 
  230     const string&   
name = it->first;
 
  235     const int      seppos   = name.find(
'.');
 
  236     const int      moduleID = stoi(name.substr(0, seppos));
 
  237     const int      tdc      = stoi(name.substr(seppos + 1, seppos + 3));
 
  243     const string   location = 
MAKE_STRING(right << 
FILL(4,
'0') << module.getLocation().getString() << 
'.' <<
 
  244                                           right << 
FILL(2,
'0') << module.getLocation().getFloor()  << 
'.' <<
 
  245                                           right << 
FILL(2,
'0') << tdc);
 
  247     NOTICE(
LEFT(30) << pmtUPI << 
"(a.k.a. " << name << 
" / " << location << 
"): ");
 
  254       NOTICE(right << 
FIXED(20,2) << result << 
" +/- " << 
FIXED(4,2) << error << endl);
 
  260       WARNING(
"Could not find high-voltage corresponding to target gain; Setting zero." << endl);
 
  268   TFile output(inputFile.c_str(), 
"RECREATE");
 
  283   js[
EndTime_t]                  = timer().toString(format);
 
  288   ofs << setw(2) << setprecision(8);
 
Utility class to parse command line options. 
 
static const std::string UUID_t
 
int main(int argc, char *argv[])
 
double getTargetHVError(const double gainTarget)
Get error estimate on high-voltage corresponding to given target gain value. 
 
const JModule & getModule(const JObjectID &id) const 
Get module parameters. 
 
Data structure for a composite optical module. 
 
static const std::string Failed_t
 
#define gmake_property(A)
macro to convert (template) parameter to JPropertiesElement object 
 
static const std::string Tests_t
 
static const JPBS_t PMT(3, 4, 2, 3)
PBS of photo-multiplier tube (PMT) 
 
static const std::string OK_t
 
static const double FITTOT_GAIN_MAX
Default maximal gain. 
 
static const double FITTOT_GAIN_MIN
Default minimal gain. 
 
Router for direct addressing of module data in detector data structure. 
 
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message. 
 
Utility class to parse parameter values. 
 
static const std::string Location_t
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
JDateAndTimeFormat
Date and time formats. 
 
Universal product identifier (UPI). 
 
double getTargetHV(const double gainTarget)
Get high-voltage corresponding to given target gain value. 
 
Dynamic ROOT object management. 
 
Auxiliary data structure for floating point format specification. 
 
Data structure for detector geometry and calibration. 
 
#define MAKE_STRING(A)
Make string. 
 
Auxiliary data structure for alignment of data. 
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
 
I/O formatting auxiliaries. 
 
bool interpolate(const double gainTarget)
Inter-/Extrapolate the high-voltage value corresponding to the target gain value. ...
 
Auxiliary data structure to store high-voltage versus gain data and interpolate the nominal high-volt...
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
int getID() const 
Get identifier. 
 
Data structure for PMT geometry and calibration. 
 
std::istream & getline(std::istream &in, JString &object)
Read string from input stream until end of line. 
 
static const std::string Test_t
 
bool is_valid() const 
Check validity. 
 
const double NOMINAL_GAIN
Specification for normalized gain corresponding to a one photo-electron pulse. 
 
General purpose messaging. 
 
Auxiliary data structure for sequence of same character. 
 
const JPMT & getPMT(const JPMTIdentifier &id) const 
Get PMT parameters. 
 
Direct access to module in detector data structure. 
 
static const std::string EndTime_t
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
Auxiliary class to define a range between two values. 
 
Auxililary class to get date and time. 
 
Utility class to parse command line options. 
 
Data structure for PMT high-voltage calibration. 
 
static const std::string Type_t
 
static const std::string StartTime_t
 
Product breakdown structure (PBS). 
 
static const std::string User_t
Detector calibration key words for JSON I/O. 
 
Exception for accessing a value in a collection that is outside of its range. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in