def _get_parameters(self): """ Get parameters from parfile """ # Initialise observation container if it is currently empty if self.obs().size() == 0: # If an observation definition file was provided then load it, # otherwise build a single observation with response information if self['inobs'].is_valid(): self.obs(gammalib.GObservations(self['inobs'].filename())) else: cta = gammalib.GCTAObservation() caldb = gammalib.GCaldb('cta', self['caldb'].string()) rsp = gammalib.GCTAResponseIrf(self['irf'].string(), caldb) cta.response(rsp) self.obs().append(cta) # Query input parameters self['emin'].real() self['emax'].real() self['aeffthres'].real() self['bkgthres'].real() # Query ahead output model filename if self._read_ahead(): self['outfile'].filename() # Write input parameters into logger self._log_parameters(gammalib.TERSE) # Return return
def _set_response(self, obs, caldb, irf): """ Set response for an observation. The method creates an XML element so that that the response XML writer will write the database and response name into the observation definition file. """ # Create XML element xml = gammalib.GXmlElement() # Append parameter parameter = 'parameter name="Calibration" database="'+caldb+\ '" response="'+irf+'"' xml.append(gammalib.GXmlElement(parameter)) # Create CTA response response = gammalib.GCTAResponseIrf() response.read(xml) # Attach response to observation obs.response(response) # Return observation return obs
def show_irf(): """ Show Instrument Response Function """ # Set usage string usage = 'show_irf.py [-p plotfile] caldb irf' # Set default options options = [{'option': '-p', 'value': ''}, {'option': '-emin', 'value': None}, {'option': '-emax', 'value': None}, {'option': '-tmin', 'value': None}, {'option': '-tmax', 'value': None}] # Get arguments and options from command line arguments args, options = cscripts.ioutils.get_args_options(options, usage) # Extract script parameters from options plotfile = options[0]['value'] emin = options[1]['value'] emax = options[2]['value'] tmin = options[3]['value'] tmax = options[4]['value'] # Convert limits to float if emin != None: emin = float(emin) if emax != None: emax = float(emax) if tmin != None: tmin = float(tmin) if tmax != None: tmax = float(tmax) # Get IRF caldb = gammalib.GCaldb('cta', args[0]) irf = gammalib.GCTAResponseIrf(args[1], caldb) # Plot IRF plot_irf(irf, emin, emax, tmin, tmax, plotfile) # Return return
def show_one_response(rspname, dbname, name, rootdir=None, color='r'): """ Show one response. Parameters ---------- rspname : str Response name dbname : str Database name name : str Name of the response function rootdir : str, optional Response root directory color : str, optional Color for plot """ # Set-up calibration database caldb = gammalib.GCaldb() if rootdir != None: caldb.rootdir(rootdir) if gammalib.dir_exists(dbname): caldb.rootdir(dbname) else: caldb.open('cta', dbname) # Load response function rsp = gammalib.GCTAResponseIrf(rspname, caldb) # Show effective area show_one_effective_area(rsp, name, color=color) # Show background rate show_one_background_rate(rsp, name, color=color) # Show sensitivity show_one_sensitivity(rsp, name, color=color) # Return return
def _set_irf(self, obs, caldb, irf): """ Set response for an observation The method creates an XML element so that that the response XML writer will write the database and response name into the observation definition file. Parameters ---------- obs : `~gammalib.GCTAObservation` CTA observation caldb : str Calibration database irf : str Instrument response function Returns obs : `~gammalib.GCTAObservation` CTA observation with response attached ------- """ # Create XML element xml = gammalib.GXmlElement() # Append parameter parameter = 'parameter name="Calibration" database="'+caldb+\ '" response="'+irf+'"' xml.append(gammalib.GXmlElement(parameter)) # Create CTA response response = gammalib.GCTAResponseIrf() response.read(xml) # Attach response to observation obs.response(response) # Return observation return obs