|
ATLAS Offline Software
|
Go to the documentation of this file.
10 #ifndef TRKEXSOLENOIDALINTERSECTOR_SOLENOIDPARAMETRIZATION_H
11 #define TRKEXSOLENOIDALINTERSECTOR_SOLENOIDPARAMETRIZATION_H
53 const double r,
const double z,
const double cotTheta);
73 double& secondIntegral,
92 double& secondIntegral,
161 double& secondIntegral,
166 double zDiff = zEnd - zBegin;
167 double zBeg2 = zBegin*zBegin;
168 double zBeg3 = zBeg2*zBegin;
169 double zEnd2 = zEnd*zEnd;
170 double zEnd3 = zEnd2*zEnd;
171 double zDiff4 = 0.25*(zEnd2 + zBeg2)*(zEnd2 - zBeg2);
176 double zDiffInv = 1./zDiff;
179 parms.
m_cubicTerm*(0.1*zDiffInv*(zEnd2*zEnd3 - zBeg2*zBeg3) - 0.5*zBeg2*zBeg2);
203 assert (key4 < 14688);
228 double z_squared = z_local*z_local;
246 double& secondIntegral,
253 if (zEnd < s_zInner || zBegin >
s_zInner)
283 #include "AthenaKernel/CondCont.h"
286 #endif // TRKEXSOLENOIDALINTERSECTOR_SOLENOIDPARAMETRIZATION_H
static const int s_maxBinZ
static int fieldKey(BinParameters &parms)
static const double s_binZeroZ
@ z
global position (cartesian)
static const double s_lightSpeed
void fieldIntegrals(double &firstIntegral, double &secondIntegral, double zBegin, double zEnd, Parameters &parms) const
bool currentMatches(double current) const
SolenoidParametrization & operator=(const SolenoidParametrization &)=delete
void parametrizeSolenoid()
const AtlasFieldCacheCondObj * m_fieldCondObj
double m_interpolateTheta
void setTerms(int, Parameters &parms) const
static const double s_maximumZatOrigin
static const int s_maxBinTheta
double centralField() const
SolenoidParametrization(const SolenoidParametrization &)=delete
~SolenoidParametrization()=default
BinParameters(const double zAtAxis, const double cotTheta)
static const double s_binInvSizeZ
CONDCONT_DEF(Trk::SolenoidParametrization, 19878742)
double fieldComponent(double z, const Parameters &parms) const
SolenoidParametrization(const AtlasFieldCacheCondObj &field_cond_obj)
void integrate(double &firstIntegral, double &secondIntegral, double zBegin, double zEnd, const Parameters &parms) const
double interpolate(int key1, int key2, int key3, int key4, const Parameters &parms) const
void printFieldIntegrals(MsgStream &m) const
void printParametersForEtaLine(double eta, double z_origin, MsgStream &msg) const
Ensure that the ATLAS eigen extensions are properly loaded.
bool validOrigin(const Amg::Vector3D &origin) const
Parameters(const SolenoidParametrization &spar, const double r, const double z, const double cotTheta)
Eigen::Matrix< double, 3, 1 > Vector3D
static const double s_zInner
double m_parameters[14688]
void printResidualForEtaLine(double eta, double zOrigin, MsgStream &msg) const
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
static const int s_numberParameters
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,...
static const double s_binZeroTheta
static const double s_rOuter
static const double s_maximumImpactAtOrigin
static const double s_binInvSizeTheta
macros to associate a CLID to a type
static const double s_zOuter
static const double s_rInner