SCATMECH > Classes and Functions >
Polarization > JonesVector
class JonesVector
The class JonesVector represents a Jones vector in a
Jones representation of polarization states. Arithmetic
operations between Jones matrices and Jones vectors,
various properties of a Jones vector, and transformation
operations are defined.
SCATMECH assumes an exp(-it) time dependence in
the Jones vector. Furthermore, it is assumed that the basis
set for representing the Jones vector, {s,p,k}, is such
that {s,p,k} form a right-handed triplet. With this
convention, (1,i) and (-i,1) represent
left-circularly polarized light, while (1,-i) or
(i,1) represent right-circularly polarized
light.
Include file:
#include "mueller.h"
Source code:
jvector.cpp
See also:
SCATMECH Home,
Conventions, MuellerMatrix, JonesMatrix, StokesVector
C.F. Bohren and D.R. Huffman, Absorption and Scattering of Light by Small Particles, (Wiley, New York, 1983).
H.C. van de Hulst, Light Scattering by Small Particles, (Dover, New York, 1981).
R.A. Chipman, "Polarimetry." in Handbook of Optics, (McGraw-Hill, New York, 1995).
Definition of public
elements:
class JonesVector {
public:
JonesVector();
JonesVector(const JonesVector& x);
JonesVector(const COMPLEX& s,const COMPLEX& p);
explicit JonesVector(const StokesVector& x);
JonesVector& operator=(const JonesVector& x);
JonesVector operator*(const COMPLEX& x) const;
friend JonesVector operator*(const COMPLEX& x,const JonesVector& y);
JonesVector operator/(const COMPLEX& x) const;
JonesVector& operator*=(const COMPLEX& x);
JonesVector& operator/=(const COMPLEX& x);
JonesVector operator+(const JonesVector& a) const;
JonesVector operator-(const JonesVector& a) const;
JonesVector operator+=(const JonesVector& a);
JonesVector operator-=(const JonesVector& a);
JonesVector operator-() const;
COMPLEX& operator[](int i);
double intensity() const;
double psi() const;
double delta() const;
double eta() const;
double DOLP() const;
double DOP() const;
double DOCP() const;
double e() const;
double epsilon() const;
JonesVector rotate(double angle) const;
COMPLEX& S();
COMPLEX& P();
};
ostream& operator<<(ostream& os,JonesVector& j);
istream& operator>>(istream& is,JonesVector& j);
Constructor, which does not initialize the
vector.
Top of Page
Copy constructor.
Example:
JonesVector v1;
JonesVector v2(v1);
Top of Page
Constructor that assigns values to the elements
[S()=a and P()=b].
Example:
JonesVector v(COMPLEX(1,0),0);
Top of Page
Explicit constructor that converts the polarized part of
a StokesVector to a JonesVector. The first
element of the JonesVector is left as real, with
the relative phase taken up by the second element.
Example:
StokesVector s1;
JonesVector j(s1);
StokesVector s2(j); // s2 may not be equal to s1
Top of Page
Assignment operator.
Example:
JonesVector a,b;
a=b;
Top of Page
Multiplication and division of a JonesVector by a
scalar.
Example:
JonesVector vector;
COMPLEX scalar;
vector = vector*scalar;
vector = scalar*vector; // Same thing.
vector *= scalar; // Also same thing.
vector = vector/scalar;
vector /= scalar; // Same thing.
vector = scalar/vector; // Not allowed.
Top of Page
Addition and subtraction of two JonesVector
objects.
Example:
JonesVector vector1,vector2;
vector1 = vector1+vector2;
vector1 += vector2; // Same thing.
vector1 = vector1-vector2;
vector1 -= vector2; // Same thing.
vector1 = vector2-vector1; // Inverse of previous.
Top of Page
Negation of a JonesVector.
Example:
JonesVector vector;
vector = -vector;
Top of Page
Element referencing operation.
Example:
JonesVector a;
a[0]=1;
a[1]=2;
Top of Page
The intensity associated with the JonesVector.
Example:
JonesVector a;
cout << "Intensity = " << a.intensity() << endl;
Top of Page
The arctangent of the ratio of the two amplitudes. A
value of zero indicates that the p-component of the field
is zero.
Example:
JonesVector a;
cout << "psi = " << a.psi()/PI*180; << " deg" << endl;
Top of Page
The phase between the two components of the
JonesVector. A small positive phase indicates that
the s-component is in advance of the p-component.
Example:
JonesVector a;
cout << "delta = " << a.delta()/PI*180; << " deg" << endl;
Top of Page
The principal angle of the polarization. The angle is
defined counterclockwise from s, looking into the beam.
Example:
JonesVector a;
cout << "eta = " << a.eta()/PI*180; << " deg" << endl;
Top of Page
The degrees of linear, circular, and total polarization.
The degree of circular polarization is positive for
left-circularly polarized light.
Example:
JonesVector a;
cout << "DOLP = " << a.DOLP(); << endl;
cout << "DOCP = " << a.DOCP(); << endl;
cout << "DOP = " << a.DOP(); << endl;
Top of Page
The ellipticity of the field (ratio of minor axis to
major axis).
Example:
JonesVector a;
cout << "ellipticity = " << a.e(); << endl;
Top of Page
The eccentricity [sqrt(1-e()^2)].
Example:
JonesVector a;
cout << "eccentricity = " << a.epsilon(); << endl;
Top of Page
Function that returns a JonesVector rotated by an
angle. The direction of rotation, for positive
angle, is clockwise looking into the beam.
Example:
JonesVector a,b;
b=a.rotate(45*PI/180);
Top of Page
References to the first (S) and second (P) element of the
JonesVector.
Example:
JonesVector a;
a.S()=1;
a.P()=2;
Top of Page
Operator that outputs a JonesVector to an output
stream. The result contains two complex numbers, separated by a comma, and surrounded by parentheses, e.g., ((1,2),(4,5)).
The order of the elements is S and P.
Example
JonesVector J;
cout >> "J = " << J << endl;
Top of Page
Operator that inputs a JonesVector from an input
stream. The stream should contain two complex numbers, separated by a comma, and surrounded by parentheses, e.g., ((1,2),(4,5)).
The order of the elements is S and P.
Example
JonesVector J;
cin << J;
Top of Page
For More Information
SCATMECH Technical Information and Questions
Sensor Science Division Home Page
Sensor Science Division Inquiries
Website Comments
Current SCATMECH version: 7.22 (April 2021)
|