Feature #1146

Create GCTAInstBackground class for handling of background model in instrument coordinates

Added by Knödlseder Jürgen about 10 years ago. Updated almost 10 years ago.

Status:ClosedStart date:02/13/2014
Priority:NormalDue date:
Assigned To:Knödlseder Jürgen% Done:

100%

Category:-
Target version:00-09-00
Duration:

Description

Follow-up of discussion in issue #1096.

I propose the following XML interface:

<?xml version="1.0" standalone="no"?>
<source_library title="source library">
  <source name="MyModel" type="CTAInstBackground" instrument="CTA" id="00001">
    <spectrum type="PowerLaw">
      <parameter name="Prefactor" scale="1.0"  value="1.0"  min="1e-6" max="1e6"    free="1"/>
      <parameter name="Index"     scale="1.0"  value="0.0"  min="-5.0" max="+5.0"   free="1"/>
      <parameter name="Scale"     scale="1e6"  value="1.0"  min="0.01" max="1000.0" free="0"/>
    </spectrum>
  </source>
</source_library>

There is no information on the background file here as this will be handled by the observation definition file.


Recurrence

No recurrence.


Related issues

Related to GammaLib - Action #1096: BackgroundModel from IRF Closed 02/07/2014

History

#1 Updated by Knödlseder Jürgen about 10 years ago

  • Status changed from New to In Progress
  • Assigned To set to Knödlseder Jürgen
  • Target version set to 00-08-02
  • % Done changed from 0 to 80

I made good progress in the implementation of the required code.

The GCTAModelInstBackground class is now the analog to the GCTAModelBackground class, and defines a background model in instrument coordinates. The background cube is taken from the response function, and a GCTABackground abstract base class has been introduced that defines the interface for the instrumental background. The GCTABackground3D class is an implementation of this abstract class that handles 3D response cubes spanned by DETX, DETY and energy.

Monte Carlo sampling, model evaluation and Npred integration are implemented in GCTAModelInstBackground. For the latter, the integration precision has been fixed to 1e-4. Below a number of ctlike runs with different precisions for the record:

=== 1e-3 ===============================================
2014-02-14T21:06:19: === GOptimizerLM ===
2014-02-14T21:06:19:  Optimized function value ..: 995501.109
2014-02-14T21:06:19:  Absolute precision ........: 1e-06
2014-02-14T21:06:19:  Optimization status .......: converged
2014-02-14T21:06:19:  Number of parameters ......: 4
2014-02-14T21:06:19:  Number of free parameters .: 2
2014-02-14T21:06:19:  Number of iterations ......: 4
2014-02-14T21:06:19:  Lambda ....................: 1e-07
2014-02-14T21:06:19:  Maximum log likelihood ....: -995501.109
2014-02-14T21:06:19:  Observed events  (Nobs) ...: 151249.000
2014-02-14T21:06:19:  Predicted events (Npred) ..: 151152.000 (Nobs - Npred = 97)
2014-02-14T21:06:19: === GModels ===
2014-02-14T21:06:19:  Number of models ..........: 1
2014-02-14T21:06:19:  Number of parameters ......: 4
2014-02-14T21:06:19: === GCTAModelInstBackground ===
2014-02-14T21:06:19:  Name ......................: My model
2014-02-14T21:06:19:  Instruments ...............: CTA
2014-02-14T21:06:19:  Instrument scale factors ..: unity
2014-02-14T21:06:19:  Observation identifiers ...: all
2014-02-14T21:06:19:  Model type ................: "PowerLaw" * "Constant" 
2014-02-14T21:06:19:  Number of parameters ......: 4
2014-02-14T21:06:19:  Number of spectral par's ..: 3
2014-02-14T21:06:19:   Prefactor ................: 0.892675 +/- 0.00492726 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)
2014-02-14T21:06:19:   Index ....................: -0.0248178 +/- 0.00357426 [-5,5]  (free,scale=1,gradient)
2014-02-14T21:06:19:   PivotEnergy ..............: 1e+06 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
2014-02-14T21:06:19:  Number of temporal par's ..: 1
2014-02-14T21:06:19:   Constant .................: 1 (relative value) (fixed,scale=1,gradient)
2014-02-14T21:06:19: 
2014-02-14T21:06:19: +==============+
2014-02-14T21:06:19: | Save results |
2014-02-14T21:06:19: +==============+
2014-02-14T21:06:19: 
2014-02-14T21:06:19: Application "ctlike" terminated after 6 wall clock seconds, consuming 2.82051 seconds of CPU time.

=== 1e-4 ===============================================
2014-02-14T21:20:25: === GOptimizerLM ===
2014-02-14T21:20:25:  Optimized function value ..: 993710.849
2014-02-14T21:20:25:  Absolute precision ........: 1e-06
2014-02-14T21:20:25:  Optimization status .......: converged
2014-02-14T21:20:25:  Number of parameters ......: 4
2014-02-14T21:20:25:  Number of free parameters .: 2
2014-02-14T21:20:25:  Number of iterations ......: 4
2014-02-14T21:20:25:  Lambda ....................: 1e-07
2014-02-14T21:20:25:  Maximum log likelihood ....: -993710.849
2014-02-14T21:20:25:  Observed events  (Nobs) ...: 151249.000
2014-02-14T21:20:25:  Predicted events (Npred) ..: 151152.000 (Nobs - Npred = 97)
2014-02-14T21:20:25: === GModels ===
2014-02-14T21:20:25:  Number of models ..........: 1
2014-02-14T21:20:25:  Number of parameters ......: 4
2014-02-14T21:20:25: === GCTAModelInstBackground ===
2014-02-14T21:20:25:  Name ......................: My model
2014-02-14T21:20:25:  Instruments ...............: CTA
2014-02-14T21:20:25:  Instrument scale factors ..: unity
2014-02-14T21:20:25:  Observation identifiers ...: all
2014-02-14T21:20:25:  Model type ................: "PowerLaw" * "Constant" 
2014-02-14T21:20:25:  Number of parameters ......: 4
2014-02-14T21:20:25:  Number of spectral par's ..: 3
2014-02-14T21:20:25:   Prefactor ................: 0.895103 +/- 0.00494066 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)
2014-02-14T21:20:25:   Index ....................: -0.0314981 +/- 0.00357426 [-5,5]  (free,scale=1,gradient)
2014-02-14T21:20:25:   PivotEnergy ..............: 1e+06 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
2014-02-14T21:20:25:  Number of temporal par's ..: 1
2014-02-14T21:20:25:   Constant .................: 1 (relative value) (fixed,scale=1,gradient)
2014-02-14T21:20:25: 
2014-02-14T21:20:25: +==============+
2014-02-14T21:20:25: | Save results |
2014-02-14T21:20:25: +==============+
2014-02-14T21:20:25: 
2014-02-14T21:20:25: Application "ctlike" terminated after 6 wall clock seconds, consuming 3.83421 seconds of CPU time.

=== 1e-5 ===============================================
2014-02-14T21:22:29: === GOptimizerLM ===
2014-02-14T21:22:29:  Optimized function value ..: 993771.163
2014-02-14T21:22:29:  Absolute precision ........: 1e-06
2014-02-14T21:22:29:  Optimization status .......: converged
2014-02-14T21:22:29:  Number of parameters ......: 4
2014-02-14T21:22:29:  Number of free parameters .: 2
2014-02-14T21:22:29:  Number of iterations ......: 4
2014-02-14T21:22:29:  Lambda ....................: 1e-07
2014-02-14T21:22:29:  Maximum log likelihood ....: -993771.163
2014-02-14T21:22:29:  Observed events  (Nobs) ...: 151249.000
2014-02-14T21:22:29:  Predicted events (Npred) ..: 151152.000 (Nobs - Npred = 97)
2014-02-14T21:22:29: === GModels ===
2014-02-14T21:22:29:  Number of models ..........: 1
2014-02-14T21:22:29:  Number of parameters ......: 4
2014-02-14T21:22:29: === GCTAModelInstBackground ===
2014-02-14T21:22:29:  Name ......................: My model
2014-02-14T21:22:29:  Instruments ...............: CTA
2014-02-14T21:22:29:  Instrument scale factors ..: unity
2014-02-14T21:22:29:  Observation identifiers ...: all
2014-02-14T21:22:29:  Model type ................: "PowerLaw" * "Constant" 
2014-02-14T21:22:29:  Number of parameters ......: 4
2014-02-14T21:22:29:  Number of spectral par's ..: 3
2014-02-14T21:22:29:   Prefactor ................: 0.895664 +/- 0.00494376 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)
2014-02-14T21:22:29:   Index ....................: -0.030747 +/- 0.00357426 [-5,5]  (free,scale=1,gradient)
2014-02-14T21:22:29:   PivotEnergy ..............: 1e+06 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
2014-02-14T21:22:29:  Number of temporal par's ..: 1
2014-02-14T21:22:29:   Constant .................: 1 (relative value) (fixed,scale=1,gradient)
2014-02-14T21:22:29: 
2014-02-14T21:22:29: +==============+
2014-02-14T21:22:29: | Save results |
2014-02-14T21:22:29: +==============+
2014-02-14T21:22:29: 
2014-02-14T21:22:29: Application "ctlike" terminated after 10 wall clock seconds, consuming 8.20626 seconds of CPU time.

=== 1e-6 ===============================================
2014-02-14T21:24:32: === GOptimizerLM ===
2014-02-14T21:24:32:  Optimized function value ..: 993763.185
2014-02-14T21:24:32:  Absolute precision ........: 1e-06
2014-02-14T21:24:32:  Optimization status .......: converged
2014-02-14T21:24:32:  Number of parameters ......: 4
2014-02-14T21:24:32:  Number of free parameters .: 2
2014-02-14T21:24:32:  Number of iterations ......: 4
2014-02-14T21:24:32:  Lambda ....................: 1e-07
2014-02-14T21:24:32:  Maximum log likelihood ....: -993763.185
2014-02-14T21:24:32:  Observed events  (Nobs) ...: 151249.000
2014-02-14T21:24:32:  Predicted events (Npred) ..: 151152.000 (Nobs - Npred = 97)
2014-02-14T21:24:32: === GModels ===
2014-02-14T21:24:32:  Number of models ..........: 1
2014-02-14T21:24:32:  Number of parameters ......: 4
2014-02-14T21:24:32: === GCTAModelInstBackground ===
2014-02-14T21:24:32:  Name ......................: My model
2014-02-14T21:24:32:  Instruments ...............: CTA
2014-02-14T21:24:32:  Instrument scale factors ..: unity
2014-02-14T21:24:32:  Observation identifiers ...: all
2014-02-14T21:24:32:  Model type ................: "PowerLaw" * "Constant" 
2014-02-14T21:24:32:  Number of parameters ......: 4
2014-02-14T21:24:32:  Number of spectral par's ..: 3
2014-02-14T21:24:32:   Prefactor ................: 0.895173 +/- 0.00494105 [0.001,1000] ph/cm2/s/MeV (free,scale=1,gradient)
2014-02-14T21:24:32:   Index ....................: -0.031187 +/- 0.00357426 [-5,5]  (free,scale=1,gradient)
2014-02-14T21:24:32:   PivotEnergy ..............: 1e+06 [10000,1e+09] MeV (fixed,scale=1e+06,gradient)
2014-02-14T21:24:32:  Number of temporal par's ..: 1
2014-02-14T21:24:32:   Constant .................: 1 (relative value) (fixed,scale=1,gradient)
2014-02-14T21:24:32: 
2014-02-14T21:24:32: +==============+
2014-02-14T21:24:32: | Save results |
2014-02-14T21:24:32: +==============+
2014-02-14T21:24:32: 
2014-02-14T21:24:32: Application "ctlike" terminated after 34 wall clock seconds, consuming 31.7309 seconds of CPU time.

#2 Updated by Knödlseder Jürgen about 10 years ago

  • Status changed from In Progress to Feedback
  • % Done changed from 80 to 100

I consider this now as done. Just merged into integration branch. Still need to do some pull distribution tests.

#3 Updated by Mayer Michael about 10 years ago

Looks great to me. Until now I only found a copy&paste typo in a comment (in GCTAResponse.hpp line 185). Also I think it makes sense to have GCTAModelInstBackground instead of the proposed GCTAInstBackground. The Model makes it clear that it has an xml-interface and a connection to GModel.

#4 Updated by Mayer Michael about 10 years ago

I now tested the full interface using GCTABackground3D and the GCTAModelInstBackground interface with it.
It directly worked (after realising that the code requires DETX and DETY to be in degrees:) ).
I have one question though: Why is there the compilation flag G_LOG_INTERPOLATION? In GCTABackground3D::read(), we explicitly set the energy axis to log10-mode. Therefore, GCTAResponseTable already interpolates in 'log10energy’, doesn’t it? Switching off the flag worked perfectly fine for me.

If we want the code itself to deal with the units, should that be in GCTABackground3D::read() or rather in GCTAResponseTable?

#5 Updated by Knödlseder Jürgen almost 10 years ago

  • Status changed from Feedback to Resolved
  • Target version changed from 00-08-02 to 00-09-00

Skip release 0.8.2.

#6 Updated by Knödlseder Jürgen almost 10 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF