ppops.OPS
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
Class representing the OPS instrument for scattering simulations. |
Functions
|
Convert signal current to digitizer bins. |
Module Contents
- class ppops.OPS.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)[source]
Class representing the OPS instrument for scattering simulations.
- Parameters:
laser_wavelength (float)
laser_power (float)
laser_polarization (str)
mirror_radius (float)
mirror_radius_of_curvature (float)
aerosol_mirror_separation (float)
pmt_control_voltage (float)
dark_current (float)
bandwidth (float)
input_current_noise (float)
- truncated_scattering_cross_section(ri, diameters, n_theta=51, n_phi=41)[source]
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.
- Parameters:
ri (complex) – Complex refractive index of the particle.
diameters (float | ArrayLike) – Diameter of the particle in micrometers.
n_theta (int, default 51) – Number of polar angle samples for integration. Should be an odd integer for Simpson’s rule.
n_phi (int, default 41) – Number of azimuthal angle samples for integration.Should be an odd integer for Simpson’s rule.
- Returns:
Truncated scattering cross-section in square micrometers.
- Return type:
np.ndarray
- estimate_signal_noise(ri, diameters, n_theta=None, n_phi=None)[source]
Estimate the signal amplitude from the scattered light incident on the OPS photomultiplier tube (PMT).
- Parameters:
ri (complex) – Complex refractive index of the particle.
diameters (float | np.ndarray) – Diameter of the particle in micrometers.
n_theta (int | None) – Number of polar angle samples for integration. If None, uses default value in truncated_scattering_cross_section.
n_phi (int | None) – Number of azimuthal angle samples for integration. If None, uses default value in truncated_scattering_cross_section.
- 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).
- Return type:
tuple[float | numpy.ndarray, float | numpy.ndarray]
- ppops.OPS.digitize_signal(signal_current, max_voltage=5, digitizer_bins=65536, feedback_resistor=2050)[source]
Convert signal current to digitizer bins.
- Parameters:
signal_current (float or np.ndarray) – Signal current in Amperes (A).
max_voltage (float, default 5) – Maximum voltage of the digitizer in Volts (V).
digitizer_bins (int, default 65536) – Number of bins in the digitizer (16-bit digitizer).
feedback_resistor (float, default 2050) – Feedback resistor value in Ohms (Ω) used in the transimpedance amplifier. Default is 2050 Ω, based on correspondence with Handix Scientific.
- Returns:
Signal amplitude in digitizer bins.
- Return type:
float or np.ndarray