#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 | |
static FourierPixelInserter3D * | NEW () |
Static Public Attributes | |
static 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.
EMAN::FourierInserter3DMode6::FourierInserter3DMode6 | ( | ) | [inline] |
virtual EMAN::FourierInserter3DMode6::~FourierInserter3DMode6 | ( | ) | [inline, virtual] |
EMAN::FourierInserter3DMode6::FourierInserter3DMode6 | ( | const FourierInserter3DMode6 & | ) | [private] |
virtual string EMAN::FourierInserter3DMode6::get_desc | ( | ) | const [inline, virtual] |
Get a clear, concise description of this class.
Implements EMAN::FactoryBase.
Definition at line 325 of file reconstructor_tools.h.
virtual string EMAN::FourierInserter3DMode6::get_name | ( | ) | const [inline, virtual] |
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.
References NAME.
00321 { 00322 return NAME; 00323 }
bool FourierInserter3DMode6::insert_pixel | ( | const float & | xx, | |
const float & | yy, | |||
const float & | zz, | |||
const std::complex< float > | dt, | |||
const float & | weight = 1.0 | |||
) | [virtual] |
Insert a complex pixel [dt[0]+dt[1]i] at (float) coordinate [xx,yy,zz] with weighting into a discrete 3D volume.
xx | the floating point x coordinate | |
yy | the floating point y coordinate | |
zz | the floating point z coordinate | |
dt | the complex pixel value (dt[0] is real, dt[1] is imaginary) | |
weight | the weight to given to this complex pixel |
Implements EMAN::FourierPixelInserter3D.
Definition at line 286 of file reconstructor_tools.cpp.
References EMAN::EMData::add_complex_at(), EMAN::FourierPixelInserter3D::data, EMAN::FourierPixelInserter3D::fullnx, EMAN::FourierPixelInserter3D::fullny, EMAN::FourierPixelInserter3D::fullnz, EMAN::Util::hypot3sq(), EMAN::EMConsts::I5G, EMAN::FourierPixelInserter3D::norm, EMAN::FourierPixelInserter3D::nx, EMAN::FourierPixelInserter3D::nxyz, EMAN::FourierPixelInserter3D::ny, EMAN::FourierPixelInserter3D::nz, EMAN::FourierPixelInserter3D::subx0, EMAN::FourierPixelInserter3D::suby0, and EMAN::FourierPixelInserter3D::subz0.
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 }
static FourierPixelInserter3D* EMAN::FourierInserter3DMode6::NEW | ( | ) | [inline, static] |
Definition at line 315 of file reconstructor_tools.h.
References FourierInserter3DMode6().
00316 { 00317 return new FourierInserter3DMode6(); 00318 }
FourierInserter3DMode6& EMAN::FourierInserter3DMode6::operator= | ( | const FourierInserter3DMode6 & | ) | [private] |
const string FourierInserter3DMode6::NAME = "gauss_5_slow" [static] |