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

#include <BALL/MATHS/FFT1D.h>

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

List of all members.

Public Types

typedef std::complex< typename
ComplexTraits::ComplexPrecision > 
Complex
typedef TRegularData1D
< std::complex< typename
ComplexTraits::ComplexPrecision > > 
ComplexVector

Public Member Functions

void doFFT ()
void doiFFT ()
bool translate (double trans_origin)
bool setPhysStepWidth (double new_width)
double getPhysStepWidth () const
double getFourierStepWidth () const
double getPhysSpaceMin () const
double getPhysSpaceMax () const
double getFourierSpaceMin () const
double getFourierSpaceMax () const
Size getMaxIndex () const
Size getNumberOfInverseTransforms () const
double getGridCoordinates (Position position) const
Complex getData (const double pos) const throw (Exception::OutOfGrid)
Complex getInterpolatedValue (const double pos) const throw (Exception::OutOfGrid)
void setData (double pos, Complex val) throw (Exception::OutOfGrid)
Complexoperator[] (const double pos) throw (Exception::OutOfGrid)
const Complexoperator[] (const double pos) const throw (Exception::OutOfGrid)
Complexoperator[] (const Position &pos) throw (Exception::OutOfGrid)
const Complexoperator[] (const Position &pos) const throw (Exception::OutOfGrid)
void setNumberOfFFTTransforms (Size num)
void setNumberOfiFFTTransforms (Size num)
bool isInFourierSpace () const
Complex phase (const double pos) const
Constructors and Destructors

 TFFT1D ()
 Default constructor.
 TFFT1D (const TFFT1D &data)
 Copy constructor.
 TFFT1D (Size ldn, double stepPhys=1., double origin=0., bool inFourierSpace=false)
virtual ~TFFT1D ()
 Destructor.
Assignment

const TFFT1Doperator= (const TFFT1D &fft1d)
 Assignment operator.
virtual void clear ()
virtual void destroy ()
Predicates

bool operator== (const TFFT1D &fft1d) const

Protected Attributes

Size length_
bool inFourierSpace_
Size numPhysToFourier_
Size numFourierToPhys_
double origin_
 The origin of the data set.
double stepPhys_
double stepFourier_
double minPhys_
double maxPhys_
double minFourier_
double maxFourier_
ComplexTraits::FftwPlan planForward_
ComplexTraits::FftwPlan planBackward_
ComplexdataAdress_
bool planCalculated_

Detailed Description

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

A class to perform Fast Fourier Transforms and inverse Fast Fourier Transforms on regularly spaced one 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.

Definition at line 38 of file FFT1D.h.


Member Typedef Documentation

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

Definition at line 43 of file FFT1D.h.

template<typename ComplexTraits>
typedef TRegularData1D<std::complex<typename ComplexTraits::ComplexPrecision> > BALL::TFFT1D< ComplexTraits >::ComplexVector

Definition at line 44 of file FFT1D.h.


Constructor & Destructor Documentation

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

Default constructor.

Global assignment operator from FFT2D to TRegularData2D<Complex> Global assignment operator from FFT3D to TRegularData3D<float>. This operator assigns the real part of the complex FFT2D-data to the TRegularData2D<float> to.

Definition at line 281 of file FFT1D.h.

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

Copy constructor.

template<typename ComplexTraits>
BALL::TFFT1D< ComplexTraits >::TFFT1D ( Size  ldn,
double  stepPhys = 1.,
double  origin = 0.,
bool  inFourierSpace = false 
)

Detailed constructor.

Parameters:
ldn The binary logarithm of the number of grid points (we use the logarithm to ensure that the number of points is a power of two, which is important for the FFT)
stepPhys The step width 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::TFFT1D< ComplexTraits >::~TFFT1D (  )  [virtual]

Destructor.


Member Function Documentation

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

Clear the contents and reset all attributes.

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

Perform a single fast fourier transform on the data.

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

Perform a single inverse fourier transform on the data.

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

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

Definition at line 456 of file FFT1D.h.

template<typename ComplexTraits >
double BALL::TFFT1D< ComplexTraits >::getFourierSpaceMax (  )  const [inline]

Returns the maximal position of the grid in fourier space.

Definition at line 398 of file FFT1D.h.

template<typename ComplexTraits >
double BALL::TFFT1D< ComplexTraits >::getFourierSpaceMin (  )  const [inline]

Returns the minimal position of the grid in fourier space.

Definition at line 392 of file FFT1D.h.

template<typename ComplexTraits >
double BALL::TFFT1D< ComplexTraits >::getFourierStepWidth (  )  const [inline]

Returns the step width in fourier space.

Definition at line 374 of file FFT1D.h.

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

AR: Returns the grid coordinate corresponding to the position.

Definition at line 417 of file FFT1D.h.

template<typename ComplexTraits >
TFFT1D< ComplexTraits >::Complex BALL::TFFT1D< ComplexTraits >::getInterpolatedValue ( const double  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 normalization.

Definition at line 480 of file FFT1D.h.

template<typename ComplexTraits >
Size BALL::TFFT1D< ComplexTraits >::getMaxIndex (  )  const [inline]

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

Definition at line 404 of file FFT1D.h.

template<typename ComplexTraits >
Size BALL::TFFT1D< 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 410 of file FFT1D.h.

template<typename ComplexTraits >
double BALL::TFFT1D< ComplexTraits >::getPhysSpaceMax (  )  const [inline]

Returns the maximal position of the grid in physical space.

Definition at line 386 of file FFT1D.h.

template<typename ComplexTraits >
double BALL::TFFT1D< ComplexTraits >::getPhysSpaceMin (  )  const [inline]

Returns the minimal position of the grid in physical space.

Definition at line 380 of file FFT1D.h.

template<typename ComplexTraits >
double BALL::TFFT1D< ComplexTraits >::getPhysStepWidth (  )  const [inline]

Returns the step width in physical space.

Definition at line 368 of file FFT1D.h.

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

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

Definition at line 604 of file FFT1D.h.

template<typename ComplexTraits>
const TFFT1D& BALL::TFFT1D< ComplexTraits >::operator= ( const TFFT1D< ComplexTraits > &  fft1d  ) 

Assignment operator.

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

Equality operator.

Definition at line 292 of file FFT1D.h.

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

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

Definition at line 208 of file FFT1D.h.

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

AR: Access the (raw) data at Position pos

Definition at line 200 of file FFT1D.h.

template<typename ComplexTraits >
const TFFT1D< ComplexTraits >::Complex & BALL::TFFT1D< ComplexTraits >::operator[] ( const double  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 565 of file FFT1D.h.

template<typename ComplexTraits >
TFFT1D< ComplexTraits >::Complex & BALL::TFFT1D< ComplexTraits >::operator[] ( const double  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 537 of file FFT1D.h.

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

Compute the phase factor. 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 593 of file FFT1D.h.

template<typename ComplexTraits >
void BALL::TFFT1D< ComplexTraits >::setData ( double  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 normalization.

Definition at line 514 of file FFT1D.h.

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

Definition at line 215 of file FFT1D.h.

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

Definition at line 221 of file FFT1D.h.

template<typename ComplexTraits >
bool BALL::TFFT1D< ComplexTraits >::setPhysStepWidth ( double  new_width  )  [inline]

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

Definition at line 347 of file FFT1D.h.

template<typename ComplexTraits >
bool BALL::TFFT1D< ComplexTraits >::translate ( double  trans_origin  )  [inline]

Translate the origin in physical space about transOrigin . If the result is out of bounds, the function does nothing and returns false .

Definition at line 326 of file FFT1D.h.


Member Data Documentation

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

Definition at line 256 of file FFT1D.h.

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

Definition at line 241 of file FFT1D.h.

template<typename ComplexTraits>
Size BALL::TFFT1D< ComplexTraits >::length_ [protected]

Definition at line 240 of file FFT1D.h.

template<typename ComplexTraits>
double BALL::TFFT1D< ComplexTraits >::maxFourier_ [protected]

Definition at line 250 of file FFT1D.h.

template<typename ComplexTraits>
double BALL::TFFT1D< ComplexTraits >::maxPhys_ [protected]

Definition at line 248 of file FFT1D.h.

template<typename ComplexTraits>
double BALL::TFFT1D< ComplexTraits >::minFourier_ [protected]

Definition at line 249 of file FFT1D.h.

template<typename ComplexTraits>
double BALL::TFFT1D< ComplexTraits >::minPhys_ [protected]

Definition at line 247 of file FFT1D.h.

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

Definition at line 243 of file FFT1D.h.

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

Definition at line 242 of file FFT1D.h.

template<typename ComplexTraits>
double BALL::TFFT1D< ComplexTraits >::origin_ [protected]

The origin of the data set.

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

Definition at line 244 of file FFT1D.h.

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

Definition at line 253 of file FFT1D.h.

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

Definition at line 257 of file FFT1D.h.

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

Definition at line 252 of file FFT1D.h.

template<typename ComplexTraits>
double BALL::TFFT1D< ComplexTraits >::stepFourier_ [protected]

Definition at line 246 of file FFT1D.h.

template<typename ComplexTraits>
double BALL::TFFT1D< ComplexTraits >::stepPhys_ [protected]

Definition at line 245 of file FFT1D.h.

Generated by  doxygen 1.6.3