48     JParser<> zap(
"Auxiliary program to merge detector files.");
 
   52     zap[
'@'] = 
make_field(calset,        
"import calibration sets \"<key> = <file name>[; <key> = <file name>]\"" << endl
 
   58   catch(
const exception &error) {
 
   59     FATAL(error.what() << endl);
 
   67     if (keys.count(i->getKey()) == 0)
 
   68       FATAL(
"Invalid calibration set \"" << i->getKey() << 
"\"" << endl);
 
   70       calibration[i->getKey()] = 
trim(i->getValue());
 
   90       copy(buffer.begin(), buffer.end(), back_inserter(
detector));
 
   94   if (calibration.count(
TCAL)) {
 
  107     for (
const auto& module : buffer) {
 
  108       for (
const auto& pmt : module) {
 
  109         if (router.hasPMT(pmt.getID()))
 
  110           detector.getPMT(router.getAddress(pmt.getID())).setCalibration(pmt.getCalibration());
 
  112           FATAL(
"Missing PMT " << pmt.getID() << endl);
 
  118   if (calibration.count(
PCAL)) {
 
  131     for (
const auto& module : buffer) {
 
  132       if (router.hasModule(module.getID())) {
 
  134         if (module.getFloor() != 0)
 
  135           detector.getModule(router.getAddress(module.getID())).set(module.getCenter());
 
  137           detector.getModule(router.getAddress(module.getID())).set(module.getPosition());
 
  140         FATAL(
"Missing module " << module.getID() << endl);
 
  145   if (calibration.count(
RCAL)) {
 
  158     for (
const auto& module : buffer) {
 
  159       if (router.hasModule(module.getID())) {
 
  161         if (module.getFloor() != 0) {
 
  163           JModule& 
object = 
detector.getModule(router.getAddress(module.getID()));
 
  174         FATAL(
"Missing module " << module.getID() << endl);
 
  179   if (calibration.count(
ACAL)) {
 
  192     for (
const auto& module : buffer) {
 
  193       if (router.hasModule(module.getID())) {
 
  195         detector.getModule(router.getAddress(module.getID())).setT0(module.getT0());
 
  198         FATAL(
"Missing module " << module.getID() << endl);
 
  203   if (calibration.count(
CCAL)) {
 
  216     for (
const auto& module : buffer) {
 
  217       if (router.hasModule(module.getID())) {
 
  219         detector.getModule(router.getAddress(module.getID())).setQuaternion(module.getQuaternion());
 
  222         FATAL(
"Missing module " << module.getID() << endl);
 
  227   if (calibration.count(
SCAL)) {
 
  240     for (
const auto& module : buffer) {
 
  241       for (
const auto& pmt : module) {
 
  242         if (router.hasPMT(pmt.getID()))
 
  243           detector.getPMT(router.getAddress(pmt.getID())).setStatus(pmt.getStatus());
 
  245           FATAL(
"Missing PMT " << pmt.getID() << endl);
 
Router for direct addressing of PMT data in detector data structure. 
 
Utility class to parse command line options. 
 
static const std::string RCAL
(optical|base) module orientations 
 
Data structure for a composite optical module. 
 
Router for direct addressing of module data in detector data structure. 
 
static const std::string TCAL
PMT time offsets. 
 
static JRotation getRotation
Function object to get rotation matrix to go from first to second module. 
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
static const std::string CCAL
compass alignment (a.k.a. quaternion calibration) 
 
std::string trim(const std::string &buffer)
Trim string. 
 
JVector3D & sub(const JVector3D &vector)
Subtract vector. 
 
static const std::string SCAL
PMT status. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
static const std::string PCAL
(optical|base) module positions 
 
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. 
 
Auxiliary data structure for streaming of STL containers. 
 
then usage $script[distance] fi case set_variable R
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
void copy(const Head &from, JHead &to)
Copy header from from to to. 
 
Data structure for position in three dimensions. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
JVector3D & add(const JVector3D &vector)
Add vector.