#!/usr/bin/env python
# Licensed under a 3-clause BSD style license - see LICENSE.rst
"""Find off regions for a given on region and exclusion mask.

TODO: explain a bit.
"""

# Parse command line arguments

from gammapy.utils.scripts import argparse, GammapyFormatter
parser = argparse.ArgumentParser(description=__doc__,
                                 formatter_class=GammapyFormatter)
parser.add_argument('--x_on', type=float,
                    help='On-region X position (deg)')
parser.add_argument('--y_on', type=float,
                    help='On-region Y position (deg)')
parser.add_argument('--r_on', type=float,
                    help='On-region radius (deg)')
parser.add_argument('--x_fov', type=float,
                    help='FOV X position (deg)')
parser.add_argument('--y_fov', type=float,
                    help='FOV Y position (deg)')
parser.add_argument('--r_fov', type=float,
                    help='FOV radius (deg)')
parser.add_argument('--exclusion', type=str,
                    help='Exclusion region mask FITS file name')
parser.add_argument('--outfile', type=str,
                    help='Output file name (ds9 region format) '
                    '[default=%(default)s]')
parser.add_argument('--min_on_distance', type=float, default=0.1,
                    help='Minimum distance to the on region (deg)')
args = parser.parse_args()
args = vars(args)

# Execute script

import logging
logging.basicConfig(level=logging.DEBUG, format='%(levelname)s - %(message)s')
from astropy.io import fits
from gammapy.background import ReflectedRegionMaker

logging.info('Reading {0}'.format(args['exclusion']))
exclusion = fits.open(args['exclusion'])[0]

fov = dict(x=args['x_fov'], y=args['y_fov'], r=args['r_fov'])
rr_maker = ReflectedRegionMaker(exclusion=exclusion,
                                fov=fov)
source = dict(x_on=args['x_on'], y_on=args['y_on'], r_on=args['r_on'])
rr_maker.compute(**source)
logging.info('Writing {0}'.format(args['outfile']))
rr_maker.write_off_regions(args['outfile'])
