needCalibRegistry: true

camera: ../hsc/camera

skytiles:
  resolutionPix: 700
  paddingArcsec: 10.0

levels:
  skyTile:
  - visit
  - ccd
  tract: patch
  visit: ccd
  sensor: none

defaultLevel: sensor

defaultSubLevels:
  skyTile: sensor
  visit: sensor
  sensor: none

# exposures and datasets which are needed for all of the mappers are defined
# in the obs_base package (in either exposures.yaml or datasets.yaml).
# Where a modification to such a dataset is required for a particular camera,
# (e.g., for a template or specialized python type), the modification will
# appear below as a partial dataset definition.

exposures:
  raw:
    template: '%(field)s/%(dateObs)s/%(pointing)05d/%(filter)s/HSC-%(visit)07d-%(ccd)03d.fits'
  postISRCCD:
    template: postISRCCD/v%(visit)07d-f%(filter)s/c%(ccd)03d.fits
  postISRCCD_uninterpolated:
    template: postISRCCD/v%(visit)07d-f%(filter)s/c%(ccd)03d-preInterp.fits
  icExp:
    template: '%(pointing)05d/%(filter)s/corr/ICEXP-%(visit)07d-%(ccd)03d.fits'
  calexp:
    template: '%(pointing)05d/%(filter)s/corr/CORR-%(visit)07d-%(ccd)03d.fits'
  fakes_calexp:
   template: '%(pointing)05d/%(filter)s/tract%(tract)d/fakes_calexp-%(visit)07d-%(ccd)03d.fits'
  revexp:
    level: Ccd
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    tables:
    - raw
    - raw_visit
    template: '%(pointing)05d/%(filter)s/corr/CORW-%(visit)07d-%(ccd)03d.fits'
  expMetadata:
    level: Ccd
    persistable: ExposureI
    python: lsst.afw.image.ExposureI
    storage: FitsStorage
    tables:
    - raw
    - raw_visit
    template: '%(pointing)05d/%(filter)s/qa/metaQaExp-%(visit)07d-000.fits'
  wcs:  # deprecated in favor of jointcal_wcs; retained for reading old outputs
    template: jointcal-results/%(tract)04d/wcs-%(visit)07d-%(ccd)03d.fits
  fcr:
    level: Ccd
    persistable: ExposureI
    python: lsst.afw.image.ExposureI
    storage: FitsStorage
    tables:
    - raw
    - raw_visit
    template: jointcal-results/%(tract)04d/fcr-%(visit)07d-%(ccd)03d.fits
  # the following is to accommodate reading in HSC stack persisted files:
  wcs_hsc:
    template: '%(pointing)05d/%(filter)s/corr/%(tract)04d/wcs-%(visit)07d-%(ccd)03d.fits'
  fcr_hsc:
    level: Ccd
    persistable: ExposureI
    python: lsst.afw.image.ExposureI
    storage: FitsStorage
    tables:
    - raw
    - raw_visit
    template: '%(pointing)05d/%(filter)s/corr/%(tract)04d/fcr-%(visit)07d-%(ccd)03d.fits'
  detj:
    columns:
    - pointing
    - filter
    - visit
    - ccd
    level: Ccd
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    tables:
    - raw
    - raw_visit
    template: '%(pointing)05d/%(filter)s/corr/%(tract)04d/DETJ-%(visit)07d-%(ccd)03d.fits'
  dcor:
    columns:
    - pointing
    - filter
    - visit
    - ccd
    level: Ccd
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    tables:
    - raw
    - raw_visit
    template: '%(pointing)05d/%(filter)s/corr/%(tract)04d/DCOR-%(visit)07d-%(ccd)03d.fits'
  calibrated_exp:
    columns:
    - pointing
    - filter
    - visit
    - ccd
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    tables:
    - raw
    - raw_visit
    template: 'calibrated/%(tract)04d/%(pointing)05d/%(filter)s/CALEXP-%(visit)07d-%(ccd)03d.fits'
  deepCoadd_directWarp:
    template: deepCoadd/%(filter)s/%(tract)d/%(patch)s/warp-%(filter)s-%(tract)d-%(patch)s-%(visit)d.fits
  deepCoadd_psfMatchedWarp:
    template: deepCoadd/%(filter)s/%(tract)d/%(patch)s/psfMatchedWarp-%(filter)s-%(tract)d-%(patch)s-%(visit)d.fits
  deepCoadd_diff:
    level: Skytile
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    tables: raw_skytile
    template: deepCoadd-diff/%(filter)s/%(tract)d/diff-%(filter)s-%(tract)d-%(patch)s.fits
  deepCoadd_tempExp_diff:
    level: Skytile
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    tables: raw_skytile
    template: deepCoadd-diff/%(filter)s/%(tract)d/%(patch)s/diff-%(filter)s-%(tract)d-%(patch)s-%(visit)d.fits
  mosaicCalib:
    columns:
    - pointing
    - filter
    - visit
    - ccd
    level: Ccd
    persistable: ExposureU
    python: lsst.afw.image.ExposureU
    storage: FitsStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/output/CALIB-%(visit)07d-%(ccd)03d-%(tract)d.fits'
  coaddTempExp:
    level: Skytile
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    tables: raw
    template: coaddTemp/%(filter)s/%(tract)d/TEMP-%(visit)07d-%(ccd)03d-%(patch)s.fits
  ossImage:
    level: Ccd
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    tables:
    - raw
    - raw_visit
    template: '%(pointing)05d/%(filter)s/thumbs/oss-%(visit)07d-%(ccd)03d.fits'
  flattenedImage:
    level: Ccd
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    tables:
    - raw
    - raw_visit
    template: '%(pointing)05d/%(filter)s/thumbs/flattened-%(visit)07d-%(ccd)03d.fits'
  deepDiff_differenceExp:
    template: 'deepDiff/%(pointing)05d/%(filter)s/DIFFEXP-%(visit)07d-%(ccd)03d.fits'
  deepDiff_warpedExp:
    template: 'deepDiff/%(pointing)05d/%(filter)s/WARPEDEXP-%(visit)07d-%(ccd)03d.fits'
  deepDiff_matchedExp:
    template: 'deepDiff/%(pointing)05d/%(filter)s/MATCHEDEXP-%(visit)07d-%(ccd)03d.fits'

calibrations:
  defects:
    columns:
    - ccd
    - taiObs
    level: Ccd
    persistable: DefectsList
    python: lsst.ip.isr.Defects
    refCols:
    - visit
    reference: raw_visit
    storage: FitsStorage
    tables: defects
    template: defects/%(calibDate)s/defects-%(calibDate)s-%(ccd)03d.fits
    validEndName: validEnd
    validRange: true
    validStartName: validStart
  bias:
    columns:
    - ccd
    - taiObs
    level: Ccd
    persistable: MaskedImageF
    python: lsst.afw.image.MaskedImageF
    refCols:
    - visit
    - filter
    reference: raw_visit
    storage: FitsStorage
    tables: bias
    template: BIAS/%(calibDate)s/NONE/BIAS-%(calibDate)s-%(ccd)03d.fits
    validEndName: validEnd
    validRange: true
    validStartName: validStart
  dark:
    columns:
    - ccd
    - taiObs
    level: Ccd
    persistable: MaskedImageF
    python: lsst.afw.image.MaskedImageF
    refCols:
    - visit
    - filter
    reference: raw_visit
    storage: FitsStorage
    tables: dark
    template: DARK/%(calibDate)s/NONE/DARK-%(calibDate)s-%(ccd)03d.fits
    validEndName: validEnd
    validRange: true
    validStartName: validStart
  flat:
    columns:
    - ccd
    - filter
    - taiObs
    filter: true
    level: Ccd
    persistable: MaskedImageF
    python: lsst.afw.image.MaskedImageF
    refCols:
    - visit
    - filter
    reference: raw_visit
    storage: FitsStorage
    tables: flat
    template: FLAT/%(calibDate)s/%(filter)s/FLAT-%(calibDate)s-%(filter)s-%(ccd)03d.fits
    validEndName: validEnd
    validRange: true
    validStartName: validStart
  fringe:
    columns:
    - ccd
    - filter
    - taiObs
    filter: true
    level: Ccd
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    refCols:
    - visit
    - filter
    reference: raw_visit
    storage: FitsStorage
    tables: fringe
    template: FRINGE/%(calibDate)s/%(filter)s/FRINGE-%(calibDate)s-%(filter)s-%(ccd)03d.fits
    validEndName: validEnd
    validRange: true
    validStartName: validStart
  bias_camera:
    template: focalplane/BIAS/%(calibDate)s/NONE/BIAS-%(calibDate)s.fits
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    level: None
  dark_camera:
    template: focalplane/DARK/%(calibDate)s/NONE/DARK-%(calibDate)s.fits
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    level: None
  flat_camera:
    template: focalplane/FLAT/%(calibDate)s/%(filter)s/FLAT-%(calibDate)s-%(filter)s.fits
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    level: None
  fringe_camera:
    template: focalplane/FRINGE/%(calibDate)s/%(filter)s/FRINGE-%(calibDate)s-%(filter)s.fits
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    level: None
  bfKernel:
    level: None
    persistable: ignored
    python: numpy.ndarray
    storage: PickleStorage
    template: BFKERNEL/brighter_fatter_kernel.pkl
  yBackground:
    level: None
    template: STRAY_LIGHT/ybackground-%(ccd)03d.fits

  sky:
    template: SKY/%(calibDate)s/%(filter)s/SKY-%(calibDate)s-%(filter)s-%(ccd)03d.fits
    python: lsst.afw.image.ExposureF
    persistable: ExposureF
    storage: FitsStorage
    level: Ccd
    tables: sky
    columns:
    - ccd
    - filter
    - taiObs
    reference: raw_visit
    refCols:
    - visit
    - filter
    filter: true
    validRange: true
    validStartName: validStart
    validEndName: validEnd
  sky_camera:
    template: focalplane/SKY/%(calibDate)s/%(filter)s/SKY-%(calibDate)s-%(filter)s.fits
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    level: None


datasets:
  icExpBackground:
    template: '%(pointing)05d/%(filter)s/corr/ICEXPBKGD-%(visit)07d-%(ccd)03d.fits'
  calexpBackground:
    template: '%(pointing)05d/%(filter)s/corr/BKGD-%(visit)07d-%(ccd)03d.fits'
  skyCorr:
    template: '%(pointing)05d/%(filter)s/corr/skyCorr-%(visit)07d-%(ccd)03d.fits'
  calexp_camera:
    template: '%(pointing)05d/%(filter)s/corr/calexp-camera-%(visit)d.fits'
  src:
    template: '%(pointing)05d/%(filter)s/output/SRC-%(visit)07d-%(ccd)03d.fits'
  source:
    template: '%(pointing)05d/%(filter)s/output/SRC-%(visit)07d-%(ccd)03d.parq'
  fakes_source:
    template: '%(pointing)05d/%(filter)s/output/fakes_SRC-%(visit)07d-%(ccd)03d.parq'
  sourceTable:
    template: '%(pointing)05d/%(filter)s/output/sourceTable-%(visit)07d-%(ccd)03d.parq'
  sourceTable_visit:
    template: '%(pointing)05d/%(filter)s/output/sourceTable-%(visit)07d.parq'
  visitSummary:
    template: '%(pointing)05d/%(filter)s/output/visitSummary-%(visit)07d.fits'
  fakes_src:
    template: '%(pointing)05d/%(filter)s/tract%(tract)d/fakes_src-%(visit)07d-%(ccd)03d.fits'
  calibrated_src:
    persistable: SourceCatalog
    python: lsst.afw.table.SourceCatalog
    storage: FitsCatalogStorage
    tables:
    - raw
    - raw_visit
    template: 'calibrated/%(tract)04d/%(pointing)05d/%(filter)s/CALSRC-%(visit)07d-%(ccd)03d.fits'
  transformed_src:
    persistable: SourceCatalog
    python: lsst.afw.table.BaseCatalog
    storage: FitsCatalogStorage
    tables:
    - raw
    - raw_visit
    template: '%(pointing)05d/%(filter)s/output/TRSRC-%(visit)07d-%(ccd)03d.fits'
  icMatch:
    persistable: BaseCatalog
    python: lsst.afw.table.BaseCatalog
    storage: FitsCatalogStorage
    tables:
    - raw
    - raw_visit
    template: '%(pointing)05d/%(filter)s/output/MATCH-%(visit)07d-%(ccd)03d.fits'
  fakeSourceCat:
    template: '%(pointing)05d/%(filter)s/corr/CORR-%(visit)07d-%(ccd)03d_fakeCat.parq'

  srcMatch:
    template: '%(pointing)05d/%(filter)s/output/SRCMATCH-%(visit)07d-%(ccd)03d.fits'
  srcMatchFull:
    template: '%(pointing)05d/%(filter)s/output/SRCMATCHFULL-%(visit)07d-%(ccd)03d.fits'
  icSrc:
    template: '%(pointing)05d/%(filter)s/output/ICSRC-%(visit)07d-%(ccd)03d.fits'
  donutSrc:
    template: '%(pointing)05d/%(filter)s/output/DONUTSRC-%(visit)07d-%(ccd)03d.fits'
  photoCalib:  # deprecated in favor of jointcal_photoCalib; retained for reading old outputs
    template: jointcal-results/%(tract)04d/photoCalib-%(visit)07d-%(ccd)03d.fits
  jointcal_wcs:  # astrometric calibration produced by jointcal/meas_mosaic
    template: jointcal-results/%(filter)s/%(tract)04d/jointcal_wcs-%(visit)07d-%(ccd)03d.fits
  jointcal_photoCalib:  # photometric calibration produced by jointcal/meas_mosaic
    template: jointcal-results/%(filter)s/%(tract)04d/jointcal_photoCalib-%(visit)07d-%(ccd)03d.fits
  fgcm_photoCalib:  # photometric calibration produced by fgcm
    template: fgcm-results/%(filter)s/fgcm_photoCalib-%(visit)05d-%(ccd)03d.fits
  fgcm_tract_photoCalib:  # photometric calibration producted by fgcm (per tract)
    template: fgcm-results/%(filter)s/%(tract)04d/fgcm_photoCalib-%(visit)05d-%(ccd)03d.fits
  transmission_sensor:   # wavelength-dependent throughput due to the sensor, in post-ISR CCD coordinates
    template: 'transmission/sensor-%(ccd)03d.fits'
  transmission_atmosphere_fgcm:
    template: fgcm-results/transmission/atmosphere_%(visit)07d.fits
  transmission_atmosphere_fgcm_tract:
    template: fgcm-results/transmission/%(tract)04d/atmosphere_%(visit)07d.fits
  log:
    persistable: None
    python: str
    storage: TextStorage
    template: '%(pointing)05d/%(filter)s/logs/run.log'
  logDir:
    persistable: None
    python: str
    storage: None
    template: '%(pointing)05d/%(filter)s/logs'
  deepCoadd_diffsrc:
    persistable: SourceCatalog
    python: lsst.afw.table.SourceCatalog
    storage: FitsCatalogStorage
    tables: raw_skytile
    template: deepCoadd-diff/%(filter)s/%(tract)d/diffsrc-%(filter)s-%(tract)d-%(patch)s.fits
  deepCoadd_tempExp_diffsrc:
    persistable: SourceCatalog
    python: lsst.afw.table.SourceCatalog
    storage: FitsCatalogStorage
    tables: raw_skytile
    template: deepCoadd-diff/%(filter)s/%(tract)d/%(patch)s/diffsrc-%(filter)s-%(tract)d-%(patch)s-%(visit)d.fits
  deepDiff_metadata:
    template: '%(pointing)05d/%(filter)s/deepDiff_metadata/deepDiff_metadata-%(visit)07d-%(ccd)03d.yaml'
  deepDiff_diaSrc:
    template: 'deepDiff/%(pointing)05d/%(filter)s/DIASRC-%(visit)07d-%(ccd)03d.fits'
  deepDiff_kernelSrc:
    template: 'deepDiff/%(pointing)05d/%(filter)s/KERNELSRC-%(visit)07d-%(ccd)03d.fits'
  warppsf:
    persistable: Psf
    python: lsst.afw.detection.Psf
    storage: YamlStorage
    tables: raw_skytile
    template: '%(pointing)05d/%(filter)s/warp/WARPPSF-%(visit)07d-%(ccd)03d.yaml'
  processCcd_metadata:
    template: '%(pointing)05d/%(filter)s/processCcd_metadata/%(visit)07d-%(ccd)03d.yaml'
  runIsr_metadata:
    template: '%(pointing)05d/%(filter)s/isr_metadata/%(visit)07d-%(ccd)03d.yaml'
  characterizeImage_metadata:
    template: '%(pointing)05d/%(filter)s/characterizeImage_metadata/%(visit)07d-%(ccd)03d.yaml'
  calibrate_metadata:
    template: '%(pointing)05d/%(filter)s/calibrate_metadata/%(visit)07d-%(ccd)03d.yaml'
  transformSrcMeasurement_metadata:
    persistable: PropertySet
    python: lsst.daf.base.PropertySet
    storage: YamlStorage
    tables:
    - raw
    - raw_visit
    template: '%(pointing)05d/%(filter)s/transformSrcMeasurement_metadata/%(visit)07d-%(ccd)03d.yaml'
  processCcdWithFakesDriver_metadata:
    persistable: PropertySet
    python: lsst.daf.base.PropertySet
    storage: YamlStorage
    tables:
    - raw
    - raw_visit
    template: '%(pointing)05d/%(filter)s/processCcdWithFakesDriver_metadata/%(visit)07d.yaml'
  singleFrameDriver_metadata:
    persistable: PropertySet
    python: lsst.daf.base.PropertySet
    storage: YamlStorage
    tables:
    - raw
    - raw_visit
    template: '%(pointing)05d/%(filter)s/singleFrameDriver_metadata/%(visit)07d.yaml'
  donutDriver_metadata:
    persistable: PropertySet
    python: lsst.daf.base.PropertySet
    storage: YamlStorage
    tables:
    - raw
    - raw_visit
    template: '%(pointing)05d/%(filter)s/donutDriver_metadata/%(visit)07d.yaml'
  deepCoadd_calexp_hsc:
    level: None
    persistable: ExposureF
    python: lsst.afw.image.ExposureF
    storage: FitsStorage
    tables:
    - raw
    - raw_skyTile
    template: deepCoadd/%(filter)s/%(tract)d/%(patch)s/calexp-%(filter)s-%(tract)d-%(patch)s.fits
  deepCoadd_calexp_background:
    template: deepCoadd-results/%(filter)s/%(tract)d/%(patch)s/det_bkgd-%(filter)s-%(tract)d-%(patch)s.fits
  forced_src:
    template: '%(pointing)05d/%(filter)s/tract%(tract)d/FORCEDSRC-%(visit)07d-%(ccd)03d.fits'
  forcedPhotCcd_metadata:
    template: '%(pointing)05d/%(filter)s/tract%(tract)d/forcedPhotCcd_metadata/%(visit)07d-%(ccd)03d.yaml'
  ossThumb:
    template: '%(pointing)05d/%(filter)s/thumbs/oss-%(visit)07d-%(ccd)03d.png'
  flattenedThumb:
    template: '%(pointing)05d/%(filter)s/thumbs/flattened-%(visit)07d-%(ccd)03d.png'
  calexpThumb:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/thumbs/corr-%(visit)07d-%(ccd)03d.png'
  plotMagHist:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/magHist-%(visit)07d-%(ccd)03d.png'
  plotSeeingRough:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/seeingRough-%(visit)07d-%(ccd)03d.png'
  plotSeeingRobust:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/seeingRobust-%(visit)07d-%(ccd)03d.png'
  plotSeeingMap:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/seeingMap-%(visit)07d-%(ccd)03d.png'
  plotEllipseMap:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/ellipseMap-%(visit)07d-%(ccd)03d.png'
  plotEllipticityMap:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/ellipticityMap-%(visit)07d-%(ccd)03d.png'
  plotFwhmGrid:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/fwhmGrid-%(visit)07d-%(ccd)03d.png'
  plotEllipseGrid:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/ellipseGrid-%(visit)07d-%(ccd)03d.png'
  plotEllipticityGrid:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/ellipticityGrid-%(visit)07d-%(ccd)03d.png'
  plotPsfSrcGrid:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/psfSrcGrid-%(visit)07d-%(ccd)03d.png'
  plotPsfModelGrid:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/psfModelGrid-%(visit)07d-%(ccd)03d.png'
  fitsFwhmGrid:
    persistable: ImageF
    python: lsst.afw.image.ImageF
    storage: FitsStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/fwhmGrid-%(visit)07d-%(ccd)03d.fits'
  fitsEllipticityGrid:
    persistable: ImageF
    python: lsst.afw.image.ImageF
    storage: FitsStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/ellipticityGrid-%(visit)07d-%(ccd)03d.fits'
  fitsEllPaGrid:
    persistable: ImageF
    python: lsst.afw.image.ImageF
    storage: FitsStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/ellPaGrid-%(visit)07d-%(ccd)03d.fits'
  fitsPsfSrcGrid:
    persistable: ImageF
    python: lsst.afw.image.ImageF
    storage: FitsStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/psfSrcGrid-%(visit)07d-%(ccd)03d.fits'
  fitsPsfModelGrid:
    persistable: ImageF
    python: lsst.afw.image.ImageF
    storage: FitsStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/psfModelGrid-%(visit)07d-%(ccd)03d.fits'
  tableSeeingMap:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/seeingMap-%(visit)07d-%(ccd)03d.txt'
  tableSeeingGrid:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/seeingGrid-%(visit)07d-%(ccd)03d.txt'
  focusPlot:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/focus-%(visit)07d.png'
  processFocus_config:
    persistable: Config
    python: hsc.pipe.tasks.focusTask.ProcessFocusConfig
    storage: ConfigStorage
    tables:
    - raw
    - raw_visit
    template: config/processFocus.py
  processFocus_metadata:
    persistable: PropertySet
    python: lsst.daf.base.PropertySet
    storage: YamlStorage
    tables:
    - raw
    - raw_visit
    template: '%(pointing)05d/%(filter)s/processFocus_metadata/%(visit)07d.yaml'
  focusSweepPlot:
    persistable: None
    python: builtins.str
    storage: TextStorage
    tables: raw
    template: '%(pointing)05d/%(filter)s/qa/focusSweep-%(visit)07d.png'
  processFocusSweep_config:
    persistable: Config
    python: hsc.pipe.tasks.focusTask.ProcessFocusSweepConfig
    storage: ConfigStorage
    tables:
    - raw
    - raw_visit
    template: config/processFocusSweep.py
  apPipe_metadata:
    template: '%(pointing)05d/%(filter)s/apPipe_metadata/%(visit)07d-%(ccd)03d.yaml'
  apdb_marker:
    template: '%(pointing)05d/%(filter)s/apdb/apdb_marker-%(visit)07d-%(ccd)03d.py'
  brighterFatterKernel:  # NB this is for the new cp_pipe generated kernels
    template: calibrations/brighterFatterKernel-%(ccd)03d.pkl
  brighterFatterGain:
    template: calibrations/brighterFatterGain-%(ccd)03d.pkl
  plotBrighterFatterPtc:
    template: plots/brighterFatterPtc-ccd-%(ccd)03d-amp-%(amp)s.png
  photonTransferCurveDataset:
    template: calibrations/ptc/ptcDataset-ccd%(ccd)03d.pkl
  brightStarStamps:
    template: '%(pointing)05d/%(filter)s/brightStarStamps/brightStarStamps-%(filter)s-%(visit)07d-%(ccd)03d.fits'

  # Plots for analysis QA
  plotCoadd:
    persistable: None
    python: None
    storage: MatplotlibStorage
    tables: raw
    template: plots/%(filter)s/tract-%(tract)d%(subdir)s/plot-t%(tract)d-%(filter)s-%(description)s-%(style)s.png
  plotSky:
    persistable: None
    python: None
    storage: MatplotlibStorage
    table: raw
    template: plots/%(filter)s/sky/plot-%(filter)s-%(description)s-%(style)s.png
  plotColor:
    persistable: None
    python: None
    storage: MatplotlibStorage
    table: raw
    template: plots/color/tract-%(tract)d%(subdir)s/plot-t%(tract)d-%(description)s-%(style)s.png
  plotVisit:
    persistable: None
    python: None
    storage: MatplotlibStorage
    tables: raw
    template: plots/%(filter)s/tract-%(tract)d/visit-%(visit)d%(subdir)s/plot-v%(visit)d-%(description)s-%(style)s.png
  plotFakes:
    description: "QA plots using fakes, made by fakesAnalysis as part of visitAnalysis."
    python: None
    storage: MatplotlibStorage
    tables: raw
    persistable: None
    template: plots/%(filter)s/tract-%(tract)d/visit-%(visit)d/fakesPlots/plot-v%(visit)d-%(description)s.png
  plotCompareCoadd:
    persistable: None
    python: None
    storage: MatplotlibStorage
    tables: raw
    template: plots/%(filter)s/tract-%(tract)d%(subdir)s/compare-t%(tract)d-%(filter)s-%(description)s-%(style)s.png
  plotCompareVisit:
    persistable: None
    python: None
    storage: MatplotlibStorage
    tables: raw
    template: plots/%(filter)s/tract-%(tract)d/visit-%(visit)d%(subdir)s/compareVisit-v%(visit)d-%(description)s-%(style)s.png
  # WCS assessment plot and table
  plotWcsOutlines:
    persistable: None
    python: None
    storage: MatplotlibStorage
    tables: raw
    template: plots/%(filter)s/tract-%(tract)d/visit-%(visit)d%(subdir)s/plot-v%(visit)d-%(description)s-%(style)s.png
  wcsAnalysisVisitTable:
     description: >
         Table including entries relevant for comparing the various visit-level WCS solutions.
     persistable: ignored
     storage: ParquetStorage
     python: lsst.pipe.tasks.parquetTable.ParquetTable
     template: plots/%(filter)s/tract-%(tract)d/visit-%(visit)d%(subdir)s/%(tract)d_%(visit)d_wcsAnalysis.parq
  wcsAnalysisAllVisitsPerFilterTable:
     description: >
         Table including entries relevant for comparing the various visit-level WCS solutions.
         This one is a concatenation of all tracts/visits for a given filter in the butler
         repo under consideration.
     persistable: ignored
     storage: ParquetStorage
     python: lsst.pipe.tasks.parquetTable.ParquetTable
     template: plots/%(filter)s/%(filter)s_allTractVisits_wcsAnalysis.parq

  # Verify metrics datasets
  colorAnalysis_verify_job:
    persistable: ignore  # Is not persistable yet
    template: verify/color/tract-%(tract)d%(subdir)s/colorAnalysis_verify_job.json
  visitAnalysis_verify_job:
    persistable: ignore  # Is not persistable yet
    template: verify/%(filter)s/tract-%(tract)d/visit-%(visit)d%(subdir)s/visitAnalysis_verify_job.json
  coaddAnalysis_verify_job:
    persistable: ignore  # Is not persistable yet
    template: verify/%(filter)s/tract-%(tract)d%(subdir)s/coaddAnalysis_verify_job.json

  # ProcessBrightStarsTask metadata
  processBrightStars_metadata:
    template: '%(pointing)05d/%(filter)s/processBrightStars_metadata/%(visit)07d-%(ccd)03d.yaml'

