Commit 866440e8d7b5435245827ac0353f5e31aa10d666
1 parent
1c81f76b
Apply event bin weighting in ctmodel for stacked computation (#2721)
Showing
4 changed files
with
20 additions
and
2 deletions
ChangeLog
| ... | ... | @@ -3,6 +3,7 @@ |
| 3 | 3 | * Version 1.6.0 released |
| 4 | 4 | ======================== |
| 5 | 5 | |
| 6 | + Apply event bin weighting in ctmodel for stacked computation (#2721) | |
| 6 | 7 | Add code generator (#2709) |
| 7 | 8 | Add csbkgmodel script (#2694) |
| 8 | 9 | Compute DETX and DETY in ctmodel if they are not available (#2694) | ... | ... |
NEWS
| ... | ... | @@ -118,6 +118,13 @@ None |
| 118 | 118 | |
| 119 | 119 | ctmodel - CTA counts cube modelling |
| 120 | 120 | ----------------------------------- |
| 121 | +When running ctmodel on a counts cube, and specifically a stacked count cube, | |
| 122 | +the event bin weighting is taken into account in the model evaluation. This | |
| 123 | +is needed to properly take into account the changing thresholds. No such | |
| 124 | +weighting is done if the model is computed from an event list, since in that | |
| 125 | +case the model is properly computed for each observation using the run-wise | |
| 126 | +response (#2721). | |
| 127 | + | |
| 121 | 128 | The tools now computes DETX and DETY for every event bin if they are not |
| 122 | 129 | available so that model that rely on the existence of these parameters can |
| 123 | 130 | be handled (#2694). | ... | ... |
doc/source/admin/release_history/1.6.rst
| ... | ... | @@ -21,6 +21,8 @@ In particular, this release provides: |
| 21 | 21 | Bug fixes |
| 22 | 22 | --------- |
| 23 | 23 | |
| 24 | +* [`2721 <https://cta-redmine.irap.omp.eu/issues/2721>`_] - | |
| 25 | + Apply event bin weighting in :ref:`ctmodel` for stacked computation | |
| 24 | 26 | * [`2694 <https://cta-redmine.irap.omp.eu/issues/2694>`_] - |
| 25 | 27 | Compute ``DETX`` and ``DETY`` in :ref:`ctmodel` if they are not available |
| 26 | 28 | * [`2686 <https://cta-redmine.irap.omp.eu/issues/2686>`_] - | ... | ... |
src/ctmodel/ctmodel.cpp
| ... | ... | @@ -893,6 +893,9 @@ void ctmodel::fill_cube(const GCTAObservation* obs, GModels& models) |
| 893 | 893 | bin.ontime(obs->ontime()); |
| 894 | 894 | bin.weight(1.0); |
| 895 | 895 | |
| 896 | + // Flag if the CTA observation is a counts cube | |
| 897 | + bool obs_is_cube = (obs->eventtype() == "CountsCube"); | |
| 898 | + | |
| 896 | 899 | // Loop over all the spatial bins |
| 897 | 900 | for (int i = 0; i < npix; ++i) { |
| 898 | 901 | |
| ... | ... | @@ -923,11 +926,16 @@ void ctmodel::fill_cube(const GCTAObservation* obs, GModels& models) |
| 923 | 926 | continue; |
| 924 | 927 | } |
| 925 | 928 | |
| 926 | - // Set energy, energy width, energy index and weight of bin | |
| 929 | + // Set energy, energy width and energy index | |
| 927 | 930 | bin.energy(m_energy[iebin]); |
| 928 | 931 | bin.ewidth(m_ewidth[iebin]); |
| 929 | 932 | bin.ieng(iebin); |
| 930 | - //bin.weight(m_cube[ibin]->weight()); // Bad residuals for H.E.S.S. Crab | |
| 933 | + | |
| 934 | + // If observation is a counts cube then set the proper weight for | |
| 935 | + // this bin | |
| 936 | + if (obs_is_cube) { | |
| 937 | + bin.weight(m_cube[ibin]->weight()); | |
| 938 | + } | |
| 931 | 939 | |
| 932 | 940 | // Compute model value for cube bin |
| 933 | 941 | double model = models.eval(bin, *obs) * bin.size(); | ... | ... |