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

OpticalParticleSpectrometer

Class representing the OPS instrument for scattering simulations.

Functions

digitize_signal(signal_current[, max_voltage, ...])

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)

laser_wavelength = 0.405[source]
laser_power = 70[source]
laser_polarization = 'horizontal'[source]
mirror_radius = 12.5[source]
mirror_radius_of_curvature = 20.0[source]
aerosol_mirror_separation = 14.229[source]
y0 = 14.229[source]
h = 9.841494995995994[source]
pmt_control_voltage = 0.619[source]
dark_current = 1e-09[source]
bandwidth = 4000000.0[source]
input_current_noise = 4.8e-12[source]
mirror_reflectivity = 0.8[source]
anode_radiant_sensitivity[source]
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