the call: butler.get(flat, dataid(visit=n, ccdnum=m)) will look up data in the
'flat' dataset type. In the case where the information is not available, need
to consult the 'reference' dataset type, and look it up there, like so:
1. dataid is used to generate a location using the raw dataset type. (because it
doesn't exist in flat, and we wish policy:reference was "raw", but actually it's
raw_visit which is a subset of the raw table that is optimized to go faster but
2. generate the location, it should be a fits file. in this case it has a bracket
extension. call lsst.afw.image.readmetadata (or similar in astroypy) on the
location (with brackets or not) and it will get the right fits header.
3. depending on the camera, the header may need to be converted (numeric to string
or vice versa). so we need a hook for the mapper subclass to be able to do
something (transform) the header value.
4. then it gets fed into the existing calibrationMapping subclass that does the
CalibrationMapping gets the data via the registry (that I need to get via
metadata) in lookup, at line 348:
lookups = self.refRegistry.executeQuery(columns, self.reference,
where, None, values)
it passes it to Mapping.lookup and THAT uses the validity lookup - using
self.obsTimeName and self.range which is set in the CalibrationMapping ctor,
based on the policy.
to create the test:
1. modify the policy to look more like the obs_decam policy:
subpolicy needs template, validTime, etc
policy would ask for the MJD-OBS - the julian date since (a very long time ago),
it's modified because it's had a (fixed, known) number subtracted from it.
or, try using https://github.com/lsst/obs_cfht