![]() |
EIC Software
Reference for
EIC
simulation and reconstruction software on GitHub
|
#include <acts/blob/sPHENIX/Core/include/Acts/MagneticField/SolenoidBField.hpp>
Collaboration diagram for Acts::SolenoidBField:Classes | |
| struct | Cache |
| struct | Config |
| Config struct for the SolenoidBfield. More... | |
Public Member Functions | |
| SolenoidBField (Config config) | |
| the constructur with a shared pointer | |
| Vector3D | getField (const Vector3D &position) const |
| retrieve magnetic field value | |
| Vector3D | getField (const Vector3D &position, Cache &) const |
| Retrieve magnetic field value. | |
| Vector2D | getField (const Vector2D &position) const |
| Retrieve magnetic field value in local (r,z) coordinates. | |
| Vector3D | getFieldGradient (const Vector3D &position, ActsMatrixD< 3, 3 > &) const |
| retrieve magnetic field value & its gradient | |
| Vector3D | getFieldGradient (const Vector3D &position, ActsMatrixD< 3, 3 > &, Cache &) const |
| retrieve magnetic field value & its gradient | |
Private Member Functions | |
| Vector2D | multiCoilField (const Vector2D &pos, double scale) const |
| Vector2D | singleCoilField (const Vector2D &pos, double scale) const |
| double | B_r (const Vector2D &pos, double scale) const |
| double | B_z (const Vector2D &pos, double scale) const |
| double | k2 (double r, double z) const |
Private Attributes | |
| Config | m_cfg |
| double | m_scale |
| double | m_dz |
| double | m_R2 |
Implements a multi-coil solenoid magnetic field. On every call, the field is evaluated at that exact position. The field has radially symmetry, the field vectors point in +z direction. The config exposes a target field value in the center. This value is used to empirically determine a scale factor which reproduces this field value in the center.
E_1(k^2) = complete elliptic integral of the 1st kind E_2(k^2) = complete elliptic integral of the 2nd kind
E_1(k^2) and E_2(k^2) are usually indicated as K(k^2) and E(k^2) in literature, respectively _ 2 / pi / 2 2 2 - 1 / 2 E (k ) = | ( 1 - k sin {theta} ) dtheta 1 _/ 0
_ ____________________
2 / pi / 2| / 2 2 E (k ) = | |/ 1 - k sin {theta} dtheta 2 _/ 0
k^2 = is a function of the point (r, z) and of the radius of the coil R
2 4Rr k = ------------— 2 2 (R + r) + z Using these, you can evaluate the two components B_r and B_z of the magnetic field: _ _ mu I | / 2 \ | 0 kz | |2 - k | 2 2 | B (r, z) = --— ---— | |----—|E (k ) - E (k ) | r 4pi ___ | | 2| 2 1 | | / 3 |_ \2 - 2k / _| |/ Rr
_ _
mu I | / 2 \ | 0 k | | (R + r)k - 2r | 2 2 | B (r,z) = --— -— | | -----------— | E (k ) + E (k ) | z 4pi __ | | 2 | 2 1 | |/Rr |_ \ 2r(1 - k ) / _|
Definition at line 65 of file SolenoidBField.hpp.
View newest version in sPHENIX GitHub at line 65 of file SolenoidBField.hpp
| Acts::SolenoidBField::SolenoidBField | ( | Config | config | ) |
the constructur with a shared pointer
| bField | is the shared BField to be stored |
Definition at line 16 of file SolenoidBField.cpp.
View newest version in sPHENIX GitHub at line 16 of file SolenoidBField.cpp
References Acts::SolenoidBField::Config::bMagCenter, Acts::SolenoidBField::Config::length, m_cfg, m_dz, m_R2, m_scale, multiCoilField(), Acts::SolenoidBField::Config::nCoils, and Acts::SolenoidBField::Config::radius.
Here is the call graph for this function:
|
private |
Definition at line 78 of file SolenoidBField.cpp.
View newest version in sPHENIX GitHub at line 78 of file SolenoidBField.cpp
References kdfinder::abs(), k, k2, M_PI, and z.
Here is the call graph for this function:
|
private |
Definition at line 115 of file SolenoidBField.cpp.
View newest version in sPHENIX GitHub at line 115 of file SolenoidBField.cpp
References kdfinder::abs(), k, k2, M_PI, and z.
Here is the call graph for this function:| Acts::Vector3D Acts::SolenoidBField::getField | ( | const Vector3D & | position | ) | const |
retrieve magnetic field value
| [in] | position | global 3D position |
Definition at line 25 of file SolenoidBField.cpp.
View newest version in sPHENIX GitHub at line 25 of file SolenoidBField.cpp
References Acts::VectorHelpers::perp().
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), Acts::IntegrationTest::BOOST_DATA_TEST_CASE(), main(), and Acts::solenoidFieldMapper().
Here is the call graph for this function:
Here is the caller graph for this function:| Acts::Vector3D Acts::SolenoidBField::getField | ( | const Vector3D & | position, |
| Cache & | |||
| ) | const |
Retrieve magnetic field value.
| [in] | position | global 3D position |
| [in] | cache | Cache object, passed through to wrapped BField |
Definition at line 40 of file SolenoidBField.cpp.
View newest version in sPHENIX GitHub at line 40 of file SolenoidBField.cpp
| Acts::Vector2D Acts::SolenoidBField::getField | ( | const Vector2D & | position | ) | const |
Retrieve magnetic field value in local (r,z) coordinates.
| [in] | position | local 2D position |
Definition at line 45 of file SolenoidBField.cpp.
View newest version in sPHENIX GitHub at line 45 of file SolenoidBField.cpp
| Acts::Vector3D Acts::SolenoidBField::getFieldGradient | ( | const Vector3D & | position, |
| ActsMatrixD< 3, 3 > & | |||
| ) | const |
retrieve magnetic field value & its gradient
| [in] | position | global 3D position |
| [out] | derivative | gradient of magnetic field vector as (3x3) matrix |
Definition at line 49 of file SolenoidBField.cpp.
View newest version in sPHENIX GitHub at line 49 of file SolenoidBField.cpp
| Acts::Vector3D Acts::SolenoidBField::getFieldGradient | ( | const Vector3D & | position, |
| ActsMatrixD< 3, 3 > & | , | ||
| Cache & | |||
| ) | const |
retrieve magnetic field value & its gradient
| [in] | position | global 3D position |
| [out] | derivative | gradient of magnetic field vector as (3x3) matrix |
| [in] | cache | Cache object, passed through to wrapped BField |
Definition at line 54 of file SolenoidBField.cpp.
View newest version in sPHENIX GitHub at line 54 of file SolenoidBField.cpp
|
private |
Definition at line 152 of file SolenoidBField.cpp.
View newest version in sPHENIX GitHub at line 152 of file SolenoidBField.cpp
References z.
|
private |
Definition at line 60 of file SolenoidBField.cpp.
View newest version in sPHENIX GitHub at line 60 of file SolenoidBField.cpp
Referenced by SolenoidBField().
Here is the caller graph for this function:
|
private |
Definition at line 73 of file SolenoidBField.cpp.
View newest version in sPHENIX GitHub at line 73 of file SolenoidBField.cpp
|
private |
Definition at line 136 of file SolenoidBField.hpp.
View newest version in sPHENIX GitHub at line 136 of file SolenoidBField.hpp
Referenced by SolenoidBField().
|
private |
Definition at line 138 of file SolenoidBField.hpp.
View newest version in sPHENIX GitHub at line 138 of file SolenoidBField.hpp
Referenced by SolenoidBField().
|
private |
Definition at line 139 of file SolenoidBField.hpp.
View newest version in sPHENIX GitHub at line 139 of file SolenoidBField.hpp
Referenced by SolenoidBField().
|
private |
Definition at line 137 of file SolenoidBField.hpp.
View newest version in sPHENIX GitHub at line 137 of file SolenoidBField.hpp
Referenced by SolenoidBField().