Currently, RayTransferPipeline#D multiplies the calculated matrix by the sensitivity of the detector, which has units of [m2 sr], but is equal to 1 for some non-physical observers (PinholeCamera, VectorCamera, SightLine). This can confuse a user who has switched from SightLine to FibreOptic or from PinholeCamera to CCDArray and expects the ray transfer matrix to still be calculated in [m] but receives it in [m3 sr].
So, I suggest adding an attribute units to RayTransferPipeline#D, which can be either 'power' or 'radiance', similar to the Power and Radiance pipelines. This attribute determines whether the matrix is multiplied by sensitivity ('power') or not ('radiance'). The 'power' option will be used by default, so as not to break user code.
Currently,
RayTransferPipeline#D
multiplies the calculated matrix by the sensitivity of the detector, which has units of [m2 sr], but is equal to 1 for some non-physical observers (PinholeCamera
,VectorCamera
,SightLine
). This can confuse a user who has switched fromSightLine
toFibreOptic
or fromPinholeCamera
toCCDArray
and expects the ray transfer matrix to still be calculated in [m] but receives it in [m3 sr].So, I suggest adding an attribute
units
toRayTransferPipeline#D
, which can be either 'power' or 'radiance', similar to the Power and Radiance pipelines. This attribute determines whether the matrix is multiplied by sensitivity ('power') or not ('radiance'). The 'power' option will be used by default, so as not to break user code.