40     JParser<> zap(
"Auxiliary program to compose detector from separate calibrations.");
 
   42     zap[
'a'] = 
make_field(detectorFile,  
"detector file");
 
   43     zap[
'f'] = 
make_field(inputFile,     
"detector calibration files in JSON format "\
 
   44                           "(wild card \'" << 
FILENAME_WILD_CARD << 
"\' will be replaced by corresponding calibration set)");
 
   50   catch(
const exception &error) {
 
   51     FATAL(error.what() << endl);
 
   65     FATAL(
"No detector address map for detector identier " << 
detector.getID() << endl);
 
   73   json::const_iterator data;
 
   80       for (
size_t i = 0; i != data->size(); ++i) {
 
   82         if (data->at(i).contains(
DetID_t)) {
 
   86         if (data->at(i).contains(
PMTT0s_t)) {
 
   90             if (pmtRouter.hasPMT(element.getID())) {
 
   92               JPMT& pmt = 
detector.getPMT(pmtRouter.getAddress(element.getID()));
 
  106       for (
size_t i = 0; i != data->size(); ++i) {
 
  108         if (data->at(i).contains(
DetID_t)) {
 
  116             if (moduleRouter.hasModule(element.getID())) {
 
  118               JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  120               module.
add(element.getPosition());    
 
  129             if (moduleRouter.hasModule(element.getID())) {
 
  131               JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  133               module.
add(element.getPosition());
 
  145       for (
size_t i = 0; i != data->size(); ++i) {
 
  147         if (data->at(i).contains(
DetID_t)) {
 
  155             if (moduleRouter.hasModule(element.getID())) {
 
  157               JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  161               if (module.size() != buffer.size()) {
 
  162                 FATAL(
"Module size " << module.size() << 
" != " << buffer.size() << endl);
 
  167               for (
size_t i = 0; i != module.size(); ++i) {
 
  171               module.
rotate(element.getQuaternion());
 
  191       for (
size_t i = 0; i != data->size(); ++i) {
 
  193         if (data->at(i).contains(
DetID_t)) {
 
  201             if (moduleRouter.hasModule(element.getID())) {
 
  203               JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  217       for (
size_t i = 0; i != data->size(); ++i) {
 
  219         if (data->at(i).contains(
DetID_t)) {
 
  227             if (moduleRouter.hasModule(element.getID())) {
 
  229               JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  243       for (
size_t i = 0; i != data->size(); ++i) {
 
  245         if (data->at(i).contains(
DetID_t)) {
 
  253             if (pmtRouter.hasPMT(element.getID())) {
 
  255               JPMT& pmt = 
detector.getPMT(pmtRouter.getAddress(element.getID()));
 
  266             if (moduleRouter.hasModule(element.getID())) {
 
  268               JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
  279             if (moduleRouter.hasModule(element.getID())) {
 
  281               JModule& module = 
detector.getModule(moduleRouter.getAddress(element.getID()));
 
Router for direct addressing of PMT data in detector data structure. 
 
static const std::string PMTStatusInfo_t
 
Utility class to parse command line options. 
 
static const std::string DetID_t
 
static const std::string RCAL
(optical|base) module orientations 
 
Data structure for a composite optical module. 
 
static const std::string DOMPositions_t
 
Router for direct addressing of module data in detector data structure. 
 
bool hasDetectorAddressMap(const int id)
Check if detector address map is available. 
 
void setAxis(const JAxis3D &axis)
Set axis. 
 
static const std::string TCAL
PMT time offsets. 
 
Lookup table for PMT addresses in detector. 
 
static const std::string CCAL
compass alignment (a.k.a. quaternion calibration) 
 
#define ASSERT(A,...)
Assert macro. 
 
void setQuaternion(const JQuaternion3D &quaternion)
Set quaternion. 
 
static const std::string SCAL
PMT status. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
static const std::string DOMRotations_t
 
int getID() const 
Get identifier. 
 
static const std::string PCAL
(optical|base) module positions 
 
bool is_valid(const json &js)
Check validity of JSon data. 
 
Data structure for PMT geometry, calibration and status. 
 
static const std::string ACAL
acoustic time offsets (piezo sensor or hydrophone) 
 
void store(const std::string &file_name, const JDetector &detector)
Store detector to output file. 
 
JVector3D getCenter() const 
Get center of module based on crossing point of PMT axes. 
 
static const std::string DOMAcousticT0_t
 
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map. 
 
const JPMT & getPMT(const int index) const 
Get PMT. 
 
void rotate(const JRotation3D &R)
Rotate module. 
 
void setStatus(const JStatus &status)
Set status. 
 
static const std::string BaseRotations_t
 
std::string setWildCard(const std::string &file_name, const std::string &value)
Get file name by setting wild card to given value. 
 
static const std::string DOMCompassRotations_t
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
void setCalibration(const JCalibration &cal)
Set calibration. 
 
const JAxis3D & getAxis() const 
Get axis. 
 
static const char FILENAME_WILD_CARD
wild card character for file name substitution 
 
static const std::string DOMStatusInfo_t
 
Data structure for position in three dimensions. 
 
static const std::string PMTT0s_t
 
Auxiliary class to load json data from file. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
static const std::string Data_t
 
JModule & set(const JVector3D &pos)
Set position. 
 
static const std::string BaseStatusInfo_t
 
const JModule & getModule(const JDetector &detector, const JModuleLocation &location)
find module with a given string and floor number 
 
static const std::string BasePositions_t
 
JModule & add(const JVector3D &pos)
Add position. 
 
void setPosition(const JVector3D &pos)
Set position. 
 
bool hasWildCard(const std::string &file_name)
Check presence of wild card.