27constexpr double defaultB = 0.1 * Gaudi::Units::gauss;
31 bxyz[0] = bxyz[1] = bxyz[2] = defaultB;
34 for (
int i = 0;
i < 9;
i++) {
48 defaultField(bxyz, deriv);
52 const double x =
xyz[0];
53 const double y =
xyz[1];
54 const double z =
xyz[2];
55 const double r = std::sqrt(
x *
x +
y *
y);
56 const double phi = std::atan2(
y,
x);
65 defaultField(bxyz, deriv);
78 const size_t condSize =
m_cond->size();
79 for (
size_t i = 0; i < condSize; i++) {
93 defaultField(bxyz, deriv);
97 const double x =
xyz[0];
98 const double y =
xyz[1];
99 const double z =
xyz[2];
100 const double r = std::sqrt(
x *
x +
y *
y);
Scalar phi() const
phi method
bool fillFieldCacheZR(double z, double r)
fill Z-R cache for solenoid */
const AtlasFieldMap * m_fieldMap
handle to the magnetic field map - not owned
BFieldCache m_cache3d
Full 3d field cell/cache This will be a cell inside a 3d field zone.
BFieldCacheZR m_cacheZR
Fast 2d field cell/cache.
bool fillFieldCache(double z, double r, double phi)
fill given magnetic field zone */
const std::vector< BFieldCond > * m_cond
Pointer to the conductors in the current field zone (to compute Biot-Savart component) Owned by Atlas...
void getField(const double *ATH_RESTRICT xyz, double *ATH_RESTRICT bxyz, double *ATH_RESTRICT deriv=nullptr)
get B field value at given position xyz[3] is in mm, bxyz[3] is in kT if deriv[9] is given,...
void getFieldZR(const double *ATH_RESTRICT xyz, double *ATH_RESTRICT bxyz, double *ATH_RESTRICT deriv=nullptr)
get B field valaue on the z-r plane at given position works only inside the solenoid.