syntax = "proto3";

package biopb.ome;

option java_package = "biopb.ome";
option java_multiple_files = true;

// This holds the setting applied to a detector as well as a reference to the
// detector. The ID is the detector used in this case. The values stored in
// DetectorSettings represent the variable values, fixed values not modified
// during the acquisition go in Detector.
//
// Each attribute now has an indication of what type of detector it applies to.
// This is preparatory work for cleaning up and possibly splitting this object
// into sub-types.
//
message DetectorSetting {

    string detector_id = 1;

    // The Offset of the detector. [units none] {used:CCD,EMCCD}
    optional float offset = 2;

    // The Gain of the detector. [units:none] {used:CCD,EMCCD,PMT}
    optional float gain = 3;

    // The Voltage of the detector. {used:PMT}
    // Units are set by VoltageUnit.
    optional float voltage = 4;

    // The units of the Voltage of the detector - default:volts[V]
    string voltage_unit = 5;

    // The Zoom or "Confocal Zoom" or "Scan Zoom" for a detector. [units:none] {used:PMT}
    optional float zoom = 6;

    // The speed at which the detector can count pixels.  {used:CCD,EMCCD}
    // This is the bytes per second that
    // can be read from the detector (like a baud rate).
    // Units are set by ReadOutRateUnit.
    optional float readout_rate = 7;

    // The units of the ReadOutRate - default:megahertz
    string readout_rate_unit = 8;

    // Represents the number of pixels that are combined to form larger pixels. {used:CCD,EMCCD}
    // Note: was an enum in OME-XML
    optional uint32 binning = 9;

    // This is the number of sequential frames that get averaged,
    // to improve the signal-to-noise ratio. [units:none] {used:CCD,EMCCD}
    optional uint32 integration = 10;

}
