Line data Source code
1 : #include "crpropa/magneticField/MagneticFieldGrid.h"
2 :
3 : namespace crpropa {
4 :
5 0 : MagneticFieldGrid::MagneticFieldGrid(ref_ptr<Grid3f> grid) {
6 0 : setGrid(grid);
7 0 : }
8 :
9 0 : void MagneticFieldGrid::setGrid(ref_ptr<Grid3f> grid) {
10 0 : this->grid = grid;
11 0 : }
12 :
13 0 : ref_ptr<Grid3f> MagneticFieldGrid::getGrid() {
14 0 : return grid;
15 : }
16 :
17 0 : Vector3d MagneticFieldGrid::getField(const Vector3d &pos) const {
18 0 : return grid->interpolate(pos);
19 : }
20 :
21 0 : ModulatedMagneticFieldGrid::ModulatedMagneticFieldGrid(ref_ptr<Grid3f> grid,
22 0 : ref_ptr<Grid1f> modGrid) {
23 : grid->setReflective(false);
24 : modGrid->setReflective(true);
25 0 : setGrid(grid);
26 0 : setModulationGrid(modGrid);
27 0 : }
28 :
29 0 : void ModulatedMagneticFieldGrid::setGrid(ref_ptr<Grid3f> g) {
30 0 : grid = g;
31 0 : }
32 :
33 0 : ref_ptr<Grid3f> ModulatedMagneticFieldGrid::getGrid() {
34 0 : return grid;
35 : }
36 :
37 0 : void ModulatedMagneticFieldGrid::setModulationGrid(ref_ptr<Grid1f> g) {
38 0 : modGrid = g;
39 0 : }
40 :
41 0 : ref_ptr<Grid1f> ModulatedMagneticFieldGrid::getModulationGrid() {
42 0 : return modGrid;
43 : }
44 :
45 0 : void ModulatedMagneticFieldGrid::setReflective(bool gridReflective,
46 : bool modGridReflective) {
47 : grid->setReflective(gridReflective);
48 : modGrid->setReflective(modGridReflective);
49 0 : }
50 :
51 0 : Vector3d ModulatedMagneticFieldGrid::getField(const Vector3d &pos) const {
52 0 : float m = modGrid->interpolate(pos);
53 0 : Vector3d b = grid->interpolate(pos);
54 0 : return b * m;
55 : }
56 :
57 : } // namespace crpropa
|