63     JParser<> zap(
"Auxiliary program to print detector file in human friendly format.");
 
   93   catch(
const exception &error) {
 
   94     FATAL(error.what() << endl);
 
  109   if        (option == default_t) {
 
  113   } 
else if (option == modules_t) {
 
  115     for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  118       cout << 
' ' << noshowpos << setw(8) << right << module->getID();
 
  119       cout << 
' ' << noshowpos << setw(3) << right << module->getString();
 
  120       cout << 
' ' << noshowpos << setw(2) << right << module->getFloor();
 
  121       cout << 
' ' << 
FIXED(7,2) << module->getX();
 
  122       cout << 
' ' << 
FIXED(7,2) << module->getY();
 
  123       cout << 
' ' << 
FIXED(7,2) << module->getZ();
 
  124       cout << 
' ' << 
FIXED(8,2) << module->getT0();
 
  128   } 
else if (option == pmts_t) {
 
  130     for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  131       for (JModule::const_iterator pmt = module->begin(); pmt != module->end(); ++pmt) {
 
  134         cout << 
' ' << noshowpos << setw(8) << right << pmt->getID();
 
  135         cout << 
' ' << 
FIXED(7,2) << pmt->getX();
 
  136         cout << 
' ' << 
FIXED(7,2) << pmt->getY();
 
  137         cout << 
' ' << 
FIXED(7,2) << pmt->getZ();
 
  138         cout << 
' ' << 
FIXED(6,3) << pmt->getDX();
 
  139         cout << 
' ' << 
FIXED(6,3) << pmt->getDY();
 
  140         cout << 
' ' << 
FIXED(6,3) << pmt->getDZ();
 
  141         cout << 
' ' << 
FIXED(8,2) << pmt->getT0();
 
  142         cout << 
' ' << noshowpos << setw(8) << right << pmt->getStatus();
 
  147   } 
else if (option == geometry_t) {
 
  152   } 
else if (option == comment_t) {
 
  156   } 
else if (option == header_t ||
 
  157              option == HEADER_t) {
 
  159     if (option == header_t) {
 
  161       cout << 
detector.getProperties() << endl;
 
  165       cout << 
"set_variable UTM_EAST         " << 
FIXED(12,2) << 
detector.getUTMEast()  << 
";" << endl;
 
  166       cout << 
"set_variable UTM_NORTH        " << 
FIXED(12,2) << 
detector.getUTMNorth() << 
";" << endl;
 
  167       cout << 
"set_variable UTM_Z            " << 
FIXED(12,2) << 
detector.getUTMZ()     << 
";" << endl;
 
  168       cout << 
"set_variable UTM_ZONE         " << 
FIXED(12,2) << 
detector.getUTMZone()  << 
";" << endl;
 
  169       cout << 
"set_variable UTM_WGS          " << 
FIXED(12,2) << 
detector.getWGS()      << 
";" << endl;
 
  172   } 
else if (option == version_t || 
 
  173              option == VERSION_t) {
 
  175     if (option == version_t) {
 
  177       cout << 
detector.getVersion() << endl;
 
  181       cout << 
"set_variable DETECTOR_VERSION " << 
detector.getVersion() << 
";" << endl;
 
  184   } 
else if (option == identifier_t ||
 
  185              option == IDENTIFIER_t) {
 
  187     if (option == identifier_t) {
 
  189       cout << 
"Detector " << 
detector.getID() << endl;
 
  193       cout << 
"set_variable DETECTOR_ID      " << 
detector.getID() << 
";" << endl;
 
  196   } 
else if (option == can_t ||
 
  201     const double      V = (cylinder.getZmax() - cylinder.getZmin()) * 
PI * cylinder.getRadius() * cylinder.getRadius(); 
 
  203     if (option == can_t) {
 
  205       cout << 
"X      = " << 
FIXED(7,1)       << cylinder.getX()      << endl;
 
  206       cout << 
"Y      = " << 
FIXED(7,1)       << cylinder.getY()      << endl;
 
  207       cout << 
"Zmin   = " << 
FIXED(7,1)       << cylinder.getZmin()   << endl;
 
  208       cout << 
"Zmax   = " << 
FIXED(7,1)       << cylinder.getZmax()   << endl;
 
  209       cout << 
"Radius = " << 
FIXED(7,1)       << cylinder.getRadius() << endl;
 
  210       cout << 
"Depth  = " << 
FIXED(7,1)       << 
detector.getUTMZ()   << endl;
 
  211       cout << 
"Volume = " << 
SCIENTIFIC(12,3) << V                    << endl;
 
  215       cout << 
"set_variable CAN_X_M      " << 
FIXED(7,1)       << cylinder.getX()           << 
";" << endl;
 
  216       cout << 
"set_variable CAN_Y_M      " << 
FIXED(7,1)       << cylinder.getY()           << 
";" << endl;
 
  217       cout << 
"set_variable CAN_ZMIN_M   " << 
FIXED(7,1)       << cylinder.getZmin()        << 
";" << endl;
 
  218       cout << 
"set_variable CAN_ZMAX_M   " << 
FIXED(7,1)       << cylinder.getZmax()        << 
";" << endl;
 
  219       cout << 
"set_variable CAN_RADIUS_M " << 
FIXED(7,1)       << cylinder.getRadius()      << 
";" << endl;
 
  220       cout << 
"set_variable CAN_DEPTH_M  " << 
FIXED(7,1)       << 
detector.getUTMZ()        << 
";" << endl;
 
  221       cout << 
"set_variable CAN_VOLUME_M3" << 
SCIENTIFIC(12,3) << V                         << 
";" << endl;
 
  224   } 
else if (option == center_t || 
 
  225              option == CENTER_t) {
 
  229     if (option == center_t) {
 
  232       cout << showpos << 
FIXED(8,3) << center.getX() << 
' ';
 
  233       cout << showpos << 
FIXED(8,3) << center.getY() << 
' ';
 
  234       cout << showpos << 
FIXED(8,3) << center.getZ() << endl;
 
  238       cout << 
"set_variable CENTER_X_M " << 
FIXED(7,1) << center.getX() << 
";" << endl;
 
  239       cout << 
"set_variable CENTER_Y_M " << 
FIXED(7,1) << center.getY() << 
";" << endl;
 
  240       cout << 
"set_variable CENTER_Z_M " << 
FIXED(7,1) << center.getZ() << 
";" << endl;
 
  243   } 
else if (option == summary_t ||
 
  244              option == SUMMARY_t) {
 
  257     for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  258       strings.insert(module->getString());
 
  261     if (option == summary_t) {
 
  263       cout << 
"Number of strings = " << setw(4) << numberOfStrings << endl;
 
  264       cout << 
"Number of floors  = " << setw(4) << numberOfFloors  << endl;
 
  265       cout << 
"Number of modules = " << setw(4) << numberOfModules << endl;
 
  266       cout << 
"First string      = " << setw(4) << 
string.first    << endl;
 
  267       cout << 
"Last  string      = " << setw(4) << 
string.second   << endl;
 
  268       cout << 
"First floor       = " << setw(4) << floor .first    << endl;
 
  269       cout << 
"Last  floor       = " << setw(4) << floor .second   << endl;
 
  273       cout << 
"set_variable NUMBER_OF_STRINGS " << setw(4) << numberOfStrings << 
";" << endl;
 
  274       cout << 
"set_variable NUMBER_OF_FLOORS  " << setw(4) << numberOfFloors  << 
";" << endl;
 
  275       cout << 
"set_variable NUMBER_OF_MODULES " << setw(4) << numberOfModules << 
";" << endl;
 
  276       cout << 
"set_variable FIRST_STRING      " << setw(4) << 
string.first    << 
";" << endl;
 
  277       cout << 
"set_variable LAST_STRING       " << setw(4) << 
string.second   << 
";" << endl;
 
  278       cout << 
"set_variable FIRST_FLOOR       " << setw(4) << floor .first    << 
";" << endl;
 
  279       cout << 
"set_variable LAST_FLOOR        " << setw(4) << floor .second   << 
";" << endl;
 
  280       cout << 
"set_array    STRINGS           ";
 
  281       copy(strings.begin(), strings.end(), ostream_iterator<int>(cout, 
" "));
 
Utility class to parse command line options. 
 
Auxiliary data structure for floating point format specification. 
 
static const JModuleCounter getNumberOfModules
Function object to count unique modules. 
 
double getMaximalDistance(const JDetector &detector)
Get maximal distance between modules in detector. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
const array_type< JValue_t > & make_array(const JValue_t(&array)[N])
Method to create array of values. 
 
int getNumberOfFloors(const JDetector &detector)
Get number of floors. 
 
static const double PI
Mathematical constants. 
 
double getMaximalTime(const double R_Hz)
Get maximal time for given rate. 
 
static const JStringCounter getNumberOfStrings
Function object to count unique strings. 
 
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. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
Auxiliary data structure for floating point format specification.