|  Home 
  
   Install 
  
   Use 
  
   Develop 
  
   Support 
  
   News 
 
 Credits
 
 hosted by
 
   | 
   15#include "Quaternion.h"    25  Basis<double>& basis();    28  Jones<double> matrix (unsigned  i);    36  return Jones<T> (q.s0+q.s1, q.s2-ci(q.s3),    37                   q.s2+ci(q.s3), q.s0-q.s1);    44  return Jones<T> (q.s0+ci(q.s1), q.s3+ci(q.s2),    45                   -q.s3+ci(q.s2), q.s0-ci(q.s1));    52  return Jones<T> (std::complex<T>(q.s0+q.s1,0.0), std::complex<T>(q.s2,-q.s3),    53                   std::complex<T>(q.s2,q.s3), std::complex<T>(q.s0-q.s1,0.0));    60  return Jones<T> (q.s0+ci(q.s1), q.s3+ci(q.s2),    61                   -q.s3+ci(q.s2), q.s0-ci(q.s1));    66const Jones<T> convert (const  Stokes< std::complex<T> >& stokes)    71  q.set_vector  (Pauli::basis().get_out(stokes.get_vector()));    73  std::complex<T> half (0.5, 0.0);    74  return convert (half*q);    79const Jones<T> convert (const  Stokes<T>& stokes)    82                             Pauli::basis().get_out(stokes.get_vector()));    83  return convert (T(0.5)*q);    88const Jones<T> convert (const  std::vector<T>& c)    91    throw std::runtime_error ("Jones<T> convert (std::vector<T>) vector.size() != 4" );    93  return Jones<T> (c[0], std::complex<T> (c[2], -c[3]),    94                 std::complex<T> (c[2], c[3]), c[1]);   102    (stokes.get_scalar(), Pauli::basis().get_out(stokes.get_vector()));   117    ( T(0.5) * (j.j00 + j.j11),   118      T(0.5) * (j.j00 - j.j11),   119      T(0.5) * (j.j01 + j.j10),   120      T(0.5) * ci (j.j01 - j.j10) );   128    ( T(0.5) *     (j.j00 + j.j11),   129      T(-0.5) * ci (j.j00 - j.j11),   130      T(-0.5) * ci (j.j01 + j.j10),   131      T(0.5) *     (j.j01 - j.j10) );   136const Stokes<T> coherency (const Jones<T> & j)   139  return real_coherency (h);   144const Stokes< std::complex<T> > complex_coherency (const Jones<T> & j)   147  return coherency (h);   152const Stokes<T> real_coherency (const Quaternion <std::complex<T>,Hermitian>& q)   156  T nr = norm(realpart);   157  T ni = norm(imaginary);   158  if (ni > 1e8*std::numeric_limits<T>::epsilon() && ni*1e5 > nr)   160    const char* msg = "Stokes<T> coherency (Quaternion<complex<T>,Hermitian>) "   161      "non-zero imaginary component";   164      "\n   norm(imag(q))=" << ni << " norm="  << nr << std::endl;   166    throw std::runtime_error (msg);   169  return coherency (realpart);   177                    T(2.0) * Pauli::basis().get_in(q.get_vector ()) );   181template<typename  T, typename  U>   182const Stokes<T> transform (const  Stokes<T>& input, const Jones<U> & jones)   184  return coherency (jones * convert(input) * herm(jones));   188template<typename  T, typename  U>   189const Stokes< std::complex<T> >   190transform (const  Stokes< std::complex<T> >& input, const Jones<U> & jones)   192  return complex_coherency (jones * convert(input) * herm(jones));   196template<typename  T, typename  U>   199  Stokes< std::complex<T> > s = M * complex_coherency(rho);   213  h = sqrt( real( convert( j*herm(j) ) ) );   216  j = inv(convert(h)) * j;   219  u = real ( unitary (j) );   224template<typename  T, typename  U, QBasis B>   227  return j * convert(q);   231template<typename  T, typename  U, QBasis B>   234  return convert(q) * j;   238template<typename  T, typename  U, QBasis A, QBasis B>   241  return convert(q) * convert(u);   250  for (unsigned  row=0; row < 4; row++) {   253    result[row] = coherency(herm(J) * convert(basis) * J);   265  for (unsigned  row=0; row < 4; row++) {   269    result[row] = coherency(herm(Jgrad) * rho * J + herm(J) * rho * Jgrad); Vector< 3, T > get_vector() constvoid set_vector(const Vector< 3, U > &v) Generated using doxygen 1.14.0
 
 |