73     JParser<> zap(
"Auxiliary program to compose detector from separate calibrations.");
 
   75     zap[
'a'] = 
make_field(detectorFile,  
"detector file");
 
   76     zap[
'f'] = 
make_field(inputFile,     
"detector calibration files in JSON format "\
 
   77                           "(wild card \'" << 
FILENAME_WILDCARD << 
"\' will be replaced by corresponding calibration set)");
 
   83   catch(
const exception &error) {
 
   84     FATAL(error.what() << endl);
 
   98     FATAL(
"No detector address map for detector identier " << 
detector.getID() << endl);
 
  120     operator int()
 const { 
return value; }
 
  122     status_type& operator=(
const int value) 
 
  142   for (
const auto& file_name : inputFile) {
 
  154      buffer = { file_name };
 
  156     for (
const auto& file_name : buffer) {
 
  158       const JSon js(file_name);
 
  160       json::const_iterator 
data;
 
  166         for (
size_t i = 0; i != 
data->size(); ++i) {
 
  180               if (pmtRouter.hasPMT(element.getID())) {
 
  182                 JPMT& pmt = 
detector.getPMT(pmtRouter.getAddress(element.getID()));
 
  186                 tcal[pmt.
getID()] = DEFINED;
 
  195               if (moduleRouter.hasModule(element.getID())) {
 
  197                 JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  199                 module.
set(element.getPosition());
 
  201                 pcal[module.
getID()] = DEFINED;
 
  210               if (moduleRouter.hasModule(element.getID())) {
 
  212                 JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  214                 module.
set(element.getPosition());
 
  216                 pcal[module.
getID()] = DEFINED;
 
  225               if (moduleRouter.hasModule(element.getID())) {
 
  227                 JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  231                 if (module.size() != buffer.size()) {
 
  232                   FATAL(
"Module size " << module.size() << 
" != " << buffer.size() << endl);
 
  237                 for (
size_t i = 0; i != module.size(); ++i) {
 
  241                 module.
rotate(element.getQuaternion());
 
  246                 rcal[module.
getID()] = DEFINED;
 
  255               if (moduleRouter.hasModule(element.getID())) {
 
  257                 JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  261                 acal[module.
getID()] = DEFINED;
 
  270               if (moduleRouter.hasModule(element.getID())) {
 
  272                 JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  276                 acal[module.
getID()] = DEFINED;
 
  285               if (moduleRouter.hasModule(element.getID())) {
 
  287                 JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  291                 ccal[module.
getID()] = DEFINED;
 
  300               if (moduleRouter.hasModule(element.getID())) {
 
  302                 JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  306                 ccal[module.
getID()] = DEFINED;
 
  315               if (pmtRouter.hasPMT(element.getID())) {
 
  317                 JPMT& pmt = 
detector.getPMT(pmtRouter.getAddress(element.getID()));
 
  321                 scal[0][pmt.
getID()] = DEFINED;
 
  330               if (moduleRouter.hasModule(element.getID())) {
 
  332                 JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  336                 scal[1][module.
getID()] = DEFINED;
 
  345               if (moduleRouter.hasModule(element.getID())) {
 
  347                 JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  351                 scal[1][module.
getID()] = DEFINED;
 
  360   for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  362     if (pcal   [module->
getID()] != DEFINED) { 
ERROR(
"Module " << setw(10) << module->
getID() << 
' ' << 
getLabel(module->
getLocation()) << 
" no position calibration."  << endl); }
 
  363     if (rcal   [module->
getID()] != DEFINED &&
 
  365     if (acal   [module->
getID()] != DEFINED) { 
ERROR(
"Module " << setw(10) << module->
getID() << 
' ' << 
getLabel(module->
getLocation()) << 
" no acoustics calibration." << endl); }
 
  366     if (ccal   [module->
getID()] != DEFINED) { 
ERROR(
"Module " << setw(10) << module->
getID() << 
' ' << 
getLabel(module->
getLocation()) << 
" no compass calibration."   << endl); }
 
  367     if (scal[1][module->
getID()] != DEFINED) { 
ERROR(
"Module " << setw(10) << module->
getID() << 
' ' << 
getLabel(module->
getLocation()) << 
" no status calibration."    << endl); }
 
  369     for (JModule::const_iterator pmt = module->begin(); pmt != module->end(); ++pmt) {
 
  370       if (tcal   [pmt->
getID()] != DEFINED) { 
ERROR(
"PMT " << setw(8) << pmt->
getID() << 
" no time calibration."   << endl); }
 
  371       if (scal[0][pmt->
getID()] != DEFINED) { 
ERROR(
"PMT " << setw(8) << pmt->
getID() << 
" no status calibration." << endl); }
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
#define MAKE_STRING(A)
Make string.
 
void setCalibration(const JCalibration &cal)
Set calibration.
 
int getFloor() const
Get floor number.
 
const JLocation & getLocation() const
Get location.
 
Router for direct addressing of module data in detector data structure.
 
Data structure for a composite optical module.
 
JVector3D getCenter() const
Get center of module based on crossing point of PMT axes.
 
const JPMT & getPMT(const int index) const
Get PMT.
 
JModule & set(const JVector3D &pos)
Set position.
 
void rotate(const JRotation3D &R)
Rotate module.
 
Router for direct addressing of PMT data in detector data structure.
 
Data structure for PMT geometry, calibration and status.
 
void setAxis(const JAxis3D &axis)
Set axis.
 
const JAxis3D & getAxis() const
Get axis.
 
Data structure for position in three dimensions.
 
void setPosition(const JVector3D &pos)
Set position.
 
void setQuaternion(const JQuaternion3D &quaternion)
Set quaternion.
 
int getID() const
Get identifier.
 
Utility class to parse command line options.
 
void from_json(const json &js, JDBString &object)
Convert JSon to database string.
 
std::string getLabel(const JLocation &location)
Get module label for monitoring and other applications.
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
 
void store(const std::string &file_name, const JDetector &detector)
Store detector to output file.
 
JDetectorBuilder & getDetectorBuilder()
Get detector builder.
 
bool hasDetectorAddressMap(const int id)
Check if detector address map is available.
 
std::string setWildCard(const std::string &file_name, const std::string &value)
Get file name by setting wild card to given value.
 
bool hasWildCard(const std::string &file_name)
Check presence of wild card.
 
static const char FILENAME_WILDCARD
wild card character for file name substitution
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
static const std::string BasePositions_t
 
static const std::string BaseStatusInfo_t
 
static const std::string BaseAcousticT0_t
 
static const std::string TCAL
PMT time offsets.
 
bool is_valid(const json &js)
Check validity of JSon data.
 
static const std::string PMTT0s_t
 
static const std::string PCAL
(optical|base) module positions
 
static const std::string DOMPositions_t
 
static const std::string SCAL
(module|PMT) status
 
static const std::string DetID_t
 
static const std::string RCAL
optical module orientations
 
static const std::string BaseCompassRotations_t
 
static const std::string Data_t
 
static const std::string PMTStatusInfo_t
 
static const std::string DOMRotations_t
 
static const std::string ACAL
acoustic time offsets (piezo sensor or hydrophone)
 
static const std::string DOMAcousticT0_t
 
static const std::string CCAL
compass alignment (a.k.a. quaternion calibration)
 
static const std::string DOMStatusInfo_t
 
static const std::string DOMCompassRotations_t
 
static const std::string Comment_t
 
std::map< int, range_type > map_type
 
Auxiliary interface for building detector.
 
const JModule & getModule(const int id=-1, const JLocation &location=JLocation()) const
Get module.
 
void setStatus(const JStatus &status)
Set status.
 
Auxiliary class to load json data from file.