Commit 01e9bb4dc903914798f69a6937151ec7720db094
1 parent
f29c6e7a
ctmodel respects RoIs in unbinned mode
Showing
1 changed file
with
18 additions
and
17 deletions
src/ctmodel/ctmodel.cpp
| ... | ... | @@ -34,7 +34,6 @@ |
| 34 | 34 | |
| 35 | 35 | /* __ Method name definitions ____________________________________________ */ |
| 36 | 36 | #define G_GET_PARAMETERS "ctmodel::get_parameters()" |
| 37 | -#define G_FILL_CUBE "ctmodel::fill_cube(GCTAObservation*)" | |
| 38 | 37 | |
| 39 | 38 | /* __ Debug definitions __________________________________________________ */ |
| 40 | 39 | |
| ... | ... | @@ -586,22 +585,19 @@ void ctmodel::fill_cube(const GCTAObservation* obs) |
| 586 | 585 | // Continue only if observation pointer is valid |
| 587 | 586 | if (obs != NULL) { |
| 588 | 587 | |
| 589 | - // Get GTI references for observation | |
| 588 | + // Get energy boundaries and GTI references for observation | |
| 590 | 589 | const GGti& gti = obs->events()->gti(); |
| 591 | - | |
| 592 | - // Get the ebounds | |
| 593 | 590 | const GEbounds& obs_ebounds = obs->ebounds(); |
| 591 | + | |
| 592 | + // Get cube ebounds | |
| 594 | 593 | const GEbounds& cube_ebounds = m_cube.ebounds(); |
| 595 | 594 | |
| 596 | - // Extract region of interest from CTA observation | |
| 597 | - GCTARoi roi = obs->roi(); | |
| 595 | + // Initialise empty, invalid RoI | |
| 596 | + GCTARoi roi; | |
| 598 | 597 | |
| 599 | - // Check for RoI sanity | |
| 600 | - if (!roi.is_valid()) { | |
| 601 | - std::string msg = "No RoI information found in input observation " | |
| 602 | - "\""+obs->name()+"\". Run ctselect to specify " | |
| 603 | - "an RoI for this observation"; | |
| 604 | - throw GException::invalid_value(G_FILL_CUBE, msg); | |
| 598 | + // Retrieve RoI in case we have an unbinned observation | |
| 599 | + if (obs->eventtype() == "EventList") { | |
| 600 | + roi = obs->roi(); | |
| 605 | 601 | } |
| 606 | 602 | |
| 607 | 603 | // Initialise statistics |
| ... | ... | @@ -627,11 +623,16 @@ void ctmodel::fill_cube(const GCTAObservation* obs) |
| 627 | 623 | continue; |
| 628 | 624 | } |
| 629 | 625 | |
| 630 | - // Skip bin if outside RoI | |
| 631 | - if (!roi.contains(*bin)) { | |
| 632 | - num_outside_roi++; | |
| 633 | - continue; | |
| 634 | - } | |
| 626 | + // Check if RoI is valid , i.e. check if we have an unbinned observation | |
| 627 | + if (roi.is_valid()) { | |
| 628 | + | |
| 629 | + // Skip bin if it is outside the RoI of the observation | |
| 630 | + if (!roi.contains(*bin)) { | |
| 631 | + num_outside_roi++; | |
| 632 | + continue; | |
| 633 | + } // endif: bin was inside RoI | |
| 634 | + | |
| 635 | + } // endif: RoI was not valid | |
| 635 | 636 | |
| 636 | 637 | // Get actual bin value |
| 637 | 638 | double value = bin->counts(); | ... | ... |