diff --git a/MagneticField/MagFieldElements/MagFieldElements/BFieldCache.h b/MagneticField/MagFieldElements/MagFieldElements/BFieldCache.h index 98bf7f2ed75a75db780e7ebe030c004e8c6af313..0823eb46efb71b7e085ffc89caa3e51376716880 100644 --- a/MagneticField/MagFieldElements/MagFieldElements/BFieldCache.h +++ b/MagneticField/MagFieldElements/MagFieldElements/BFieldCache.h @@ -104,9 +104,9 @@ private: double m_zmin, m_zmax; // bin range in z double m_rmin, m_rmax; // bin range in r double m_phimin, m_phimax; // bin range in phi - float m_invz, m_invr, m_invphi; // 1/(bin size) in z, r, phi - float m_field[3][8]; // (Bz,Br,Bphi) at 8 corners of the bin - float m_scale; // unit of m_field in kT + double m_invz, m_invr, m_invphi; // 1/(bin size) in z, r, phi + double m_field[3][8]; // (Bz,Br,Bphi) at 8 corners of the bin + double m_scale; // unit of m_field in kT }; #include "BFieldCache.icc" diff --git a/MagneticField/MagFieldElements/MagFieldElements/BFieldCache.icc b/MagneticField/MagFieldElements/MagFieldElements/BFieldCache.icc index 0fadd5381bf1fb8b653d9a4a96bb0ddc7dcccbd3..7ce32c657efd9428980df16a9a9717e1416037fc 100644 --- a/MagneticField/MagFieldElements/MagFieldElements/BFieldCache.icc +++ b/MagneticField/MagFieldElements/MagFieldElements/BFieldCache.icc @@ -19,26 +19,25 @@ BFieldCache::getB(const double* ATH_RESTRICT xyz, phi += 2 * M_PI; } // fractional position inside this bin - const float fz = (z - m_zmin) * m_invz; - const float gz = 1.0 - fz; - const float fr = (r - m_rmin) * m_invr; - const float gr = 1.0 - fr; - const float fphi = (phi - m_phimin) * m_invphi; - const float gphi = 1.0 - fphi; + const double fz = (z - m_zmin) * m_invz; + const double gz = 1.0 - fz; + const double fr = (r - m_rmin) * m_invr; + const double gr = 1.0 - fr; + const double fphi = (phi - m_phimin) * m_invphi; + const double gphi = 1.0 - fphi; // interpolate field values in z, r, phi - const float scale = m_scale; - float Bzrphi[3]; + double Bzrphi[3]; for (int i = 0; i < 3; i++) { // z, r, phi components - const float* field = m_field[i]; - Bzrphi[i] = scale * (gz * (gr * (gphi * field[0] + fphi * field[1]) + - fr * (gphi * field[2] + fphi * field[3])) + - fz * (gr * (gphi * field[4] + fphi * field[5]) + - fr * (gphi * field[6] + fphi * field[7]))); + const double* field = m_field[i]; + Bzrphi[i] = m_scale * (gz * (gr * (gphi * field[0] + fphi * field[1]) + + fr * (gphi * field[2] + fphi * field[3])) + + fz * (gr * (gphi * field[4] + fphi * field[5]) + + fr * (gphi * field[6] + fphi * field[7]))); } // convert (Bz,Br,Bphi) to (Bx,By,Bz) - float invr; - float c; - float s; + double invr; + double c; + double s; if (r > 0.0) { invr = 1.0 / r; c = x * invr; @@ -54,37 +53,43 @@ BFieldCache::getB(const double* ATH_RESTRICT xyz, // compute field derivatives if requested if (deriv) { - const float sz = m_scale * m_invz; - const float sr = m_scale * m_invr; - const float sphi = m_scale * m_invphi; + const double sz = m_scale * m_invz; + const double sr = m_scale * m_invr; + const double sphi = m_scale * m_invphi; - float dBdz[3]; - float dBdr[3]; - float dBdphi[3]; + double dBdz[3]; + double dBdr[3]; + double dBdphi[3]; for (int j = 0; j < 3; j++) { // Bz, Br, Bphi components - const float* field = m_field[j]; + const double* field = m_field[j]; dBdz[j] = sz * - (gr * (gphi * (field[4] - field[0]) + fphi * (field[5] - field[1])) + - fr * (gphi * (field[6] - field[2]) + fphi * (field[7] - field[3]))); + (gr * (gphi * (field[4] - field[0]) + + fphi * (field[5] - field[1])) + + fr * (gphi * (field[6] - field[2]) + + fphi * (field[7] - field[3]))); dBdr[j] = sr * - (gz * (gphi * (field[2] - field[0]) + fphi * (field[3] - field[1])) + - fz * (gphi * (field[6] - field[4]) + fphi * (field[7] - field[5]))); + (gz * (gphi * (field[2] - field[0]) + + fphi * (field[3] - field[1])) + + fz * (gphi * (field[6] - field[4]) + + fphi * (field[7] - field[5]))); dBdphi[j] = - sphi * (gz * (gr * (field[1] - field[0]) + fr * (field[3] - field[2])) + - fz * (gr * (field[5] - field[4]) + fr * (field[7] - field[6]))); + sphi * (gz * (gr * (field[1] - field[0]) + + fr * (field[3] - field[2])) + + fz * (gr * (field[5] - field[4]) + + fr * (field[7] - field[6]))); } // convert to cartesian coordinates - const float cc = c * c; - const float cs = c * s; - const float ss = s * s; - const float ccinvr = cc * invr; - const float csinvr = cs * invr; - const float ssinvr = ss * invr; - const float sinvr = s * invr; - const float cinvr = c * invr; + const double cc = c * c; + const double cs = c * s; + const double ss = s * s; + const double ccinvr = cc * invr; + const double csinvr = cs * invr; + const double ssinvr = ss * invr; + const double sinvr = s * invr; + const double cinvr = c * invr; deriv[0] = cc * dBdr[1] - cs * dBdr[2] - csinvr * dBdphi[1] + ssinvr * dBdphi[2] + sinvr * B[1]; deriv[1] = cs * dBdr[1] - ss * dBdr[2] + ccinvr * dBdphi[1] - diff --git a/MagneticField/MagFieldElements/MagFieldElements/BFieldCacheZR.h b/MagneticField/MagFieldElements/MagFieldElements/BFieldCacheZR.h index 268bc789038b3484bc546fc3b5d20d5271a64aef..52f6a98fe90fe0dd710d14a720ac6f73d7842fea 100644 --- a/MagneticField/MagFieldElements/MagFieldElements/BFieldCacheZR.h +++ b/MagneticField/MagFieldElements/MagFieldElements/BFieldCacheZR.h @@ -66,8 +66,8 @@ public: private: double m_zmin, m_zmax; // bin range in z double m_rmin, m_rmax; // bin range in r - float m_invz, m_invr; // 1/(bin size) in z, r - float m_field[2][4]; // (Bz,Br) at 4 corners of the bin + double m_invz, m_invr; // 1/(bin size) in z, r + double m_field[2][4]; // (Bz,Br) at 4 corners of the bin }; #include "BFieldCacheZR.icc" #endif diff --git a/MagneticField/MagFieldElements/MagFieldElements/BFieldCacheZR.icc b/MagneticField/MagFieldElements/MagFieldElements/BFieldCacheZR.icc index 941f997d9c68a8920f1ae946641d2afb23608acc..7643414d1105c98a07b90849c0e56354e74b800a 100644 --- a/MagneticField/MagFieldElements/MagFieldElements/BFieldCacheZR.icc +++ b/MagneticField/MagFieldElements/MagFieldElements/BFieldCacheZR.icc @@ -10,48 +10,50 @@ BFieldCacheZR::getB(const double* xyz, double r, double* B, double* deriv) const const double& y(xyz[1]); const double& z(xyz[2]); // fractional position inside this bin - float fz = (z - m_zmin) * m_invz; - float gz = 1.0 - fz; - float fr = (r - m_rmin) * m_invr; - float gr = 1.0 - fr; + double fz = (z - m_zmin) * m_invz; + double gz = 1.0 - fz; + double fr = (r - m_rmin) * m_invr; + double gr = 1.0 - fr; // interpolate field values in z, r - float Bzr[2]; + double Bzr[2]; for (int i = 0; i < 2; i++) { // z, r components - const float* field = m_field[i]; + const double* field = m_field[i]; Bzr[i] = gz * (gr * field[0] + fr * field[1]) + fz * (gr * field[2] + fr * field[3]); } // convert (Bz,Br) to (Bx,By,Bz) - float invr; + double invr; if (r > 0.0) { invr = 1.0 / r; } else { invr = 0.0; } - float c(x * invr); - float s(y * invr); + double c(x * invr); + double s(y * invr); B[0] = Bzr[1] * c; B[1] = Bzr[1] * s; B[2] = Bzr[0]; // compute field derivatives if requested if (deriv) { - float dBdz[2]; + double dBdz[2]; - float dBdr[2]; + double dBdr[2]; for (int j = 0; j < 2; j++) { // Bz, Br components - const float* field = m_field[j]; + const double* field = m_field[j]; dBdz[j] = - m_invz * (gr * (field[2] - field[0]) + fr * (field[3] - field[1])); + m_invz * (gr * (field[2] - field[0]) + + fr * (field[3] - field[1])); dBdr[j] = - m_invr * (gz * (field[1] - field[0]) + fz * (field[3] - field[2])); + m_invr * (gz * (field[1] - field[0]) + + fz * (field[3] - field[2])); } // convert to cartesian coordinates - float cc = c * c; - float cs = c * s; - float ss = s * s; - float sinvr = s * invr; - float cinvr = c * invr; + double cc = c * c; + double cs = c * s; + double ss = s * s; + double sinvr = s * invr; + double cinvr = c * invr; deriv[0] = cc * dBdr[1] + sinvr * B[1]; deriv[1] = cs * dBdr[1] - cinvr * B[1]; deriv[2] = c * dBdz[1]; diff --git a/MagneticField/MagFieldElements/MagFieldElements/BFieldVectorZR.h b/MagneticField/MagFieldElements/MagFieldElements/BFieldVectorZR.h index e5061dab58f1453e3395fd2073bbdb4c4fd7d7fd..291e1a93f1872de83687772f8c41bdee4140beb8 100644 --- a/MagneticField/MagFieldElements/MagFieldElements/BFieldVectorZR.h +++ b/MagneticField/MagFieldElements/MagFieldElements/BFieldVectorZR.h @@ -26,19 +26,19 @@ public: ~BFieldVectorZR() = default; //constructor - BFieldVectorZR(float Bz, float Br) + BFieldVectorZR(double Bz, double Br) : m_B{ Bz, Br } {} // setter - void set(float Bz, float Br) { m_B = { Bz, Br }; } + void set(double Bz, double Br) { m_B = { Bz, Br }; } // accessors - float z() const { return m_B[0]; } - float r() const { return m_B[1]; } + double z() const { return m_B[0]; } + double r() const { return m_B[1]; } // array-like accessor - float operator[](size_t i) const { return m_B[i]; } + double operator[](size_t i) const { return m_B[i]; } private: - std::array<float, 2> m_B; + std::array<double, 2> m_B; }; #endif diff --git a/Tools/PROCTools/data/master_q221_AOD_digest.ref b/Tools/PROCTools/data/master_q221_AOD_digest.ref index a3fd1075558913a1f843d31e66a3bb37aac96a34..91978903c7e7af3da1b4f0711111117fc7a8ca5c 100644 --- a/Tools/PROCTools/data/master_q221_AOD_digest.ref +++ b/Tools/PROCTools/data/master_q221_AOD_digest.ref @@ -9,7 +9,7 @@ 284500 87473063 62 76 5 2 6 2 4 6 4 2 284500 87473068 26 35 1 1 0 0 0 0 0 0 284500 87473075 72 84 6 0 5 0 5 5 4 1 - 284500 87473084 83 86 7 2 14 1 13 10 5 5 + 284500 87473084 83 86 7 3 14 1 13 10 5 5 284500 87473091 43 49 3 0 2 1 1 5 2 3 284500 87473096 72 75 3 2 2 0 2 3 2 1 284500 87473104 61 63 6 0 6 1 5 5 4 1 diff --git a/Tools/PROCTools/data/master_q431_AOD_digest.ref b/Tools/PROCTools/data/master_q431_AOD_digest.ref index 4973e847c86bd5c276bc38854eb4c37e7bad2843..6db7ca8af5ca03d22ee98135febdcdc6f46fa53f 100644 --- a/Tools/PROCTools/data/master_q431_AOD_digest.ref +++ b/Tools/PROCTools/data/master_q431_AOD_digest.ref @@ -6,7 +6,7 @@ 330470 1183733040 381 285 6 1 330470 1183734651 361 363 14 3 330470 1183735332 406 370 9 1 - 330470 1183736475 741 650 17 3 + 330470 1183736475 741 650 17 2 330470 1183738728 1 0 0 0 330470 1183738949 368 418 9 1 330470 1183742489 152 125 2 1 diff --git a/Tools/PROCTools/python/RunTier0TestsTools.py b/Tools/PROCTools/python/RunTier0TestsTools.py index 2a64d9fa180006f6f7c1d9cc668aac0937869992..d902cb1ca7bc57a9f17b306206fb676ec42ff402 100644 --- a/Tools/PROCTools/python/RunTier0TestsTools.py +++ b/Tools/PROCTools/python/RunTier0TestsTools.py @@ -25,7 +25,7 @@ ciRefFileMap = { 's3505-21.0' : 'v1', 's3505-21.3' : 'v1', 's3505-21.9' : 'v1', - 's3505-22.0' : 'v4', + 's3505-22.0' : 'v5', # OverlayTier0Test_required-test 'overlay-d1498-21.0' : 'v2', 'overlay-d1498-22.0' : 'v32',