ppops.OPS ========= .. py:module:: ppops.OPS .. autoapi-nested-parse:: OPS.py --------- Defines the OpticalParticleSpectrometer class for simulating Mie scattering intensity collected by the OPS instrument. The class includes methods to compute the truncated scattering cross-section based on the instrument's geometry and optical properties. The implementation uses numerical integration over the instrument's angular acceptance, leveraging Mie scattering calculations from mie_modules.py and geometric transformations from geometry.py. Classes ------- .. autoapisummary:: ppops.OPS.OpticalParticleSpectrometer Functions --------- .. autoapisummary:: ppops.OPS.digitize_signal Module Contents --------------- .. py:class:: OpticalParticleSpectrometer(laser_wavelength = 0.405, laser_power = 70, laser_polarization = 'horizontal', mirror_radius = 12.5, mirror_radius_of_curvature = 20.0, aerosol_mirror_separation = 14.229, pmt_control_voltage = 0.619, dark_current = detector.H10720_110_DARK_CURRENT, bandwidth = detector.BANDWIDTH, input_current_noise = detector.TIA60_INPUT_CURRENT_NOISE) Class representing the OPS instrument for scattering simulations. .. py:attribute:: laser_wavelength :value: 0.405 .. py:attribute:: laser_power :value: 70 .. py:attribute:: laser_polarization :value: 'horizontal' .. py:attribute:: mirror_radius :value: 12.5 .. py:attribute:: mirror_radius_of_curvature :value: 20.0 .. py:attribute:: aerosol_mirror_separation :value: 14.229 .. py:attribute:: y0 :value: 14.229 .. py:attribute:: h :value: 9.841494995995994 .. py:attribute:: pmt_control_voltage :value: 0.619 .. py:attribute:: dark_current :value: 1e-09 .. py:attribute:: bandwidth :value: 4000000.0 .. py:attribute:: input_current_noise :value: 4.8e-12 .. py:attribute:: mirror_reflectivity :value: 0.8 .. py:attribute:: anode_radiant_sensitivity .. py:method:: truncated_scattering_cross_section(ri, diameters, n_theta = 51, n_phi = 41) Simulates OPS scattering and computed truncated cross-sections. This function performs a numerical integration of Mie-scattered intensity over the instrument's angular field of view, computing the total light collected by the OPS mirror. :param ri: Complex refractive index of the particle. :type ri: complex :param diameters: Diameter of the particle in micrometers. :type diameters: float | ArrayLike :param n_theta: Number of polar angle samples for integration. Should be an odd integer for Simpson's rule. :type n_theta: int, default 51 :param n_phi: Number of azimuthal angle samples for integration.Should be an odd integer for Simpson's rule. :type n_phi: int, default 41 :returns: Truncated scattering cross-section in square micrometers. :rtype: np.ndarray .. py:method:: estimate_signal_noise(ri, diameters, n_theta = None, n_phi = None) Estimate the signal amplitude from the scattered light incident on the OPS photomultiplier tube (PMT). :param ri: Complex refractive index of the particle. :type ri: complex :param diameters: Diameter of the particle in micrometers. :type diameters: float | np.ndarray :param n_theta: Number of polar angle samples for integration. If None, uses default value in truncated_scattering_cross_section. :type n_theta: int | None :param n_phi: Number of azimuthal angle samples for integration. If None, uses default value in truncated_scattering_cross_section. :type n_phi: int | None :returns: * **signal** (*float or np.ndarray*) -- Estimated signal amplitude in units of Amperes (A). * **noise** (*float or np.ndarray*) -- Estimated noise amplitude in units of Amperes (A). .. py:function:: digitize_signal(signal_current, max_voltage = 5, digitizer_bins = 65536, feedback_resistor = 2050) Convert signal current to digitizer bins. :param signal_current: Signal current in Amperes (A). :type signal_current: float or np.ndarray :param max_voltage: Maximum voltage of the digitizer in Volts (V). :type max_voltage: float, default 5 :param digitizer_bins: Number of bins in the digitizer (16-bit digitizer). :type digitizer_bins: int, default 65536 :param feedback_resistor: Feedback resistor value in Ohms (Ω) used in the transimpedance amplifier. Default is 2050 Ω, based on correspondence with Handix Scientific. :type feedback_resistor: float, default 2050 :returns: Signal amplitude in digitizer bins. :rtype: float or np.ndarray