def gtlike_flux_dict(like, name, emin=None, emax=None, flux_units='erg', energy_units='MeV', errors=True, include_prefactor=False, prefactor_energy=None): """ Note, emin, emax, and prefactor_energy must be in MeV """ if emin is None and emax is None: emin, emax = get_full_energy_range(like) cef = lambda e: units.convert(e, 'MeV', flux_units) ce = lambda e: units.convert(e, 'MeV', energy_units) f = dict(flux=like.flux(name, emin=emin, emax=emax), flux_units='ph/cm^2/s', eflux=cef(like.energyFlux(name, emin=emin, emax=emax)), eflux_units='%s/cm^2/s' % flux_units, emin=ce(emin), emax=ce(emax), energy_units=energy_units) if errors: try: # incase the errors were not calculated f['flux_err'] = like.fluxError(name, emin=emin, emax=emax) f['eflux_err'] = cef( like.energyFluxError(name, emin=emin, emax=emax)) except Exception, ex: print 'ERROR calculating flux error: ', ex traceback.print_exc(file=sys.stdout) f['flux_err'] = -1 f['eflux_err'] = -1
def gtlike_flux_dict(like,name, emin=None,emax=None,flux_units='erg', energy_units='MeV', errors=True, include_prefactor=False, prefactor_energy=None): """ Note, emin, emax, and prefactor_energy must be in MeV """ if emin is None and emax is None: emin, emax = get_full_energy_range(like) cef=lambda e: units.convert(e,'MeV',flux_units) ce=lambda e: units.convert(e,'MeV',energy_units) f=dict(flux=like.flux(name,emin=emin,emax=emax), flux_units='ph/cm^2/s', eflux=cef(like.energyFlux(name,emin=emin,emax=emax)), eflux_units='%s/cm^2/s' % flux_units, emin=ce(emin), emax=ce(emax), energy_units=energy_units) if errors: try: # incase the errors were not calculated f['flux_err']=like.fluxError(name,emin=emin,emax=emax) f['eflux_err']=cef(like.energyFluxError(name,emin=emin,emax=emax)) except Exception, ex: print 'ERROR calculating flux error: ', ex traceback.print_exc(file=sys.stdout) f['flux_err']=-1 f['eflux_err']=-1
def energy_dict(emin, emax, energy_units='MeV'): ce = lambda e: units.convert(e, 'MeV', energy_units) return dict(emin=ce(emin), emax=ce(emax), emiddle=ce(np.sqrt(emin * emax)), energy_units=energy_units)
# incase the errors were not calculated f['flux_err'] = like.fluxError(name, emin=emin, emax=emax) f['eflux_err'] = cef( like.energyFluxError(name, emin=emin, emax=emax)) except Exception, ex: print 'ERROR calculating flux error: ', ex traceback.print_exc(file=sys.stdout) f['flux_err'] = -1 f['eflux_err'] = -1 if include_prefactor: assert prefactor_energy is not None source = get_gtlike_source(like, name) # source = like.logLike.getSource(name) spectrum = source.spectrum() cp = lambda e: units.convert(e, '1/MeV', '1/%s' % flux_units) f['prefactor'] = cp( SpectrumPlotter.get_dnde_mev(spectrum, prefactor_energy)) f['prefactor_units'] = 'ph/cm^2/s/%s' % flux_units f['prefactor_energy'] = ce(prefactor_energy) return tolist(f) def energy_dict(emin, emax, energy_units='MeV'): ce = lambda e: units.convert(e, 'MeV', energy_units) return dict(emin=ce(emin), emax=ce(emax), emiddle=ce(np.sqrt(emin * emax)), energy_units=energy_units)
def energy_dict(emin, emax, energy_units='MeV'): ce=lambda e: units.convert(e,'MeV',energy_units) return dict(emin=ce(emin), emax=ce(emax), emiddle=ce(np.sqrt(emin*emax)), energy_units=energy_units)
try: # incase the errors were not calculated f['flux_err']=like.fluxError(name,emin=emin,emax=emax) f['eflux_err']=cef(like.energyFluxError(name,emin=emin,emax=emax)) except Exception, ex: print 'ERROR calculating flux error: ', ex traceback.print_exc(file=sys.stdout) f['flux_err']=-1 f['eflux_err']=-1 if include_prefactor: assert prefactor_energy is not None source = get_gtlike_source(like,name) # source = like.logLike.getSource(name) spectrum = source.spectrum() cp = lambda e: units.convert(e,'1/MeV','1/%s' % flux_units) f['prefactor'] = cp(SpectrumPlotter.get_dnde_mev(spectrum,prefactor_energy)) f['prefactor_units'] = 'ph/cm^2/s/%s' % flux_units f['prefactor_energy'] = ce(prefactor_energy) return tolist(f) def energy_dict(emin, emax, energy_units='MeV'): ce=lambda e: units.convert(e,'MeV',energy_units) return dict(emin=ce(emin), emax=ce(emax), emiddle=ce(np.sqrt(emin*emax)), energy_units=energy_units) def gtlike_ts_dict(like, name, verbosity=True): return dict( reoptimize=like.Ts(name,reoptimize=True, verbosity=verbosity),