#include <GArMagneticField.h>
|
| Interpolator () |
|
float | interpolate (const float *point, const std::vector< std::vector< std::vector< float >>> &g, const float *delta, const float *offset) const |
|
float | interpolate (float x, float y, float z, const std::vector< std::vector< std::vector< float >>> &g, float hx, float hy, float hz, float xo, float yo, float zo) const |
|
Definition at line 67 of file GArMagneticField.h.
mag::Interpolator::Interpolator |
( |
| ) |
|
float mag::Interpolator::conv_kernel |
( |
float |
s | ) |
const |
|
private |
Definition at line 518 of file GArMagneticField.cxx.
524 v = 1 + (0.5) * z * z * (3 * z - 5);
526 else if(1 < z && z < 2)
527 v = 2 - z * (4 + 0.5 * z * (z - 5));
float mag::Interpolator::interpolate |
( |
const float * |
point, |
|
|
const std::vector< std::vector< std::vector< float >>> & |
g, |
|
|
const float * |
delta, |
|
|
const float * |
offset |
|
) |
| const |
Definition at line 467 of file GArMagneticField.cxx.
471 return interpolate(point[0], point[1], point[2], g, delta[0], delta[1], delta[2], offset[0],
472 offset[1], offset[2]);
float interpolate(const float *point, const std::vector< std::vector< std::vector< float >>> &g, const float *delta, const float *offset) const
float mag::Interpolator::interpolate |
( |
float |
x, |
|
|
float |
y, |
|
|
float |
z, |
|
|
const std::vector< std::vector< std::vector< float >>> & |
g, |
|
|
float |
hx, |
|
|
float |
hy, |
|
|
float |
hz, |
|
|
float |
xo, |
|
|
float |
yo, |
|
|
float |
zo |
|
) |
| const |
Definition at line 476 of file GArMagneticField.cxx.
482 const int xsize = g.size();
483 const int ysize = g[0].size();
484 const int zsize = g[0][0].size();
486 const float xp = (
x - xo) /
hx;
487 const float yp = (
y - yo) /
hy;
488 const float zp = (
z - zo) /
hz;
490 const int x_idx = std::floor(xp);
491 const int y_idx = std::floor(yp);
492 const int z_idx = std::floor(zp);
494 for(
auto i : {x_idx - 1, x_idx, x_idx + 1, x_idx + 2})
496 for(
auto j : {y_idx - 1, y_idx, y_idx + 1, y_idx + 2})
498 for(
auto k : {z_idx - 1, z_idx, z_idx + 1, z_idx + 2})
500 if(i < 0 || j < 0 ||
k < 0)
503 if(i >= xsize || j >= ysize ||
k >= zsize)
509 v += g[i][j][
k] * x_c * y_c * z_c;
float conv_kernel(float s) const
The documentation for this class was generated from the following files: