#include <reconstructor_tools.h>
Inheritance diagram for EMAN::FourierInserter3DMode6:
Public Member Functions | |
FourierInserter3DMode6 () | |
virtual | ~FourierInserter3DMode6 () |
virtual bool | insert_pixel (const float &xx, const float &yy, const float &zz, const std::complex< float > dt, const float &weight=1.0) |
Insert a complex pixel [dt[0]+dt[1]i] at (float) coordinate [xx,yy,zz] with weighting into a discrete 3D volume. | |
virtual string | get_name () const |
Get the unique name of this class (especially for factory based instantiation access). | |
virtual string | get_desc () const |
Get a clear, concise description of this class. | |
Static Public Member Functions | |
FourierPixelInserter3D * | NEW () |
Static Public Attributes | |
const string | NAME = "gauss_5_slow" |
Private Member Functions | |
FourierInserter3DMode6 (const FourierInserter3DMode6 &) | |
FourierInserter3DMode6 & | operator= (const FourierInserter3DMode6 &) |
Definition at line 307 of file reconstructor_tools.h.
|
Definition at line 310 of file reconstructor_tools.h. 00310 {}
|
|
Definition at line 311 of file reconstructor_tools.h. 00311 {}
|
|
|
|
Get a clear, concise description of this class.
Implements EMAN::FactoryBase. Definition at line 325 of file reconstructor_tools.h. 00326 { 00327 return "More exact version of gauss_5"; 00328 }
|
|
Get the unique name of this class (especially for factory based instantiation access).
Implements EMAN::FactoryBase. Definition at line 320 of file reconstructor_tools.h. 00321 {
00322 return NAME;
00323 }
|
|
Insert a complex pixel [dt[0]+dt[1]i] at (float) coordinate [xx,yy,zz] with weighting into a discrete 3D volume.
Implements EMAN::FourierPixelInserter3D. Definition at line 286 of file reconstructor_tools.cpp. References EMAN::EMData::add_complex_at(), dt, and EMAN::Util::hypot3sq(). 00287 { 00288 int x0 = 2 * (int) floor(xx + 0.5f); 00289 int y0 = (int) floor(yy + 0.5f); 00290 int z0 = (int) floor(zz + 0.5f); 00291 00292 if (x0<-6||y0<-3||z0<-3||x0>nx+6||y0>ny+3||z0>nz+3) return false; 00293 00294 //size_t idx; 00295 float r, gg; 00296 for (int k = z0 - 1; k <= z0 + 1; k++) { 00297 for (int j = y0 - 1; j <= y0 + 1; j++) { 00298 for (int i = x0 -2; i <= x0 + 2; i += 2) { 00299 if (k<0 || j<0 || i<0 || k>=nz || j>=ny || i>=nx) continue; 00300 r = Util::hypot3sq((float) i / 2 - xx, j - yy, k - zz); 00301 gg = exp(-r / EMConsts::I5G)*weight; 00302 00303 size_t off; 00304 if (subx0<0) off=data->add_complex_at(i,j,k,dt*gg); 00305 else off=data->add_complex_at(i,j,k,subx0,suby0,subz0,fullnx,fullny,fullnz,dt*gg); 00306 if (static_cast<int>(off)!=nxyz) norm[off/2]+=gg; 00307 00308 } 00309 } 00310 } 00311 return true; 00312 }
|
|
Definition at line 315 of file reconstructor_tools.h. 00316 { 00317 return new FourierInserter3DMode6(); 00318 }
|
|
|
|
Definition at line 46 of file reconstructor_tools.cpp. |