Modelling the vignetting function of eROSITA

Please note that this information is out of date and does not represent the vignetting function used in the eSASS users release from 200602.

This is a holding page to gather together notes on producing an analytic vignetting model for eSASS tasks

Zeroth order model (TD)

Input data

Derivation of model parameters

Figures demonstrating the fit

Vignetting model fitted to SIXTE file at defined energies Trends of vignetting model parameters with energy

The parameters describing the model

Results of fits at each energy:

Energy=    1.25 keV: theta0= 0.44966 +-  0.02004  beta=-1.02111 +-  0.05693  alpha= 1.71288 +-  0.01767
Energy=       4 keV: theta0= 0.22575 +-  0.00860  beta=-0.83151 +-  0.04289  alpha= 1.97408 +-  0.03523
Energy=     7.5 keV: theta0= 0.10547 +-  0.00350  beta=-0.50753 +-  0.03063  alpha= 2.52732 +-  0.09069

coeff[1,1],coeff[2,1],coeff[3,1] = [ 0.44966, -1.02111, 1.71288]
coeff[1,2],coeff[2,2],coeff[3,2] = [ 0.22575, -0.83151, 1.97408]
coeff[1,3],coeff[2,3],coeff[3,3] = [ 0.10547, -0.50753, 2.52732] 

lagr(x,x1,x2,x3,y1,y2,y3) = y1*((x-x2)/(x1-x2))*((x-x3)/(x1-x3)) + y2*((x-x1)/(x2-x1))*((x-x3)/(x2-x3)) + y3*((x-x1)/(x3-x1))*((x-x2)/(x3-x2))

f_theta0(energy) = lagr(clip(energy),e[1],e[2],e[3],coeff[1,1],coeff[1,2],coeff[1,3])
f_beta(energy)   = lagr(clip(energy),e[1],e[2],e[3],coeff[2,1],coeff[2,2],coeff[2,3])
f_alpha(energy)  = lagr(clip(energy),e[1],e[2],e[3],coeff[3,1],coeff[3,2],coeff[3,3])

emin = 0.0
emax = 7.5
clip(eraw) = (eraw<emin?emin:(eraw>emax?emax:eraw))

vign_gen(oa,energy) = vign(oa,f_theta0(energy),f_beta(energy),f_alpha(energy))

Vignetting model at arbitrary energies

Description of model in CALDB

Using the analytic vignetting model in eSASS

  !--------------------------------------------------------------------------------
  ! 
  !  HOW TO USE THESE ROUTINES
  !  =========================
  !           
  ! 1) Include this module in the calling module:
  !
  !  use srctool_generic_avign     ! use generic analytic vignetting model routines
  !
  !  And make sure that this file is listed in the Makefile modules variable for your task 
  !
  ! 2) At the beginning of the calling routine define an avign data type (one for each instrument):
  !
  !    type(avign_type)   :: avign             ! an avign for a single instrument
  !           
  !    alternatively:
  !
  !    type(avign_type), dimension(7) :: avign_list  ! array of avigns for all instruments
  !           
  ! 3) Always initialise the avign data structure before use:        
  !           
  !    call avign_empty_avign(avign)
  ! 
  ! 4) Read the avign coefficients from the CALDB for each instrument (giving the instrument name, 
  !    and the observation start+end date strings) and check the value of the resulting ierr status flag
  !
  !    call avign_read_avign_from_caldb(avign, instname, date_obs, date_end, ierr)
  !
  !    if ( ierr .ne. 0 ) then
  !      call wrerr (subroutinename, ierr, "Problem reading AVIGN from CALDB")
  !      return
  !    end if
  !
  ! 5) [Optional] Report the contents of the AVIGN calibration file to stdout
  !
  !    call avign_report_avign_info(avign)
  !
  ! 6) Call the relevant routine to compute the value of the vignetting function for a given            
  !    pixel position (raw coordinate system) and photon energy (keV):
  !           
  !    call avign_calc_vign_at_xye(avign, x, y, energy, vign, ierr)
  !     
  ! 7) Repeat step 6) as many times as required
  !
  ! 8) when finished, free up the allocated memory
  !
  !    call avign_empty_avign(avign)
  !
  !-------------------------------------------------------------------------------

Comparison of SRCTOOL outputs with gnuplot model

EROSITAwiki: EroCat/AnalyticVignetting (last edited 2020-06-11 14:45:06 by JeremySanders)