29 int main(
int argc,
char **argv)
34 const char*
const short_t =
"short";
35 const char*
const long_t =
"long";
36 const char*
const fft_t =
"fft";
47 JParser<> zap(
"Example program to print dynamic detector calibration.");
52 zap[
'F'] =
make_field(format) = short_t, long_t, fft_t;
58 catch(
const exception &error) {
59 FATAL(error.what() << endl);
78 dynamics.
load(calibrationFile);
86 ostream os(buffer.is_open() ? &buffer : cout.rdbuf());
90 comment.
add(
"documentation: https://common.pages.km3net.de/jpp/Position_calibration.PDF");
92 if (format == short_t)
93 comment.
add(
"format: string number; UTC [s]; Tx; Ty");
94 else if (format == long_t)
95 comment.
add(
"format: https://indico.cern.ch/event/1014814/contributions/4259426/attachments/2201529/3724129/KM3NeT_position_file_format.pdf");
96 else if (format == fft_t)
97 comment.
add(
"format: <T>");
101 comment.add(
JMeta(argc, argv));
108 if (format == short_t) {
115 os << setw(4) <<
string->first <<
';'
116 <<
FIXED(20,5) << i->getX() <<
';'
117 <<
FIXED( 9,6) << i->getY().tx <<
';'
118 <<
FIXED( 9,6) << i->getY().ty << endl;
123 if (format == long_t) {
130 const double t1 = i->getX();
134 os <<
FIXED(20,5) << t1 <<
' '
135 <<
FIXED(20,5) << t1 <<
' '
136 << setw(4) <<
detector.size() << endl;
138 for (JDetector::const_iterator module = dynamics.begin(); module != dynamics.end(); ++module) {
140 os << setw(4) << module->getString() <<
' '
141 << setw(2) << module->getFloor() <<
' '
142 << setw(10) << module->getID() << endl;
144 os <<
FIXED(9,2) << module->getX() <<
' '
145 <<
FIXED(9,2) << module->getY() <<
' '
146 <<
FIXED(9,2) << module->getZ() <<
' '
147 <<
FIXED(9,2) << -1.0 <<
' '
148 <<
FIXED(9,2) << -1.0 <<
' '
149 <<
FIXED(9,2) << -1.0 << endl;
154 if (format == fft_t) {
156 double xmin = numeric_limits<double>::max();
157 double xmax = numeric_limits<double>::lowest();
160 if (!string->second.empty()) {
161 xmin = min(xmin, string->second.getXmin());
162 xmax = max(xmax, string->second.getXmax());
166 for (
double x = xmin;
x <= xmax;
x +=
Tmax_s) {
171 if (!string->second.empty()) {
172 Q.
put(string->second(
x).getLength());
Utility class to parse command line options.
Q(UTCMax_s-UTCMin_s)-livetime_s
int main(int argc, char *argv[])
static JDetectorMechanics getMechanics
Function object to get string mechanics.
ROOT TTree parameter settings.
JPosition position
position calibration
Auxiliary data structure for floating point format specification.
const JDetector & update(const double t1_s)
Get detector calibrated at given time.
Data structure for detector geometry and calibration.
void load(JObjectIterator_t &input)
Load calibration data.
data_type::const_iterator const_iterator
const_iterator end() const
end of calibration data
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Dynamic detector calibration.
void load(const std::string &file_name)
Load mechanical model parameters from file.
General purpose messaging.
Scanning of objects from multiple files according a format that follows from the extension of each fi...
Dynamic detector calibration.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
General purpose class for object reading from a list of file names.
Utility class to parse command line options.
const_iterator begin() const
begin of calibration data
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
do set_variable DETECTOR_TXT $WORKDIR detector
then usage $script< detector file >< tripodfile >< stage > input file nInput files correspond to the output of JAcousticsEventBuilder[.sh] nFirst stage eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY eval JPrintDetector a $DETECTOR O CAN source JAcoustics sh $DETECTOR_ID typeset A CONFIGURATION for key in Tmax_s