You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

Diffuse response calculations and FITS image templates (22 Feb 2009)

Prior to Likelihood v14r3, there had been a long-standing problem with computing diffuse responses (with gtdiffrsp) for diffuse sources that have FITS image templates for discrete sources, such as SNRs or molecular clouds. In summary, gtdiffrsp performs the following integral for each diffuse source component

Unknown macro: {latex}

i

in the xml model definition:

Unknown macro: {latex}

\newcommand

Unknown macro: {e}

\varepsilon
\newcommand

Unknown macro: {ep}

\varepsilon^\prime
\newcommand

Unknown macro: {phat}

{{\hat

Unknown macro: {p}

}}
\newcommand

Unknown macro: {phatp}

{{\hat

^\prime}}
\begin

Unknown macro: {equation}

\int d\phat S_i(\phat, \ep_j) A(\ep_j, \phat) P(\phatp_j; \ep_j, \phatp)
\end

where $\phatp_j$ and $\ep_j$ are the measured direction and measured energy of the detected photon, and the integral is performed over (true) directions on the sky $\phat$. $S_i(\phat)$ is the spatial distribution of emission from the source and is provided by the FITS image template in this context. $A(...)$ and $P(...)$ are the effective area and point spread function, and I have made the approximation equating the true photon energy with the measured value, $\e = \ep$.

Analysis object creation using the hoops/ape interface

The UnbinnedAnalysis and BinnedAnalysis modules contain functions that use the hoops/pil/ape interface to take advantage of the gtlike.par file for specifying inputs. Usage of this interface may be more convenient than creating the UnbinnedObs, UnbinnedAnalysis, BinnedObs, and BinnedAnalysis objects directly. Here are some examples of their use:

  • In this example, the call to the unbinnedAnalysis function is made without providing any arguments. The gtlike.par file is read from the user's PFILES path, and the various parameters are prompted for just as when running gtlike (except that the order is a bit different). If one is using the ipython interface with readline enabled, then tab-completion works as well.
    >>> from UnbinnedAnalysis import *
    >>> like = unbinnedAnalysis()
    Response functions to use[P6_V1_DIFFUSE] 
    Spacecraft file[test_scData_0000.fits] test_scData_0000.fits
    Event file[filtered.fits] filtered.fits
    Unbinned exposure map[none] 
    Exposure hypercube file[expCube.fits] 
    Source model file[anticenter_model.xml] 
    Optimizer (DRMNFB|NEWMINUIT|MINUIT|DRMNGB|LBFGS) [MINUIT] 
    >>> like.model
    Crab
       Spectrum: PowerLaw2
    0       Integral:  1.540e+01  0.000e+00  1.000e-05  1.000e+03 ( 1.000e-06)
    1          Index: -2.190e+00  0.000e+00 -5.000e+00  0.000e+00 ( 1.000e+00)
    2     LowerLimit:  2.000e+01  0.000e+00  2.000e+01  3.000e+05 ( 1.000e+00) fixed
    3     UpperLimit:  2.000e+05  0.000e+00  2.000e+01  3.000e+05 ( 1.000e+00) fixed
    
    Geminga
       Spectrum: PowerLaw2
    4       Integral:  1.020e+01  0.000e+00  1.000e-05  1.000e+03 ( 1.000e-06)
    5          Index: -1.660e+00  0.000e+00 -5.000e+00  0.000e+00 ( 1.000e+00)
    6     LowerLimit:  2.000e+01  0.000e+00  2.000e+01  3.000e+05 ( 1.000e+00) fixed
    7     UpperLimit:  2.000e+05  0.000e+00  2.000e+01  3.000e+05 ( 1.000e+00) fixed
    
    PKS 0528+134
       Spectrum: PowerLaw2
    8       Integral:  9.802e+00  0.000e+00  1.000e-05  1.000e+03 ( 1.000e-06)
    9          Index: -2.460e+00  0.000e+00 -5.000e+00  0.000e+00 ( 1.000e+00)
    10    LowerLimit:  2.000e+01  0.000e+00  2.000e+01  3.000e+05 ( 1.000e+00) fixed
    11    UpperLimit:  2.000e+05  0.000e+00  2.000e+01  3.000e+05 ( 1.000e+00) fixed
    
  • Alternatively, one can give all of the parameters explicitly. This is useful for running in scripts.
    >>> like2 = unbinnedAnalysis(evfile='filtered.fits', scfile='test_scData_0000.fits', irfs='P6_V1_DIFFUSE', expcube='expCube.fits', srcmdl='anticenter_model.xml', optimizer='minuit', expmap='none')
    
  • The mode='h' option is available as well. In this case, one can set a specific parameter, leaving the remaining ones to be read silently from the gtlike.par file.
    >>> like3 = unbinnedAnalysis(evfile='filtered.fits', mode='h')
    
  • A BinnedAnalysis object may be created in a similar fashion using the binnedAnalysis function:
    >>> from BinnedAnalysis import *
    >>> like = binnedAnalysis() 
    Response functions to use[P6_V1_DIFFUSE::FRONT] 
    Counts map file[smaps_0_20_inc_front.fits] 
    Binned exposure map[binned_expmap_0_20_inc_front.fits] 
    Exposure hypercube file[expCube_0_20_inc.fits] 
    Source model file[Vela_model_0_20_inc_front.xml] 
    Optimizer (DRMNFB|NEWMINUIT|MINUIT|DRMNGB|LBFGS) [MINUIT] 
    

Photon and Energy Flux Calculations

With Likelihood v13r18 and pyLikelihood v1r6 (ST v9r8), a facility has been added for calculating photon (ph/cm^2/s) and energy (MeV/cm^2/s) fluxes over a selectable energy range. The errors on these quantities are computed using the procedure described in this presentation made at the [September 2008 Collaboration meeting]. Here are some usage examples:

>>> like.model
Extragalactic Diffuse
   Spectrum: PowerLaw
0      Prefactor:  7.527e-02  7.807e-01  1.000e-05  1.000e+02 ( 1.000e-07)
1          Index: -2.421e+00  1.968e+00 -3.500e+00 -1.000e+00 ( 1.000e+00)
2          Scale:  1.000e+02  0.000e+00  5.000e+01  2.000e+02 ( 1.000e+00) fixed

GalProp Diffuse
   Spectrum: ConstantValue
3          Value:  1.186e+00  5.273e-02  0.000e+00  1.000e+01 ( 1.000e+00)

Vela
   Spectrum: BrokenPowerLaw2
4       Integral:  9.176e-02  3.730e-03  1.000e-03  1.000e+03 ( 1.000e-04)
5         Index1: -1.683e+00  5.131e-02 -5.000e+00 -1.000e+00 ( 1.000e+00)
6         Index2: -3.077e+00  2.266e-01 -5.000e+00 -1.000e+00 ( 1.000e+00)
7     BreakValue:  1.716e+03  2.250e+02  3.000e+01  1.000e+04 ( 1.000e+00)
8     LowerLimit:  1.000e+02  0.000e+00  2.000e+01  2.000e+05 ( 1.000e+00) fixed
9     UpperLimit:  3.000e+05  0.000e+00  2.000e+01  5.000e+05 ( 1.000e+00) fixed

>>> like.flux('Vela', emin=100, emax=3e5)
9.2005203669330761e-06

>>> like.flux('Vela')
9.2005203669330761e-06

>>> like.fluxError('Vela')
3.73060211564e-07

>>> like.energyFlux('Vela')
0.0047870395747710718

>>> like.energyFluxError('Vela')
0.000260743911378 

The default energy range for the flux and energy flux calculations is (emin, emax) = (100, 3e5) MeV. Either or both of these may be set as keyword arguments to the function call. The errors are available as separate function calls and require that the covariance matrix has been computed using "covar=True" keyword option to the fit function:

>>> like.fit(covar=True)
  • No labels