16 std::string tmpString;
24 bool parsing_passed = true;
26 parsing_passed = interpretLine<std::string, std::string>(file,
36 if (tmpString !=
"TRUE" &&
39 "The third string on the first line of 2D field "
40 "maps has to be either TRUE or FALSE");
45 if(tmpString ==
"ZX") {
47 parsing_passed = parsing_passed &&
49 parsing_passed = parsing_passed &&
51 }
else if(tmpString ==
"XZ") {
53 parsing_passed = parsing_passed &&
55 parsing_passed = parsing_passed &&
58 std::cerr <<
"unknown orientation of 2D magnetostatic fieldmap" << std::endl;
59 parsing_passed =
false;
66 parsing_passed = parsing_passed &&
76 "An error occured when reading the fieldmap '" +
Filename_m +
"'");
173 const double RR = std::sqrt(R(0) * R(0) + R(1) * R(1));
175 const int indexr = std::abs((
int)std::floor(RR /
hr_m));
176 const double leverr = (RR /
hr_m) - indexr;
178 const int indexz = std::abs((
int)std::floor((R(2) -
zbegin_m) /
hz_m));
179 const double leverz = (R(2) -
zbegin_m) /
hz_m - indexz;
189 const double BfieldR = (1.0 - leverz) * (1.0 - leverr) *
FieldstrengthBr_m[index1]
194 const double BfieldZ = (1.0 - leverz) * (1.0 - leverr) *
FieldstrengthBz_m[index1]
200 B(0) += BfieldR * R(0) / RR;
201 B(1) += BfieldR * R(1) / RR;
209 double BfieldR, BfieldZ;
211 const double RR = std::sqrt(R(0) * R(0) + R(1) * R(1));
213 const int indexr = (int)std::floor(RR /
hr_m);
214 const double leverr = (RR /
hr_m) - indexr;
216 const int indexz = (int)std::floor((R(2)) /
hz_m);
217 const double leverz = (R(2) /
hz_m) - indexz;
302 B(0) += BfieldR * R(0) / RR;
303 B(1) += BfieldR * R(1) / RR;