aboutsummaryrefslogtreecommitdiff
path: root/active_correction/chapter.tex
blob: d3028fee5e732b92a035308cb7d27ffc167da4e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
\chapter{Active correction} \label{cha:act}

\begin{dquote}
  Calibrate, \\
  calibrate, \\
  calibrate, \\
  calibrate, \\
  calibrate, \\
  run.

  \dsignature{Long-hanging poster in Wright Group laser lab.}
\end{dquote}

\clearpage

\section{Introduction}  % =========================================================================

MR-CMDS is subject to a number of possible artifacts, many of them stemming from the imperfect
nature of the frequency-tunable light sources we currently have.  %
It is self-evidently desirable to correct these artifacts, when possible.  %
Indeed many of these artifacts, such as OPA power, phase mismatch and absorption effects have
regularly been corrected for.  % TODO: link to examples in applications section, cite
These corrections are applied after measurement, typically including information from other sources
(such as absorption spectra, in the case of absorption effect corrections).

A more interesting class of corrections are ``active'' corrections---that is, corrections that must
be actively applied during acquisition and cannot be applied in post processing.  %
These corrections are more insidious, as they are often neglected because the hardware and/or
software does not allow for them.  %

In this chapter I explore some of these active correction strategies that are useful in the context
of MR-CMDS.  %
Some of these strategies have already been implemented, others are partially implemented, and
others are still just ideas.  %
I hope to show that active correction is a particularly useful strategy in MR-CMDS.  %

Section \ref{act:sec:sdc} addresses spectral delay correction, where automated delay stages are
used to explicitly correct for small changes in optical path length at different pulse frequencies.  %

Section \ref{act:sec:poynting} addresses poynting correction, where mirrors with motorized pitch
and yaw control are used to actively correct for small changes in OPA output poynting.  %

Section \ref{act:sec:chop} addresses (dual) chopping, used to actively subtract artifacts such as
scatter and unwanted nonlinear outputs.  %
Chopping can only account for intensity level (additive) artifacts.  %
Fibrillation is the opposite of chopping, as it can only account for amplitude level
\emph{iterference} effects.  %
Section \ref{act:sec:chop} also addresses fibrillation.  %

\section{Spectral delay correction} \label{act:sec:sdc} % =========================================

As a frequency domain technique, MR-CMDS requires automated tuning of multiple OPAs.  %
These OPAs generate pulses, which are then manipulated and directed into a sample of interest.  %
Crucially, the relative arrival time of each pulse must be carefully controlled in the context of
the MR-CMDS experiment.  %
Unfortunately, changing the output frequency also changes the optical path length, meaning that
there is some unavoidable coupling between delay and frequency axes.  %
Because we have full control over delay with our automated stages, we can correct for this
phenomenon by choosing a different zero delay \emph{offset} for each OPA output color.  %
This strategy has been dubbed ``spectral delay correction''.  %

Spectral delay correction (SDC) is certainly the oldest active correction strategy employed
within the Wright Group.  %
SDC was first implemented by Schuyler Kain within his COLORS acquisition software.
\cite{KainSchuyler2017a}  %
COLORS' implementation was hardcoded for one particular OPA / delay configuration---it wasn't until
PyCMDS that fully arbitrary SDC became possible through the autonomic system (see
\autoref{acq:sec:autonomic}).  %
Erin Boyle ``backported'' similar functionality into to ps\_control, although her implementation
allowed only for a simple, first order linear correction.  %

Sometimes, spectral delay can be corrected for after-the-fact.  %
Post processed spectral delay correction can only be done if all relevant delays are scanned during
the experiment.  %
A common example is transient absorption, where the single delay axis is typically scanned at each
color coordinate.  %
A special method of \python{Data}, \python{Data.offset} is designed to do the necessary
interpolation for \emph{post hoc} SDC.  %

In many experiments spectral delay \emph{must} be actively corrected for.  %
Fully coherent experiments are typically performed by scanning OPA frequencies while attempting to
keep delays constant.  %
In such experiments, the dataset does not in-and-of-itself contain the information needed to
offset in post processing.  %
Indeed it can easily become time-prohibitive to collect the full response.  %
For a three-beam experiment, an entire two dimensional delay-delay collection would be required at
each pixel to allow for post-correction.  %

It has been found that SDC is necessary for each individual scanned OPA, and for each separate path
when pulses from a single OPA are split.  %
The difference between different paths is typically small, but enough to move pulses a noticeable
amount relative to each-other.  %
For this reason, SDC for split OPAs is a multidimensional problem, which in principle requires a
multi-dimensional acquisition to fully record.  %
In practice, however, these corrections are typically recorded iteratively.  %

White light sources are also interesting to consider in the context of spectral delay
correction.  %
White light is typically quite chirped, with lower frequency (redder) colors traveling ahead of
high frequency (bluer) colors.  %
Typically, white light might serve as a ``probe'' that interacts last with the sample.  %
If a scanning monochromator is used, spectral delay correction could be employed such that each
color within the white light pulse arrives at the same delay.  %
If a fully coherent experiment is performed with chirped white light as one of the excitation
pulses, the other pulses will provide a gating effect in time that isolates interaction from one
frequency in the white pulse.  %
This is similar to the gating that is accomplished using ``delay 1'' in the TOPAS-C OPAs (see
\autoref{cha:opa}).  %
By gating in this way, a \emph{frequency} axis along the white light dimension could be scanned
using a delay stage.  %
COLORS' has taken this idea to it's logical conclusion, with support for ``OPAs'' that are actually
controlled by delay stages, although the idea has not yet been realized in practice.  %

\autoref{act:fig:sdc} contains two plots that were automatically generated by PyCMDS in the context
of an experiment.  %
In this case, the user used a sapphire plate as a nonresonant medium to record the spectral delay
dependence.  %
It was a three beam $\omega_1$, $\omega_2$, $\omega_{2^\prime}$ experiment, so three corrections
were necessary: D2 vs OPA1, D1 vs OPA2, and D2 vs OPA2.  %
Here we focus only on D2 ($\tau_{21}$) vs OPA1, the simplest of the corrections.  %

In the left-hand subplot of \autoref{act:fig:sdc} we see the original experiment.  %
Without corrections applied, the user scanned OPA1 vs D2.  %
The curvature in the plot is due entirely to SDC, as sapphire is entirely nonresonant (driven).  %
Using WrightTools, PyCMDS fits each slice to find the delay that gives maximum signal.  %
It then passes those separate fits through a spline to guess the ultimate SDC dependence.  %
PyCMDS makes a best guess in regions where there is not enough signal to determine the appropriate
delay, like in at 800 nm in the left hand plot.  %
The magnitude of the corrections are roughly 30 fs in this particular experiment: not large, but
enough to change signal levels by roughly a factor of 2.  %
In other cases SDC is as much as 200 fs.  %

In the right-hand subplot the user has taken the same scan again, this time after corrections were
applied.  %
The delay traces (horizontal) peaks at the same value for every OPA1 position (vertical).  %

\begin{figure}
	\includegraphics[width=0.45\textwidth]{"active_correction/sdc_before"}
 	\includegraphics[width=0.45\textwidth]{"active_correction/sdc_after"}
  \caption[Spectral delay correction.]{
    Spectral delay correction.
  }
  \label{act:fig:sdc}
\end{figure}

\section{Poynting correction} \label{act:sec:poynting}  % =========================================

With scanning OPAs, output Poynting can change along with optical path length.  %
We now correct for such changes actively using mirrors with motorized pitch and yaw controls.  %
These Poynting corrections are implemented as part of the recursive OPA tuning curve system (see
\autoref{cha:opa}), and not through the autonomic system.  %

To determine the appropriate positions for a Poynting correction, a pitch vs setpoint and yaw vs
setpoint scan is performed.  %
A pinhole is placed at the sample location, and a detector is place \emph{immediately} after the
pinhole.  %

\autoref{act:fig:poynting} is an autogenerated figure from PyCMDS.  %
It is a typical Poynting correction scan.  %
Like in spectral delay correction, each slice is fit and then a spline is fit to all slices
simultaneously.  %
The top plot of \autoref{act:fig:poynting} show the initial Poynting correction in comparison with
the new one.  %
In this case the change in the correction is mostly an offset, although there is a fairly dramatic
shape change at the lowest energy setpoints.  %

\begin{figure}
	\includegraphics[width=0.45\textwidth]{"active_correction/poynting_correction/intensity"}
  \caption[Poynting correction.]{
    A typical example of the output of the Poynting Tune module.
    The top figure shows the curve for the axis designated Theta.
    The thin, solid line is the previous curve, the thick transparent line is the new tuning curve.
    The y-axis is in units of motor steps, the x-axis is in units of wavenumbers.
    The bottom plot shows the intensity of signal measured for the change in Theta vs. setpoint.
    Center of mass of each vertical slice are extracted and linearly interpolated to obtain the new
    calibration curve.
    This figure was automatically generated by PyCMDS on March 28, 2018 using an OPA-800 generating
    1 ps infrared light.
  }
  \label{act:fig:poynting}
\end{figure}

\section{Chopping} \label{act:sec:chop}  % ========================================================

\subsection{Scatter}  % ---------------------------------------------------------------------------

Scatter is a complex microscopic process whereby light traveling through a material elastically
changes its propagation direction.  %
In CMDS we use propagation direction to isolate signal.  %
Scattering samples defeat this isolation step and allow some amount of excitation light to reach
the detector.  %
In homodyne-detected 4WM experiments,
\begin{equation}
I_{\mathrm{detected}} = |E_{\mathrm{4WM}} + E_1 + E_2 + E_{2^\prime}|^2
\end{equation}
Where $E$ is the entire time-dependent complex electromagnetic field.  %
When expanded, the intensity will be composed of diagonal and cross terms:
\begin{equation}
\begin{split}
I_{\mathrm{detected}} = \overline{(E_1+E_2)}E_{2^\prime} + (E_1+E_2)\overline{E_{2^\prime}} + |E_1+E_2|^2 + (E_1+E_2)\overline{E_{\mathrm{4WM}}} \\ + (E_1+E_2)\overline{E_{\mathrm{4WM}}} + \overline{E_{2^\prime}}E_{\mathrm{4WM}} + E_{2^\prime}\overline{E_{\mathrm{4WM}}} + |E_{\mathrm{4WM}}|^2
\end{split}
\end{equation}
A similar expression in the case of heterodyne-detected 4WM is derived by
\textcite{BrixnerTobias2004a}.  %
The goal of any `scatter rejection' processing procedure is to isolate $|E_{\mathrm{4WM}}|^2$ from
the other terms.  %

\subsubsection{Interference Patterns in TrEE}

TrEE is implicitly homodyne-detected.  %
Scatter from excitation fields will interfere on the amplitude level with TrEE signal, causing
interference patterns that beat in delay and frequency space.  %
The pattern of beating will depend on which excitation field(s) reach(es) the detector, and the
parameterization of delay space chosen.  %

First I focus on the interference patterns in 2D delay space where all excitation fields and the
detection field are at the same frequency.  %

\begin{figure}
	\includegraphics[scale=0.5]{"active_correction/scatter/scatter interference in TrEE old"}
	\caption[Simulated interference paterns in old delay parameterization.]{
    Numerically simulated interference patterns between scatter and TrEE for the old delay
    parametrization.
    Each column has scatter from a single excitation field.
    The top row shows the measured intensities, the bottom row shows the 2D Fourier transform, with
    the colorbar's dynamic range chosen to show the cross peaks.
  }
  \label{fig:scatterinterferenceinTrEEold}
\end{figure}

Here I derive the slopes of constant phase for the old delay space, where
$\mathrm{d1}=\tau_{2^\prime1}$ and $\mathrm{d2}=\tau_{21}$.  %
For simplicity, I take $\tau_1$ to be $0$, so that $\tau_{21}\rightarrow\tau_2$ and
$\tau_{2^\prime1}\rightarrow\tau_{2^\prime}$.  %
The phase of signal is then
\begin{equation}
\Phi_{\mathrm{sig}} = \mathrm{e}^{-\left((\tau_{2^\prime}-\tau_2)\omega\right)}
\end{equation}
The phase of each excitation field can also be written:
\begin{eqnarray}
\Phi_{1} &=& \mathrm{e}^0 \\
\Phi_{2} &=& \mathrm{e}^{-\tau_2\omega} \\
\Phi_{2^\prime} &=& \mathrm{e}^{-\tau_{2^\prime}\omega}
\end{eqnarray}
The cross term between scatter and signal is the product of $\Phi_\mathrm{sig}$ and $\Phi_\mathrm{scatter}$. The cross terms are:
\begin{eqnarray}
\Delta_{1} = \Phi_{\mathrm{sig}} &=& \mathrm{e}^{-\left((\tau_{2^\prime}-\tau_2)\omega\right)} \\
\Delta_{2} = \Phi_{\mathrm{sig}}\mathrm{e}^{-\tau_2\omega} &=&  \mathrm{e}^{-\left((\tau_{2^\prime}-2\tau_2)\omega\right)}\\
\Delta_{2^\prime} = \Phi_{\mathrm{sig}}\mathrm{e}^{-\tau_{2^\prime}\omega} &=& \mathrm{e}^{-\tau_{2}\omega}
\end{eqnarray}
Figure \ref{fig:scatterinterferenceinTrEEold} presents numerical simulations of scatter
interference as a visual aid.  %
See Yurs 2011 \cite{YursLenaA2011a}.  %
% TODO: Yurs 2011 Data

\begin{figure}
	\includegraphics[width=7in]{"active_correction/scatter/scatter interference in TrEE current"}
	\caption[Simulated interference paterns in current delay parameterization.]{
    Numerically simulated interference patterns between scatter and TrEE for the current delay
    parametrization.
    Each column has scatter from a single excitation field.
    The top row shows the measured intensities, the bottom row shows the 2D Fourier transform, with
    the colorbar's dynamic range chosen to show the cross peaks.
  }
  \label{fig:scatterinterferenceinTrEEcurrent}
\end{figure}

Here I derive the slopes of constant phase for the current delay space, where $\mathrm{d1}=\tau_{22^\prime}$ and $\mathrm{d2}=\tau_{21}$. I take $\tau_2$ to be $0$, so that $\tau_{22^\prime}\rightarrow\tau_{2^\prime}$ and $\tau_{21}\rightarrow\tau_1$. The phase of the signal is then
\begin{equation}
\Phi_{\mathrm{sig}} = \mathrm{e}^{-\left((\tau_{2^\prime}+\tau_1)\omega\right)}
\end{equation}
The phase of each excitation field can also be written:
\begin{eqnarray}
\Phi_{1} &=& \mathrm{e}^{-\tau_1\omega} \\
\Phi_{2} &=& \mathrm{e}^{0} \\
\Phi_{2^\prime} &=& \mathrm{e}^{-\tau_{2^\prime}\omega}
\end{eqnarray}
The cross term between scatter and signal is the product of $\Phi_\mathrm{sig}$ and $\Phi_\mathrm{scatter}$. The cross terms are:
\begin{eqnarray}
\Delta_{1} = \Phi_{\mathrm{sig}}\mathrm{e}^{-\tau_1\omega} &=& \mathrm{e}^{-\tau_{2^\prime}\omega} \\
\Delta_{2} = \Phi_{\mathrm{sig}} &=& \mathrm{e}^{-\left((\tau_2+\tau_1)\omega\right)} \\
\Delta_{2^\prime} = \Phi_{\mathrm{sig}}\mathrm{e}^{-\tau_{2^\prime}\omega} &=& \mathrm{e}^{-\tau_1\omega}
\end{eqnarray}
Figure \ref{fig:scatterinterferenceinTrEEcurrent} presents numerical simulations of scatter interference for the current delay parameterization.

\subsubsection{Instrumental Removal of Scatter}

The effects of scatter can be entirely removed from CMDS signal by combining two relatively
straight-forward instrumental techniques: \textit{chopping} and \textit{fibrillation}.  %
Conceptually, chopping removes intensity-level offset terms and fibrillation removes
amplitude-level interference terms.  %
Both techniques work by modulating signal and scatter terms differently so that they may be
separated after light collection.  %

\begin{table} \label{tab:phase_shifted_parallel_modulation}
	\begin{center}
		\begin{tabular}{ r | c | c | c | c }
			& A       & B          & C          & D                       \\
			signal    &            &            & \checkmark &            \\
			scatter 1 &            & \checkmark & \checkmark &            \\
			scatter 2 &            &            & \checkmark & \checkmark \\
			other     & \checkmark & \checkmark & \checkmark & \checkmark
		\end{tabular}
	\end{center}
	\caption[Shot-types in phase shifted parallel modulation.]{
    Four shot-types in a general phase shifted parallel modulation scheme.
    The `other' category represents anything that doesn't depend on either chopper, including
    scatter from other excitation sources, background light, detector voltage offsets, etc.
  }
\end{table}

We use the dual chopping scheme developed by \textcite{FurutaKoichi2012a} called `phase shifted
parallel modulation'.  %
In this scheme, two excitation sources are chopped at 1/4 of the laser repetition rate (two pulses
on, two pulses off).  %
Very similar schemes are discussed by \textcite{AugulisRamunas2011a} and
\textcite{HeislerIsmael2014a} for two-dimensional electronic spectroscopy.  %
The two chop patterns are phase-shifted to make the four-pulse pattern represented in Table
\ref{tab:phase_shifted_parallel_modulation}.  %
In principle this chopping scheme can be achieved with a single judiciously placed mechanical
chopper - this is one of the advantages of Furuta's scheme.  %
Due to practical considerations we have generally used two choppers, one on each OPA.  %
The key to phase shifted parallel modulation is that signal only appears when both of your chopped
beams are passed.  %
It is simple to show how signal can be separated through simple addition and subtraction of the A,
B, C, and D phases shown in Table \ref{tab:phase_shifted_parallel_modulation}.  %
First, the components of each phase:
\begin{eqnarray}
A &=& I_\mathrm{other} \\
B &=& I_\mathrm{1} + I_\mathrm{other} \\
C &=& I_\mathrm{signal} + I_\mathrm{1} + I_\mathrm{2} + I_\mathrm{other} \\
D &=& I_\mathrm{2} + I_\mathrm{other}
\end{eqnarray}
Grouping into difference pairs,
\begin{eqnarray}
A-B &=& -I_\mathrm{1} \\
C-D &=& I_\mathrm{signal} + I_\mathrm{1} 
\end{eqnarray}
So:
\begin{equation} \label{eq:dual_chopping}
A-B+C-D = I_\mathrm{signal}
\end{equation}
I have ignored amplitude-level interference terms in this treatment because they cannot be removed
via any chopping strategy.  %
Interference between signal and an excitation beam will only appear in `C'-type shots, so it will
not be removed in Equation \ref{eq:dual_chopping}.  %
To remove such interference terms, you must \textit{fibrillate} your excitation fields.

An alternative to dual chopping is single-chopping and `leveling'...  %
this technique was used prior to May 2016 in the Wright Group...  %
`leveling' and single-chopping is also used in some early 2DES work...
\cite{BrixnerTobias2004a}.  %

\begin{figure} 
	\includegraphics[scale=0.5]{"active_correction/scatter/TA chopping comparison"}
	\caption[Comparison of single, dual chopping.]{Comparison of single and dual chopping in a
    MoS\textsubscript{2} transient absorption experiment. Note that this data has not been
    processed in any way - the colorbar represents changes in intensity seen by the detector. The
    grey line near 2 eV represents the pump energy. The inset labels are the number of laser shots
    taken and the chopping strategy used.}
  \label{fig:ta-chopping-comparison}
\end{figure}

Figure \ref{fig:ta-chopping-comparison} shows the effects of dual chopping for some representative
MoS\textsubscript{2} TA data.  %
Each subplot is a probe wigner, with the vertical grey line representing the pump energy.  %
Note that the single chopper passes pump scatter, visible as a time-invariant increase in intensity
when the probe and monochromator are near the pump energy.  %
Dual chopping efficiently removes pump scatter, but at the cost of signal to noise for the same
number of laser shots.  %
Taking twice as many laser shots when dual chopping brings the signal to noise to at least as good
as the original single chopping.  %

\subsection{Fibrillation}  % ----------------------------------------------------------------------

Fibrillation is the intentional randomization of excitation phase during an experiment.  %
Because the interference term depends on the phase of the excitation field relative to the signal,
averaging over many shots with random phase will cause the interference term to approach zero.  %
This is a well known strategy for removing unwanted interference terms \cite{SpectorIvanC2015a,
  McClainBrianL2004a}.  %

% \subsection{Normalization of dual-chopped self-heterodyned signal}

% %\begin{table}[!htb]
% %  \centering
% %  \renewcommand{\arraystretch}{1.5}
% %\begin{array}{r | c | c | c | c }
% %  & A           & B & C & D \\ \hline
% %  \text{signal}   & S_A=V_A^S   & S_B=R^SC^1I_B^S & S_C=R^S(C^1) & S_D=R^SC^2I_D^S \\ \hline
% %  \text{source 1} & M_A^1=V_A^1 & M_B=R^1I_B^1    & M_C^1=R^1I_C^1 & M_D^1=V_D^1 \\ \hline
% %  \text{source 2} & M_A^2=V_A^2 & M_B^2=V_B^2     & M_C^2=R^2I_C^2 & M_D^2=R^2I_D^2
% %\end{array}
% %  \caption{CAPTION}
% %\end{table}

% Shot-by-shot normalization is not trivial for these experiments.  %
% As in table above, with 1 as pump and 2 as probe.  %

% Starting with $\Delta I$ from \ref{eq:dual_chopping}, we can normalize by probe intensity to get
% the popular $\Delta I / I$ representation.  %
% Using the names defined above:
% \begin{equation}
%   \frac{\Delta I}{I} = \frac{A-B+C-D}{D-A}
% \end{equation}
% Now consider the presence of excitation intensity monitors, indicated by subscripts PR for probe
% and PU for pump.

% We can further normalize by the pump intensity by dividing the entire expression by $C_{PU}$:
% \begin{equation}
%   \frac{\Delta I}{I} = \frac{A-B+C-D}{(D-A)*C_{PU}}
% \end{equation}

% Now, substituting in BRAZARD formalism:

% \begin{eqnarray}
%   A &=& constant \\
%   B &=& S I_{PU}^B (1+\delta_{PU}^B) \\
%   C &=& I_{PR}^C(1+\delta_{PR}^C) + S I_{PU}^C(1+\delta_{PR}^C) \\
%   D &=& I_{PR}^D(1+\delta_{PR}^D)
% \end{eqnarray}

% \begin{equation}
%   \frac{\Delta I}{I} = \frac{<A> -
%     \frac{<B_{PU}>B}{B_{PU}} +
%     \frac{<C_{PU}><C_{PR}C}{C_{PU}C_{PR}} -
%     \frac{<D_{PR}>D}{D_{PR}}}{<PR><PU>}
% \end{equation}

% \section{Conclusions}  % ==========================================================================

% In the future I'd like to do excitation power correction.  %