Commit 523cbd4b23340d659cb19768780e56941f32ffe4

Authored by Jürgen Knödlseder
1 parent b1afe41a

Catch events in ctbin that have an invalid WCS transformation

Showing 1 changed file with 15 additions and 4 deletions
src/ctbin/ctbin.cpp
... ... @@ -491,6 +491,7 @@ void ctbin::fill_cube(GCTAObservation* obs)
491 491  
492 492 // Initialise binning statistics
493 493 int num_outside_roi = 0;
  494 + int num_invalid_wcs = 0;
494 495 int num_outside_map = 0;
495 496 int num_outside_ebds = 0;
496 497 int num_in_map = 0;
... ... @@ -501,17 +502,26 @@ void ctbin::fill_cube(GCTAObservation* obs)
501 502 // Get event
502 503 const GCTAEventAtom* event = (*events)[i];
503 504  
504   - // Determine sky pixel
  505 + // Determine event sky direction
505 506 GCTAInstDir* inst = (GCTAInstDir*)&(event->dir());
506 507 GSkyDir dir = inst->dir();
507   - GSkyPixel pixel = m_counts.dir2pix(dir);
508 508  
509   - // Skip event if corresponding counts cube pixel is outside RoI
  509 + // Skip event if it is outside the RoI
510 510 if (roi.centre().dir().dist_deg(dir) > roi.radius()) {
511 511 num_outside_roi++;
512 512 continue;
513 513 }
514 514  
  515 + // Determine sky pixel
  516 + GSkyPixel pixel;
  517 + try {
  518 + pixel = m_counts.dir2pix(dir);
  519 + }
  520 + catch (const GException::wcs_invalid_phi_theta&) {
  521 + num_invalid_wcs++;
  522 + continue;
  523 + }
  524 +
515 525 // Skip event if corresponding counts cube pixel is outside the
516 526 // counts cube map range
517 527 if (pixel.x() < -0.5 || pixel.x() > (m_counts.nx()-0.5) ||
... ... @@ -547,7 +557,8 @@ void ctbin::fill_cube(GCTAObservation* obs)
547 557 // Log filling results
548 558 log_value(NORMAL, "Events in list", obs->events()->size());
549 559 log_value(NORMAL, "Events in cube", num_in_map);
550   - log_value(NORMAL, "Event bins outside RoI", num_outside_roi);
  560 + log_value(NORMAL, "Events outside RoI", num_outside_roi);
  561 + log_value(NORMAL, "Events/data with invalid WCS", num_invalid_wcs);
551 562 log_value(NORMAL, "Events outside cube area", num_outside_map);
552 563 log_value(NORMAL, "Events outside energy bins", num_outside_ebds);
553 564  
... ...