As the instrument design is in flux, we should abstract away certain instrument properties such as the resolution (spectral and spatial) and pinhole location. Instead, these should be derived from the parts of the instrument design that are changing, e.g. the pinhole to detector distance and the grating to pinhole distance.
One idea is to put these various design parameters on a separate configuration class and then have the Channel class ingest this instrument configuration. We would want to store specific instances of this design configuration in this package, starting with a nominal configuration and then adding additional configurations as various properties are measured, designs finalized, etc. One idea is to have this configuration be a dataclass and then to have this dataclass be an argument to the Channel constructor.
As the instrument design is in flux, we should abstract away certain instrument properties such as the resolution (spectral and spatial) and pinhole location. Instead, these should be derived from the parts of the instrument design that are changing, e.g. the pinhole to detector distance and the grating to pinhole distance.
One idea is to put these various design parameters on a separate configuration class and then have the
Channel
class ingest this instrument configuration. We would want to store specific instances of this design configuration in this package, starting with a nominal configuration and then adding additional configurations as various properties are measured, designs finalized, etc. One idea is to have this configuration be adataclass
and then to have thisdataclass
be an argument to theChannel
constructor.