BALL::TFFT2D< ComplexTraits > Class Template Reference
[Fast Fourier Transforms]

#include <BALL/MATHS/FFT2D.h>

Inheritance diagram for BALL::TFFT2D< ComplexTraits >:
Inheritance graph
[legend]

List of all members.

Public Types

typedef std::complex< typename
ComplexTraits::ComplexPrecision > 
Complex
typedef TRegularData2D
< std::complex< typename
ComplexTraits::ComplexPrecision > > 
ComplexVector
typedef TRegularData2D
< std::complex< typename
ComplexTraits::ComplexPrecision >
>::IndexType 
IndexType

Public Member Functions

void doFFT ()
void doiFFT ()
bool translate (const Vector2 &trans_origin)
bool setPhysStepWidth (double new_width_x, double new_width_y)
double getPhysStepWidthX () const
double getPhysStepWidthY () const
double getFourierStepWidthX () const
double getFourierStepWidthY () const
double getPhysSpaceMinX () const
double getPhysSpaceMinY () const
double getPhysSpaceMaxX () const
double getPhysSpaceMaxY () const
double getFourierSpaceMinX () const
double getFourierSpaceMinY () const
double getFourierSpaceMaxX () const
double getFourierSpaceMaxY () const
Size getMaxXIndex () const
Size getMaxYIndex () const
Size getNumberOfInverseTransforms () const
Vector2 getGridCoordinates (Position position) const
Complex getData (const Vector2 &pos) const throw (Exception::OutOfGrid)
Complex getInterpolatedValue (const Vector2 &pos) const throw (Exception::OutOfGrid)
void setData (const Vector2 &pos, Complex val) throw (Exception::OutOfGrid)
Complexoperator[] (const Vector2 &pos) throw (Exception::OutOfGrid)
const Complexoperator[] (const Vector2 &pos) const throw (Exception::OutOfGrid)
const Complexoperator[] (const IndexType &index) const
Complexoperator[] (const IndexType &index)
Complexoperator[] (const Position &pos) throw (Exception::OutOfGrid)
const Complexoperator[] (const Position &pos) const throw (Exception::OutOfGrid)
void setNumberOfFFTTransforms (Size num)
void setNumberOfiFFTTransforms (Size num)
Complex phase (const Vector2 &pos) const
bool isInFourierSpace () const
Constructors and Destructors

 TFFT2D ()
 Default constructor.
 TFFT2D (const TFFT2D &data)
 Copy constructor.
 TFFT2D (Size nX, Size nY, double stepPhysX=1., double stepPhysY=1., Vector2 origin=Vector2(0., 0.), bool inFourierSpace=false)
virtual ~TFFT2D ()
 Destructor.
Assignment

const TFFT2Doperator= (const TFFT2D &fft_2d)
 Assignment operator.
virtual void clear ()
virtual void destroy ()
Predicates

bool operator== (const TFFT2D &fft_2d) const

Protected Attributes

Size lengthX_
Size lengthY_
bool inFourierSpace_
Size numPhysToFourier_
Size numFourierToPhys_
Vector2 origin_
 Origin of the grid (offset).
double stepPhysX_
double stepPhysY_
double stepFourierX_
double stepFourierY_
Vector2 minPhys_
Vector2 maxPhys_
Vector2 minFourier_
Vector2 maxFourier_
ComplexTraits::FftwPlan planForward_
ComplexTraits::FftwPlan planBackward_
Size dataLength_
ComplexdataAdress_
bool planCalculated_

Detailed Description

template<typename ComplexTraits>
class BALL::TFFT2D< ComplexTraits >

A class to perform Fast Fourier Transforms and inverse Fast Fourier Transforms on regularly spaced two dimensional data.

This class makes use of the freely available library FFTW, which can be found at http://www.fftw.org coordinate system can be handled automatically. The normaliztion is chosen symmetrically.
S/TFFT2D.h

Definition at line 43 of file FFT2D.h.


Member Typedef Documentation

template<typename ComplexTraits>
typedef std::complex<typename ComplexTraits::ComplexPrecision> BALL::TFFT2D< ComplexTraits >::Complex

Definition at line 48 of file FFT2D.h.

template<typename ComplexTraits>
typedef TRegularData2D<std::complex<typename ComplexTraits::ComplexPrecision> > BALL::TFFT2D< ComplexTraits >::ComplexVector

Definition at line 49 of file FFT2D.h.

template<typename ComplexTraits>
typedef TRegularData2D<std::complex<typename ComplexTraits::ComplexPrecision> >::IndexType BALL::TFFT2D< ComplexTraits >::IndexType

Definition at line 50 of file FFT2D.h.


Constructor & Destructor Documentation

template<typename ComplexTraits >
BALL::TFFT2D< ComplexTraits >::TFFT2D (  )  [inline]

Default constructor.

Definition at line 331 of file FFT2D.h.

template<typename ComplexTraits>
BALL::TFFT2D< ComplexTraits >::TFFT2D ( const TFFT2D< ComplexTraits > &  data  ) 

Copy constructor.

template<typename ComplexTraits>
BALL::TFFT2D< ComplexTraits >::TFFT2D ( Size  nX,
Size  nY,
double  stepPhysX = 1.,
double  stepPhysY = 1.,
Vector2  origin = Vector2(0., 0.),
bool  inFourierSpace = false 
)

Detailed constructor.

Parameters:
nX The number of grid points in X direction
nY The number of grid points in Y direction
stepPhysX The step width in X direction in physical space
stepPhysY The step width in Y direction in physical space
origin The origin of the coordinate system
inFourierSpace Flag to decide whether the data is assumed to be in physical or fourier space
template<typename ComplexTraits>
virtual BALL::TFFT2D< ComplexTraits >::~TFFT2D (  )  [virtual]

Destructor.


Member Function Documentation

template<typename ComplexTraits>
virtual void BALL::TFFT2D< ComplexTraits >::clear (  )  [virtual]
template<typename ComplexTraits>
virtual void BALL::TFFT2D< ComplexTraits >::destroy (  )  [virtual]

Clear the contents and reset all attributes.

template<typename ComplexTraits>
void BALL::TFFT2D< ComplexTraits >::doFFT (  ) 

Perform a single fast fourier transform on the data.

template<typename ComplexTraits>
void BALL::TFFT2D< ComplexTraits >::doiFFT (  ) 

Perform a single inverse fourier transform on the data.

template<typename ComplexTraits >
TFFT2D< ComplexTraits >::Complex BALL::TFFT2D< ComplexTraits >::getData ( const Vector2 pos  )  const throw (Exception::OutOfGrid) [inline]

Returns the data at the grid position closest to pos , and automatically includes the correct phase factor and (symmetric) normalization.

Definition at line 576 of file FFT2D.h.

template<typename ComplexTraits >
double BALL::TFFT2D< ComplexTraits >::getFourierSpaceMaxX (  )  const [inline]

Returns the maximal position of the grid in fourier space in X direction.

Definition at line 489 of file FFT2D.h.

template<typename ComplexTraits >
double BALL::TFFT2D< ComplexTraits >::getFourierSpaceMaxY (  )  const [inline]

Returns the maximal position of the grid in fourier space in Y direction.

Definition at line 495 of file FFT2D.h.

template<typename ComplexTraits >
double BALL::TFFT2D< ComplexTraits >::getFourierSpaceMinX (  )  const [inline]

Returns the minimal position of the grid in fourier space in X direction.

Definition at line 477 of file FFT2D.h.

template<typename ComplexTraits >
double BALL::TFFT2D< ComplexTraits >::getFourierSpaceMinY (  )  const [inline]

Returns the minimal position of the grid in fourier space in Y direction.

Definition at line 483 of file FFT2D.h.

template<typename ComplexTraits >
double BALL::TFFT2D< ComplexTraits >::getFourierStepWidthX (  )  const [inline]

Returns the step width in fourier space in X direction.

Definition at line 441 of file FFT2D.h.

template<typename ComplexTraits >
double BALL::TFFT2D< ComplexTraits >::getFourierStepWidthY (  )  const [inline]

Returns the step width in fourier space in Y direction.

Definition at line 447 of file FFT2D.h.

template<typename ComplexTraits >
Vector2 BALL::TFFT2D< ComplexTraits >::getGridCoordinates ( Position  position  )  const [inline]

AR: Returns the grid coordinate corresponding to the position.

Definition at line 520 of file FFT2D.h.

template<typename ComplexTraits >
TFFT2D< ComplexTraits >::Complex BALL::TFFT2D< ComplexTraits >::getInterpolatedValue ( const Vector2 pos  )  const throw (Exception::OutOfGrid) [inline]

Returns the data at point pos. If pos is not a point on the grid, the data is linearly interpolated. This method automatically includes the correct phase factor and (symmetric) normalization.

Reimplemented from BALL::TRegularData2D< std::complex< ComplexTraits::ComplexPrecision > >.

Definition at line 599 of file FFT2D.h.

template<typename ComplexTraits >
Size BALL::TFFT2D< ComplexTraits >::getMaxXIndex (  )  const [inline]

AR: Return the largest grid position for the x direction. This method returns the maximum position allowed in the grid. As the point in the origin has the indices (0, 0), this method returns the number of points in X direction minus one.

Definition at line 501 of file FFT2D.h.

template<typename ComplexTraits >
Size BALL::TFFT2D< ComplexTraits >::getMaxYIndex (  )  const [inline]

AR: Return the largest grid position for the y direction. This method returns the maximum position allowed in the grid. As the point in the origin has the indices (0, 0), this method returns the number of points in Y direction minus one.

Definition at line 507 of file FFT2D.h.

template<typename ComplexTraits >
Size BALL::TFFT2D< ComplexTraits >::getNumberOfInverseTransforms (  )  const [inline]

AR: Return the number of inverse transforms that have been carried out using this class. This is an important factor for the normalization of the data.

Definition at line 513 of file FFT2D.h.

template<typename ComplexTraits >
double BALL::TFFT2D< ComplexTraits >::getPhysSpaceMaxX (  )  const [inline]

Returns the maximal position of the grid in physical space in X direction.

Definition at line 465 of file FFT2D.h.

template<typename ComplexTraits >
double BALL::TFFT2D< ComplexTraits >::getPhysSpaceMaxY (  )  const [inline]

Returns the maximal position of the grid in physical space in Y direction.

Definition at line 471 of file FFT2D.h.

template<typename ComplexTraits >
double BALL::TFFT2D< ComplexTraits >::getPhysSpaceMinX (  )  const [inline]

Returns the minimal position of the grid in physical space in X direction.

Definition at line 453 of file FFT2D.h.

template<typename ComplexTraits >
double BALL::TFFT2D< ComplexTraits >::getPhysSpaceMinY (  )  const [inline]

Returns the minimal position of the grid in physical space in Y direction.

Definition at line 459 of file FFT2D.h.

template<typename ComplexTraits >
double BALL::TFFT2D< ComplexTraits >::getPhysStepWidthX (  )  const [inline]

Returns the step width in physical space in X direction.

Definition at line 429 of file FFT2D.h.

template<typename ComplexTraits >
double BALL::TFFT2D< ComplexTraits >::getPhysStepWidthY (  )  const [inline]

Returns the step width in physical space in Y direction.

Definition at line 435 of file FFT2D.h.

template<typename ComplexTraits >
bool BALL::TFFT2D< ComplexTraits >::isInFourierSpace (  )  const [inline]

AR: Returns true if the data is considered to be in Fourier space, false otherwise.

Definition at line 764 of file FFT2D.h.

template<typename ComplexTraits>
const TFFT2D& BALL::TFFT2D< ComplexTraits >::operator= ( const TFFT2D< ComplexTraits > &  fft_2d  ) 

Assignment operator.

template<typename ComplexTraits >
bool BALL::TFFT2D< ComplexTraits >::operator== ( const TFFT2D< ComplexTraits > &  fft_2d  )  const [inline]

Equality operator.

Definition at line 340 of file FFT2D.h.

template<typename ComplexTraits>
const Complex& BALL::TFFT2D< ComplexTraits >::operator[] ( const Position pos  )  const throw (Exception::OutOfGrid) [inline]

AR: Access the (raw) data at Position pos. Const method.

Definition at line 260 of file FFT2D.h.

template<typename ComplexTraits>
Complex& BALL::TFFT2D< ComplexTraits >::operator[] ( const Position pos  )  throw (Exception::OutOfGrid) [inline]

AR: Access the (raw) data at Position pos.

Definition at line 252 of file FFT2D.h.

template<typename ComplexTraits>
Complex& BALL::TFFT2D< ComplexTraits >::operator[] ( const IndexType index  )  [inline]

Mutable random access operator.

Note:
No range checking is done. For a more robust version, please use getData.

Definition at line 248 of file FFT2D.h.

template<typename ComplexTraits>
const Complex& BALL::TFFT2D< ComplexTraits >::operator[] ( const IndexType index  )  const [inline]

Nonmutable random access operator.

Note:
No range checking is done. For a more robust version, please use getData.

Definition at line 242 of file FFT2D.h.

template<typename ComplexTraits >
const TFFT2D< ComplexTraits >::Complex & BALL::TFFT2D< ComplexTraits >::operator[] ( const Vector2 pos  )  const throw (Exception::OutOfGrid) [inline]

Access the data at the grid position closest to pos . This function returns the "raw" data at that position.

Definition at line 708 of file FFT2D.h.

template<typename ComplexTraits >
TFFT2D< ComplexTraits >::Complex & BALL::TFFT2D< ComplexTraits >::operator[] ( const Vector2 pos  )  throw (Exception::OutOfGrid) [inline]

Access the data at the grid position closest to pos . This function returns the "raw" data at that position.

Definition at line 665 of file FFT2D.h.

template<typename ComplexTraits >
TFFT2D< ComplexTraits >::Complex BALL::TFFT2D< ComplexTraits >::phase ( const Vector2 pos  )  const [inline]

This computes the phase factor in fourier space that results if the origin of the coordinate system in physical space is not in the "lower left corner".

Definition at line 751 of file FFT2D.h.

template<typename ComplexTraits >
void BALL::TFFT2D< ComplexTraits >::setData ( const Vector2 pos,
Complex  val 
) throw (Exception::OutOfGrid) [inline]

Sets the data point at the grid position closest to pos to the value val , and -- if called in fourier space -- automatically includes the correct phase factor and (symmetric) normalization.

Definition at line 641 of file FFT2D.h.

template<typename ComplexTraits>
void BALL::TFFT2D< ComplexTraits >::setNumberOfFFTTransforms ( Size  num  )  [inline]

Definition at line 267 of file FFT2D.h.

template<typename ComplexTraits>
void BALL::TFFT2D< ComplexTraits >::setNumberOfiFFTTransforms ( Size  num  )  [inline]

Definition at line 273 of file FFT2D.h.

template<typename ComplexTraits >
bool BALL::TFFT2D< ComplexTraits >::setPhysStepWidth ( double  new_width_x,
double  new_width_y 
) [inline]

Set the step width in physical space to {new_width_x, new_width_y}. The step width in fourier space is automatically adjusted accordingly. {new_width_x and new_width_y} must be positive, otherwise the function does nothing and retuns false .

Definition at line 406 of file FFT2D.h.

template<typename ComplexTraits >
bool BALL::TFFT2D< ComplexTraits >::translate ( const Vector2 trans_origin  )  [inline]

Translate the origin in physical space about {trans_origin}, i.e. the new origin will be located at the former position {trans_origin}. If the result is out of bounds, the function does nothing and returns false .

Definition at line 382 of file FFT2D.h.


Member Data Documentation

template<typename ComplexTraits>
Complex* BALL::TFFT2D< ComplexTraits >::dataAdress_ [protected]

Definition at line 307 of file FFT2D.h.

template<typename ComplexTraits>
Size BALL::TFFT2D< ComplexTraits >::dataLength_ [protected]

Definition at line 306 of file FFT2D.h.

template<typename ComplexTraits>
bool BALL::TFFT2D< ComplexTraits >::inFourierSpace_ [protected]

Definition at line 291 of file FFT2D.h.

template<typename ComplexTraits>
Size BALL::TFFT2D< ComplexTraits >::lengthX_ [protected]

Definition at line 290 of file FFT2D.h.

template<typename ComplexTraits>
Size BALL::TFFT2D< ComplexTraits >::lengthY_ [protected]

Definition at line 290 of file FFT2D.h.

template<typename ComplexTraits>
Vector2 BALL::TFFT2D< ComplexTraits >::maxFourier_ [protected]

Definition at line 298 of file FFT2D.h.

template<typename ComplexTraits>
Vector2 BALL::TFFT2D< ComplexTraits >::maxPhys_ [protected]

Definition at line 297 of file FFT2D.h.

template<typename ComplexTraits>
Vector2 BALL::TFFT2D< ComplexTraits >::minFourier_ [protected]

Definition at line 298 of file FFT2D.h.

template<typename ComplexTraits>
Vector2 BALL::TFFT2D< ComplexTraits >::minPhys_ [protected]

Definition at line 297 of file FFT2D.h.

template<typename ComplexTraits>
Size BALL::TFFT2D< ComplexTraits >::numFourierToPhys_ [protected]

Definition at line 293 of file FFT2D.h.

template<typename ComplexTraits>
Size BALL::TFFT2D< ComplexTraits >::numPhysToFourier_ [protected]

Definition at line 292 of file FFT2D.h.

template<typename ComplexTraits>
Vector2 BALL::TFFT2D< ComplexTraits >::origin_ [protected]

Origin of the grid (offset).

Reimplemented from BALL::TRegularData2D< std::complex< ComplexTraits::ComplexPrecision > >.

Definition at line 294 of file FFT2D.h.

template<typename ComplexTraits>
ComplexTraits::FftwPlan BALL::TFFT2D< ComplexTraits >::planBackward_ [protected]

Definition at line 302 of file FFT2D.h.

template<typename ComplexTraits>
bool BALL::TFFT2D< ComplexTraits >::planCalculated_ [protected]

Definition at line 308 of file FFT2D.h.

template<typename ComplexTraits>
ComplexTraits::FftwPlan BALL::TFFT2D< ComplexTraits >::planForward_ [protected]

Definition at line 301 of file FFT2D.h.

template<typename ComplexTraits>
double BALL::TFFT2D< ComplexTraits >::stepFourierX_ [protected]

Definition at line 296 of file FFT2D.h.

template<typename ComplexTraits>
double BALL::TFFT2D< ComplexTraits >::stepFourierY_ [protected]

Definition at line 296 of file FFT2D.h.

template<typename ComplexTraits>
double BALL::TFFT2D< ComplexTraits >::stepPhysX_ [protected]

Definition at line 295 of file FFT2D.h.

template<typename ComplexTraits>
double BALL::TFFT2D< ComplexTraits >::stepPhysY_ [protected]

Definition at line 295 of file FFT2D.h.

Generated by  doxygen 1.6.3