Commit 397573014d6e547d8a7ab6f91cb189f25c612a75

Authored by Jürgen Knödlseder
1 parent 1432fd7e

Added observation container test to ctobssim unit test.

Showing 1 changed file with 115 additions and 0 deletions
test/test_ctobssim.py
... ... @@ -56,6 +56,7 @@ class Test(gammalib.GPythonTestSuite):
56 56  
57 57 # Append tests
58 58 self.append(self.test_functional, "Test ctobssim functionality")
  59 + self.append(self.test_container, "Test ctobssim on observation container")
59 60  
60 61 # Return
61 62 return
... ... @@ -106,3 +107,117 @@ class Test(gammalib.GPythonTestSuite):
106 107 self.test_try_success()
107 108 except:
108 109 self.test_try_failure("Exception occured in saving events.")
  110 +
  111 + # Test ctobssim on observation container
  112 + def test_container(self):
  113 + """
  114 + Test ctobssim on observation container.
  115 + """
  116 + # Set-up observation container
  117 + obs = self.set_obs(4)
  118 +
  119 + # Set-up ctobssim
  120 + sim = ctools.ctobssim(obs)
  121 + sim["outfile"].filename("sim_events.xml")
  122 +
  123 + # Run tool
  124 + self.test_try("Run ctobssim")
  125 + try:
  126 + sim.run()
  127 + self.test_try_success()
  128 + except:
  129 + self.test_try_failure("Exception occured in ctobssim.")
  130 +
  131 + # Retrieve observation and check content
  132 + self.test_value(sim.obs().size(), 4, "There are not 4 observations")
  133 +
  134 + # Save events
  135 + self.test_try("Save events")
  136 + try:
  137 + sim.save()
  138 + self.test_try_success()
  139 + except:
  140 + self.test_try_failure("Exception occured in saving events.")
  141 +
  142 + # Setup observation container
  143 + def set_obs(self, number):
  144 + """
  145 + Setup observation container.
  146 + """
  147 + # Initialise empty observation container
  148 + obs = gammalib.GObservations()
  149 +
  150 + # Initialise first time and identifier
  151 + tstart = 0.0
  152 + offset = -float(number)/2.0
  153 +
  154 + # Loop over number of observations
  155 + for i in range(number):
  156 + id = "%6.6d" % i
  157 + obs_cta = self.set_one_obs(id, offset)
  158 + offset += 1.0
  159 + tstart += 1830.0
  160 + obs.append(obs_cta)
  161 +
  162 + # Return observation container
  163 + return obs
  164 +
  165 + # Setup one observation
  166 + def set_one_obs(self, id, offset, \
  167 + tstart=0.0, duration=1800.0, deadc=0.95, \
  168 + emin=0.1, emax=100.0, rad=5.0, \
  169 + irf="cta_dummy_irf", caldb="dummy"):
  170 + """
  171 + Setup one observation for test purposes.
  172 + """
  173 + # Allocate CTA observation
  174 + obs_cta = gammalib.GCTAObservation()
  175 +
  176 + # Set calibration database
  177 + db = gammalib.GCaldb()
  178 + if (gammalib.dir_exists(self.caldb)):
  179 + db.rootdir(self.caldb)
  180 + else:
  181 + db.open("cta", self.caldb)
  182 +
  183 + # Set pointing direction
  184 + pntdir = gammalib.GSkyDir()
  185 + pntdir.radec_deg(83.63, 22.01+offset)
  186 + pnt = gammalib.GCTAPointing()
  187 + pnt.dir(pntdir)
  188 + obs_cta.pointing(pnt)
  189 +
  190 + # Set ROI
  191 + roi = gammalib.GCTARoi()
  192 + instdir = gammalib.GCTAInstDir()
  193 + instdir.dir(pntdir)
  194 + roi.centre(instdir)
  195 + roi.radius(rad)
  196 +
  197 + # Set GTI
  198 + gti = gammalib.GGti()
  199 + gti.append(gammalib.GTime(tstart), gammalib.GTime(tstart+duration))
  200 +
  201 + # Set energy boundaries
  202 + ebounds = gammalib.GEbounds(gammalib.GEnergy(emin, "TeV"), \
  203 + gammalib.GEnergy(emax, "TeV"))
  204 +
  205 + # Allocate event list
  206 + events = gammalib.GCTAEventList()
  207 + events.roi(roi)
  208 + events.gti(gti)
  209 + events.ebounds(ebounds)
  210 + obs_cta.events(events)
  211 +
  212 + # Set instrument response
  213 + obs_cta.response(self.irf, db)
  214 +
  215 + # Set ontime, livetime, and deadtime correction factor
  216 + obs_cta.ontime(duration)
  217 + obs_cta.livetime(duration*deadc)
  218 + obs_cta.deadc(deadc)
  219 + obs_cta.id(id)
  220 +
  221 + # Return CTA observation
  222 + return obs_cta
  223 +
109 224 \ No newline at end of file
... ...