def GaussianSource(emin, emax, ra, dec, major_axis, minor_axis, position_angle, **spectrumargs): """Observation Simulation GaussianSource flux definition""" xmldoc_out = minidom.getDOMImplementation().createDocument( None, None, None) try: flux = spectrumargs['flux'] except KeyError: try: flux = Tools.getFlux("PowerLaw", emin, emax, **spectrumargs) except GetFluxError as e: raise SpectrumError(e) try: pli = spectrumargs['pl_index'] except KeyError: raise SpectrumError( "GaussianSourceError: GaussianSource source must include power law index (pl_index)" ) spectrumClass = xmldoc_out.createElement('SpectrumClass') spectrumClass.setAttribute('name', "GaussianSource") spectrumClass.setAttribute( 'params', "{0},{1},{2},{3},{4},{5},{6},{7},{8}".format(flux, pli, ra, dec, major_axis, minor_axis, position_angle, emin, emax)) use_spectrum = xmldoc_out.createElement("use_spectrum") use_spectrum.setAttribute('frame', "galaxy") return spectrumClass, use_spectrum
def MapSource(emin, emax, fitsfile, **spectrumargs): """Observation Simulation Map Source flux definition""" xmldoc_out = minidom.getDOMImplementation().createDocument( None, None, None) try: flux = spectrumargs['flux'] except KeyError: try: flux = Tools.getFlux('PowerLaw', emin, emax, **spectrumargs) except GetFluxError as e: raise SpectrumError(e) try: pli = spectrumargs['pl_index'] except KeyError: raise SpectrumError( "MapSourceError: Cannot create MapSource without power law index (pl_index)." ) spectrumClass = xmldoc_out.createElement('SpectrumClass') spectrumClass.setAttribute('name', 'MapSource') spectrumClass.setAttribute( 'params', "{0},{1},{2},{3},{4}".format(flux, pli, fitsfile, emin, emax)) use_spectrum = xmldoc_out.createElement('use_spectrum') use_spectrum.setAttribute('frame', "galaxy") return spectrumClass, use_spectrum
def FileSpectrum(name, spectype, emin, emax, directory, frame='galactic', ra=None, dec=None, glon=None, glat=None, specfile=None, **spectrumargs): """Observation Simulation FileSpectrum flux definition""" xmldoc_out = minidom.getDOMImplementation().createDocument( None, None, None) try: flux = spectrumargs['flux'] except KeyError: try: flux = Tools.getFlux(spectype, emin, emax, **spectrumargs) except GetFluxError as e: raise SpectrumError(e) if specfile is None: try: filename = Tools.writeSpectrum(name, spectype, emin, emax, directory, **spectrumargs) except WriteSpectrumError as e: raise SpectrumError(e) else: filename = specfile spectrumClass = xmldoc_out.createElement("SpectrumClass") spectrumClass.setAttribute("name", "FileSpectrum") spectrumClass.setAttribute("params", "flux={0},specFile={1}".format(flux, filename)) if frame == 'galactic': direction = xmldoc_out.createElement("galactic_dir") direction.setAttribute("l", "{}".format(glon)) direction.setAttribute("b", "{}".format(glat)) elif frame in ['icrs', 'fk5']: direction = xmldoc_out.createElement("celestial_dir") direction.setAttribute("ra", "{}".format(ra)) direction.setAttribute("dec", "{}".format(dec)) else: raise SpectrumError( "FileSpectrumError: Cannot create a direction with the frame {}". format(frame)) return spectrumClass, direction
def FileSpectrumMap(name, spectype, emin, emax, fitsfile, directory, specfile=None, **spectrumargs): """Observation Simulation FileSpectrumMap flux definition This flux definition takes all FileSpectrum parameters as well as the MapSource parameters """ xmldoc_out = minidom.getDOMImplementation().createDocument( None, None, None) if specfile is None: try: filename = Tools.writeSpectrum(name, spectype, emin, emax, directory, **spectrumargs) except WriteSpectrumError as e: raise SpectrumError(e) else: filename = specfile try: flux = spectrumargs['flux'] except KeyError: try: flux = Tools.getFlux(spectype, emin, emax, **spectrumargs) except GetFluxError as e: raise SpectrumError(e) spectrumClass = xmldoc_out.createElement('SpectrumClass') spectrumClass.setAttribute('name', 'FileSpectrumMap') spectrumClass.setAttribute( 'params', "flux={0},fitsFile={1},specFile={2},emin={3},emax={4}".format( flux, fitsfile, filename, emin, emax)) use_spectrum = xmldoc_out.createElement('use_spectrum') use_spectrum.setAttribute('frame', "galaxy") return spectrumClass, use_spectrum
def MapCube(spectype, emin, emax, efile, directory, **spectrumargs): """Observation Simulation MapCube flux definition""" xmldoc_out = minidom.getDOMImplementation().createDocument( None, None, None) try: flux = spectrumargs['flux'] except KeyError: try: flux = Tools.getFlux(spectype, emin, emax, **spectrumargs) except GetFluxError as e: raise SpectrumError(e) spectrumClass = xmldoc_out.createElement('SpectrumClass') spectrumClass.setAttribute('name', "MapCube") spectrumClass.setAttribute('params', "{0},{1}".format(flux, efile)) use_spectrum = xmldoc_out.createElement('use_spectrum') use_spectrum.setAttribute('frame', "galaxy") return spectrumClass, use_spectrum
def Isotropic(emin, emax, **spectrumargs): """Observation Simulation Isotropic flux definition""" xmldoc_out = minidom.getDOMImplementation().createDocument( None, None, None) try: flux = spectrumargs['flux'] except KeyError: try: flux = Tools.getFlux("PowerLaw", emin, emax, **spectrumargs) except GetFluxError as e: raise SpectrumError(e) spectrumClass = xmldoc_out.createElement("SpectrumClass") spectrumClass.setAttribute("name", "Isotropic") spectrumClass.setAttribute("params", "{0},{1},{2},{3}".format(flux, pli, emin, emax)) use_spectrum = xmldoc_out.createElement("use_spectrum") use_spectrum.setAttribute("frame", "galaxy") return spectrumClass, use_spectrum
def GammaPointSource(spectype, emin, emax, frame='galactic', ra=None, dec=None, glon=None, glat=None, **spectrumargs): """Gamma-ray point source flux definition""" xmldoc_out = minidom.getDOMImplementation().createDocument( None, None, None) particle = xmldoc_out.createElement("particle") particle.setAttribute("name", "gamma") if spectype == "Monochromatic": try: e = spectrumargs['energy'] except KeyError: raise SpectrumError( "GammaPointSourceError: Energy must be supplied in order to add a monochromatic source." ) energy = xmldoc_out.createElement("energy") energy.setAttribute("e", "{}".format(e)) particle.appendChild(energy) elif spectype == "PowerLaw": power_law = xmldoc_out.createElement("power_law") try: pli = spectrumargs['pl_index'] except KeyError: raise SpectrumError( "GammaPointSourceError: PowerLaw source must include power law index (pl_index)" ) power_law.setAttribute("emin", "{}".format(emin)) power_law.setAttribute("emax", "{}".format(emax)) power_law.setAttribute("gamma", "{}".format(pli)) particle.appendChild(power_law) elif spectype == "BrokenPowerLaw": power_law = xmldoc_out.createElement("power_law") try: pli = spectrumargs['pl_index'] gamma2 = spectrumargs['gamma2'] ebreak = spectrumargs['ebreak'] except KeyError: raise SpectrumError( "GammaPointSourceError: BrokenPowerLaw source must include low energy power law index (pl_index), high energy power law index (gamma2), and break energy (ebreak)." ) power_law.setAttribute("emin", "{}".format(emin)) power_law.setAttribute("emax", "{}".format(emax)) power_law.setAttribute("gamma", "{}".format(pli)) power_law.setAttribute("ebreak", "{}".format(ebreak)) power_law.setAttribute("gamma2", "{}".format(gamma2)) particle.appendChild(power_law) else: raise SpectrumError( "GammaPointSourceError: Cannot create source with spectrum type {0}" .format(spectype)) if frame == 'galactic': direction = xmldoc_out.createElement("galactic_dir") direction.setAttribute("l", "{}".format(glon)) direction.setAttribute("b", "{}".format(glat)) elif frame in ['icrs', 'fk5']: direction = xmldoc_out.createElement("celestial_dir") direction.setAttribute("ra", "{}".format(ra)) direction.setAttribute("dec", "{}".format(dec)) else: raise SpectrumError( "GammaPointSourceError: Cannot create a direction with the frame {}" .format(frame)) return particle, direction