Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

Arroyo::ideal_tip_tilt_mirror< aperture_type > Class Template Reference

#include <tip_tilt_mirror.h>

Inheritance diagram for Arroyo::ideal_tip_tilt_mirror< aperture_type >:

Arroyo::tip_tilt_mirror_base Arroyo::plane_optic Arroyo::one_to_one_optic Arroyo::optic Arroyo::three_frame Arroyo::optic Arroyo::AO_sim_base Arroyo::three_point Arroyo::AO_sim_base List of all members.

Public Member Functions

 ideal_tip_tilt_mirror (const ideal_tip_tilt_mirror &ideal_ttm)
 ideal_tip_tilt_mirror (const char *filename)
 ideal_tip_tilt_mirror (const iofits &iof)
 ideal_tip_tilt_mirror (const aperture_type &ap, double angular_velocity, double timestamp=0)
 ~ideal_tip_tilt_mirror ()
ideal_tip_tilt_mirroroperator= (const ideal_tip_tilt_mirror &ideal_ttm)
void read (const char *filename)
void read (const iofits &iof)
void write (const char *filename) const
void write (iofits &iof) const
void print (ostream &os, const char *prefix="") const
virtual void transform (diffractive_wavefront< float > &wf) const
virtual void transform (diffractive_wavefront< double > &wf) const
void update (const three_vector &orientation_command, double timestamp)
three_vector get_orientation_command () const
three_frame get_orientation (double timestamp) const
double get_angular_velocity () const
void set_angular_velocity (double angular_velocity)
double get_timestamp () const

Protected Member Functions

template<class T>
void private_transform (diffractive_wavefront< T > &wf) const
 ideal_tip_tilt_mirror ()

Protected Attributes

double mirror_timestamp
three_vector mirror_orientation_command
double mirror_angular_velocity
 The angular velocity, in rad/sec.

Detailed Description

template<class aperture_type>
class Arroyo::ideal_tip_tilt_mirror< aperture_type >

A template class to represent an idealized tip tilt mirror. One may instantiate this class using an aperture type.

The dynamic model does not include effects of hysteresis, and uses a constant angular velocity approximation to the mirror orientation. (i.e. the mirror moves at constant angular velocity towards its commanded position until it reaches that position, and then stops).

This class inherits three_frame through planar_optic, and the orientation of this three frame represents the mirror orientation at a particular time. This time is held as a data member within the class. The class also holds a three vector that represents the latest mirror orientation command.

The member function

ideal_tip_tilt_mirror::update(three_vector & tv, double & timestamp)

may be used to issue a new command to the tip tilt mirror. To effect an update, this member function computes the current orientation of the mirror at the time given by the timestamp passed to this function. It then moves the aperture to this orientation, sets the internal timestamp to that passed into the update function, and sets the latest mirror command to be equal to the three_vector passed into the update function.

Attempting to issue an update command with a timestamp that predates that stored within the class is an error.

To perform the transformation on a wavefront using the transform member function, the class uses the mirror angular velocity to interpolate to the timestamp of the wavefront in the transform member function. The transformation is performed by applying the aperture transformation, and then adjusting the wavefront three_frame to account for the reflection.

Supplying a wavefront with a timestamp that preceeds the internal one is an error.


Constructor & Destructor Documentation

template<class aperture_type>
Arroyo::ideal_tip_tilt_mirror< aperture_type >::ideal_tip_tilt_mirror  )  [inline, protected]
 

Null constructor.

Protected because instances must be initialized

template<class aperture_type>
Arroyo::ideal_tip_tilt_mirror< aperture_type >::ideal_tip_tilt_mirror const ideal_tip_tilt_mirror< aperture_type > &  ideal_ttm  ) 
 

Copy constructor

template<class aperture_type>
Arroyo::ideal_tip_tilt_mirror< aperture_type >::ideal_tip_tilt_mirror const char *  filename  ) 
 

Construct from file

template<class aperture_type>
Arroyo::ideal_tip_tilt_mirror< aperture_type >::ideal_tip_tilt_mirror const iofits iof  ) 
 

Construct from iofits object

template<class aperture_type>
Arroyo::ideal_tip_tilt_mirror< aperture_type >::ideal_tip_tilt_mirror const aperture_type &  ap,
double  angular_velocity,
double  timestamp = 0
 

Construct from the bits

template<class aperture_type>
Arroyo::ideal_tip_tilt_mirror< aperture_type >::~ideal_tip_tilt_mirror  )  [inline]
 

Destructor


Member Function Documentation

template<class aperture_type>
double Arroyo::ideal_tip_tilt_mirror< aperture_type >::get_angular_velocity  )  const [inline]
 

Get the mirror angular velocity

Angular velocity is in rad/sec

template<class aperture_type>
three_frame Arroyo::ideal_tip_tilt_mirror< aperture_type >::get_orientation double  timestamp  )  const
 

Get the mirror orientation at the timestamp provided.

If the timestamp provided preceeds the mirror timestamp, an error is thrown

template<class aperture_type>
three_vector Arroyo::ideal_tip_tilt_mirror< aperture_type >::get_orientation_command  )  const [inline]
 

Get the last mirror orientation command

template<class aperture_type>
double Arroyo::ideal_tip_tilt_mirror< aperture_type >::get_timestamp  )  const [inline]
 

Get the mirror timestamp

Timestamp is in seconds

template<class aperture_type>
ideal_tip_tilt_mirror< aperture_type > & Arroyo::ideal_tip_tilt_mirror< aperture_type >::operator= const ideal_tip_tilt_mirror< aperture_type > &  ideal_ttm  ) 
 

Operator=

template<class aperture_type>
void Arroyo::ideal_tip_tilt_mirror< aperture_type >::print ostream &  os,
const char *  prefix = ""
const [virtual]
 

Print

Implements Arroyo::tip_tilt_mirror_base.

template<class aperture_type>
template<class T>
void Arroyo::ideal_tip_tilt_mirror< aperture_type >::private_transform diffractive_wavefront< T > &  wf  )  const [protected]
 

A template member function to perform transform on both float and double instantiations of wavefront. This is necessary because there is no mechanism in C++ for virtual template member functions.

template<class aperture_type>
void Arroyo::ideal_tip_tilt_mirror< aperture_type >::read const iofits iof  )  [virtual]
 

Read from iofits object

Implements Arroyo::tip_tilt_mirror_base.

template<class aperture_type>
void Arroyo::ideal_tip_tilt_mirror< aperture_type >::read const char *  filename  )  [virtual]
 

Read from file

Implements Arroyo::tip_tilt_mirror_base.

template<class aperture_type>
void Arroyo::ideal_tip_tilt_mirror< aperture_type >::set_angular_velocity double  angular_velocity  ) 
 

Set the mirror angular velocity

Angular velocity is in rad/sec

template<class aperture_type>
void Arroyo::ideal_tip_tilt_mirror< aperture_type >::transform diffractive_wavefront< double > &  wf  )  const [virtual]
 

Apply the aperture to the wavefront

Implements Arroyo::one_to_one_optic.

template<class aperture_type>
void Arroyo::ideal_tip_tilt_mirror< aperture_type >::transform diffractive_wavefront< float > &  wf  )  const [virtual]
 

Apply the aperture to the wavefront

Implements Arroyo::one_to_one_optic.

template<class aperture_type>
void Arroyo::ideal_tip_tilt_mirror< aperture_type >::update const three_vector orientation_command,
double  timestamp
 

Update the mirror orientation. Starting at the timestamp provided, the mirror will start to move towards a new orientation at a constant angular velocity. The new orientation is defined by orientation_command, which is a three_vector orthogonal to the plane of the mirror.

template<class aperture_type>
void Arroyo::ideal_tip_tilt_mirror< aperture_type >::write iofits iof  )  const [virtual]
 

Write to iofits object

Implements Arroyo::tip_tilt_mirror_base.

template<class aperture_type>
void Arroyo::ideal_tip_tilt_mirror< aperture_type >::write const char *  filename  )  const [virtual]
 

Write to file

Implements Arroyo::tip_tilt_mirror_base.


Member Data Documentation

template<class aperture_type>
double Arroyo::ideal_tip_tilt_mirror< aperture_type >::mirror_angular_velocity [protected]
 

The angular velocity, in rad/sec.

template<class aperture_type>
three_vector Arroyo::ideal_tip_tilt_mirror< aperture_type >::mirror_orientation_command [protected]
 

The current orientation command, specified using a vector normal to the surface of the mirror. The mirror is heading towards this orientation with constant angular velocity.

template<class aperture_type>
double Arroyo::ideal_tip_tilt_mirror< aperture_type >::mirror_timestamp [protected]
 

The mirror orientation timestamp. At this time, the mirror orientation is defined by the aperture three frame.


The documentation for this class was generated from the following file:
Generated on Thu Nov 29 17:16:37 2007 for arroyo by  doxygen 1.3.9.1