61     JParser<> zap(
"Auxiliary program to print detector file in human friendly format.");
 
   84   catch(
const exception &error) {
 
   85     FATAL(error.what() << endl);
 
  100   if        (option == default_t) {
 
  104   } 
else if (option == header_t) {
 
  106     cout << 
detector.getProperties() << endl;
 
  108   } 
else if (option == modules_t) {
 
  110     for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  114       for (JModule::const_iterator 
pmt = module->begin(); 
pmt != module->end(); ++
pmt) {
 
  118       t0 /= module->size();
 
  121       cout << 
' ' << noshowpos << setw(8) << right << module->
getID();
 
  122       cout << 
' ' << noshowpos << setw(3) << right << module->getString();
 
  123       cout << 
' ' << noshowpos << setw(2) << right << module->getFloor();
 
  124       cout << 
' ' << 
FIXED(7,2) << module->getX();
 
  125       cout << 
' ' << 
FIXED(7,2) << module->getY();
 
  126       cout << 
' ' << 
FIXED(7,2) << module->getZ();
 
  127       cout << 
' ' << 
FIXED(8,2) << t0;
 
  131   } 
else if (option == pmts_t) {
 
  133     for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  134       for (JModule::const_iterator 
pmt = module->begin(); 
pmt != module->end(); ++
pmt) {
 
  137         cout << 
' ' << noshowpos << setw(8) << right << 
pmt->
getID();
 
  138         cout << 
' ' << 
FIXED(7,2) << 
pmt->getX();
 
  139         cout << 
' ' << 
FIXED(7,2) << 
pmt->getY();
 
  140         cout << 
' ' << 
FIXED(7,2) << 
pmt->getZ();
 
  141         cout << 
' ' << 
FIXED(6,3) << 
pmt->getDX();
 
  142         cout << 
' ' << 
FIXED(6,3) << 
pmt->getDY();
 
  143         cout << 
' ' << 
FIXED(6,3) << 
pmt->getDZ();
 
  144         cout << 
' ' << 
FIXED(8,2) << 
pmt->getT0();
 
  145         cout << 
' ' << noshowpos << setw(8) << right << 
pmt->getStatus();
 
  150   } 
else if (option == version_t || 
 
  151              option == VERSION_t) {
 
  153     if (option == version_t) {
 
  155       cout << 
detector.getVersion() << endl;
 
  159       cout << 
"set_variable DETECTOR_VERSION " << 
detector.getVersion() << 
";" << endl;
 
  162   } 
else if (option == identifier_t ||
 
  163              option == IDENTIFIER_t) {
 
  165     if (option == identifier_t) {
 
  167       cout << 
"Detector " << 
detector.getID() << endl;
 
  171       cout << 
"set_variable DETECTOR_ID      " << 
detector.getID() << 
";" << endl;
 
  174   } 
else if (option == can_t ||
 
  179     const double      V = (cylinder.getZmax() - cylinder.getZmin()) * 
PI * cylinder.getRadius() * cylinder.getRadius(); 
 
  181     if (option == can_t) {
 
  183       cout << 
"X      = " << 
FIXED(7,1)       << cylinder.getX()      << endl;
 
  184       cout << 
"Y      = " << 
FIXED(7,1)       << cylinder.getY()      << endl;
 
  185       cout << 
"Zmin   = " << 
FIXED(7,1)       << cylinder.getZmin()   << endl;
 
  186       cout << 
"Zmax   = " << 
FIXED(7,1)       << cylinder.getZmax()   << endl;
 
  187       cout << 
"Radius = " << 
FIXED(7,1)       << cylinder.getRadius() << endl;
 
  188       cout << 
"Depth  = " << 
FIXED(7,1)       << 
detector.getUTMZ()   << endl;
 
  189       cout << 
"Volume = " << 
SCIENTIFIC(12,3) << V                    << endl;
 
  193       cout << 
"set_variable CAN_X_M      " << 
FIXED(7,1)       << cylinder.getX()           << 
";" << endl;
 
  194       cout << 
"set_variable CAN_Y_M      " << 
FIXED(7,1)       << cylinder.getY()           << 
";" << endl;
 
  195       cout << 
"set_variable CAN_ZMIN_M   " << 
FIXED(7,1)       << cylinder.getZmin()        << 
";" << endl;
 
  196       cout << 
"set_variable CAN_ZMAX_M   " << 
FIXED(7,1)       << cylinder.getZmax()        << 
";" << endl;
 
  197       cout << 
"set_variable CAN_RADIUS_M " << 
FIXED(7,1)       << cylinder.getRadius()      << 
";" << endl;
 
  198       cout << 
"set_variable CAN_DEPTH_M  " << 
FIXED(7,1)       << 
detector.getUTMZ()        << 
";" << endl;
 
  199       cout << 
"set_variable CAN_VOLUME_M3" << 
SCIENTIFIC(12,3) << V                         << 
";" << endl;
 
  202   } 
else if (option == center_t || option == CENTER_t) {
 
  206     if (option == center_t) {
 
  209       cout << showpos << 
FIXED(8,3) << center.getX() << 
' ';
 
  210       cout << showpos << 
FIXED(8,3) << center.getY() << 
' ';
 
  211       cout << showpos << 
FIXED(8,3) << center.getZ() << endl;
 
  215       cout << 
"set_variable CENTER_X_M " << 
FIXED(7,1) << center.getX() << 
";" << endl;
 
  216       cout << 
"set_variable CENTER_Y_M " << 
FIXED(7,1) << center.getY() << 
";" << endl;
 
  217       cout << 
"set_variable CENTER_Z_M " << 
FIXED(7,1) << center.getZ() << 
";" << endl;
 
  220   } 
else if (option == summary_t ||
 
  221              option == SUMMARY_t) {
 
  229     const JRange_t string(
detector.begin(), 
detector.end(), &JModule::getString);
 
  230     const JRange_t floor (
detector.begin(), 
detector.end(), &JModule::getFloor);
 
  234     for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  235       strings.insert(module->getString());
 
  238     if (option == summary_t) {
 
  240       cout << 
"Number of strings = " << setw(4) << numberOfStrings << endl;
 
  241       cout << 
"Number of floors  = " << setw(4) << numberOfFloors  << endl;
 
  242       cout << 
"Number of modules = " << setw(4) << numberOfModules << endl;
 
  243       cout << 
"First string      = " << setw(4) << 
string.first    << endl;
 
  244       cout << 
"Last  string      = " << setw(4) << 
string.second   << endl;
 
  245       cout << 
"First floor       = " << setw(4) << floor .first    << endl;
 
  246       cout << 
"Last  floor       = " << setw(4) << floor .second   << endl;
 
  250       cout << 
"set_variable NUMBER_OF_STRINGS " << setw(4) << numberOfStrings << 
";" << endl;
 
  251       cout << 
"set_variable NUMBER_OF_FLOORS  " << setw(4) << numberOfFloors  << 
";" << endl;
 
  252       cout << 
"set_variable NUMBER_OF_MODULES " << setw(4) << numberOfModules << 
";" << endl;
 
  253       cout << 
"set_variable FIRST_STRING      " << setw(4) << 
string.first    << 
";" << endl;
 
  254       cout << 
"set_variable LAST_STRING       " << setw(4) << 
string.second   << 
";" << endl;
 
  255       cout << 
"set_variable FIRST_FLOOR       " << setw(4) << floor .first    << 
";" << endl;
 
  256       cout << 
"set_variable LAST_FLOOR        " << setw(4) << floor .second   << 
";" << endl;
 
  257       cout << 
"set_array    STRINGS           ";
 
  258       copy(strings.begin(), strings.end(), ostream_iterator<int>(cout, 
" "));
 
  262   } 
else if (option == geometry_t) {
 
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. 
 
esac $JPP_DIR examples JDetector JTransitTime o $OUTPUT_FILE n N $NPE T $TTS_NS d $DEBUG for HISTOGRAM in tts tt2 pmt
 
double getMaximalDistance(const JDetector &detector)
Get maximal distance between modules in detector. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
int getID() const 
Get identifier. 
 
int getNumberOfFloors(const JDetector &detector)
Get number of floors. 
 
void load(const JString &file_name, JDetector &detector)
Load detector from input file. 
 
double getMaximalTime(const double R_Hz)
Get maximal time for given rate. 
 
static const JStringCounter getNumberOfStrings
Function object to count unique strings. 
 
JRange< Double_t > JRange_t
 
void copy(const Head &from, JHead &to)
Copy header from from to to. 
 
Auxiliary data structure for floating point format specification.