gaussian_pulse

boulderopal.signals.gaussian_pulse(duration, amplitude, width=None, center_time=None, drag=0.0, flat_duration=0.0)

Create a Signal object representing a Gaussian pulse.

Parameters

• duration (float) – The duration of the signal, $T$
• amplitude (float or complex) – The amplitude of the Gaussian pulse, $A$
• width (float or None , optional) – The standard deviation of the Gaussian pulse, $\sigma$. Defaults to $T/10$ or $(T-t_\mathrm{flat})/10$
• center_time (float or None , optional) – The center of the Gaussian pulse, $t_0$. Defaults to half of the given value of the duration, $T/2$
• drag (float , optional) – The DRAG parameter, $\beta$
• flat_duration (float , optional) – The amount of time to remain constant after the peak of the Gaussian, $t_\mathrm{flat}$

Returns

The Gaussian pulse.

Return type

Signal

boulderopal.signals.cosine_pulse : Create a Signal object representing a cosine pulse.

Graph.signals.gaussian_pulse_pwc : Graph operation to create a Pwc representing a Gaussian pulse.

Graph.signals.gaussian_pulse_stf : Graph operation to create a Stf representing a Gaussian pulse.

boulderopal.signals.sech_pulse : Create a Signal object representing a hyperbolic secant pulse.

boulderopal.signals.square_pulse : Create a Signal object representing a square pulse.

Notes

The Gaussian pulse is defined as

$\mathop{\mathrm{Gaussian}}(t) = \begin{cases} A \left(1-\frac{i\beta (t-t_1)}{\sigma^2}\right) \exp \left(- \frac{(t-t_1)^2}{2\sigma^2} \right) &\mathrm{if} \quad t < t_1=t_0- t_\mathrm{flat}/2\\ A &\mathrm{if} \quad t_0-t_\mathrm{flat}/2 \le t < t_0+t_\mathrm{flat}/2 \\ A \left(1-\frac{i\beta (t-t_2)}{\sigma^2}\right) \exp \left(- \frac{(t-t_2)^2}{2\sigma^2} \right) &\mathrm{if} \quad t > t_2=t_0+t_\mathrm{flat}/2 \end{cases} .$

If the flat duration is zero (the default setting), this reduces to

$\mathop{\mathrm{Gaussian}}(t) = A \left(1-\frac{i\beta (t-t_0)}{\sigma^2}\right) \exp \left(- \frac{(t-t_0)^2}{2\sigma^2} \right) .$

Examples

Define a Gaussian pulse.

>>> pulse = bo.signals.gaussian_pulse(duration=2.0, amplitude=1.0)
>>> pulse.export_with_time_step(time_step=0.2)
array([4.00652974e-05+0.j, 2.18749112e-03+0.j, 4.39369336e-02+0.j,
3.24652467e-01+0.j, 8.82496903e-01+0.j, 8.82496903e-01+0.j,
3.24652467e-01+0.j, 4.39369336e-02+0.j, 2.18749112e-03+0.j,
4.00652974e-05+0.j])

Define a flat-top Gaussian pulse with a DRAG correction.

>>> pulse = bo.signals.gaussian_pulse(
...     duration=1.0,
...     amplitude=1.0,
...     width=0.2,
...     center_time=0.6,
...     drag=0.1,
...     flat_duration=0.2,
... )
>>> pulse.export_with_sampling_rate(sampling_rate=10.)
array([0.07955951+0.08950445j, 0.21626517+0.18923202j,
0.45783336+0.28614585j, 0.7548396 +0.28306485j,
0.96923323+0.12115415j, 1.        +0.j        ,
1.        +0.j        , 0.96923323-0.12115415j,
0.7548396 -0.28306485j, 0.45783336-0.28614585j])