#include <FFT3D.h>

Public Types |
|
|
typedef std::complex< typename ComplexTraits::ComplexPrecision > |
Complex |
|
typedef TRegularData3D < std::complex< typename ComplexTraits::ComplexPrecision > > |
ComplexVector |
Public Member Functions |
|
|
Constructors and Destructors
|
|
| TFFT3D () | |
| Default constructor. |
|
| TFFT3D (const TFFT3D &data) | |
| Copy constructor. |
|
| TFFT3D (Size ldnX, Size ldnY, Size ldnZ, double stepPhysX=1., double stepPhysY=1., double stepPhysZ=1., Vector3 origin=Vector3(0., 0., 0), bool inFourierSpace=false) | |
| Detailed constructor. |
|
| virtual | ~TFFT3D () |
| Destructor. |
|
|
Assignment
|
|
| const TFFT3D & | operator= (const TFFT3D &fft_3d) |
| Assignment operator. |
|
| virtual void | clear () |
| Clear the contents. |
|
| virtual void | destroy () |
| Clear the contents and reset all
attributes. |
|
|
Predicates
|
|
| bool | operator== (const TFFT3D &fft3d) const |
| Equality operator. |
|
| void | doFFT () |
| Perform a single fast Fourier
transform on the data. |
|
| void | doiFFT () |
| Perform a single inverse Fourier
transform on the data. |
|
| bool | translate (const Vector3 &trans_origin) |
| Translate the origin in physical
space about {trans_origin}, i.e. |
|
| bool | setPhysStepWidth (double new_width_x, double new_width_y, double new_width_z) |
| Set the step width in physical space
to {new_width_x, new_width_y, new_width_z}.
|
|
| double | getPhysStepWidthX () const |
| Returns the step width in physical
space in X direction. |
|
| double | getPhysStepWidthY () const |
| Returns the step width in physical
space in Y direction. |
|
| double | getPhysStepWidthZ () const |
| Returns the step width in physical
space in Z direction. |
|
| double | getFourierStepWidthX () const |
| Returns the step width in Fourier
space in X direction. |
|
| double | getFourierStepWidthY () const |
| Returns the step width in Fourier
space in Y direction. |
|
| double | getFourierStepWidthZ () const |
| Returns the step width in Fourier
space in Z direction. |
|
| double | getPhysSpaceMinX () const |
| Returns the minimal position of the
grid in physical space in X direction. |
|
| double | getPhysSpaceMinY () const |
| Returns the minimal position of the
grid in physical space in Y direction. |
|
| double | getPhysSpaceMinZ () const |
| Returns the minimal position of the
grid in physical space in Z direction. |
|
| double | getPhysSpaceMaxX () const |
| Returns the maximal position of the
grid in physical space in X direction. |
|
| double | getPhysSpaceMaxY () const |
| Returns the maximal position of the
grid in physical space in Y direction. |
|
| double | getPhysSpaceMaxZ () const |
| Returns the maximal position of the
grid in physical space in Z direction. |
|
| double | getFourierSpaceMinX () const |
| Returns the minimal position of the
grid in Fourier space in X direction. |
|
| double | getFourierSpaceMinY () const |
| Returns the minimal position of the
grid in Fourier space in Y direction. |
|
| double | getFourierSpaceMinZ () const |
| Returns the minimal position of the
grid in Fourier space in Z direction. |
|
| double | getFourierSpaceMaxX () const |
| Returns the maximal position of the
grid in Fourier space in X direction. |
|
| double | getFourierSpaceMaxY () const |
| Returns the maximal position of the
grid in Fourier space in Y direction. |
|
| double | getFourierSpaceMaxZ () const |
| Returns the maximal position of the
grid in Fourier space in Z direction. |
|
| Size | getMaxXIndex () const |
| Return the largest grid position for
the x direction. |
|
| Size | getMaxYIndex () const |
| Return the largest grid position for
the y direction. |
|
| Size | getMaxZIndex () const |
| Return the largest grid position for
the z direction. |
|
| Size | getNumberOfInverseTransforms () const |
| Return the number of inverse
transforms that have been carried out using this class.
|
|
| Vector3 | getGridCoordinates (Position position) const |
| Returns the grid coordinate
corresponding to the position. |
|
| Complex | getData (const Vector3 &pos) const throw (Exception::OutOfGrid) |
| Returns the data at the grid
position closest to pos , and automatically includes
the correct phase factor and (symmetric)
normalization. |
|
| Complex | getInterpolatedValue (const Vector3 &pos) const throw (Exception::OutOfGrid) |
| Returns the data at point
pos. |
|
| void | setData (const Vector3 &pos, Complex val) throw (Exception::OutOfGrid) |
| 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. |
|
| Complex & | operator[] (const Vector3 &pos) throw (Exception::OutOfGrid) |
| Access the data at the grid position
closest to pos . |
|
| const Complex & | operator[] (const Vector3 &pos) const throw (Exception::OutOfGrid) |
| Access the data at the grid position
closest to pos . |
|
| Complex & | operator[] (const Position &pos) throw (Exception::OutOfGrid) |
| Access the (raw) data at Position
pos. |
|
| const Complex & | operator[] (const Position &pos) const throw (Exception::OutOfGrid) |
| Access the (raw) data at Position
pos. |
|
| void | setNumberOfFFTTransforms (Size num) |
| void | setNumberOfiFFTTransforms (Size num) |
| Complex | phase (const Vector3 &pos) const |
| 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". |
|
|
Predicates
|
|
| bool | isInFourierSpace () const |
| Returns true if the data is
considered to be in Fourier space, false
otherwise. |
|
Protected Attributes |
|
| Size | lengthX_ |
| Size | lengthY_ |
| Size | lengthZ_ |
| bool | inFourierSpace_ |
| Size | numPhysToFourier_ |
| Size | numFourierToPhys_ |
| Vector3 | origin_ |
| Origin of the grid
(offset). |
|
| double | stepPhysX_ |
| double | stepPhysY_ |
| double | stepPhysZ_ |
| double | stepFourierX_ |
| double | stepFourierY_ |
| double | stepFourierZ_ |
| Vector3 | minPhys_ |
| Vector3 | maxPhys_ |
| Vector3 | minFourier_ |
| Vector3 | maxFourier_ |
| ComplexTraits::FftwPlan | planForward_ |
| ComplexTraits::FftwPlan | planBackward_ |
| Size | dataLength_ |
| Complex * | dataAdress_ |
| bool | planCalculated_ |
| BALL::TFFT3D< ComplexTraits >::TFFT3D | ( | Size | ldnX, | |
| Size | ldnY, | |||
| Size | ldnZ, | |||
| double | stepPhysX =
1., |
|||
| double | stepPhysY =
1., |
|||
| double | stepPhysZ =
1., |
|||
| Vector3 | origin = Vector3(0.,
0., 0), |
|||
| bool | inFourierSpace =
false |
|||
| ) |
Detailed constructor.
| ldnX | The binary logarithm of the number of grid points in X direction (we use the logarithm to ensure that the number of points is a power of two, which is important for the FFT) | |
| ldnY | The binary logarithm of the number of grid points in Y direction | |
| ldnZ | The binary logarithm of the number of grid points in Z direction | |
| stepPhysX | The step width in X direction in physical space | |
| stepPhysY | The step width in Y direction in physical space | |
| stepPhysZ | The step width in Z 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 |
| TFFT3D< ComplexTraits >::Complex BALL::TFFT3D< ComplexTraits >::getInterpolatedValue | ( | const Vector3 & | pos | ) | const throw (Exception::OutOfGrid) |
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::TRegularData3D< std::complex< ComplexTraits::ComplexPrecision > >.
References BALL::Maths::floor(), BALL::Maths::max(), BALL::Maths::min(), BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.
| Size BALL::TFFT3D< ComplexTraits >::getMaxXIndex | ( | ) | const |
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, 0), this method returns the number of points in X direction minus one.
| Size BALL::TFFT3D< ComplexTraits >::getMaxYIndex | ( | ) | const |
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, 0), this method returns the number of points in Y direction minus one.
| Size BALL::TFFT3D< ComplexTraits >::getMaxZIndex | ( | ) | const |
Return the largest grid position for the z direction.
This method returns the maximum position allowed in the grid. As the point in the origin has the indices (0, 0, 0), this method returns the number of points in Z direction minus one.
| Size BALL::TFFT3D< ComplexTraits >::getNumberOfInverseTransforms | ( | ) | const |
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.
| const Complex& BALL::TFFT3D< ComplexTraits >::operator[] | ( | const Position & | pos | ) | const throw (Exception::OutOfGrid) |
Access the (raw) data at Position pos.
Const method.
References BALL::TFFT3D< ComplexTraits >::operator[]().
| const TFFT3D< ComplexTraits >::Complex & BALL::TFFT3D< ComplexTraits >::operator[] | ( | const Vector3 & | pos | ) | const throw (Exception::OutOfGrid) |
Access the data at the grid position closest to pos .
This function returns the "raw" data at that position.
References BALL::TRegularData3D< ValueType >::operator[](), BALL::Maths::rint(), BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.
| TFFT3D< ComplexTraits >::Complex & BALL::TFFT3D< ComplexTraits >::operator[] | ( | const Vector3 & | pos | ) | throw (Exception::OutOfGrid) |
Access the data at the grid position closest to pos .
This function returns the "raw" data at that position.
References BALL::TRegularData3D< ValueType >::operator[](), BALL::Maths::rint(), BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.
Referenced by BALL::TFFT3D< ComplexTraits >::operator[]().
| bool BALL::TFFT3D< ComplexTraits >::setPhysStepWidth | ( | double | new_width_x, | |
| double | new_width_y, | |||
| double | new_width_z | |||
| ) |
Set the step width in physical space to {new_width_x, new_width_y, new_width_z}.
The step width in Fourier space is automatically adjusted accordingly. {new_width_x, new_width_y and new_width_z} must be positive, otherwise the function does nothing and retuns false .
References BALL::TFFT3D< ComplexTraits >::origin_, BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.
| bool BALL::TFFT3D< ComplexTraits >::translate | ( | const Vector3 & | trans_origin | ) |
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 .
References BALL::TFFT3D< ComplexTraits >::origin_, BALL::Maths::rint(), BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.
1.5.8