#!/usr/bin/env python
"""Создает объедененный список событий и помещает его в uds/products

Этот список событий нужен, в основном для извлечения спектров с помощью srctool
"""

from astropy.wcs import WCS
from astropy.io import fits
import sys, os, os.path, time, subprocess
from pathlib import Path
import numpy as np
import glob
from os.path import dirname
import inspect
import uds

from uds.utils import *
from uds.config import *

outkey="mosa_tm0"

""" find UDS root dir """

#root_path=dirname(dirname(dirname(inspect.getfile(uds))))
"""
ftools does not like long file path names, for this reason, we use relative path here
"""
root_path='..'


print("UDS root path: {}".format(root_path))

infile_dir=root_path+'/data/processed'
outfile_dir=root_path+'/products'

create_folder(outfile_dir)

index=3 # select energy band

do_init         = True
do_merge        = True
do_rate         = False 
do_adapt        = True # requires CIAO

vign=False
vignetting = 'vign' if (vign==True) else 'novign'

events=[]
expmaps=[]
bkgmaps=[]
for tmkey in keylist_tm.keys():
    print("TM{} in work... init events".format(tmkey))
    for datakey in keylist_tm[tmkey]:
        #if not ("scan" in datakey):
        #    continue
        print("--> {}".format(datakey))
        """ Подготавливаем списки событий индивидуальных наблюдений """
        outfile_evtool,outfile_expmap=init_events(key=datakey, eband_index=eband[index],
                                                  infile_dir=infile_dir,
                                                  outfile_dir=outfile_dir,
                                                  do_init=do_init,
                                                  do_obsmode=False,
                                                  do_center=False,
                                                  do_evtool=True,
                                                  do_expmap=False,
                                                  vign=vign,
                                                  ra_cen=ra_cen, de_cen=de_cen,
                                                  emin_kev=emin_kev[index],
                                                  emax_kev=emax_kev[index])
        events.append(outfile_evtool)
        expmaps.append(outfile_expmap)
        bkgmaps.append("{}_BackMap3_en{}.fits".format(os.path.join(outfile_dir,datakey), eband[0]))
   
""" Собираем общий список событий """    
outfile_evtool="{}_EventList_en{}.fits".format(os.path.join(outfile_dir,outkey), eband[index])

outfile_expmap="{}_ExposureMap_en{}.{}.fits".format(os.path.join(outfile_dir,outkey), eband[index], vignetting)
outfile_bkgmap="{}_BackMap_en{}.{}.fits".format(os.path.join(outfile_dir,outkey), eband[index], vignetting)

if(do_merge==True):
    do_evtool_esass(events=events, outfile=outfile_evtool)
    do_fimgmerge_ftools(maps=expmaps, outfile=outfile_expmap)
    do_fimgmerge_ftools(maps=bkgmaps, outfile=outfile_bkgmap)

outfile_rate="{}_RateMap_en{}.{}.fits".format(os.path.join(outfile_dir,outkey), eband[index], vignetting)
if(do_rate==True):
    make_rate_map(cntmap=outfile_evtool, expmap=outfile_expmap, outfile=outfile_rate)

    
function='gaussian'
outfile_adapt="{}_ImageAdapt_en{}.{}.{}.fits".format(os.path.join(outfile_dir,outkey), eband[index], function, vignetting)
if(do_adapt==True):
    do_adapt_ciao(infile=outfile_evtool, outfile=outfile_adapt, expmap=outfile_expmap, function=function, expcut=100)


