Light & Noise
Once the telescope has been built and the target prepared, we can finally propagate the light trough the instrument to the detector.
Propagate Light
The light propagation is perform by PropagateTargetLight
that calls the Instrument
method propagate_target()
. This method is implemented in each instrument type
(Photometer
or Spectrometer
)
and describe how the target light is detected by the telescope, given the total transmission from all the optical elements and foregrounds.
Also the foreground light is propagated. This is a diffuse source of light and is handled by PropagateForegroundLight
.
In this case we use the Instrument
method propagate_diffuse_foreground()
.
This is the same for all the channel type and is the same procedure used for the optical path: each element radiance is multiplied for the successive element transmission.
The total transmission resulting from all the foregrounds is saved as skyTransmission.
Both the output will be added to the target output table, by UpdateTargetTable
that is included in both
PropagateTargetLight
and PropagateForegroundLight
.
As result, in the target table, that is located in the output file under the each target directory (see output description),
you will find the estimated signal from the target and from each foreground for each channel or spectral bin.
Estimate Noise
The noise estimation is perform by EstimateNoise
that apply EstimateNoiseInChannel
to each channel. EstimateNoiseInChannel
computes the multiaccum gain thank to multiaccum()
, then
the shot noise in each spectral bin using photon_noise()
, that might be multiplied by a noiseX
factor if indicated in the channel description,
the dark current noise and the read noise.
Then, other custom noise sources can be manually added by the used including them in the payload description file using customNoise
keyword.
If the noise that we want to include affects all the channel, we need to add it in the <common></common>
section;
if it concern only che channel, it can be placed in the <channel></channel>
section.
The custom noise can either be a constant value of a function of wavelength:
<customNoise>20 <name>gain </name> </customNoise>
In this case is a constant value reported in ppm.
The results are added to the target output table.
The noise is expressed as relative noise in one our time scale, so it has its own Signal
,
Noise
.
Automated tasks
All this steps, from the target preparation to the light propagation, can be summarize by the ObserveTarget
task. This tasks performs a list of actions:
PrepareTarget,
EstimateForegrounds,
PropagateForegroundLight
LoadSource
PropagateTargetLight
EstimateNoise
Another useful tool is ObserveTargetlist
that automatically iterate ObserveTarget
over all the targets.
ObserveTargetlist
also include a multi-threads options: if the -n
flag is used in ExoRad,
indicating the number of threads to use, the code will run in parallel mode, allowing the simulation of multiple target at once.
This can be very useful if we need to simulate entire target list with the same payload configuration.