34 #ifndef AIMS_DATA_VOLUMEMANIP_H 35 #define AIMS_DATA_VOLUMEMANIP_H 42 template <
typename T >
51 for (
int x = 0; x < thing.
dimX(); x++ )
52 m( x, x ) = thing( x );
58 template <
typename T >
67 for (
int x = 0; x < std::min( thing.
dimX(), thing.
dimY() ); x++ )
68 m( x, 0 ) = thing( x, x );
74 template <
typename T >
83 for (
int y = 0; y < thing.
dimY(); y++ )
84 for (
int x = 0; x < thing.
dimX(); x++ )
85 m( y, x ) = thing( x, y );
91 template <
typename T >
100 for ( j = 1; j < thing.
dimX(); j++ )
104 while ( i >= 0L && thing( i ) > tmp )
106 thing( i + 1 ) = thing( i );
109 thing( i + 1 ) = tmp;
114 template <
typename T >
123 for ( j= 1 ; j < thing.
dimX(); j++ )
127 while ( i >= 0L && thing( i ) < tmp )
129 thing( i + 1 ) = thing( i );
132 thing( i + 1 ) = tmp;
137 template <
typename T >
148 for ( i = 0; i < order.
dimX(); i++ )
151 for ( j = 1; j < temp.
dimX(); j++ )
156 while( i >= 0L && temp( i ) > tmp1 )
158 temp( i + 1 ) = temp( i );
159 order( i + 1 ) = order( i );
162 temp( i + 1 ) = tmp1;
163 order( i + 1 ) = tmp2;
170 template <
typename T >
181 for ( i = 0; i < order.
dimX(); i++ )
184 for ( j = 1; j < temp.
dimX(); j++ )
189 while( i >= 0L && temp( i ) < tmp1 )
191 temp( i + 1 ) = temp( i );
192 order( i + 1 ) = order( i );
195 temp( i + 1 ) = tmp1;
196 order( i + 1 ) = tmp2;
225 template <
typename T >
235 for (
int y = 0; y < thing.
dimY(); y++ )
236 for (
int x = 0; x < thing.
dimX(); x++ )
238 m( x, y ) = thing( x, y );
244 template <
typename T >
254 for (
int y = 0; y < thing.
dimY(); y++ )
255 for (
int x = 0; x < thing.
dimX(); x++ )
257 m( x, y ) = thing( x, y );
265 template <
typename T >
267 std::ostream& operator << ( std::ostream& os, const AimsData<T> & thing )
269 int dimx = thing.dimX();
270 int dimy = thing.dimY();
271 int dimz = thing.dimZ();
272 int dimt = thing.dimT();
276 for (
int t = 0; t < dimt; t++ )
279 for (
int z = 0; z < dimz; z++ )
282 for (
int y = 0; y < dimy; y++ )
285 for (
int x = 0; x < dimx; x++ )
287 os << thing( x, y, z, t );
290 if ( x == dimx - 1 && y != dimy - 1 )
291 os <<
"]," << std::endl <<
" ";
292 if ( x == dimx - 1 && y == dimy - 1 && z != dimz - 1 )
293 os <<
"]]," << std::endl <<
" ";
294 if ( x == dimx - 1 && y == dimy - 1 && z == dimz - 1 &&
296 os <<
"]]]," << std::endl <<
" ";
297 if ( x == dimx - 1 && y == dimy - 1 && z == dimz - 1 &&
309 template <
typename T >
314 int dimx = thing.
dimX();
315 int dimy = thing.
dimY();
316 int dimz = thing.
dimZ();
317 int dimt = thing.
dimT();
320 for (
int t = 0; t < dimt; t++ )
323 for (
int z = 0; z < dimz; z++ )
326 for (
int y = 0; y < dimy; y++ )
329 for (
int x = 0; x < dimx; x++ )
331 is >> thing( x, y, z, t );
334 if ( x == dimx - 1 && y != dimy - 1 )
339 if ( x == dimx - 1 && y == dimy - 1 && z != dimz - 1 )
345 if ( x == dimx - 1 && y == dimy - 1 && z == dimz - 1 &&
353 if ( x == dimx - 1 && y == dimy - 1 && z == dimz - 1 &&
GenesisReader< T > & operator>>(GenesisReader< T > &reader, AimsData< T > &thing)
void decSorting(AimsData< T > &thing)
AimsData< int32_t > decOrder(const AimsData< T > &thing)
The class for EcatSino data write operation.
bool hasSameSize(const AimsData< T > &v1, const AimsData< T > &v2)
void incSorting(AimsData< T > &thing)
AimsData< T > clone() const
AimsData< T > triSup(const AimsData< T > &thing)
bool hasSameDim(const AimsData< T > &v1, const AimsData< T > &v2)
AimsData< T > undiag(const AimsData< T > &thing)
AimsData< T > triInf(const AimsData< T > &thing)
AimsData< int32_t > incOrder(const AimsData< T > &thing)
AimsData< T > diag(const AimsData< T > &thing)
int borderWidth() const
Usefull offsets for A.I.M.S.
AimsData< T > transpose(const AimsData< T > &thing)