28   const char* 
const default_t    =  
"default";      
 
   30   const char* 
const modules_t    =  
"modules";      
 
   31   const char* 
const pmts_t       =  
"pmts";         
 
   32   const char* 
const geometry_t   =  
"geometry";     
 
   34   const char* 
const comment_t    =  
"comment";      
 
   35   const char* 
const header_t     =  
"header";       
 
   36   const char* 
const identifier_t =  
"identifier";   
 
   37   const char* 
const version_t    =  
"version";      
 
   38   const char* 
const can_t        =  
"can";          
 
   39   const char* 
const center_t     =  
"center";       
 
   40   const char* 
const summary_t    =  
"summary";      
 
   42   const char* 
const HEADER_t     =  
"HEADER";       
 
   43   const char* 
const IDENTIFIER_t =  
"IDENTIFIER";   
 
   44   const char* 
const VERSION_t    =  
"VERSION";      
 
   45   const char* 
const CAN_t        =  
"CAN";          
 
   46   const char* 
const CENTER_t     =  
"CENTER";       
 
   47   const char* 
const SUMMARY_t    =  
"SUMMARY";      
 
   57 int main(
int argc, 
char **argv)
 
   68     JParser<> zap(
"Auxiliary program to print detector file in human friendly format.");
 
   98   catch(
const exception &error) {
 
   99     FATAL(error.what() << endl);
 
  108   catch(
const JException& error) {
 
  112   if        (option == default_t) {
 
  116   } 
else if (option == modules_t) {
 
  120     for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  123       cout << 
' ' << noshowpos << setw(8) << right << module->getID();
 
  124       cout << 
' ' << noshowpos << setw(3) << right << module->getString();
 
  125       cout << 
' ' << noshowpos << setw(2) << right << module->getFloor();
 
  126       cout << 
' ' << 
FIXED(7,2) << module->getX();
 
  127       cout << 
' ' << 
FIXED(7,2) << module->getY();
 
  128       cout << 
' ' << 
FIXED(7,2) << module->getZ();
 
  129       cout << 
' ' << 
FIXED(8,2) << module->getT0();
 
  131       if (module->getFloor() != 0) {
 
  133           JModule buffer = 
getModule(demo.get(module->getID()), module->getID(), module->getLocation());
 
  140           cout << 
' ' << 
FIXED(7,2) << phi;
 
  143           const JQuaternion3D 
Q = module->getQuaternion();
 
  148           cout << 
' ' << 
FIXED(7,2) << phi;         
 
  155   } 
else if (option == pmts_t) {
 
  157     for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  158       for (JModule::const_iterator pmt = module->begin(); pmt != module->end(); ++pmt) {
 
  160         cout << 
' ' << noshowpos << setw(8) << right << pmt->getID();
 
  161         cout << 
' ' << 
FIXED(7,2) << pmt->getX();
 
  162         cout << 
' ' << 
FIXED(7,2) << pmt->getY();
 
  163         cout << 
' ' << 
FIXED(7,2) << pmt->getZ();
 
  164         cout << 
' ' << 
FIXED(6,3) << pmt->getDX();
 
  165         cout << 
' ' << 
FIXED(6,3) << pmt->getDY();
 
  166         cout << 
' ' << 
FIXED(6,3) << pmt->getDZ();
 
  167         cout << 
' ' << 
FIXED(8,2) << pmt->getT0();
 
  168         cout << 
' ' << noshowpos << setw(8) << right << pmt->getStatus();
 
  173   } 
else if (option == geometry_t) {
 
  178   } 
else if (option == comment_t) {
 
  182   } 
else if (option == header_t ||
 
  183              option == HEADER_t) {
 
  185     if (option == header_t) {
 
  187       cout << 
detector.getProperties() << endl;
 
  191       cout << 
"validity = "  
  192            << JDateAndTime(
detector.getLowerLimit(), 
true).toString() << 
' ' 
  193            << JDateAndTime(
detector.getUpperLimit(), 
true).toString() << endl;
 
  197       cout << 
"set_variable UTM_EAST         " << 
FIXED(12,2) << 
detector.getUTMEast()  << 
";" << endl;
 
  198       cout << 
"set_variable UTM_NORTH        " << 
FIXED(12,2) << 
detector.getUTMNorth() << 
";" << endl;
 
  199       cout << 
"set_variable UTM_Z            " << 
FIXED(12,2) << 
detector.getUTMZ()     << 
";" << endl;
 
  200       cout << 
"set_variable UTM_ZONE         " << 
FIXED(12,2) << 
detector.getUTMZone()  << 
";" << endl;
 
  201       cout << 
"set_variable UTM_WGS          " << 
FIXED(12,2) << 
detector.getWGS()      << 
";" << endl;
 
  204   } 
else if (option == version_t || 
 
  205              option == VERSION_t) {
 
  207     if (option == version_t) {
 
  209       cout << 
detector.getVersion() << endl;
 
  213       cout << 
"set_variable DETECTOR_VERSION " << 
detector.getVersion() << 
";" << endl;
 
  216   } 
else if (option == identifier_t ||
 
  217              option == IDENTIFIER_t) {
 
  219     if (option == identifier_t) {
 
  221       cout << 
"Detector " << 
detector.getID() << endl;
 
  225       cout << 
"set_variable DETECTOR_ID      " << 
detector.getID() << 
";" << endl;
 
  228   } 
else if (option == can_t ||
 
  233     const double      V = (cylinder.getZmax() - cylinder.getZmin()) * 
PI * cylinder.getRadius() * cylinder.getRadius(); 
 
  236     if (option == can_t) {
 
  238       cout << 
"X        = " << 
FIXED(7,1)       << cylinder.getX()      << endl;
 
  239       cout << 
"Y        = " << 
FIXED(7,1)       << cylinder.getY()      << endl;
 
  240       cout << 
"Zmin     = " << 
FIXED(7,1)       << cylinder.getZmin()   << endl;
 
  241       cout << 
"Zmax     = " << 
FIXED(7,1)       << cylinder.getZmax()   << endl;
 
  242       cout << 
"Radius   = " << 
FIXED(7,1)       << cylinder.getRadius() << endl;
 
  243       cout << 
"Depth    = " << 
FIXED(7,1)       << 
detector.getUTMZ()   << endl;
 
  244       cout << 
"Volume   = " << 
SCIENTIFIC(12,3) << V                    << endl;
 
  245       cout << 
"Distance = " << 
FIXED(9,3)       << D                    << endl;
 
  249       cout << 
"set_variable CAN_X_M        " << 
FIXED(7,1)       << cylinder.getX()           << 
";" << endl;
 
  250       cout << 
"set_variable CAN_Y_M        " << 
FIXED(7,1)       << cylinder.getY()           << 
";" << endl;
 
  251       cout << 
"set_variable CAN_ZMIN_M     " << 
FIXED(7,1)       << cylinder.getZmin()        << 
";" << endl;
 
  252       cout << 
"set_variable CAN_ZMAX_M     " << 
FIXED(7,1)       << cylinder.getZmax()        << 
";" << endl;
 
  253       cout << 
"set_variable CAN_RADIUS_M   " << 
FIXED(7,1)       << cylinder.getRadius()      << 
";" << endl;
 
  254       cout << 
"set_variable CAN_DEPTH_M    " << 
FIXED(7,1)       << 
detector.getUTMZ()        << 
";" << endl;
 
  255       cout << 
"set_variable CAN_VOLUME_M3  " << 
SCIENTIFIC(12,3) << V                         << 
";" << endl;
 
  256       cout << 
"set_variable CAN_DISTANCE_M " << 
FIXED(9,3)       << D                         << 
";" << endl;
 
  259   } 
else if (option == center_t || 
 
  260              option == CENTER_t) {
 
  264     if (option == center_t) {
 
  267       cout << showpos << 
FIXED(8,3) << center.getX() << 
' ';
 
  268       cout << showpos << 
FIXED(8,3) << center.getY() << 
' ';
 
  269       cout << showpos << 
FIXED(8,3) << center.getZ() << endl;
 
  273       cout << 
"set_variable CENTER_X_M " << 
FIXED(7,1) << center.getX() << 
";" << endl;
 
  274       cout << 
"set_variable CENTER_Y_M " << 
FIXED(7,1) << center.getY() << 
";" << endl;
 
  275       cout << 
"set_variable CENTER_Z_M " << 
FIXED(7,1) << center.getZ() << 
";" << endl;
 
  278   } 
else if (option == summary_t ||
 
  279              option == SUMMARY_t) {
 
  293     for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  294       strings.insert(module->getString());
 
  297     if (option == summary_t) {
 
  299       cout << 
"Number of strings = " << setw(4) << numberOfStrings << endl;
 
  300       cout << 
"Number of floors  = " << setw(4) << numberOfFloors  << endl;
 
  301       cout << 
"Number of modules = " << setw(4) << numberOfModules << endl;
 
  302       cout << 
"Number of PMTs    = " << setw(4) << numberOfPMTs    << endl;
 
  303       cout << 
"First string      = " << setw(4) << 
string.first    << endl;
 
  304       cout << 
"Last  string      = " << setw(4) << 
string.second   << endl;
 
  305       cout << 
"First floor       = " << setw(4) << floor .first    << endl;
 
  306       cout << 
"Last  floor       = " << setw(4) << floor .second   << endl;
 
  310       cout << 
"set_variable NUMBER_OF_STRINGS " << setw(4) << numberOfStrings << 
";" << endl;
 
  311       cout << 
"set_variable NUMBER_OF_FLOORS  " << setw(4) << numberOfFloors  << 
";" << endl;
 
  312       cout << 
"set_variable NUMBER_OF_MODULES " << setw(4) << numberOfModules << 
";" << endl;
 
  313       cout << 
"set_variable NUMBER_OF_PMTS    " << setw(4) << numberOfPMTs    << 
";" << endl;
 
  314       cout << 
"set_variable FIRST_STRING      " << setw(4) << 
string.first    << 
";" << endl;
 
  315       cout << 
"set_variable LAST_STRING       " << setw(4) << 
string.second   << 
";" << endl;
 
  316       cout << 
"set_variable FIRST_FLOOR       " << setw(4) << floor .first    << 
";" << endl;
 
  317       cout << 
"set_variable LAST_FLOOR        " << setw(4) << floor .second   << 
";" << endl;
 
  318       cout << 
"set_array    STRINGS           ";
 
  319       copy(strings.begin(), strings.end(), ostream_iterator<int>(cout, 
" "));
 
bool isORCADetector(const JDetectorHeader &header)
Check if given detector header is compatible with that of ORCA. 
 
Utility class to parse command line options. 
 
Q(UTCMax_s-UTCMin_s)-livetime_s
 
int main(int argc, char *argv[])
 
bool isARCADetector(const JDetectorHeader &header)
Check if given detector header is compatible with tat of ARCA. 
 
int getNumberOfPMTs(const JModule &module)
Get number of PMTs. 
 
static JRotation getRotation
Function object to get rotation matrix to go from first to second module. 
 
then usage $script< detector specific pre-calibration script >< option > nAuxiliary script to make scan of pre stretching of detector strings(see JEditDetector)." "\nPossible options
 
Auxiliary data structure for floating point format specification. 
 
static const JModuleCounter getNumberOfModules
Function object to count unique modules. 
 
V(JDAQEvent-JTriggerReprocessor)*1.0/(JDAQEvent+1.0e-10)
 
Data structure for detector geometry and calibration. 
 
JMODEL::JString getString(const JFit &fit)
Get model parameters of string. 
 
I/O formatting auxiliaries. 
 
JQuaternion3D twist
rotation around parallel axis 
 
#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. 
 
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map. 
 
General purpose messaging. 
 
static const JStringCounter getNumberOfStrings
Function object to count unique strings. 
 
double getAngle() const 
Get rotation angle. 
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
Auxiliary class to define a range between two values. 
 
Utility class to parse command line options. 
 
static const JVector3D JVector3Z_t(0, 0, 1)
unit z-vector 
 
void copy(const Head &from, JHead &to)
Copy header from from to to. 
 
double getMaximalDistance(const JDetector &detector, const bool option=false)
Get maximal distance between modules in detector. 
 
double getDot(const JVector3D &vector) const 
Get dot product. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
Auxiliary data structure for decomposition of quaternion in twist and swing quaternions. 
 
Auxiliary data structure for floating point format specification. 
 
do echo Generating $dir eval D
 
const JModule & getModule(const JDetector &detector, const JModuleLocation &location)
find module with a given string and floor number 
 
Data structure for optical module.