#include <ocsPolarizer.hh>
Public Member Functions | |
Polarizer (OptSignal *oOptSignalTmp) | |
void | SetPolarization (double S1PolarizerTmp, double S2PolarizerTmp, double S3PolarizerTmp) |
Sets a new polarization splitting vector in Stokes space. | |
void | PolarizeOptSignal () |
Polarizes optical signal. | |
Private Attributes | |
OptSignal * | oOptSignal |
double * | SPolarizer |
ReduPolarizer * | oReduPolarizer |
Adapted by John Zweck (Jan 2006) from code written by Ivan Lima See doumentation for Polarizer::PolarizeOptSignal() for details.
Polarizer::Polarizer | ( | OptSignal * | oOptSignalTmp | ) |
Constructor. Sets default polarization splitting vector in Stokes space to be the horizontal state (1,0,0).
References oOptSignal, OptSignal::oReduOptSignal, oReduPolarizer, SetPolarization(), and SPolarizer.
void Polarizer::PolarizeOptSignal | ( | ) |
Polarizes optical signal.
Suppose that the input Jones signal to the polarizer is
U_{in}(t) = u_{parallel}(t)V_{parallel} + u_{perp}(t)V_{perp},
where V_{parallel} is a Jones vector corresponding to the Stokes vector SPolarizer, and {V_{parallel}, V_{perp}} for an orthonormal basis for Jones space. Then we define the output signal after the polarizer to be
U_{out}(t) = u_{parallel}(t)V_{parallel}.
Use the theory of projection operators from linear algebra we have that
If Jones vectors are column vectors then
U_{out}(t) = [conjugatetranspose(V_{parallel})U_in(t)]V_{parallel}.
You can check that U_{out} is independent of the choice of phase for V_{parallel} that arises when V_{parallel} is computed from SPolarizer.
References OptSignal::GetQtPoints(), InnerProduct(), oOptSignal, oReduPolarizer, ReduPolarizer::PolarizeOptSignal(), OptSignal::sfftM, SPolarizer, Stokes2Jones(), OptSignal::Time2Freq(), fftMatrices::tOptSignalX, and fftMatrices::tOptSignalY.
void Polarizer::SetPolarization | ( | double | S1PolarizerTmp, | |
double | S2PolarizerTmp, | |||
double | S3PolarizerTmp | |||
) |
Sets a new polarization splitting vector in Stokes space.
References oReduPolarizer, ReduPolarizer::SetPolarization(), SPolarizer, sq(), and sqrt().
Referenced by Polarizer().
OptSignal* Polarizer::oOptSignal [private] |
Referenced by PolarizeOptSignal(), and Polarizer().
ReduPolarizer* Polarizer::oReduPolarizer [private] |
Referenced by PolarizeOptSignal(), Polarizer(), and SetPolarization().
double* Polarizer::SPolarizer [private] |
Referenced by PolarizeOptSignal(), Polarizer(), and SetPolarization().