All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gem.config.SmartGcal.scala Maven / Gradle / Ivy

The newest version!
// Copyright (c) 2016-2020 Association of Universities for Research in Astronomy, Inc. (AURA)
// For license information see LICENSE or https://opensource.org/licenses/BSD-3-Clause

package gem
package config

import gem.enum._
import gsp.math.Wavelength

/** Marker trait for smart gcal search keys used to lookup corresponding gcal
  * configurations.
  */
sealed trait SmartGcalSearchKey

/** Marker trait for smart gcal definition keys used to register entries in
  * a smart gcal lookup table.
  */
sealed trait SmartGcalDefinitionKey

object SmartGcalKey {

  final case class Flamingos2(
    disperser: Option[F2Disperser],
    filter:    F2Filter,
    fpu:       Option[F2Fpu]
  ) extends SmartGcalSearchKey with SmartGcalDefinitionKey

  final case class GmosCommon[D, F, U](
    disperser: Option[D],
    filter:    Option[F],
    fpu:       Option[U],
    xBinning:  GmosXBinning,
    yBinning:  GmosYBinning,
    ampGain:   GmosAmpGain
  )

  type GmosNorthCommon = GmosCommon[GmosNorthDisperser, GmosNorthFilter, GmosNorthFpu]
  type GmosSouthCommon = GmosCommon[GmosSouthDisperser, GmosSouthFilter, GmosSouthFpu]

  final case class GmosNorthSearch(
    gmos:       GmosNorthCommon,
    wavelength: Option[Wavelength]
  ) extends SmartGcalSearchKey

  final case class GmosSouthSearch(
    gmos:       GmosSouthCommon,
    wavelength: Option[Wavelength]
  ) extends SmartGcalSearchKey

  final case class GmosDefinition[D, F, U](
    gmos:            GmosCommon[D, F, U],
    wavelengthRange: (Wavelength, Wavelength)
  )

  type GmosNorthDefinition = GmosDefinition[GmosNorthDisperser, GmosNorthFilter, GmosNorthFpu]
  type GmosSouthDefinition = GmosDefinition[GmosSouthDisperser, GmosSouthFilter, GmosSouthFpu]

  final case class Gnirs(
    acquisitionMirror: GnirsAcquisitionMirror,
    pixelScale:        GnirsPixelScale,
    disperser:         GnirsDisperser,
    fpu:               Either[GnirsFpuOther, GnirsFpuSlit],
    prism:             GnirsPrism,
    wellDepth:         GnirsWellDepth
  )

  final case class GnirsSearch(
    gnirs: Gnirs,
    wavelength: Wavelength
  ) extends SmartGcalSearchKey

  final case class GnirsDefinition(
    gnirs: Gnirs,
    wavelengthRange: (Wavelength, Wavelength)
  ) extends SmartGcalDefinitionKey

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy