41 int main(
int argc,
char **argv)
56 JParser<> zap(
"Example program to check contents of acoustic events.");
58 zap[
'f'] =
make_field(inputFile,
"output of JKatoomba[.sh]");
59 zap[
'n'] =
make_field(numberOfEvents) = JLimit_t::max();
68 catch(
const exception &error) {
69 FATAL(error.what() << endl);
85 STATUS(
"loading input from file(s) " << inputFile <<
"... " << flush);
87 dynamics.
load(inputFile);
95 Double_t xmin = numeric_limits<Double_t>::max();
96 Double_t xmax = numeric_limits<Double_t>::lowest();
100 if (!string->second.empty()) {
101 xmin = min(xmin, string->second.getXmin());
102 xmax = max(xmax, string->second.getXmax());
106 const JFormat_t format(4, 0, std::ios_base::fmtflags(),
'0');
108 JManager<int, TH2D> H2(
new TH2D (
"[%].tilt", NULL, 100, -1.0, +1.0, 100, -1.0, +1.0),
'%', format);
111 JManager<int, TH1D> HO(
new TH1D (
"H[%].orientation", NULL, 1000, xmin, xmax),
'%', format);
116 TH1D* ho = HO[
string->first];
117 TH1D* ha = HA[
string->first];
119 for (Int_t i = 1; i <= HO->GetXaxis()->GetNbins(); ++i) {
121 const Double_t x = HO->GetXaxis()->GetBinCenter(i);
125 ho->SetBinContent(i, tilt.
getAngle());
133 if (string->second.size() > 1) {
135 TH2D* h2 = H2[
string->first];
136 TH1D* hc = HT[
string->first];
140 const double t1 = q->getX() - p->getX();
144 if (t1 > 0 && t1 < Tmax_s) {
145 h2->Fill(600.0e3 * (q->getY().tx - p->getY().tx) / t1,
146 600.0e3 * (q->getY().ty - p->getY().ty) / t1);
151 ZO[
string->first].put(i->getX(), i->getY().getAngle());
152 ZA[
string->first].put(i->getX(), i->getY().getLength());
158 if (text_file !=
"") {
160 ofstream out(text_file.c_str());
164 comment.
add(
"documentation: https://common.pages.km3net.de/jpp/Position_calibration.PDF");
165 comment.
add(
"format: string number; UTC [s]; Tx; Ty");
173 comment.add(*abc.
next());
180 out << setw(4) <<
string->first <<
';'
181 <<
FIXED(20,5) << i->getX() <<
';'
182 <<
FIXED( 9,6) << i->getY().tx <<
';'
183 <<
FIXED( 9,6) << i->getY().ty << endl;
193 out << H2 << HT << HO << HA;
Utility class to parse command line options.
ROOT TTree parameter settings of various packages.
double getAngle() const
Get angle.
ROOT TTree parameter settings.
#define MAKE_CSTRING(A)
Make C-string.
Dynamic ROOT object management.
Auxiliary data structure for floating point format specification.
Auxiliary class for multiplexing object iterators.
Auxiliary data structure to build TGraph.
Data structure for detector geometry and calibration.
void load(JObjectIterator_t &input)
Load calibration data.
data_type::const_iterator const_iterator
Auxiliary class for defining the range of iterations of objects.
const_iterator end() const
end of calibration data
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
I/O formatting auxiliaries.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Dynamic detector calibration.
virtual const pointer_type & next() override
Get next element.
virtual bool hasNext() override
Check availability of next element.
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
const JLimit & getLimit() const
Get limit.
do set_variable DETECTOR_TXT $WORKDIR detector
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
double getLength() const
Get length.
int main(int argc, char *argv[])