Commit fb59ef58bbf74f38e7324247935d70a65fb3ea5a

Authored by Andreas Specovius
1 parent 6eda1990

Support for reading of the source direction directly from the on region file. If…

… not possible the user will as usually be queried for the source direction.
Showing 1 changed file with 36 additions and 18 deletions
cscripts/csphagen.py
@@ -56,6 +56,22 @@ class csphagen(ctools.csobservation): @@ -56,6 +56,22 @@ class csphagen(ctools.csobservation):
56 return 56 return
57 57
58 # Private methods 58 # Private methods
  59 + def __query_src_direction(self):
  60 + """
  61 + Set up the source direction parameter.
  62 + Query relevant parameters.
  63 + """
  64 + self._src_dir = gammalib.GSkyDir()
  65 + coordsys = self['coordsys'].string()
  66 + if coordsys == 'CEL':
  67 + ra = self['ra'].real()
  68 + dec = self['dec'].real()
  69 + self._src_dir.radec_deg(ra, dec)
  70 + elif coordsys == 'GAL':
  71 + glon = self['glon'].real()
  72 + glat = self['glat'].real()
  73 + self._src_dir.lb_deg(glon, glat)
  74 +
59 def _get_parameters(self): 75 def _get_parameters(self):
60 """ 76 """
61 Get parameters from parfile and setup observations 77 Get parameters from parfile and setup observations
@@ -72,23 +88,17 @@ class csphagen(ctools.csobservation): @@ -72,23 +88,17 @@ class csphagen(ctools.csobservation):
72 # Set energy bounds 88 # Set energy bounds
73 self._ebounds = self._create_ebounds() 89 self._ebounds = self._create_ebounds()
74 90
75 - # Initialise source position/region querying relevant parameters  
76 - self._src_dir = gammalib.GSkyDir() 91 + # Initialize empty src regions container
77 self._src_reg = gammalib.GSkyRegions() 92 self._src_reg = gammalib.GSkyRegions()
78 - coordsys = self['coordsys'].string()  
79 - if coordsys == 'CEL':  
80 - ra = self['ra'].real()  
81 - dec = self['dec'].real()  
82 - self._src_dir.radec_deg(ra, dec)  
83 - elif coordsys == 'GAL':  
84 - glon = self['glon'].real()  
85 - glat = self['glat'].real()  
86 - self._src_dir.lb_deg(glon, glat)  
87 93
88 # Query background estimation method and parameters 94 # Query background estimation method and parameters
89 bkgmethod = self['bkgmethod'].string() 95 bkgmethod = self['bkgmethod'].string()
90 if bkgmethod == 'REFLECTED': 96 if bkgmethod == 'REFLECTED':
91 97
  98 + # Always query src direction
  99 + self.__query_src_direction()
  100 +
  101 + # Query region parameters
92 self._srcshape = self['srcshape'].string() 102 self._srcshape = self['srcshape'].string()
93 if self._srcshape == 'CIRCLE': 103 if self._srcshape == 'CIRCLE':
94 self._rad = self['rad'].real() 104 self._rad = self['rad'].real()
@@ -98,6 +108,21 @@ class csphagen(ctools.csobservation): @@ -98,6 +108,21 @@ class csphagen(ctools.csobservation):
98 108
99 elif bkgmethod == 'CUSTOM': 109 elif bkgmethod == 'CUSTOM':
100 110
  111 + # Set up src region. Only 1 region is allowed.
  112 + src_reg_file = self['srcreg'].filename()
  113 + self._src_reg = gammalib.GSkyRegions(src_reg_file)
  114 +
  115 + if len(self._src_reg) != 1:
  116 + raise RuntimeError('Only 1 ON region is allowed.')
  117 +
  118 + # Set up src direction. Query if neccessary.
  119 + if isinstance(self._src_reg[0], gammalib.GSkyRegionCircle):
  120 + self._src_dir = self._src_reg[0].centre()
  121 + self._rad = self._src_reg[0].radius()
  122 + else:
  123 + self.__query_src_direction()
  124 +
  125 + # Set up bkg regions
101 obs_file = self['inobs'].filename() 126 obs_file = self['inobs'].filename()
102 127
103 # obs def XML: look for region files 128 # obs def XML: look for region files
@@ -141,13 +166,6 @@ class csphagen(ctools.csobservation): @@ -141,13 +166,6 @@ class csphagen(ctools.csobservation):
141 # Query bkg region file for single observation 166 # Query bkg region file for single observation
142 self._bkg_reg_files[self._bkg_reg_files.keys()[0]] = self['bkgreg'].filename() 167 self._bkg_reg_files[self._bkg_reg_files.keys()[0]] = self['bkgreg'].filename()
143 168
144 - # Query src region file and set up the region. Only 1 region is allowed.  
145 - src_reg_file = self['srcreg'].filename()  
146 - self._src_reg = gammalib.GSkyRegions(src_reg_file)  
147 -  
148 - if len(self._src_reg) > 1:  
149 - raise RuntimeError('Only 1 ON region is allowed.')  
150 -  
151 self['maxoffset'].real() 169 self['maxoffset'].real()
152 170
153 # Exclusion map 171 # Exclusion map