| 
         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(-i t) 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) 
 
  |