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;