Chandra-MARX / marx

Chandra X-ray Observatory ray-trace simulator
http://space.mit.edu/cxc/marx/
5 stars 4 forks source link

SIMPUT format source #22

Closed hamogu closed 8 years ago

hamogu commented 8 years ago

MARX currently provides a couple of build-in sources with simple geometric properties (point, disk, string), for more complicated structures there is the "IMAGE" source that allows an image as input. However, each source has a constant spectrum, i.e. even for an arbitrary IMAGE input the spectrum is going to be the same everywhere. More complex simulations can be build up by concatenating different marx simulations (e.g. http://space.mit.edu/cxc/marx/examples/marxcat/marxcat.html) or by a "USER" source (user compiled shared library with a defined interface that is dynamically linked).

The marxcat approach gets unwieldy for combining more than a few sources (or one source with more than a few different count rates at different times), the "USER" source requires writing C code - which many user will not do. So, I'm working on a "SIMPUT" source that supports the new HEASARC SIMPUT (simulation input) format: http://hea-www.harvard.edu/heasarc/formats/simput-1.1.0.pdf Applications I have in mind are complex source geometries like sources with dist scattering halos or sources where the lightcurve is important such as planetary transits. Also, I think (i) the standard is done reasonably well, but for the community to adopt it there need to be simulation programs that use it and (ii) the sixty simulator (by Joern Wilms group) for Athena and e-ROSITA will use this format. It'd be useful to support the same format for Chandra simulations, too.

The actual photon generation will be done by the simput code written by Joern Wilms group. At first, I hoped to implement that as a "USER" source and just provide the code for that independent of MARX. As it turns out, that's not quite so simple, because simput uses absolute RA, DEC coordinates for rays, while MARX sources are always relative to the aimpoint. So, changes in MARX are necessary. On the other hand, I don't want marx to depend on the simput library because that would drag in quite a number of other dependencies.