This seminar covers light-matter interactions in the context of scattering and photothermal spectroscopy. We explore Rayleigh scattering from nanoparticles, dynamic light scattering (DLS), and photothermal experiments with lock-in detection.
Problem 1: Rayleigh Scattering Cross-Section
Problem Statement:
The scattering cross-section for a small sphere (radius \(a \ll \lambda\)) in the Rayleigh regime is:
where \(\varepsilon\) is the complex relative permittivity.
a) Calculate the scattering cross-section of a 20 nm gold nanoparticle at λ = 532 nm (green laser).
Use the following optical constants for gold at 532 nm: \[\varepsilon_{\text{gold}} = -4.6 + 2.4i\]
b) Compare the scattering cross-section with the geometric cross-section \(\sigma_{\text{geom}} = \pi a^2\). What is the scattering efficiency \(Q_{\text{sca}} = \sigma_{\text{sca}} / \sigma_{\text{geom}}\)?
c) Discuss: does a 20 nm gold particle scatter or absorb more at 532 nm? (Hint: check if the imaginary part of ε dominates.)
Rayleigh Scattering of 20 nm Gold Nanoparticle
==================================================
Wavelength: 532 nm
Particle radius: 20 nm
Permittivity: ε = (-4.6+2.4j)
|ε - 1|² = 37.120
|ε + 2|² = 12.520
Scattering cross-section:
σ_sca = 9.526e-01 nm² = 0.001 nm³
σ_sca = 0.000001 nm² = 3.366e-12 λ²
Geometric cross-section:
σ_geom = πa² = 1256.6 nm²
Scattering efficiency:
Q_sca = σ_sca / σ_geom = 0.001
Absorption:
Im(ε) = 2.4 (significant)
Conclusion: 20 nm Au absorbs MORE than it scatters at 532 nm
(This is why gold nanoparticles are used in photothermal applications)
Problem 2: Dynamic Light Scattering (DLS)
Problem Statement:
A 100 nm diameter polystyrene sphere undergoes Brownian motion in water at T = 25°C.
The diffusion coefficient is given by the Stokes-Einstein equation:
\[D = \frac{k_B T}{6 \pi \eta a}\]
where \(k_B = 1.38 \times 10^{-23}\) J/K is Boltzmann’s constant, \(\eta\) is the dynamic viscosity of water (~0.89 mPa·s at 25°C), and \(a\) is the particle radius.
In DLS, we measure intensity autocorrelation \(g_2(\tau) = \langle I(t) I(t+\tau) \rangle\) which decays exponentially:
\[g_2(\tau) = 1 + \beta e^{-2\Gamma \tau}\]
where \(\beta\) is a contrast factor and \(\Gamma = Dq^2\) is the decay rate, with scattering wavevector:
\[q = \frac{4\pi n}{\lambda} \sin(\theta/2)\]
a) Calculate the diffusion coefficient \(D\) for a 100 nm polystyrene sphere in water at 25°C.
b) For backscattering detection (θ = 173°) with λ = 632 nm (He-Ne laser) and water refractive index \(n = 1.33\), calculate the scattering wavevector \(q\) and decay rate \(\Gamma\).
c) Calculate the characteristic decay time \(\tau_c = 1/\Gamma\) (autocorrelation lifetime).
d) Plot the expected autocorrelation function \(g_2(\tau)\) with \(\beta = 0.05\).
Code
# Physical constantsk_B =1.38e-23# J/K, Boltzmann constantT =25+273.15# K, temperatureeta =0.89e-3# Pa·s, viscosity of water at 25°Ca =100/2# nm → radius = 50 nma_m = a *1e-9# mprint("Dynamic Light Scattering (DLS) Calculation")print("="*50)print(f"Temperature: {T:.1f} K ({T -273.15:.0f}°C)")print(f"Particle diameter: 100 nm (radius a = {a} nm)")print(f"Viscosity of water: {eta*1e3:.2f} mPa·s")# Part a): Diffusion coefficientD = k_B * T / (6* np.pi * eta * a_m)print(f"\nPart a) Diffusion coefficient:")print(f" D = {D:.3e} m²/s = {D*1e12:.2f} nm²/s")# Part b): Scattering wavevectorwavelength =632# nmn_water =1.33theta =173# degrees, backscatteringtheta_rad = np.radians(theta)q = (4* np.pi * n_water / wavelength) * np.sin(theta_rad /2)q_nm = q *1e-9# convert to nm⁻¹print(f"\nPart b) Scattering wavevector (backscattering):")print(f" λ = {wavelength} nm, θ = {theta}°")print(f" q = {q:.3e} m⁻¹ = {q_nm:.4f} nm⁻¹")# Decay rateGamma = D * q**2tau_c =1/ Gammaprint(f"\nPart c) Decay rate and lifetime:")print(f" Γ = D·q² = {Gamma:.3e} s⁻¹")print(f" τ_c = 1/Γ = {tau_c:.3e} s = {tau_c*1e6:.2f} µs")
Dynamic Light Scattering (DLS) Calculation
==================================================
Temperature: 298.1 K (25°C)
Particle diameter: 100 nm (radius a = 50.0 nm)
Viscosity of water: 0.89 mPa·s
Part a) Diffusion coefficient:
D = 4.905e-12 m²/s = 4.91 nm²/s
Part b) Scattering wavevector (backscattering):
λ = 632 nm, θ = 173°
q = 2.640e-02 m⁻¹ = 0.0000 nm⁻¹
Part c) Decay rate and lifetime:
Γ = D·q² = 3.418e-15 s⁻¹
τ_c = 1/Γ = 2.926e+14 s = 292603816782511800320.00 µs
When a nanoparticle absorbs laser light, its temperature rises. For a small spherical particle surrounded by a medium (e.g., water), the steady-state temperature increase is:
\[\Delta T = \frac{P_{\text{abs}}}{4 \pi \kappa r}\]
where \(P_{\text{abs}}\) is the absorbed power, \(\kappa\) is the thermal conductivity of the surrounding medium, and \(r\) is the distance from the particle.
a) A 40 nm gold nanoparticle absorbs \(P_{\text{abs}} = 0.5\) µW of laser power in water. Calculate the temperature rise at the particle surface (\(r = 20\) nm).
Use \(\kappa_{\text{water}} = 0.6\) W/(m·K).
b) The refractive index of water changes with temperature: \(\partial n / \partial T = -1.0 \times 10^{-4}\) K⁻¹. Calculate the refractive index change at the particle surface.
c) This refractive index perturbation can be detected via a photothermal lens effect. Why would a photothermal microscope measure a phase shift (or absorption change) when scanning over a nanoparticle?
Code
# Photothermal temperature riseP_abs =0.5e-6# W, absorbed powerkappa_water =0.6# W/(m·K)r =20e-9# m, distance (particle surface)print("Photothermal Temperature Rise")print("="*50)print(f"Absorbed power: P_abs = {P_abs*1e6:.1f} µW")print(f"Particle radius: 20 nm")print(f"Thermal conductivity of water: κ = {kappa_water} W/(m·K)")# Part a): temperature riseDelta_T = P_abs / (4* np.pi * kappa_water * r)print(f"\nPart a) Temperature rise at particle surface:")print(f" ΔT = {Delta_T:.1f} K = {Delta_T:.1f} °C")# Part b): refractive index changedn_dT =-1.0e-4# K⁻¹Delta_n = dn_dT * Delta_Tprint(f"\nPart b) Refractive index change:")print(f" ∂n/∂T = {dn_dT:.2e} K⁻¹")print(f" Δn = (∂n/∂T) · ΔT = {Delta_n:.3e}")# Estimated refractive index perturbation sizeprint(f"\nPart c) Photothermal detection:")print(f" The temperature gradient ∇T creates a radial refractive index")print(f" gradient around the particle, acting as a weak lens.")print(f" This lens deflects the probe beam, creating a phase shift")print(f" proportional to Δn. Detection methods:")print(f" - Thermal lens microscopy: detect deflection")print(f" - Photothermal heterodyne imaging: detect phase shift")print(f" - Absorption contrast: detect out-of-phase modulation")
Photothermal Temperature Rise
==================================================
Absorbed power: P_abs = 0.5 µW
Particle radius: 20 nm
Thermal conductivity of water: κ = 0.6 W/(m·K)
Part a) Temperature rise at particle surface:
ΔT = 3.3 K = 3.3 °C
Part b) Refractive index change:
∂n/∂T = -1.00e-04 K⁻¹
Δn = (∂n/∂T) · ΔT = -3.316e-04
Part c) Photothermal detection:
The temperature gradient ∇T creates a radial refractive index
gradient around the particle, acting as a weak lens.
This lens deflects the probe beam, creating a phase shift
proportional to Δn. Detection methods:
- Thermal lens microscopy: detect deflection
- Photothermal heterodyne imaging: detect phase shift
- Absorption contrast: detect out-of-phase modulation
Problem 4: DLS Simulation (Autocorrelation from Brownian Motion)
Problem Statement:
Simulate a simplified DLS experiment:
Generate scattered light intensity from multiple scattering centers (particles) at random positions
Model Brownian motion: particles walk randomly at each time step
Compute the intensity autocorrelation function \(g_2(\tau)\) from the scattered intensity
Fit an exponential decay to extract the diffusion coefficient
Code
# DLS simulation parametersn_particles =100n_timesteps =1000timestep =1e-7# s, 100 ns per stepdiffusion_coeff = D # from Problem 2 (nm²/s)# Convert diffusion to per-step displacement# Mean squared displacement in dt: <Δr²> = 4D·dt (2D)# Standard deviation per step: σ = sqrt(2D·dt) in each dimensiondt_s = timestepdt_nm = dt_s *1e9sigma_step = np.sqrt(2* diffusion_coeff * dt_nm) # nm per stepprint("DLS Simulation (Brownian Motion)")print("="*50)print(f"Number of particles: {n_particles}")print(f"Simulation steps: {n_timesteps}")print(f"Time step: {timestep*1e6:.1f} µs")print(f"Total time: {n_timesteps * timestep*1e6:.1f} µs")print(f"Step displacement σ = {sigma_step:.3f} nm")# Initialize particle positions (2D)positions = np.random.uniform(0, 500, (n_particles, 2, n_timesteps))# Brownian motion: random walkfor t inrange(1, n_timesteps): displacement = np.random.normal(0, sigma_step, (n_particles, 2)) positions[:, :, t] = positions[:, :, t-1] + displacement# Simulate scattered intensity at each time step# Assume simple model: intensity is proportional to sum of waves from all particles# For simplicity, use uniform scattering from each particlescattered_intensity = np.zeros(n_timesteps)for t inrange(n_timesteps):# Phase from particle position: φ ~ q·r# For backscattering, q is large phases = q * (positions[:, 0, t] *1e-9) # convert nm to m# Scattered field: E ~ sum(exp(i·φ)) E = np.sum(np.exp(1j* phases))# Intensity: I = |E|² scattered_intensity[t] = np.abs(E)**2# Compute autocorrelation g2(tau)max_lag =200g2_sim = np.zeros(max_lag)for lag inrange(max_lag): I1 = scattered_intensity[:-lag] if lag >0else scattered_intensity I2 = scattered_intensity[lag:] mean_I = np.mean(scattered_intensity) g2_sim[lag] = np.mean(I1 * I2) / (mean_I**2)tau_lags = np.arange(max_lag) * timestepprint(f"\nAutocorrelation computed for {max_lag} lags")
DLS Simulation (Brownian Motion)
==================================================
Number of particles: 100
Simulation steps: 1000
Time step: 0.1 µs
Total time: 100.0 µs
Step displacement σ = 0.000 nm
Autocorrelation computed for 200 lags
/var/folders/t4/_9qps8wj56jc60nwkr3nrcr00000gn/T/ipykernel_10136/1644749267.py:8: OptimizeWarning:
Covariance of the parameters could not be estimated
/var/folders/t4/_9qps8wj56jc60nwkr3nrcr00000gn/T/ipykernel_10136/1644749267.py:30: UserWarning:
Data has no positive values, and therefore cannot be log-scaled.
Figure saved to img/dls_simulation.png
Problem 5: Lock-in Detection
Problem Statement:
A lock-in amplifier detects signals at a specific modulation frequency by multiplying the input signal by a reference oscillator at that frequency and low-pass filtering the result.
Mathematically, for a signal \(s(t) = A \sin(\omega_0 t + \phi_s)\) and reference \(r(t) = \cos(\omega_0 t)\):
a) Derive why multiplying by the reference and low-pass filtering extracts the signal amplitude and phase.
b) Consider a photothermal signal with amplitude \(A_{\text{signal}} = 10\) mV at modulation frequency \(f_0 = 1\) kHz, plus white noise with amplitude \(\sigma_{\text{noise}} = 100\) mV.
Without lock-in (direct measurement): signal-to-noise ratio \(\text{SNR}_{\text{direct}} = A / \sigma\).
With lock-in detection and bandwidth \(B_{\text{LPF}} = 1\) Hz (from the low-pass filter), the noise is reduced by a factor \(\sqrt{f_0 / (2 B_{\text{LPF}})}\) (Wiener-Khinchin theorem).
Calculate the SNR improvement factor.
c) Why does lock-in detection not help if the noise is at the same frequency as the signal (e.g., 50 Hz power line noise modulating the signal)?
Code
# Lock-in detection analysisA_signal =10# mVf_0 =1000# Hz, modulation frequencysigma_noise =100# mV, noise amplitudeB_lpf =1# Hz, low-pass filter bandwidthprint("Lock-in Detection Analysis")print("="*50)print(f"Signal amplitude: A = {A_signal} mV")print(f"Modulation frequency: f_0 = {f_0} Hz")print(f"Noise amplitude: σ = {sigma_noise} mV")print(f"LPF bandwidth: B = {B_lpf} Hz")# Part b): SNR improvementSNR_direct = A_signal / sigma_noiseprint(f"\nPart b) SNR without lock-in:")print(f" SNR_direct = A / σ = {SNR_direct:.4f} ({10*np.log10(SNR_direct):.1f} dB)")# With lock-in: noise reduced by sqrt(f_0 / (2*B))noise_reduction_factor = np.sqrt(f_0 / (2* B_lpf))SNR_lockin = SNR_direct * noise_reduction_factorprint(f"\nWith lock-in (B = {B_lpf} Hz):")print(f" Noise reduction factor = √(f_0 / (2B)) = {noise_reduction_factor:.1f}")print(f" SNR_lock-in = {SNR_lockin:.2f} ({10*np.log10(SNR_lockin):.1f} dB)")print(f" Improvement = {noise_reduction_factor:.1f}×")# Part c): explanationprint(f"\nPart c) Noise at signal frequency:")print(f" If noise is at the SAME frequency as the signal (e.g., both at 1 kHz),")print(f" then lock-in cannot distinguish them. Both will pass through the")print(f" multiplication and low-pass filtering step together.")print(f" Lock-in ONLY rejects noise at OTHER frequencies (off-resonance noise).")print(f" This is why modulation frequency should be chosen away from")print(f" common noise sources (50/60 Hz, harmonics, thermal noise, 1/f noise).")
Lock-in Detection Analysis
==================================================
Signal amplitude: A = 10 mV
Modulation frequency: f_0 = 1000 Hz
Noise amplitude: σ = 100 mV
LPF bandwidth: B = 1 Hz
Part b) SNR without lock-in:
SNR_direct = A / σ = 0.1000 (-10.0 dB)
With lock-in (B = 1 Hz):
Noise reduction factor = √(f_0 / (2B)) = 22.4
SNR_lock-in = 2.24 (3.5 dB)
Improvement = 22.4×
Part c) Noise at signal frequency:
If noise is at the SAME frequency as the signal (e.g., both at 1 kHz),
then lock-in cannot distinguish them. Both will pass through the
multiplication and low-pass filtering step together.
Lock-in ONLY rejects noise at OTHER frequencies (off-resonance noise).
This is why modulation frequency should be chosen away from
common noise sources (50/60 Hz, harmonics, thermal noise, 1/f noise).
Problem 6: Acousto-Optic Modulators (AOM)
Problem Statement:
An acousto-optic modulator (AOM) works by Bragg diffraction from a sound wave traveling through a crystal (typically TeO₂).
a) Briefly explain the AOM principle: how does a traveling acoustic wave create a diffraction grating for light?
b) In an AOM, the Bragg condition is:
\[2 d \sin(\theta_B) = m \lambda\]
where \(d\) is the acoustic wavelength, \(\theta_B\) is the Bragg angle, \(m\) is the diffraction order, and \(\lambda\) is the optical wavelength.
The acoustic wavelength is related to the sound frequency \(f\) and speed \(v_s\): \(d = v_s / f\).
For a typical setup: \(v_s = 600\) m/s (in TeO₂), \(f = 80\) MHz, optical wavelength \(\lambda = 532\) nm (green), first order \(m = 1\).
Calculate the Bragg angle \(\theta_B\).
c) Why are AOMs used to modulate the pump beam in photothermal microscopy? What is the advantage?
Solution:
(a) The acoustic wave creates a time-varying strain in the crystal, which modulates the refractive index periodically. This acts as a traveling diffracting grating. Light satisfying the Bragg condition is diffracted into a first-order beam.
(b) Calculation:
Code
# AOM Bragg angle calculationv_s =600# m/s, sound speed in TeO2f_acoustic =80e6# Hz, acoustic frequencywavelength_opt =532e-9# m, optical wavelengthm =1# first orderprint("Acousto-Optic Modulator (AOM)")print("="*50)print(f"Sound speed (TeO₂): v_s = {v_s} m/s")print(f"Acoustic frequency: f = {f_acoustic/1e6:.0f} MHz")print(f"Optical wavelength: λ = {wavelength_opt*1e9:.0f} nm")print(f"Diffraction order: m = {m}")# Acoustic wavelengthd = v_s / f_acousticprint(f"\nAcoustic wavelength:")print(f" Λ = v_s / f = {d*1e6:.3f} µm = {d*1e9:.1f} nm")# Bragg angle from 2·Λ·sin(θ_B) = m·λsin_theta_B = (m * wavelength_opt) / (2* d)theta_B = np.degrees(np.arcsin(sin_theta_B))print(f"\nBragg angle:")print(f" 2·Λ·sin(θ_B) = m·λ")print(f" sin(θ_B) = m·λ / (2·Λ) = {sin_theta_B:.4f}")print(f" θ_B = {theta_B:.2f}°")print(f"\nPart c) AOM in photothermal microscopy:")print(f" - AOMs allow rapid ON/OFF switching (MHz speeds)")print(f" - Can modulate pump power without mechanical shutters")print(f" - Enable lock-in detection at the modulation frequency")print(f" - Reduce phototoxicity (pulsed excitation)")print(f" - Improve signal-to-noise via frequency-selective detection")
Acousto-Optic Modulator (AOM)
==================================================
Sound speed (TeO₂): v_s = 600 m/s
Acoustic frequency: f = 80 MHz
Optical wavelength: λ = 532 nm
Diffraction order: m = 1
Acoustic wavelength:
Λ = v_s / f = 7.500 µm = 7500.0 nm
Bragg angle:
2·Λ·sin(θ_B) = m·λ
sin(θ_B) = m·λ / (2·Λ) = 0.0355
θ_B = 2.03°
Part c) AOM in photothermal microscopy:
- AOMs allow rapid ON/OFF switching (MHz speeds)
- Can modulate pump power without mechanical shutters
- Enable lock-in detection at the modulation frequency
- Reduce phototoxicity (pulsed excitation)
- Improve signal-to-noise via frequency-selective detection
Summary
This seminar covered: - Rayleigh scattering: small nanoparticles scatter weakly at visible wavelengths; absorption dominates in plasmonic particles - DLS: Brownian motion causes intensity fluctuations; autocorrelation decay reveals diffusion and particle size - Photothermal effects: absorbed light generates local heat; refractive index changes can be detected - Lock-in detection: frequency-selective measurement dramatically improves SNR by rejecting broadband noise - AOMs: enable rapid, frequency-modulated excitation for synchronous detection
These techniques are foundational for modern nano-optical experiments and bioimaging applications.