37 virtual void set_Stokes (
const Stokes<double>& mean);
38 virtual Stokes<double> get_Stokes () {
return mean; }
41 virtual Stokes<double> get_mean ()
const {
return mean; }
44 virtual Matrix<4,4, double> get_covariance ()
const
45 {
return Minkowski::outer (mean, mean); }
48 virtual Matrix<4,4, double> get_crosscovariance (
unsigned ilag)
const
49 {
if (ilag>0)
return 0;
else return get_covariance(); }
52 virtual Spinor<double> get_field ();
55 virtual BoxMuller* get_normal () {
return normal; }
56 virtual void set_normal (BoxMuller* n) { normal = n; }
59 const Jones<double>& get_polarizer ()
const {
return polarizer; }
63 Jones<double> polarizer;
69 class mode_decorator :
public mode
75 mode_decorator (mode* s) { source = s; }
76 mode* get_source () {
return source; }
78 void set_Stokes (
const Stokes<double>& mean) { source->set_Stokes(mean); }
79 Stokes<double> get_Stokes () {
return source->get_Stokes(); }
81 Matrix<4,4,double> get_covariance()
const {
return source->get_covariance(); }
82 Stokes<double> get_mean ()
const {
return source->get_mean(); }
84 Spinor<double> get_field () {
return source->get_field(); }
85 BoxMuller* get_normal () {
return source->get_normal(); }
86 void set_normal (BoxMuller* n) { source->set_normal(n); }
89 class field_transformer :
public mode_decorator
92 field_transformer (mode* s) : mode_decorator (s) { }
94 Spinor<double> get_field () {
return transform( source->get_field() ); }
96 virtual Spinor<double> transform (
const Spinor<double>& ) = 0;