new pulse helper function

This commit is contained in:
2024-07-11 15:55:26 +02:00
parent b64efe2636
commit c3db790281

View File

@@ -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)