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.