Skip to content

SIXTE Runs

run_sixte

run_sixte_sim_multiproc(numproc, path='/xifu/home/mola/xifu_cluster_sim/clusters/obs5_reproduction/', ph_list_prefix='ph_list', evt_file_prefix='event_list', exposure=100000.0, ra=0.0, dec=0.0, std_xmlfile='/data/xifu/usr/SIXTE/share/sixte/instruments/athena/xifudev/xifu_baseline.xml', astro_bkg_simput=None, cosmic_bkg_simput=None, background=False)

Function to launch one SIXTE process per core using the photon lists generated for a cluster sim. Will overwrite existing event files.
Matches the syntax used in SIXTE 3.0.5

Parameters:

Name Type Description Default
numproc int

Number of processes to run

required
path str

Directory in which to look for the photon lists

'/xifu/home/mola/xifu_cluster_sim/clusters/obs5_reproduction/'
ph_list_prefix str

Prefix to use for the simput file names

'ph_list'
evt_file_prefix str

Prefix to use for the event file names

'event_list'
exposure float

Exposure to use for the photon generation

100000.0
ra float

Right ascension of the pointing

0.0
dec float

Declination of the pointing

0.0
std_xmlfile str

Standard XML file to use for the simulations

'/data/xifu/usr/SIXTE/share/sixte/instruments/athena/xifudev/xifu_baseline.xml'
background bool

Option to include NXB

False
astro_bkg_simput str

Path to simput file with astrophysical background

None
cosmic_bkg_simput str

Path to simout file with cosmic AGNs

None
Source code in src/xifu_cluster_sim/run_sixte.py
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
def run_sixte_sim_multiproc(numproc,
                            path = '/xifu/home/mola/xifu_cluster_sim/clusters/obs5_reproduction/',
                            ph_list_prefix ="ph_list",
                            evt_file_prefix ='event_list',
                            exposure = 1e5,
                            ra = 0.,
                            dec = 0.,
                            std_xmlfile = '/data/xifu/usr/SIXTE/share/sixte/instruments/athena/xifudev/xifu_baseline.xml',
                            astro_bkg_simput = None, 
                            cosmic_bkg_simput = None, 
                            background = False):
    '''
    Function to launch one SIXTE process per core using the photon lists generated for a cluster sim.
    Will overwrite existing event files.  
    Matches the syntax used in SIXTE 3.0.5

    Parameters:
        numproc (int): Number of processes to run 
        path (str): Directory in which to look for the photon lists
        ph_list_prefix (str): Prefix to use for the simput file names
        evt_file_prefix (str): Prefix to use for the event file names
        exposure (float): Exposure to use for the photon generation
        ra (float): Right ascension of the pointing
        dec (float): Declination of the pointing
        std_xmlfile (str): Standard XML file to use for the simulations
        background (bool): Option to include NXB
        astro_bkg_simput (str): Path to simput file with astrophysical background
        cosmic_bkg_simput (str): Path to simout file with cosmic AGNs
    '''   

    list_w = []
    for i in range(numproc):
        proc_outdir = path+'/part%d/' % (i)
        simputfile = proc_outdir+ph_list_prefix+'_%d.fits' % (i)
        eventfile = proc_outdir+evt_file_prefix+'_%d.fits' % (i)
        piximpfile = eventfile.replace('event','impact').replace('.evt','.piximp')
        if i==0 and background==True:

            # Create a copy of bkg file centered on the right coordinates
            if astro_bkg_simput is not None : 
                hdu_astro_bkg = fits.open(astro_bkg_simput)
                hdu_astro_bkg[3].header['CRVAL1'] = ra
                hdu_astro_bkg[3].header['CRVAL2'] = dec

                hdu_astro_bkg[1].data['RA'] = ra
                hdu_astro_bkg[1].data['DEC'] = dec

                hdu_astro_bkg.writeto(path + 'astro_bkg.simput',
                                     overwrite= True)
                astro_bkg_simput = path + 'astro_bkg.simput'

            if cosmic_bkg_simput is not None : 
                hdu_cosmic_bkg = fits.open(cosmic_bkg_simput)
                hdu_cosmic_bkg[3].header['CRVAL1'] = ra
                hdu_cosmic_bkg[3].header['CRVAL2'] = dec

                hdu_cosmic_bkg[1].data['RA'] = ra
                hdu_cosmic_bkg[1].data['DEC'] = dec

                hdu_cosmic_bkg.writeto(path + 'cosmic_bkg.simput',
                                     overwrite= True)
                cosmic_bkg_simput = path + 'cosmic_bkg.simput'

            command = ['sixtesim',
                        'ImpactList='+piximpfile,
                        'XMLFile='+std_xmlfile,
                        'Background=yes',
                        'RA={}'.format(ra),
                        'Dec={}'.format(dec),
                        'Simput='+simputfile+((astro_bkg_simput or '') and ',' + astro_bkg_simput)+((cosmic_bkg_simput or '') and ',' + cosmic_bkg_simput), 
                        'Exposure=%g'%exposure,
                        'clobber=yes',
                        'EvtFile=%s' % eventfile]

            print('Command that is being executed : %s' % ', '.join(map(str, command))
                )
            list_w.append(subprocess.Popen(command))



            """
            #The background is included only once in one simulation (otherwise nparts*expected background)
            if (astro_bkg_simput is None) and (cosmic_bkg_simput is None):
                command = ['sixtesim',
                                            'ImpactList='+piximpfile,
                                            'XMLFile='+std_xmlfile,
                                            'Background=yes',
                                            'RA={}'.format(ra),
                                            'Dec={}'.format(dec),
                                            'Simput='+simputfile, 
                                            'Exposure=%g'%exposure,
                                            'clobber=yes',
                                            'EvtFile=%s' % eventfile]

                list_w.append(subprocess.Popen(['sixtesim',
                                            'ImpactList='+piximpfile,
                                            'XMLFile='+std_xmlfile,
                                            'Background=yes',
                                            'RA={}'.format(ra),
                                            'Dec={}'.format(dec),
                                            'Simput='+simputfile, 
                                            'Exposure=%g'%exposure,
                                            'clobber=yes',
                                            'EvtFile=%s' % eventfile]))

            elif (astro_bkg_simput is not None) and (cosmic_bkg_simput is None):
                list_w.append(subprocess.Popen(['sixtesim',
                                            'ImpactList='+piximpfile,
                                            'XMLFile='+std_xmlfile,
                                            'Background=yes',
                                            'RA={}'.format(ra),
                                            'Dec={}'.format(dec),
                                            'Simput='+simputfile+','+astro_bkg_simput,
                                            'Exposure=%g'%exposure,
                                            'clobber=yes',
                                            'EvtFile=%s' % eventfile]))

            elif (astro_bkg_simput is None) and (cosmic_bkg_simput is not None):
                list_w.append(subprocess.Popen(['sixtesim',
                                            'ImpactList='+piximpfile,
                                            'XMLFile='+std_xmlfile,
                                            'Background=yes',
                                            'RA={}'.format(ra),
                                            'Dec={}'.format(dec),
                                            'Simput='+simputfile+','+cosmic_bkg_simput,
                                            'Exposure=%g'%exposure,
                                            'clobber=yes',
                                            'EvtFile=%s' % eventfile]))
            else:
                list_w.append(subprocess.Popen(['sixtesim',
                                            'ImpactList='+piximpfile,
                                            'XMLFile='+std_xmlfile,
                                            'Background=yes',
                                            'RA={}'.format(ra),
                                            'Dec={}'.format(dec),
                                            'Simput='+simputfile+','+astro_bkg_simput+','+cosmic_bkg_simput,
                                            'Exposure=%g'%exposure,
                                            'clobber=yes',
                                            'EvtFile=%s' % eventfile]))
            """

        else:
            print('Command that is being executed : sixtesim',
                'ImpactList='+piximpfile,
                'XMLFile='+std_xmlfile,
                'Background=no',
                'RA={}'.format(ra),
                'Dec={}'.format(dec),
                'Simput='+simputfile,
                'Exposure=%g'%exposure,
                'clobber=yes',
                'EvtFile=%s' % eventfile)

            list_w.append(subprocess.Popen(['sixtesim',
                                            'ImpactList='+piximpfile,
                                            'XMLFile='+std_xmlfile,
                                            'Background=no',
                                            'RA={}'.format(ra),
                                            'Dec={}'.format(dec),
                                            'Simput='+simputfile,
                                            'Exposure=%g'%exposure,
                                            'clobber=yes',
                                            'EvtFile=%s' % eventfile]))
        print("Started %d" % i)
    for w in list_w:
         w.communicate()

run_sixte_sim_notebook(nparts, path='/xifu/home/mola/xifu_cluster_sim/clusters/obs5_reproduction/', ph_list_prefix='ph_list', evt_file_prefix='evt_list', exposure=100000.0, ra=0.0, dec=0.0, std_xmlfile='/data/xifu/usr/SIXTE/share/sixte/instruments/athena/xifudev/xifu_baseline.xml', astro_bkg_simput=None, cosmic_bkg_simput=None, background=False)

Function to launch SIXTE on a notebook (single core) using the photon lists generated for a cluster sim. Will overwrite existing event files.
Matches the syntax used in SIXTE 3.0.5

Parameters:

Name Type Description Default
nparts int

number of parts of photon lists

required
path str

Directory in which to look for the photon lists

'/xifu/home/mola/xifu_cluster_sim/clusters/obs5_reproduction/'
ph_list_prefix str

Prefix to use for the simput file names

'ph_list'
evt_file_prefix str

Prefix to use for the event file names

'evt_list'
exposure float

Exposure to use for the photon generation

100000.0
ra float

Right ascension of the pointing

0.0
dec float

Declination of the pointing

0.0
std_xmlfile str

Standard XML file to use for the simulations

'/data/xifu/usr/SIXTE/share/sixte/instruments/athena/xifudev/xifu_baseline.xml'
background bool

Option to include NXB

False
astro_bkg_simput str

Path to simput file with astrophysical background

None
cosmic_bkg_simput str

Path to simout file with cosmic AGNs

None
Source code in src/xifu_cluster_sim/run_sixte.py
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
def run_sixte_sim_notebook(nparts,
                        path = '/xifu/home/mola/xifu_cluster_sim/clusters/obs5_reproduction/',
                        ph_list_prefix="ph_list",
                        evt_file_prefix='evt_list',
                        exposure=1e5,
                        ra=0.,
                        dec=0.,
                        std_xmlfile='/data/xifu/usr/SIXTE/share/sixte/instruments/athena/xifudev/xifu_baseline.xml',
                        astro_bkg_simput=None, 
                        cosmic_bkg_simput=None, 
                        background=False):
    '''
    Function to launch SIXTE on a notebook (single core) 
    using the photon lists generated for a cluster sim.
    Will overwrite existing event files.  
    Matches the syntax used in SIXTE 3.0.5

    Parameters:
        nparts (int): number of parts of photon lists
        path (str): Directory in which to look for the photon lists
        ph_list_prefix (str): Prefix to use for the simput file names
        evt_file_prefix (str): Prefix to use for the event file names
        exposure (float): Exposure to use for the photon generation
        ra (float): Right ascension of the pointing
        dec (float): Declination of the pointing
        std_xmlfile (str): Standard XML file to use for the simulations
        background (bool): Option to include NXB
        astro_bkg_simput (str): Path to simput file with astrophysical background
        cosmic_bkg_simput (str): Path to simout file with cosmic AGNs
    '''

    for i in range(nparts):
        proc_outdir = path+'/part%d/' % (i)
        simputfile = proc_outdir+ph_list_prefix+'_%d.fits' % (i)
        eventfile = proc_outdir+evt_file_prefix+'_%d.fits' % (i)
        piximpfile = eventfile.replace('event','impact').replace('.evt','.piximp')
        if i==0 and background==True:
            #The background is included only once in one simulation (otherwise nparts*expected background)
            if (astro_bkg_simput is None) and (cosmic_bkg_simput is None):
                subprocess.check_call(['sixtesim',
                                            'ImpactList='+piximpfile,
                                            'XMLFile='+std_xmlfile,
                                            'Background=yes',
                                            'RA={}'.format(ra),
                                            'Dec={}'.format(dec),
                                            'Simput='+simputfile, 
                                            'Exposure=%g'%exposure,
                                            'clobber=yes',
                                            'EvtFile=%s' % eventfile])

            elif (astro_bkg_simput is not None) and (cosmic_bkg_simput is None):
                subprocess.check_call(['sixtesim',
                                            'ImpactList='+piximpfile,
                                            'XMLFile='+std_xmlfile,
                                            'Background=yes',
                                            'RA={}'.format(ra),
                                            'Dec={}'.format(dec),
                                            'Simput='+simputfile+','+astro_bkg_simput,
                                            'Exposure=%g'%exposure,
                                            'clobber=yes',
                                            'EvtFile=%s' % eventfile])

            elif (astro_bkg_simput is None) and (cosmic_bkg_simput is not None):
                subprocess.check_call(['sixtesim',
                                            'ImpactList='+piximpfile,
                                            'XMLFile='+std_xmlfile,
                                            'Background=yes',
                                            'RA={}'.format(ra),
                                            'Dec={}'.format(dec),
                                            'Simput='+simputfile+','+cosmic_bkg_simput,
                                            'Exposure=%g'%exposure,
                                            'clobber=yes',
                                            'EvtFile=%s' % eventfile])
            else:
                subprocess.check_call(['sixtesim',
                                            'ImpactList='+piximpfile,
                                            'XMLFile='+std_xmlfile,
                                            'Background=yes',
                                            'RA={}'.format(ra),
                                            'Dec={}'.format(dec),
                                            'Simput='+simputfile+','+astro_bkg_simput+','+cosmic_bkg_simput,
                                            'Exposure=%g'%exposure,
                                            'clobber=yes',
                                            'EvtFile=%s' % eventfile])
        else:

            subprocess.check_call(['sixtesim',
                                            'ImpactList='+piximpfile,
                                            'XMLFile='+std_xmlfile,
                                            'Background=no',
                                            'RA={}'.format(ra),
                                            'Dec={}'.format(dec),
                                            'Simput='+simputfile,
                                            'Exposure=%g'%exposure,
                                            'clobber=yes',
                                            'EvtFile=%s' % eventfile])