41int main(
int argc,
char **argv)
47 JLimit_t& numberOfEvents = inputFile.getLimit();
55 JParser<> zap(
"Example program to check contents of acoustic events.");
57 zap[
'f'] =
make_field(inputFile,
"output of JKatoomba[.sh]");
66 catch(
const exception &error) {
67 FATAL(error.what() << endl);
83 STATUS(
"loading input from file(s) " << inputFile <<
"... " << flush);
85 dynamics.
load(inputFile);
91 const double Z = cylinder.
getZmax() * 0.5;
96 Double_t xmin = numeric_limits<Double_t>::max();
97 Double_t xmax = numeric_limits<Double_t>::lowest();
101 if (!string->second.empty()) {
102 xmin = min(xmin, string->second.getXmin());
103 xmax = max(xmax, string->second.getXmax());
107 const JFormat_t format(4, 0, std::ios_base::fmtflags(),
'0');
109 JManager<int, TH2D> H2(
new TH2D (
"[%].tilt", NULL, 300, -3.0, +3.0, 300, -3.0, +3.0),
'%', format);
112 JManager<int, TH1D> HO(
new TH1D (
"H[%].orientation", NULL, 1000, xmin, xmax),
'%', format);
117 TH1D* ho = HO[
string->first];
118 TH1D* ha = HA[
string->first];
120 for (Int_t i = 1; i <= HO->GetXaxis()->GetNbins(); ++i) {
122 const Double_t x = HO->GetXaxis()->GetBinCenter(i);
128 ho->SetBinContent(i, tilt.
getAngle());
131 catch(
const exception& error) {
140 if (string->second.size() > 1) {
142 TH2D* h2 = H2[
string->first];
143 TH1D* ht = HT[
string->first];
147 const double t1 = q->getX() - p->getX();
152 const double tx = 600.0e3 * ((q->getY().tx + q->getY().tx2 * Z) - (p->getY().tx + p->getY().tx2 * Z)) / t1;
153 const double ty = 600.0e3 * ((q->getY().ty + q->getY().ty2 * Z) - (p->getY().ty + p->getY().ty2 * Z)) / t1;
155 if (t1 > 0 && t1 < Tmax_s) {
162 ZO[
string->first].put(i->getX(), i->getY().getAngle());
163 ZA[
string->first].put(i->getX(), i->getY().getLength());
171 out << *H2 << H2 << *HT << HT << HO << HA;