Producing Realistic Observations Using External Packages

If you want to produce a realistic simulation of a particular instrumental configuration, pyXSIM provides options for exporting its event lists to external packages. The supported software packages are:

MARX

The MARX version needs to be at least 5.3.1. To use SIMPUT with MARX, one only needs to change the following lines in the marx.par file:

# Change the source RA, Dec to match the center of the observation
SourceRA,r,a,45.0,0,360,"Source RA (degrees)"
SourceDEC,r,a,30.0,-90,90,"source DEC (degrees)"

# The source type should be "SIMPUT"
SourceType,s,a,"SIMPUT","POINT|GAUSS|IMAGE|LINE|BETA|RAYFILE|DISK|USER|SAOSAC|SIMPUT",,"source"

# Pointers to your SIMPUT file and the location of the SIMPUT library
S-SIMPUT-Source,f,a,"sloshing_events_simput.fits",,,"Filename of SIMPUT Catalog"
S-SIMPUT-Library,f,a,"/usr/local/simput-2.1.2/lib/libsimput.dylib",,,"Path to dynamically linked file libsimput.so"

# Pointing RA and Dec is up to you, but should be near the source
RA_Nom,r,a,45.,,,"RA_NOM for dither (degrees)"
Dec_Nom,r,a,30.,,,"DEC_NOM for dither (degrees)"
Roll_Nom,r,a,0.,,,"ROLL_NOM for dither (degrees)"

SIMX

Here is an example set of SIMX commands that uses a SIMPUT catalog made with pyXSIM:

#!/bin/bash
heainit
simxinit

punlearn simx
pset simx mode=hl
pset simx Exposure=1.0e4
pset simx UseSimput=yes
pset simx MissionName=XraySurveyor InstrumentName=HDXI
pset simx ScaleBkgnd=0.0
pset simx RandomSeed=24

pset simx SimputFile=spiral_242959_noshift_xrs_simput.fits
pset simx PointingRA=30.0 PointingDec=45.0
pset simx OutputFileName=spiral_242959_noshift_xrs
simx

SIXTE

Here is an example set of SIXTE commands that uses a SIMPUT catalog made with pyXSIM:

#!/bin/bash

export HEADASNOQUERY=
export HEADASPROMPT=/dev/null

. $HEADAS/headas-init.sh

base=sloshing_simput
xmldir=$SIXTE/share/sixte/instruments/athena-wfi/wfi_wo_filter_15row
xml0=${xmldir}/ld_wfi_ff_chip0.xml
xml1=${xmldir}/ld_wfi_ff_chip1.xml
xml2=${xmldir}/ld_wfi_ff_chip2.xml
xml3=${xmldir}/ld_wfi_ff_chip3.xml

$SIXTE/bin/athenawfisim \
    XMLFile0=${xml0} XMLFile1=${xml1} XMLFile2=${xml2} XMLFile3=${xml3} \
    RA=30.05 Dec=45.04 \
    Prefix=sim_ \
    Simput=${base}.fits \
    EvtFile=evt.fits \
    Exposure=6000.0 \
    clobber=yes

ftmerge \
    sim_chip0_evt.fits,sim_chip1_evt.fits,sim_chip2_evt.fits,sim_chip3_evt.fits \
    sim_combined_evt.fits clobber=yes

$SIXTE/bin/imgev \
    EvtFile=sim_combined_evt.fits \
    Image=img_sloshing.fits \
    CoordinateSystem=0 Projection=TAN \
    NAXIS1=1078 NAXIS2=1078 CUNIT1=deg CUNIT2=deg \
    CRVAL1=30.05 CRVAL2=45.04 CRPIX1=593.192308 CRPIX2=485.807692 \
    CDELT1=-6.207043e-04 CDELT2=6.207043e-04 history=true \
    clobber=yes

SOXS

As of pyXSIM 4.3.0 and SOXS 4.6.0, the SOXS instrument_simulator() can accept pyXSIM event list files in the HDF5 format as input, bypassing the need for a SIMPUT catalog, although you can still use one if you wish.

Here is an example set of SOXS commands which uses an event list created by pyXSIM, using either the HDF5 event file or the SIMPUT catalog:

import soxs
input_file = "snr_events.h5" # pyXSIM event list file to be read
#input_file = "snr_simput.fits" # SIMPUT file to be read
out_file = "evt_mucal.fits" # event file to be written
exp_time = 30000. # The exposure time in seconds
instrument = "lem_2.3eV" # short name for instrument to be used
sky_center = [30., 45.] # RA, Dec of pointing in degrees
soxs.instrument_simulator(input_file, out_file, exp_time, instrument,
                          sky_center, overwrite=True)

Refer to the relevant documentation for all of those packages for more details, as well as the SIMPUT section of the EventList documentation.