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;
168 cout <<
"set_variable UTM_EAST " <<
FIXED(12,2) <<
detector.getUTMEast() <<
";" << endl;
169 cout <<
"set_variable UTM_NORTH " <<
FIXED(12,2) <<
detector.getUTMNorth() <<
";" << endl;
170 cout <<
"set_variable UTM_Z " <<
FIXED(12,2) <<
detector.getUTMZ() <<
";" << endl;
171 cout <<
"set_variable UTM_ZONE " <<
FIXED(12,2) <<
detector.getUTMZone() <<
";" << endl;
172 cout <<
"set_variable UTM_WGS " <<
FIXED(12,2) <<
detector.getWGS() <<
";" << endl;
175 }
else if (option == version_t ||
176 option == VERSION_t) {
178 if (option == version_t) {
180 cout <<
detector.getVersion() << endl;
184 cout <<
"set_variable DETECTOR_VERSION " <<
detector.getVersion() <<
";" << endl;
187 }
else if (option == identifier_t ||
188 option == IDENTIFIER_t) {
190 if (option == identifier_t) {
192 cout <<
"Detector " <<
detector.getID() << endl;
196 cout <<
"set_variable DETECTOR_ID " <<
detector.getID() <<
";" << endl;
199 }
else if (option == can_t ||
204 const double V = (cylinder.getZmax() - cylinder.getZmin()) *
PI * cylinder.getRadius() * cylinder.getRadius();
207 if (option == can_t) {
209 cout <<
"X = " <<
FIXED(7,1) << cylinder.getX() << endl;
210 cout <<
"Y = " <<
FIXED(7,1) << cylinder.getY() << endl;
211 cout <<
"Zmin = " <<
FIXED(7,1) << cylinder.getZmin() << endl;
212 cout <<
"Zmax = " <<
FIXED(7,1) << cylinder.getZmax() << endl;
213 cout <<
"Radius = " <<
FIXED(7,1) << cylinder.getRadius() << endl;
214 cout <<
"Depth = " <<
FIXED(7,1) <<
detector.getUTMZ() << endl;
215 cout <<
"Volume = " <<
SCIENTIFIC(12,3) << V << endl;
216 cout <<
"Distance = " <<
FIXED(9,3) << D << endl;
220 cout <<
"set_variable CAN_X_M " <<
FIXED(7,1) << cylinder.getX() <<
";" << endl;
221 cout <<
"set_variable CAN_Y_M " <<
FIXED(7,1) << cylinder.getY() <<
";" << endl;
222 cout <<
"set_variable CAN_ZMIN_M " <<
FIXED(7,1) << cylinder.getZmin() <<
";" << endl;
223 cout <<
"set_variable CAN_ZMAX_M " <<
FIXED(7,1) << cylinder.getZmax() <<
";" << endl;
224 cout <<
"set_variable CAN_RADIUS_M " <<
FIXED(7,1) << cylinder.getRadius() <<
";" << endl;
225 cout <<
"set_variable CAN_DEPTH_M " <<
FIXED(7,1) <<
detector.getUTMZ() <<
";" << endl;
226 cout <<
"set_variable CAN_VOLUME_M3 " <<
SCIENTIFIC(12,3) << V <<
";" << endl;
227 cout <<
"set_variable CAN_DISTANCE_M " <<
FIXED(9,3) << D <<
";" << endl;
230 }
else if (option == center_t ||
231 option == CENTER_t) {
235 if (option == center_t) {
238 cout << showpos <<
FIXED(8,3) << center.getX() <<
' ';
239 cout << showpos <<
FIXED(8,3) << center.getY() <<
' ';
240 cout << showpos <<
FIXED(8,3) << center.getZ() << endl;
244 cout <<
"set_variable CENTER_X_M " <<
FIXED(7,1) << center.getX() <<
";" << endl;
245 cout <<
"set_variable CENTER_Y_M " <<
FIXED(7,1) << center.getY() <<
";" << endl;
246 cout <<
"set_variable CENTER_Z_M " <<
FIXED(7,1) << center.getZ() <<
";" << endl;
249 }
else if (option == summary_t ||
250 option == SUMMARY_t) {
264 for (JDetector::const_iterator module =
detector.begin(); module !=
detector.end(); ++module) {
265 strings.insert(module->getString());
268 if (option == summary_t) {
270 cout <<
"Number of strings = " << setw(4) << numberOfStrings << endl;
271 cout <<
"Number of floors = " << setw(4) << numberOfFloors << endl;
272 cout <<
"Number of modules = " << setw(4) << numberOfModules << endl;
273 cout <<
"Number of PMTs = " << setw(4) << numberOfPMTs << endl;
274 cout <<
"First string = " << setw(4) <<
string.first << endl;
275 cout <<
"Last string = " << setw(4) <<
string.second << endl;
276 cout <<
"First floor = " << setw(4) << floor .first << endl;
277 cout <<
"Last floor = " << setw(4) << floor .second << endl;
281 cout <<
"set_variable NUMBER_OF_STRINGS " << setw(4) << numberOfStrings <<
";" << endl;
282 cout <<
"set_variable NUMBER_OF_FLOORS " << setw(4) << numberOfFloors <<
";" << endl;
283 cout <<
"set_variable NUMBER_OF_MODULES " << setw(4) << numberOfModules <<
";" << endl;
284 cout <<
"set_variable NUMBER_OF_PMTS " << setw(4) << numberOfPMTs <<
";" << endl;
285 cout <<
"set_variable FIRST_STRING " << setw(4) <<
string.first <<
";" << endl;
286 cout <<
"set_variable LAST_STRING " << setw(4) <<
string.second <<
";" << endl;
287 cout <<
"set_variable FIRST_FLOOR " << setw(4) << floor .first <<
";" << endl;
288 cout <<
"set_variable LAST_FLOOR " << setw(4) << floor .second <<
";" << endl;
289 cout <<
"set_array STRINGS ";
290 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.
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.
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)
Type definition of range.
#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.
double getMaximalDistance(const JDetector &detector, const bool option=false)
Get maximal distance between modules in detector.
do set_variable DETECTOR_TXT $WORKDIR detector
Auxiliary data structure for floating point format specification.
do echo Generating $dir eval D