35 #ifndef AIMS_PYRAMID_PYRAMID_H 36 #define AIMS_PYRAMID_PYRAMID_H 59 void save(
const std::string& name )
const;
74 template <
class T>
inline 85 template <
class T>
inline 90 int dimX =
_ref->dimX();
91 int dimY =
_ref->dimY();
92 int dimZ =
_ref->dimZ();
93 int dimT =
_ref->dimT();
95 float sizeX =
_ref->sizeX();
96 float sizeY =
_ref->sizeY();
97 float sizeZ =
_ref->sizeZ();
98 float sizeT =
_ref->sizeT();
100 for (
int k = 0; k < level; k++ )
117 _ppItem[ k ]->setSizeXYZT( sizeX, sizeY, sizeZ, sizeT );
121 template <
class T>
inline 126 for (
int k = 0; k <
_level; k++ )
134 template <
class T>
inline 146 template <
class T>
inline 149 int x, y, z, t, k, nx, ny, nz, n;
151 int dimX =
_ref->dimX();
152 int dimY =
_ref->dimY();
153 int dimZ =
_ref->dimZ();
154 int dimT =
_ref->dimT();
161 for ( k = 0; k <
_level; k++ )
165 int lowerLvlDimX = dimX ;
166 int lowerLvlDimY = dimY ;
167 int lowerLvlDimZ = dimZ ;
179 for ( t = 0; t < dimT; t++ )
180 for ( z = 0; z < dimZ; z++ )
181 for ( y = 0; y < dimY; y++ )
182 for ( x = 0; x < dimX; x++ )
185 for ( nz = 0; nz < 2; nz++ )
186 for ( ny = 0; ny < 2; ny++ )
187 for ( nx = 0; nx < 2; nx++ ){
188 tab(n++) = (*pDown)(
std::min(2 * x + nx, lowerLvlDimX - 1 ),
189 std::min(2 * y + ny, lowerLvlDimY - 1 ),
190 std::min(2 * z + nz, lowerLvlDimZ - 1 ), t );
192 (*pUp)( x, y, z, t ) =
_func.doit( tab );
199 template <
class T>
inline 212 template <
class T>
inline 215 for (
int k = 0; k <
_level; k++ )
218 sprintf( ext,
"%d", k );
219 std::string outName = name + std::string( ext );
float min(float x, float y)
const AimsData< T > & item(int level) const
const PyramidFunc< T > & _func
void save(const std::string &name) const
Pyramid(const PyramidFunc< T > &func)
void setRef(AimsData< T > &ref)
void _new_ppItem(int level)
reference_wrapper< T > ref(T &ref)