.. _instrument: Instrument Model ======================= IN PROGRESS The Instrument model is described in `Data Dictionary Instrument Configuration `_. The BaseInstrumentModel defines each physical instrument and the InstrumentInfoModel defines the configuration settings used for one or more experiments. .. mermaid:: classDiagram BaseInstrumentModel <|-- InstrumentInfoModel InstrumentInfoModel "1" *--"1" InstrumentProjectionRunSchema InstrumentInfoModel "1" *--"N<=3" InstrumentGoniometerAngleModel class BaseInstrumentModel{ <> +String facility +String filesystem_name +String reference_name +create() } class InstrumentInfoModel{ +String state_info +List~Number~[1|2] wavelength +String raw_file_format +List~InstrumentGoniometerAngleModel~ goniometer_settings +InstrumentProjectionRunSchema run_schema +create() } class InstrumentGoniometerAngleModel{ +String name +String reference_name +List~Number~[3] direction +Number sense +Bool used_in_goniometer_setting +get_angle_field_name() } class InstrumentProjectionRunSchema{ +grouping_field +run_number_field +scale_field } The InstrumentInfo is created from the InstrumentConfiguration Settings. Based on the information, we can create the following instruments: * SNAP * CORELLI * TOPAZ * MANDI * WAND2 * DEMAND The InstrumentInfoModel model captures the changes in the configuration parameters for a specific instrument, e.g. DEMAND can have two InstrumentInfoObjects with different parameters. The state_info (optionally) includes the description of the change/upgrade for that instrument. .. mermaid:: classDiagram InstrumentInfoModel <|-- SNAPInfo InstrumentInfoModel <|-- CORELLIInfo InstrumentInfoModel <|-- TOPAZInfo InstrumentInfoModel <|-- MANDIInfo InstrumentInfoModel <|-- WAND2Info InstrumentInfoModel <|-- DEMANDInfo class InstrumentInfoModel{ <> } class SNAPInfo{ <> } class CORELLIInfo{ <> } class TOPAZInfo{ <> } class MANDIInfo{ <> } class WAND2Info{ <> } class DEMANDInfo{ <> }