26 int main(
int argc,
char **argv)
38 JParser<> zap(
"Auxiliary program to compose detector from separate calibrations.");
40 zap[
'a'] =
make_field(detectorFile,
"detector file (identifier and location of modules as well as identifier and status of PMTs are used)");
41 zap[
'f'] =
make_field(inputFile,
"detector calibrations file (json format)");
47 catch(
const exception &error) {
48 FATAL(error.what() << endl);
62 FATAL(
"No detector address map for detector identier " <<
detector.getID() << endl);
73 istream*
in = open<istream>(inputFile.c_str());
79 DEBUG(setw(4) << js << endl);
87 json::const_iterator data = js.find(
Data_t);
89 if (data != js.end()) {
91 for (
size_t i = 0; i != data->size(); ++i) {
93 if (data->at(i).contains(
PMTT0s_t)) {
109 for (JModuleRotation::const_iterator i = rotation.begin(); i != rotation.end(); ++i) {
111 if (moduleRouter.hasModule(i->getID())) {
113 JModule& module =
detector.getModule(moduleRouter.getAddress(i->getID()));
116 if (module.size() != buffer.size()) {
117 FATAL(
"Module size " << module.size() <<
" != " << buffer.size() << endl);
120 for (
size_t i = 0; i != module.size(); ++i) {
128 for (JModulePosition::const_iterator i = position.begin(); i != position.end(); ++i) {
130 if (moduleRouter.hasModule(i->getID())) {
132 JModule& module =
detector.getModule(moduleRouter.getAddress(i->getID()));
138 for (JPMTCalibration::const_iterator i = calibration.begin(); i != calibration.end(); ++i) {
140 if (pmtRouter.
hasPMT(i->getID())) {
Router for direct addressing of PMT data in detector data structure.
Utility class to parse command line options.
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.
bool hasPMT(const JObjectID &id) const
Has PMT.
Lookup table for PMT addresses in detector.
Data structure for detector geometry and calibration.
I/O formatting auxiliaries.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
void close(std::istream *pf)
Close file.
static const std::string DOMRotations_t
int getID() const
Get identifier.
bool is_valid(const json &js)
Check validity of JSon data.
Data structure for PMT geometry and calibration.
void store(const std::string &file_name, const JDetector &detector)
Store detector to output file.
Direct access to PMT in detector data structure.
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map.
const JPMT & getPMT(const int index) const
Get PMT.
void rotate(const JRotation3D &R)
Rotate module.
General purpose messaging.
Direct access to module in detector data structure.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
Utility class to parse command line options.
void setCalibration(const JCalibration &cal)
Set calibration.
const JAxis3D & getAxis() const
Get axis.
static const std::string PMTT0s_t
do set_variable DETECTOR_TXT $WORKDIR detector
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
static const std::string Data_t
const JPMTAddress & getAddress(const JObjectID &id) const
Get address of PMT.
const JModule & getModule(const JDetector &detector, const JModuleLocation &location)
find module with a given string and floor number
JModule & add(const JVector3D &pos)
Add position.
#define DEBUG(A)
Message macros.
int main(int argc, char *argv[])