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);
82 JManager<int, TH2D> H2(
new TH2D(
"[%].tiltdeviation", NULL, 300, -4.0, +4.0, 300, -4.0, +4.0),
'%', format);
86 for (
counter_type counter = 0; in.
hasNext() && counter != inputFile.getLimit(); ++counter) {
88 STATUS(
"event: " << setw(10) << counter <<
'\r');
DEBUG(endl);
104 for (JEvt::const_iterator i = evt->begin(); i != evt->end(); ++i) {
106 const int id = i->id;
107 const double tx = (i->tx + i->tx2 * Z) * 1.0e3;
108 const double ty = (i->ty + i->ty2 * Z) * 1.0e3;
109 const double vs = i->vs * 1.0e2;
110 const double ts = sqrt(tx*tx + ty*ty);
120 H1[id]->Fill(ts,
vs);
122 GO[id].put(t1, atan2(ty, tx));
132 for (JEvt::const_iterator i = evt->begin(); i != evt->end(); ++i) {
134 const double tx = (i->tx + i->tx2 * Z) * 1.0e3;
135 const double ty = (i->ty + i->ty2 * Z) * 1.0e3;
137 H2 ->Fill(tx - Tx, ty - Ty);
138 H2[i->id]->Fill(tx - Tx, ty - Ty);
140 GO[-1].put(t1, atan2(Ty, Tx));
147 TH1D hx(
"hx", NULL, H2.size(), -0.5, H2.size() + 0.5);
148 TH1D hy(
"hy", NULL, H2.size(), -0.5, H2.size() + 0.5);
154 const int ix =
distance(H2.cbegin(), i) + 1;
159 hx.SetBinContent(ix, i->second->GetMean(1));
160 hy.SetBinContent(ix, i->second->GetMean(2));
161 hx.SetBinError (ix, i->second->GetStdDev(1));
162 hy.SetBinError (ix, i->second->GetStdDev(2));
164 Qx.
put(i->second->GetMean(1));
165 Qy.
put(i->second->GetMean(2));
174 out << h1 << h2 << hx << hy
178 out << H1 << *H1 << H2 << *H2;