.. index:: MSC immunity, MSC emission, mode-stirred chamber MSC immunity and emission data ============================== This page documents the concrete persisted paths of MSC workflows. See :doc:`immunity-results` for the shared semantics of structured EUT events and criteria A, B, and C. Shared indices -------------- Received-power, field, and status data use the form:: data[frequency][tuner_position][position][sample] ``frequency`` is numeric in Hz. ``tuner_position`` is the string representation of a coordinate list, for example ``"[0, 30]"``. ``position`` and ``sample`` are integer indices. An entry fundamentally has ``value``, ``pfwd``, and ``pbwd``. Received and power values are power quantities; field values are vectors of three field-strength quantities. MSC immunity raw data --------------------- Access starts with:: raw = history.rawData_Immunity[description] ``pref`` contains corrected reference-antenna power, ``efield`` optional field probe values, and ``noise`` the noise measurement. ``eutstatus`` uses the same index. Its entries add ``testfield`` and optionally ``eut_event`` and ``monitor_diagnostics``. ``value`` remains the legacy-compatible EUT status, while ``eut_event`` is the structured observation. Further top-level keys are ``performance_criterion``, ``eut_event_policy``, and ``post_exposure_timeout``. ``mg`` is the persisted measurement-graph description, not an open device connection. When the threshold kernel is used, ``threshold_search[frequency]`` contains its structured frequency result. Keys such as ``status``, tested field levels, the identified threshold, and the related ``eut_event`` are kernel-specific and additive. Applications evaluating only standard exposures may ignore this field. MSC immunity evaluation ----------------------- ``Evaluate_Immunity`` writes to ``processedData_Immunity[description]``: .. list-table:: Evaluation keys :header-rows: 1 :widths: 38 62 * - Key - Meaning * - ``PMaxRec``, ``PAveRec`` - Maximum and average received power at ``[frequency][antenna_position]``. * - ``RelLoading`` - Relative EUT loading against the maximum considered chamber loading, by frequency. * - ``EUTImmunityThreshold`` - List of threshold indications by frequency. * - ``performance_criterion`` - Applied criterion ``A``, ``B``, or ``C``. * - ``performance_assessment_by_exposure`` - Assessment keyed by ``(frequency, tuner_position, position)`` tuples. * - ``performance_assessment_by_frequency`` - Summary by frequency. * - ``performance_assessment`` - Summary for the entire dataset. Each ``EUTImmunityThreshold[frequency]`` entry has ``TestField``, ``Field from Pfwd``, and ``EUT``. The first two are field-strength quantities. When no impairment was detected, ``EUT == "Maximum testfield reached"`` only indicates that the highest tested level was reached; it is not a numerically identified failure threshold. MSC emission raw data --------------------- Access starts with:: raw = history.rawData_Emission[description] ``pref`` contains corrected received power using the shared index. ``noise`` uses the same path but is normally measured at only one tuner position. Both entry types contain ``value``, ``pfwd``, and ``pbwd``; the two power keys are normally ``None`` for receiver acquisition. ``mg`` holds the measurement-graph description. MSC emission evaluation ----------------------- ``Evaluate_Emission`` writes to ``processedData_Emission[description]``. All domain result fields are indexed by frequency and, where applicable, antenna position: ``PMaxRec``, ``PAveRec`` Maximum and average received power. ``PRad_from_CCF``, ``PRad_from_CLF`` Radiated power derived from the average chamber calibration factor and the loading/insertion-loss approach, respectively. ``ERad_from_CCF``, ``ERad_from_CLF`` Field strength derived at the assumed evaluation location. ``PRad_noise``, ``ERad_noise`` Noise-related power and field floor, indexed only by frequency. ``RelLoading`` Relative EUT loading by frequency. Evaluation assumptions are stored in ``Gmax_Model`` (``"FAR"`` or ``"OATS"``), ``Assumed_hg``, and ``Assumed_RH``. The historical keys ``Asumed_Distance`` and ``Asumed_Directivity[frequency]`` contain distance and directivity. Their single-``s`` spelling is an established data contract and must not be corrected silently. Emission results can only be interpreted with the main, loading, and EUT calibrations used. Their names are currently not stored in a dedicated provenance block of the processed dataset and must therefore accompany an external export. Optional RC routing and RX capture provenance --------------------------------------------- All five MSC measurement methods accept optional ``graph_context``. For example, ``{"tmode": "AMP", "rmode": "PMATT"}`` selects amplified TX and the RX powermeter; ``RECATT`` selects the receiver in an emission measurement. Explicit routing requires a context-capable switch and currently supports one RX device/antenna pair. An autocorrelation run without an RX readout may still select the routing. Existing frequency-only configurations may omit the parameter. Each independent capture starts with the additional 20 dB RX attenuator. A valid positive device-input power at least 40 dB below ``MAXIN`` permits an unattenuated follow-up at unchanged frequency, generator level and tuner position. Equality is included (with floating-point roundoff tolerance). The calibrated difference between both paths is checked without moving the switch before physically bypassing attenuation; this also protects against a continuously emitting EUT. Missing MAXIN keeps the attenuator; invalid readings or exceeded limits abort with RF off. The full selected device group is reacquired, so forward/reflected powers and probe samples belong to the final capture, not its screening read. Switching uses ``ApplyContext`` and therefore switches generator RF off. Settling waits after switching are at least 0.5 s, or the measurement delay if longer. Protection is restored before returning from each capture, before later level, frequency or tuner changes. Capture failures and interrupts leave RF off; external state mismatches are not silently reapplied. These waits and RF gaps are equipment-response time, not EUT dwell time. Existing immunity kernels perform their dwell after capture; EUT monitoring and manual intervention remain active. The 40 dB rule is a laboratory policy, not an IEC acceptance criterion. Reference: the maintained IEC 61000-4-21 draft, clause 7, D.3.2.1 and D.4 (equipment response, dwell and power recording), and E.4 (receiver observation). New ``noise``, ``pref`` and ``efield`` sample bundles may contain optional ``rx_capture`` metadata in addition to unchanged ``value``, ``pfwd``, ``pbwd`` and ``acquisition`` fields. This also applies to calibration and autocorrelation bundles when an RX device was captured. Older bundles omit the field. It records the selected final capture, even though the operational graph has already returned to its attenuated state: .. list-table:: ``rx_capture`` schema version 1 :header-rows: 1 :widths: 35 65 * - Key - Meaning * - ``schema_version`` - Integer 1. * - ``frequency``, ``tmode``, ``rmode`` - Frequency in Hz and actual logical TX/RX modes of the stored capture. * - ``device``, ``source`` - Physical RX device node and antenna-feed graph node. * - ``attenuation_db`` - Nominal additional attenuation, 20 or 0; not the full calibrated loss. * - ``screening_input_power`` - Attenuated screening power at the device input, a Quantity in watts. * - ``maxin`` - Device-input limit as a Quantity in watts, or None when unavailable. * - ``input_power`` - Final device-input power as a Quantity in watts, before path correction. * - ``path_correction`` - Actual dimensionless power transmission (POWERRATIO) used to divide input power to obtain antenna-feed power; no second nominal 20 dB factor. * - ``threshold_db`` - Integer 40, the required screening distance below MAXIN. * - ``impedance_ohm`` - Port resistance used for voltage-to-power conversion, default 50 ohms. * - ``decision`` - ``bypass``, ``keep`` or ``maxin_unavailable``. ``measurement_acquisitions[*].run_configuration.graph_context`` stores the requested routing dictionary (empty for legacy frequency-only operation). ``rx_impedance_ohm`` is an optional graph_context setting for voltage readings: power is RMS voltage squared divided by this positive resistance. It is the instrument port resistance, not a chamber or free-space wave impedance. The configuration snapshot still records exact DOT/INI/calibration sources. No existing index hierarchy, correction formula or processed-result key changes. Receiver ``MAXIN`` uses a named extra INI channel with ``NAME = MAXIN``, ``FILE`` and ``INTERPOLATION``, like powermeter safety limits. Values should be power quantities (e.g. a data file with ``UNIT: dBm``); the limit is read through ``GetSafetyLimit("MAXIN")`` rather than a measurement-data query. RX scalar capture requires a receiver driver such as ``rec_rs_esu.py``. The spectrum trace driver ``sa_rs_esu.py`` does not implement this interface and is rejected before hardware initialization when explicit routing is requested. Existing transmitting MSC workflows (main/EUT calibration, autocorrelation, immunity) still require amplifier and forward/reflected-power paths and accept only ``tmode=AMP`` here. ``DIRECT`` and termination modes remain available through MGraph for dedicated path/amplifier tests. Unconnected power meters are therefore not treated as valid forward-power readings. Emission runs may terminate TX.