50 JUPITable(
const char*
const fileName)
55 ifstream in(fileName);
57 for (
string buffer;
getline(in, buffer); ) {
65 if (
entry.PBS.is_valid() &&
67 entry.SERIALNUMBER >= 0) {
95 if (p != number2upi.end()) {
99 if (q != p->second.end()) {
171 JParser<> zap(
"Example program to find optimal HV-settings.");
173 zap[
'f'] =
make_field(inputFile,
"input file (ROOT format)");
183 catch(
const exception &error) {
189 FATAL(
"Missing user information (please specify via -#login and -#locationID).");
193 FATAL(
"Missing database test type (please specify via -#testType).");
197 FATAL(
"Missing run numbers.");
214 catch (
const exception& error) {
225 TFile input(inputFile.c_str(),
"READ");
243 NOTICE(
"Searching optimal high-voltage settings..." <<
endl <<
244 LEFT(30) <<
"UPI" <<
CENTER(35) <<
"(identifer / location)" <<
RIGHT(35) <<
"Inter-/Extrapolated high-voltage [-]" <<
endl);
248 const string& name =
it->first;
253 const int seppos = name.find(
'.');
254 const int moduleID =
stoi(name.substr(0,
seppos));
257 const JModule&
module = router.getModule(moduleID);
261 const string location =
MAKE_STRING(right <<
FILL(4,
'0') <<
module.getLocation().getString() <<
'.' <<
262 right <<
FILL(2,
'0') <<
module.getLocation().getFloor() <<
'.' <<
263 right <<
FILL(2,
'0') << tdc);
265 NOTICE(
LEFT(30) <<
pmtUPI <<
"(a.k.a. " << name <<
" / " << location <<
"): ");
269 const double result = -data.getHV ();
270 const double error = data.getHVError();
278 WARNING(
"Could not find high-voltage corresponding to target gain; Setting zero." <<
endl);
298 TFile output(inputFile.c_str(),
"RECREATE");
337 }
else if (
APIversion.getMajorVersion() == 1) {
348 FATAL(
"Invalid API version <" <<
APIversion <<
"> accepted major versions 1 and 2." <<
endl);
Data structure for detector geometry and calibration.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Dynamic ROOT object management.
General purpose messaging.
Direct access to module in detector data structure.
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
I/O formatting auxiliaries.
#define MAKE_STRING(A)
Make string.
#define gmake_property(A)
macros to convert (template) parameter to JPropertiesElement object
Auxiliary class to define a range between two values.
Scanning of objects from a single file according a format that follows from the extension of each fil...
int main(int argc, char **argv)
Router for direct addressing of module data in detector data structure.
const JPMT & getPMT(const JPMTIdentifier &id) const
Get PMT parameters.
Data structure for a composite optical module.
Data structure for PMT geometry, calibration and status.
Utility class to parse parameter values.
Exception for accessing a value in a collection that is outside of its range.
Template definition of a multi-dimensional oscillation probability interpolation table.
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys.
static const double FITTOT_GAIN_MAX
Default maximal gain.
static const double FITTOT_GAIN_MIN
Default minimal gain.
static const JPBS_t PMT(3, 4, 2, 3)
PBS of photo-multiplier tube (PMT)
static JDBTestTypesTuneHV & getDBVersionTuneHV
Function object for looking up the HV-tuning database version number corresponding to a specific test...
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
const double NOMINAL_GAIN
Specification for normalized gain corresponding to a one photo-electron pulse.
std::istream & getline(std::istream &in, JString &object)
Read string from input stream until end of line.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
bool putObject(TDirectory &dir, const TObject &object)
Write object to ROOT directory.
static const std::string Tests_t
static const std::string APIVersion_t
static const std::string User_t
static const std::string Encoding_t
static const std::string Message_t
static const std::string UUID_t
static const std::string Code_t
static const std::string Location_t
static const std::string Time_t
static const std::string Data_t
static const std::string Test_t
static const std::string OK_t
static const std::string Arguments_t
static const std::string Configuration_t
static const std::string End_t
static const std::string Fail_t
static const std::string Provenance_t
static const std::string Info_t
static const std::string Error_t
static const std::string Type_t
static const std::string Start_t
Auxiliary data structure for alignment of data.
Auxiliary data structure for sequence of same character.
Auxiliary data structure for floating point format specification.
Auxiliary data structure to store high-voltage versus gain data and interpolate the nominal high-volt...
static void setHVRange(const JRange< double > range)
Set valid gain range.
static void setMinHVDistance(const double minDist)
Set minimal separation distance for high-voltage.
static void setGainRange(const JRange< double > range)
Set valid gain range.
Product breakdown structure (PBS).
Universal product identifier (UPI).
Data structure for PMT high-voltage calibration.
static void setVersion(const int version)
Set HV-tuning database test type.
Auxiliary data structure for general purpose version number.
static const JUUID & rndm()
Generate random UUID.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Auxiliary class for date and time.
std::string toString() const
Get ASCII formatted date and time.
void sub(const time_t t1)
Subtract given time.