79int main(
int argc,
char **argv)
88 JLimit_t& numberOfEvents = inputFile.getLimit();
98 JParser<> zap(
"Example program to monitor acoustic events.");
100 zap[
'f'] =
make_field(inputFile,
"output of JAcousticEventBuilder[.sh]");
111 catch(
const exception &error) {
112 FATAL(error.what() << endl);
129 for (JDetector::const_iterator i =
detector.begin(); i !=
detector.end(); ++i) {
130 receivers[i->getID()] = JModule_t(i->getLocation(), i->getPosition());
133 for (tripods_container::const_iterator i = tripods.begin(); i != tripods.end(); ++i) {
134 emitters[i->getID()] = (i->getUTMPosition() -
detector.getUTMPosition());
137 for (transmitters_container::const_iterator i = transmitters.begin(); i != transmitters.end(); ++i) {
139 emitters[i->getID()] = (i->getPosition() +
detector.getModule(i->getLocation()).getPosition());
141 catch(
const exception&) {
158 string.size(), -0.5,
string.size() - 0.5,
161 string.size(), -0.5,
string.size() - 0.5,
164 for (Int_t i = 1; i <= H2->GetXaxis()->GetNbins(); ++i) {
165 H2->GetXaxis()->SetBinLabel(i,
MAKE_CSTRING(
string.at(i-1)));
168 for (Int_t i = 1; i <= H2->GetYaxis()->GetNbins(); ++i) {
172 for (Int_t i = 1; i <= H4->GetXaxis()->GetNbins(); ++i) {
173 H4->GetXaxis()->SetBinLabel(i,
MAKE_CSTRING(
string.at(i-1)));
176 for (Int_t i = 1; i <= H4->GetYaxis()->GetNbins(); ++i) {
197 for (JTreeScanner_t::iterator event = in.begin(); event != in.end() && counter != inputFile.getLimit(); ++event, ++counter) {
199 if (counter%1000 == 0) {
200 STATUS(
"event " << setw(8) << counter <<
'\r');
DEBUG(endl);
203 const JEvent evt = *event;
207 for (JEvent::const_iterator i = evt.begin(); i != evt.end(); ++i) {
211 HA[evt.
getID()]->Fill((
double) evt.size());
215 HC[evt.
getID()]->Fill(log10(evt.begin()->getToE() - toe[evt.
getID()]));
221 toe[evt.
getID()] = evt.begin()->getToE();
223 TH1D* hq = HQ[evt.
getID()];
224 TH2D* hr = HR[evt.
getID()];
225 TH1D* h1 = H1[evt.
getID()];
226 TH2D* h2 = H2[evt.
getID()];
227 TH2D* h3 = H3[evt.
getID()];
228 TProfile2D* h4 = H4[evt.
getID()];
230 for (JEvent::const_iterator i = evt.begin(); i != evt.end(); ++i) {
231 hq->Fill(log10(i->getQ()));
238 for (JEvent::const_iterator i = evt.begin(); i != evt.end(); ++i) {
239 if (receivers.
has(i->getID())) {
240 HR->Fill(log10(p0.
getDistance(receivers[i->getID()])), log10(i->getQ()));
241 hr->Fill(log10(p0.
getDistance(receivers[i->getID()])), log10(i->getQ()));
248 for (JEvent::const_iterator i = evt.begin(); i != evt.end(); ++i) {
249 buffer[i->getID()].insert(i->getQ());
252 for (
map<
int,
set<double> >::const_iterator i = buffer.begin(); i != buffer.end(); ++i) {
254 h1->Fill((
double) i->second.size());
256 if (receivers.
has(i->first)) {
258 const JLocation& location = receivers[i->first];
260 const double x =
string.getIndex(location.
getString());
261 const double y = location.
getFloor();
265 if (i->second.size() >= 2u) {
269 h4->Fill(x, y, log10(*(i->second.rbegin())));
279 out << HA << HB << HC << HD << HE << HQ << HR << *HR << H1 << H2 << H3 << H4;