-
Removed dynamic scheduling as it introduces a small amount of overhead (it was only done so that the observations would be analyzed in numerical order) Added caching of sky directions for each pixel to prevent the need to re-convert the positions from index for each observation. Fill cached sky positions with RA,Dec values to prevent need to convert between galactic->celestial every time the distance is compute a distance from an observation ROI.
-
Updated headers in log file to reflect what is actually going on. Changed omp scheduling to 'dynamic' so each observation is filled sequentially.
-
Finalized a workaround to the python wrapper issue that caused the 'ctbin::run()' method to crash.
-
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.
-
Added critical region when incrementing the bins of the counts cube. This didn't impact the computation time, but may improve the reliability of filling the cube if the same bin is being filled by two different observations.
-
Parallelized computation over different observations.
-
The ctobservation::first_unbinned_observation() and ctobservation::next_unbinned_observation() methods implement an unbinned CTA observation iterator. Using this iterator avoids code duplication and generates a uniform interface for tools to loop over CTA events lists.
-
Since the new GApplication logger methods are more compact than the old format the "logTerse()" etc. constructs have been replaced by the new logger methods. At the same time, the chattiness levels have been reviewed with the following behaviour: - TERSE: only headers - NORMAL: standard output, only main results or computations - EXPLICIT: detailed output - VERBOSE: verbose output, mainly for diagnostics
-
The building of a cuve on the fly raised issue with memory going out of scope. This is fixed by making the CTA event cube a member of ctbin, and having the cube() method returning a reference to that member
-
It turned out that the partial coverage of counts cube bins using the weighting array does not work. The problem is spill over of events from one RoI to another than can not be dealt with at the level of a stacked analysis. The old logic of using only fully contained pixel is put back into place. The weighting array is (for the moment) conserved as it could serve other purposes. However, excluding of pixels is already accomplished by setting a pixel value to -1, so it remains to be seen whether we would like to keep that logic or if we would like to use the weighting array (which is more universal).
-
The GCTAEventCube::map() method has been renamed to GCTAEventCube::counts() (#1789)
-
The publish parameter has been added to the following tools: - ctbin - ctbkgcube - ctcubemask - ctexpcube - ctmodel - ctskymap - cttsmap
-
Added ctool::require_inobs_nocube() method that throws an exception if a counts cube has been specified as inobs parameter. This method is then used by ctbin, ctexpcube, ctpsfcube and ctbkgcube.
-
Without the energy margin, roundoff errors may lead to the exclusion of the energy bin in case that a single energy bin is used.
-
…d in observation ebounds. Also added some improvements to csspec.