ppops.detector ============== .. py:module:: ppops.detector .. autoapi-nested-parse:: detector.py ------------ Handles detector signal and noise calculations. This module includes functions to compute the expected signal and noise levels for a detector based on the hardware specifications. Constants: - ELEMENTARY_CHARGE: Electron charge (C) - ANODE_RADIANT_SENSITIVITY: Anode radiant sensitivity (A/W) - DARK_CURRENT: Dark current noise (A) - BANDWIDTH: Bandwidth (Hz) - INPUT_CURRENT_NOISE: Preamplifier input current noise (A/√Hz) Functions: - laser_power_density(laser_power, beam_major, beam_minor): Computes the laser power density at the aerosol stream. - estimate_signal_noise(truncated_csca, laser_power): Estimates signal and noise levels for a given truncated scattering cross section and laser power. Citations: - Gao, R.S., et al. 2016. A light-weight, high-sensitivity particle spectrometer for PM2.5 aerosol measurements. Aerosol Science and Technology 50, 88-99. https://doi.org/10.1080/02786826.2015.1131809 - Thor Labs. TIA60 Transimpedance Amplifier Datasheet. https://www.thorlabs.com/drawings/c627bb63fbc792f9-BE0A1D53-FE71-D4E9-369F32E2683F2FB6/TIA60-SpecSheet.pdf - Hamamatsu Photonics. H10720 Series Photomultiplier Tube Datasheet. https://www.hamamatsu.com/content/dam/hamamatsu-photonics/sites/documents/99_SALES_LIBRARY/etd/H10720_H10721_TPMO1062E.pdf Attributes ---------- .. autoapisummary:: ppops.detector.ELEMENTARY_CHARGE ppops.detector.H10720_110_CATHODE_RADIANT_SENSITIVITY ppops.detector.H10720_110_GAIN_SLOPE ppops.detector.H10720_110_GAIN_INTERCEPT ppops.detector.H10720_110_DARK_CURRENT ppops.detector.BANDWIDTH ppops.detector.TIA60_INPUT_CURRENT_NOISE Functions --------- .. autoapisummary:: ppops.detector.anode_radiant_sensitivity ppops.detector.laser_peak_power_density ppops.detector.estimate_signal_noise Module Contents --------------- .. py:data:: ELEMENTARY_CHARGE :value: 1.602176634e-19 .. py:data:: H10720_110_CATHODE_RADIANT_SENSITIVITY :value: 110 .. py:data:: H10720_110_GAIN_SLOPE :value: 8.645 .. py:data:: H10720_110_GAIN_INTERCEPT :value: 6.299 .. py:data:: H10720_110_DARK_CURRENT :value: 1e-09 .. py:data:: BANDWIDTH :value: 4000000.0 .. py:data:: TIA60_INPUT_CURRENT_NOISE :value: 4.8e-12 .. py:function:: anode_radiant_sensitivity(PMT_control_voltage) Return the anode radiant sensitivity of the PMT in A/W. :param PMT_control_voltage: Control voltage of the PMT in volts. :type PMT_control_voltage: float :returns: Anode radiant sensitivity in A/W. :rtype: float .. py:function:: laser_peak_power_density(laser_power, beam_major = 6, beam_minor = 0.054) Return the laser peak power density at the aerosol stream. Assumes a Gaussian beam profile and that the beam is focused at the aerosol stream. Also assumes that the aerosol passes through the center of the beam where the power density is highest. The initial beam dimensions are taken from Gao et al. 2016 and the beam waist at the aerosol stream is estimated below assuming a Gaussian beam profile. The laser power density is then calculated as the laser power divided by the beam area at the aerosol stream. Horizontal beam waist at aerosol stream: spot_diameter = 4M² * λ * L / (π * w_initial) = 0.054 mm where λ = 405 nm, L = 75 mm, w_initial_horizontal = 1 mm, M² = 1.4 (assumed). Vertical beam waist at aerosol stream: spot_diameter = 2M² * λ * L / (π * w_initial) where L = 25 mm, w_initial_vertical = 3 mm. DOF = 2 * π * (spot_diameter / 2)² / (M² * λ) beam_diameter = spot_diameter * sqrt(1 + (distance_from_lens - L)² / (DOF/2)²) = 6 mm :param laser_power: Laser power in mW. :type laser_power: float :param beam_major: Length of major axis of the oval laser beam at the aerosol stream in millimeters. Default is 6. :type beam_major: float, optional :param beam_minor: Length of minor axis of the oval laser beam at the aerosol stream in millimeters. Default is 0.054. :type beam_minor: float, optional :returns: **power_density** -- Optical power density (W/µm^2). :rtype: float .. rubric:: References Gao, R.S., et al. 2016. A light-weight, high-sensitivity particle spectrometer for PM2.5 aerosol measurements. Aerosol Science and Technology 50, 88-99. https://doi.org/10.1080/02786826.2015.1131809 Laser spot size and beam waist calculator and formulas. Gentec. (n.d.). https://www.gentec-eo.com/laser-calculators/beam-waist-spot-size .. py:function:: estimate_signal_noise(ops, truncated_csca) Return signal and noise estimates. Computes signal and noise estimates for a given truncated single scattering cross section and laser power. This function uses the maximum gain settings for the PMT and preamplifier. This is expected to be larger than the actual signal and noise levels in typical operation, but provides a useful upper bound. :param ops: Instance of the OpticalParticleSpectrometer class. :type ops: OpticalParticleSpectrometer :param truncated_csca: Truncated scattering cross section in units of µm². :type truncated_csca: float or np.ndarray :returns: * **signal** (*float or ndarray*) -- Estimated signal current (A). * **noise** (*float or ndarray*) -- Estimated noise (A).