Last modified: 18 December 2023

How can I simulate a PHA data set in Sherpa, with/without added Poisson noise? [Updated]


The Sherpa fake_pha function is available for simulating a PHA data set, given a user-specified source model, integration time, and instrument response (ARF and RMF or RSP). The model parameters - which may have been previously fitted to an actual data set - are used to create the fake spectrum, which contains Poisson noise determined by the model parameters and integration time.

If you have already loaded in a PHA dataset along with a response and a source model then this can be done with a call like the following (for a 10 ks observation):

sherpa> fake_pha(1, arf=get_arf(), rmf=get_rmf(), exposure=10000)

[New] New in CIAO 4.16 is the ability to change the method used to simulate the data from a model. The default is to use a Poisson routine (sherpa.utils.poisson_noise), but it can be set to a routine that just returns the model values, after converting to the nearest-integer value, rather than simulating noise:

sherpa> nonoise = lambda values, rng: np.rint(values)
sherpa> fake_pha(1, arf=get_arf(), rmf=get_rmf(), exposure=10000, method=nonoise)

For more information see the simulations section of the Sherpa threads.