From c3db79028147b0747f15b617a2038b2870fb74e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Sierro?= Date: Thu, 11 Jul 2024 15:55:26 +0200 Subject: [PATCH] new pulse helper function --- src/scgenerator/physics/pulse.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/scgenerator/physics/pulse.py b/src/scgenerator/physics/pulse.py index 8a1522d..b2508f7 100644 --- a/src/scgenerator/physics/pulse.py +++ b/src/scgenerator/physics/pulse.py @@ -645,7 +645,7 @@ def shot_noise( in W. """ n = len(w) - dw = w[1] - w[0] + dw = abs(w[1] - w[0]) dt = 2 * pi / (dw * n) if constant_amplitude: std = np.sqrt(0.5 * units.hbar * np.abs(w[0]) / dw) @@ -1396,3 +1396,27 @@ def mask_with_noise( ) -> T: sn = shot_noise(w, *sn_params) return spectrum * mask + np.sqrt(1.0 - mask**2) * sn + + +def new( + t: np.ndarray, + w: np.ndarray, + shot_noise: ShotNoiseParameter, + shape: str, + delay=0.0, + input_transmission=1.0, + ase_level=1.0, + peak_power: float | None = None, + mean_power: float | None = None, + repetition_rate: float | None = None, + energy: float | None = None, + width: float | None = None, + t0: float | None = None, +) -> np.ndarray: + t0 = t0 if t0 is not None else fwhm_to_T0_fac[shape] * width + + if peak_power is None: + energy = energy if energy is not None else mean_power / repetition_rate + peak_power = E0_to_P0(energy, t0, shape) + pre = initial_field_envelope(t, shape, t0, peak_power, delay) + return finalize_pulse(pre, ShotNoiseParameter(shot_noise), w, input_transmission, ase_level)