38int main(
int argc,
char **argv)
46 JLimit_t& numberOfEvents = inputFile.getLimit();
53 JParser<> zap(
"Example program to plot acoustic fit results.");
55 zap[
'f'] =
make_field(inputFile,
"input file (output of JKatoomba[.sh]/JFremantle[.sh])");
58 zap[
'Z'] =
make_field(Z,
"detector height (for 2nd order tilt correction)") = 0.0;
63 catch(
const exception &error) {
64 FATAL(error.what() << endl);
69 const JFormat_t format(4, 0, std::ios_base::fmtflags(),
'0');
71 TH1D h1(
"chi2/NDF", NULL, 500, 0.0, 10.0);
72 TH1D h2(
"amplitude", NULL, 500, 0.0, 100.0);
83 JManager<int, TH2D> H2(
new TH2D(
"[%].tiltdeviation", NULL, 300, -4.0, +4.0, 300, -4.0, +4.0),
'%', format);
87 for (
counter_type counter = 0; in.
hasNext() && counter != inputFile.getLimit(); ++counter) {
89 STATUS(
"event: " << setw(10) << counter <<
'\r');
DEBUG(endl);
106 for (JEvt::const_iterator i = evt->begin(); i != evt->end(); ++i) {
108 const int id = i->id;
109 const double tx = (i->tx + i->tx2 * Z) * 1.0e3;
110 const double ty = (i->ty + i->ty2 * Z) * 1.0e3;
111 const double vs = i->vs * 1.0e2;
112 const double ts = sqrt(tx*tx + ty*ty);
122 H1[id]->Fill(ts, vs);
124 GO[id].put(t1, atan2(ty, tx));
134 for (JEvt::const_iterator i = evt->begin(); i != evt->end(); ++i) {
136 const double tx = (i->tx + i->tx2 * Z) * 1.0e3;
137 const double ty = (i->ty + i->ty2 * Z) * 1.0e3;
139 H2 ->Fill(tx - Tx, ty - Ty);
140 H2[i->id]->Fill(tx - Tx, ty - Ty);
142 GO[-1].put(t1, atan2(Ty, Tx));
149 TH1D hx(
"hx", NULL, H2.size(), -0.5, H2.size() + 0.5);
150 TH1D hy(
"hy", NULL, H2.size(), -0.5, H2.size() + 0.5);
156 const int ix =
distance(H2.cbegin(), i) + 1;
161 hx.SetBinContent(ix, i->second->GetMean(1));
162 hy.SetBinContent(ix, i->second->GetMean(2));
163 hx.SetBinError (ix, i->second->GetStdDev(1));
164 hy.SetBinError (ix, i->second->GetStdDev(2));
166 Qx.
put(i->second->GetMean(1));
167 Qy.
put(i->second->GetMean(2));
176 out << h1 << h2 << hx << hy
181 out << H1 << *H1 << H2 << *H2;