;-----------------------------
fname='qsbp_info_20230219'
;-----------------------------
;--- read XRT qsbp info structure ---
in_dir='/disk/yla/takeda/REU_2026/qsbp_info/'
restgen,file=in_dir+fname,qsbp_info
yyyymmdd=strmid(fname,10,8)
fov_xyr=qsbp_info.fov_xyr
bp_xyr=qsbp_info.bp_xyr
nn_bp=n_elements(bp_xyr(0,*))
;
;---------- make mask image ----------
mask_fov=blank_circle(1024,1024,fov_xyr(0),fov_xyr(1),fov_xyr(2),/image)
mask_bps=bytarr(1024,1024,nn_bp)
for i=0,nn_bp-1 do begin
  work=blank_circle(1024,1024,bp_xyr(0,i),bp_xyr(1,i),bp_xyr(2,i),/image) 
  mask_bps(*,*,i)=work
endfor
;
;---------- read XRT images -------------
;--- Al_mesh ---
file_am=qsbp_info.file_am
mreadfits,file_am,index_am,data_am
;
;--- stray light subraction ---
dir_term='/disk/yla/takeda/xrt_terminator/'
slfile_am=file_search(dir_term+'Al_mesh/term_*.genx')
phase=check_sl_phase(index_am)
help,phase
case phase of
  1 : slimg=0       ; no correction for Al_mesh in phase 1
  2 : restgen,file=slfile_am(0),iisl,slimg
  3 : restgen,file=slfile_am(1),iisl,slimg
  4 : restgen,file=slfile_am(2),iisl,slimg
  5 : restgen,file=slfile_am(3),iisl,slimg
  6 : restgen,file=slfile_am(4),iisl,slimg
  7 : restgen,file=slfile_am(5),iisl,slimg
  else : begin & slimg=0 & print,'--- slimg set to 0.' & end
endcase
data2_am=data_am-slimg
;
;--- shift and rot before applying the mask ---
sftx=round(index_am.xcen/index_am.xscale)
sfty=round(index_am.ycen/index_am.yscale)
data3_am=shift(data2_am,sftx,sfty)
;
ang=index_am.crota2*(-1)
magfact=1.0 & cx=512 & cy=512
data4_am=rot(data3_am,ang,magfact,cx,cy,/pivot,/interp)
;
;--- Al_poly ---
file_ap=qsbp_info.file_ap
mreadfits,file_ap,index_ap,data_ap
;
;--- stray light subraction ---
dir_term='/disk/yla/takeda/xrt_terminator/'
slfile_ap=file_search(dir_term+'Al_poly/term_*.genx')
phase=check_sl_phase(index_ap)
help,phase
case phase of
  1 : slimg=0       ; no correction for Al_poly in phase 1
  2 : restgen,file=slfile_ap(0),iisl,slimg
  3 : restgen,file=slfile_ap(1),iisl,slimg
  4 : restgen,file=slfile_ap(2),iisl,slimg
  5 : restgen,file=slfile_ap(3),iisl,slimg
  6 : restgen,file=slfile_ap(4),iisl,slimg
  7 : restgen,file=slfile_ap(5),iisl,slimg
  else : begin & slimg=0 & print,'--- slimg set to 0.' & end
endcase
data2_ap=data_ap-slimg
;
;--- shift and rot before applying the mask ---
sftx=round(index_ap.xcen/index_ap.xscale)
sfty=round(index_ap.ycen/index_ap.yscale)
data3_ap=shift(data2_ap,sftx,sfty)
;
ang=index_ap.crota2*(-1)
magfact=1.0 & cx=512 & cy=512
data4_ap=rot(data3_ap,ang,magfact,cx,cy,/pivot,/interp)
;
;--- get masked signal ---
sig_fov=fltarr(2)
sig_fov(0)=total(data4_am*mask_fov)
sig_fov(1)=total(data4_ap*mask_fov)
sig_bps=fltarr(2,nn_bp)
for i=0,nn_bp-1 do begin
  sig_bps(0,i)=total(data4_am*mask_bps(*,*,i))
  sig_bps(1,i)=total(data4_ap*mask_bps(*,*,i))
endfor
bps_am=sig_bps(0,*)
bps_ap=sig_bps(1,*)
sig_qs=fltarr(2)
sig_qs(0)=sig_fov(0)-total(bps_am)
sig_qs(1)=sig_fov(1)-total(bps_ap)
;
help,sig_fov,sig_qs,sig_bps
print,sig_fov,sig_qs,sig_bps
;
;--- make final info structure ---
sig_xrt=create_struct('file_am',file_am,'file_ap',file_ap, $
                        'sig_fov',sig_fov, $
                        'sig_qs',sig_qs, $
                        'sig_bps',sig_bps)
help,sig_xrt,/str
;
yn='n'
read,prompt='*** save sig_structure? [y/n] ',yn
if yn eq 'y' then begin $
  outdir='/disk/yla/takeda/REU_2026/qsbp_sig/'
  fname='sig_xrt_amap_'+yyyymmdd
  text='Created by SIG_QSBP_XRT.PRO. '+ $
       'A structure contains signals of '+ $
       'file_am(Al_mesh filename), file_ap(Al_poly filename), '+ $
       'sig_fov(Alms and Apol signals within FOV), '+ $
       'sig_qs(Alms and Apol signals for Quiet Sun area), '+ $
       'sig_bps(Alms and Apol signals within Bright Points).'
  name=['sig_xrt']
  savegen,sig_xrt,file=outdir+fname,text=text,name=name
endif
;
FIN:
;--- sanity check ---
work=[[[safe_log10(data4_ap)]],[[mask_fov]],[[total(mask_bps,3)]]]
print,'check: IDL> stepper,work'
;
END
