Commit 0b1c5b6e7dcaf2afd273e5f3f7f20bb827ca843e

Authored by Josh Cardenzana
1 parent be754c83

Add checks on suitability of observations (#1970)

Added check on whether observation is null or a CountsCube, which was done automatically before when calling 'next_unbinned_observation', but needs to be done explicitly now.
Showing 1 changed file with 37 additions and 16 deletions
src/ctbin/ctbin.cpp
... ... @@ -240,6 +240,22 @@ void ctbin::run(void)
240 240 for (int o=0; o<m_obs.size(); o++) {
241 241 GCTAObservation* obs = dynamic_cast<GCTAObservation*>(m_obs[o]);
242 242  
  243 + // Skip if the observation is NULL. This can happen if the observation
  244 + // isn't a CTA observation
  245 + if (obs == NULL) {
  246 + std::string msg = " Skipping "+obs->instrument()+" observation";
  247 + log_string(NORMAL, msg);
  248 + continue;
  249 + }
  250 +
  251 + // Skip observation if we have a binned observation
  252 + if (obs->eventtype() == "CountsCube") {
  253 + obs = NULL;
  254 + std::string msg = " Skipping binned "+obs->instrument()+" observation";
  255 + log_string(NORMAL, msg);
  256 + continue;
  257 + }
  258 +
243 259 // Fill the cube
244 260 fill_cube(obs);
245 261  
... ... @@ -266,6 +282,8 @@ void ctbin::run(void)
266 282 publish();
267 283 }
268 284  
  285 +log_string(NORMAL, "RUNNING HAS FINISHED");
  286 +
269 287 // Return
270 288 return;
271 289 }
... ... @@ -550,22 +568,25 @@ void ctbin::fill_cube(GCTAObservation* obs)
550 568  
551 569 } // endfor: looped over all events
552 570  
553   - // Append GTIs
554   - m_gti.extend(events->gti());
555   -
556   - // Update ontime and livetime
557   - m_ontime += obs->ontime();
558   - m_livetime += obs->livetime();
559   -
560   - // Log filling results
561   - log_header3(TERSE, get_obs_header(obs));
562   - log_value(NORMAL, "Events in list", obs->events()->size());
563   - log_value(NORMAL, "Events in cube", num_in_map);
564   - log_value(NORMAL, "Events outside RoI", num_outside_roi);
565   - log_value(NORMAL, "Events with invalid WCS", num_invalid_wcs);
566   - log_value(NORMAL, "Events outside cube area", num_outside_map);
567   - log_value(NORMAL, "Events outside energy bins", num_outside_ebds);
568   -
  571 + #pragma omp critical
  572 + {
  573 + // Append GTIs
  574 + m_gti.extend(events->gti());
  575 +
  576 + // Update ontime and livetime
  577 + m_ontime += obs->ontime();
  578 + m_livetime += obs->livetime();
  579 +
  580 + // Log filling results
  581 + log_header3(TERSE, get_obs_header(obs));
  582 + log_value(NORMAL, "Events in list", obs->events()->size());
  583 + log_value(NORMAL, "Events in cube", num_in_map);
  584 + log_value(NORMAL, "Events outside RoI", num_outside_roi);
  585 + log_value(NORMAL, "Events with invalid WCS", num_invalid_wcs);
  586 + log_value(NORMAL, "Events outside cube area", num_outside_map);
  587 + log_value(NORMAL, "Events outside energy bins", num_outside_ebds);
  588 + }
  589 +
569 590 // Return
570 591 return;
571 592 }
... ...