47   inline double getDelayTime(
const JUPI_t& upi)
 
   72 int main(
int argc, 
char **argv)
 
   93     JParser<> zap(
"Auxiliary program to download or update detector from database.");
 
   99     zap[
'D'] = 
make_field(
id,            
"detector identifier")                                        = 
"";
 
  100     zap[
'r'] = 
make_field(run,           
"run number")                                                 = -1;
 
  101     zap[
'@'] = 
make_field(calset,        
"calibration sets \"<key> = <value>[; <key> = <value>]\"" << endl
 
  107     zap[
'V'] = 
make_field(variant,       
"detector version")                                           = getDetectorVersions<string>(), 
"";
 
  108     zap[
'W'] = 
make_field(wizzard,       
"-W add base modules; -WW set time offsets of acoustic sensors");
 
  114   catch(
const exception &error) {
 
  115     FATAL(error.what() << endl);
 
  124       FATAL(
"Invalid calibration set \"" << 
i->getKey() << 
"\"" << endl);
 
  126       calibration[
i->getKey()] = 
i->getValue();
 
  129   if (calibration.size() != 0
u &&
 
  130       calibration.size() != 3
u &&
 
  131       calibration.size() != 6
u) {
 
  132     FATAL(
"Inconsistent specificaton of calibration sets, either {}, {t,p,r}cal or {t,p,r,a,c,s}cal.");
 
  135   const bool file   = (detectorFile != 
"");
 
  136   const bool tpr    = (calibration.count(
TCAL) != 0 &&
 
  137                        calibration.count(
PCAL) != 0 &&
 
  138                        calibration.count(
RCAL) != 0 &&
 
  139                        calibration.count(
ACAL) == 0 &&
 
  140                        calibration.count(
CCAL) == 0 &&
 
  141                        calibration.count(
SCAL) == 0);
 
  142   const bool tpracs = (calibration.count(
TCAL) != 0 &&
 
  143                        calibration.count(
PCAL) != 0 &&
 
  144                        calibration.count(
RCAL) != 0 &&
 
  145                        calibration.count(
ACAL) != 0 &&
 
  146                        calibration.count(
CCAL) != 0 &&
 
  147                        calibration.count(
SCAL) != 0);
 
  148   const bool daq    = (run != -1);
 
  150   if (
file   && 
id      != 
"") { 
FATAL(
"Inconsistent specificaton of detector file and detector identifier."); }
 
  151   if (
file   && tpr)           { 
FATAL(
"Inconsistent specificaton of detector file and {t,p,r}cal calibration sets."); }
 
  152   if (
file   && tpracs)        { 
FATAL(
"Inconsistent specificaton of detector file and {t,p,r,a,c,s}cal calibration sets."); }
 
  153   if (
file   && daq)           { 
FATAL(
"Inconsistent specificaton of detector file and run number."); }
 
  155   if (tpr    && 
id      == 
"") { 
FATAL(
"Inconsistent specificaton of {t,p,r}cal calibration sets and no detector identifier."); }
 
  156   if (tpr    && variant != 
"") { 
FATAL(
"Inconsistent specificaton of {t,p,r}cal calibration sets and variant."); }
 
  157   if (tpr    && daq)           { 
FATAL(
"Inconsistent specificaton of {t,p,r}cal calibration sets and run number."); }
 
  159   if (tpracs && 
id      == 
"") { 
FATAL(
"Inconsistent specificaton of {t,p,r,a,c,s}cal calibration sets and no detector identifier."); }
 
  160   if (tpracs && variant == 
"") { 
FATAL(
"Inconsistent specificaton of {t,p,r,a,c,s}cal calibration sets and no variant."); }
 
  161   if (tpracs && daq)           { 
FATAL(
"Inconsistent specificaton of {t,p,r,a,c,s}cal calibration sets and run number."); }
 
  163   if (daq    && 
id      == 
"") { 
FATAL(
"Inconsistent specificaton of run number and no detector identifier."); }
 
  168     FATAL(
"Inconsistent detector variant and option -W.");
 
  174   catch(
const exception& error) {
 
  175     FATAL(error.what() << endl);
 
  186                           calibration[
TCAL].c_str(),
 
  187                           calibration[
PCAL].c_str(),
 
  191                           calibration[
TCAL].c_str(),
 
  192                           calibration[
PCAL].c_str(),
 
  193                           calibration[
RCAL].c_str(),
 
  194                           calibration[
ACAL].c_str(),
 
  195                           calibration[
CCAL].c_str(),
 
  196                           calibration[
SCAL].c_str(),
 
  198     else if (daq && variant == 
"")
 
  200     else if (daq && variant != 
"")
 
  203       FATAL(
"Invalid options.");
 
  205   catch(
const exception& error) {
 
  206     FATAL(error.what() << endl);
 
  212   if (
detector.setToLatestVersion()) {
 
  213     NOTICE(
"Set detector version to " << 
detector.getVersion() << endl);
 
  227       ResultSet& rs  = 
getResultSet(getTable<JCLBMap>(), selector);
 
  233     catch(
const exception& error) {
 
  234       FATAL(error.what() << endl);
 
  239     for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  240       zmap[module->getString()][module->getFloor()] = module->getPosition();
 
  245       if (
i->FLOORID == 0) {
 
  251           if (zmap[
i->DUID].count(1) != 0) {
 
  256                                            zmap[
i->DUID][1].getY(),
 
  261             NOTICE(
"Adding module " << module << endl);
 
  267             ERROR(
"Missing floor in string " << 
FILL(4,
'0') << 
i->DUID << 
FILL() << endl);
 
  270         } 
else if (zmap[
i->DUID].count(1) != 0) {
 
  272           if (fabs(p->getX() - zmap[
i->DUID][1].getX()) > precision ||
 
  273               fabs(p->getY() - zmap[
i->DUID][1].getY()) > precision) {
 
  275             NOTICE(
"Offset module " << 
getLabel(p->getLocation()) << 
" (x,y) position "  
  276                    << 
SCIENTIFIC(12,3) << (p->getX() - zmap[
i->DUID][1].getX()) << 
' '  
  277                    << 
SCIENTIFIC(12,3) << (p->getY() - zmap[
i->DUID][1].getY()) << endl);
 
  280                                        zmap[
i->DUID][1].getY(),
 
  286           FATAL(
"Missing floor in string " << setw(4) << 
i->DUID << endl);
 
  298       ResultSet& rs  = 
getResultSet(getTable<JDetectorIntegration_t>());
 
  300       if (! (rs >> detector_t)) {
 
  316           JDetector::iterator p = find_if(
detector.begin(), 
 
  326             if (t0 != p->getT0()) {
 
  328               NOTICE(
"Set module time calibration " << p->getLocation() << 
' ' << setw(10) << p->getID() << 
' ' << 
FIXED(12,3) << t0 << endl);
 
  330               p->setCalibration(t0);
 
  335             ERROR(
"No module for UPI " << 
i->first << 
" at " << location << endl);
 
  340     catch(
const exception& error) {
 
  341       FATAL(error.what() << endl);
 
bool isORCADetector(const JDetectorHeader &header)
Check if given detector header is compatible with that of ORCA. 
 
bool hasNickname(const std::string &type) const 
Has calibration type. 
 
Utility class to parse command line options. 
 
static void reset()
Reset connection to database. 
 
JPredicate< JResult_t T::*, JComparison::eq > make_predicate(JResult_t T::*member, const JResult_t value)
Helper method to create predicate for data member. 
 
int main(int argc, char *argv[])
 
static JGetPBSSequences getPBSSequences
Function object to get PBS sequences as a function of PBS. 
 
Data structure for a composite optical module. 
 
static const double ARCA_TBARZ_M
ORCA T-bar position relative to seabed [m]. 
 
const std::string & getVariant() const 
Get variant. 
 
bool isARCADetector(const JDetectorHeader &header)
Check if given detector header is compatible with tat of ARCA. 
 
static const double HYDROPHONE_DELAYTIME_US
Hydrophone delay time [us]. 
 
then usage $script[< detector identifier >< run range >]< QA/QCfile > nExample script to produce data quality plots nWhen a detector identifier and run range are data are downloaded from the database nand subsequently stored in the given QA QC file
 
static const std::string ACAL
acoustic time offsets (piezo sensor or hydrophone) 
 
std::string getLabel(const JLocation &location)
Get module label for monitoring and other applications. 
 
static const std::string CCAL
compass alignment (a.k.a. quaternion calibration) 
 
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message. 
 
std::iterator_traits< T >::value_type getAverage(T __begin, T __end)
Get average. 
 
static const double PIEZO_V3_DELAYTIME_US
Piezo delay time [us]. 
 
static const double PIEZO_V1_DELAYTIME_US
Piezo delay time [us]. 
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
Auxiliary data structure for correspondence between nick and full name of calibration types...
 
Universal product identifier (UPI). 
 
Auxiliary data structure for floating point format specification. 
 
Auxiliary class for specifying selection of database data. 
 
Data structure for detector geometry and calibration. 
 
static const double PIEZO_V2_DELAYTIME_US
Piezo delay time [us]. 
 
JDetectorsHelper & getDetector()
Auxiliary function for helper object initialisation. 
 
const JPBS_t & getPBS() const 
Get PBS. 
 
std::string nick_name
nick name (e.g. "xcal") 
 
static const JPBS_t ACOUSTIC_SENSOR(3, 4, 3, 6, 2)
PBS of piezo sensor 
 
static const double ORCA_TBARZ_M
ORCA T-bar position relative to seabed [m]. 
 
static const std::string TCAL
PMT time offsets. 
 
int floor
position in string 
 
map_type::const_iterator range_const_iterator
 
I/O formatting auxiliaries. 
 
Version with quaternion and time offset per module. 
 
Logical location of module. 
 
const JLocation & getLocation() const 
Get location. 
 
Auxiliary data structure for location of product in detector. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
JLocation_t getLocation(const JUPI_t &upi) const 
Get location of product with given UPI. 
 
JSelector & add(const JSelector &selection)
Add selection. 
 
const array_type< JValue_t > & make_array(const JValue_t(&array)[N])
Method to create array of values. 
 
int getID() const 
Get identifier. 
 
void store(const std::string &file_name, const JDetector &detector)
Store detector to output file. 
 
range_type find(const JUPI_t &upi) const 
Find range of products with given UPI. 
 
Auxiliary data structure for streaming of STL containers. 
 
JSon definitions and auxiliaries. 
 
Auxiliary class to map UPI to location in detector. 
 
Auxiliary methods to convert data members or return values of member methods of a set of objects to a...
 
static const std::string RCAL
optical module orientations 
 
General purpose messaging. 
 
Auxiliary data structure for sequence of same character. 
 
static const JGetDetectorVersion getDetectorVersion
Function object to map detector version to numerical value. 
 
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
Utility class to parse command line options. 
 
static const std::string SCAL
(module|PMT) status 
 
static const JPBS_t HYDROPHONE(4, 5)
PBS of hydrophone 
 
ResultSet & getResultSet(const std::string &query)
Get result set. 
 
std::vector< JServer > getServernames()
Get list of names of available database servers. 
 
void configure(const std::string &detid, const bool option=false)
Configure detector integration for given detector identifier. 
 
Wrapper class for server name. 
 
Product breakdown structure (PBS). 
 
Data structure for position in three dimensions. 
 
Exception for accessing a value in a collection that is outside of its range. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
static const std::string PCAL
(optical|base) module positions 
 
Auxiliary data structure for floating point format specification. 
 
int string
position in detector 
 
Template definition for getting table specific selector. 
 
void setPosition(const JVector3D &pos)
Set position. 
 
double getT0() const 
Get time offset. 
 
static JDB & get()
Get connection to database.