From 4e74dbc121b22ecb334809a4dedd2e14a9e66022 Mon Sep 17 00:00:00 2001 From: Jan Fiete Date: Wed, 3 Nov 2021 14:10:42 +0100 Subject: [PATCH 1/3] helper to get nominal L3 field --- .../include/DataFormatsParameters/GRPObject.h | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/DataFormats/Parameters/include/DataFormatsParameters/GRPObject.h b/DataFormats/Parameters/include/DataFormatsParameters/GRPObject.h index 49654aadaf6c3..2b38d0849bef6 100644 --- a/DataFormats/Parameters/include/DataFormatsParameters/GRPObject.h +++ b/DataFormats/Parameters/include/DataFormatsParameters/GRPObject.h @@ -82,6 +82,7 @@ class GRPObject void setL3Current(o2::units::Current_t v) { mL3Current = v; } void setDipoleCurrent(o2::units::Current_t v) { mDipoleCurrent = v; } void setFieldUniformity(bool v) { mUniformField = v; } + int8_t getNominalL3Field(); /// getter/setter for data taking period name const std::string& getDataPeriod() const { return mDataPeriod; } void setDataPeriod(const std::string v) { mDataPeriod = v; } @@ -158,6 +159,9 @@ class GRPObject bool mUniformField = false; ///< uniformity of magnetic field float mBeamEnergyPerZ = 0.f; ///< beam energy per charge (i.e. sqrt(s)/2 for pp) + int8_t mNominalL3Field = 0; ///< Nominal L3 field deduced from mL3Current + bool mNominalL3FieldValid = false; ///< Has the field been computed (for caching) + int mBeamAZ[beamDirection::NBeamDirections] = {0, 0}; ///< A<<16+Z for each beam int mRun = 0; ///< run identifier @@ -165,7 +169,7 @@ class GRPObject std::string mDataPeriod = ""; ///< name of the period std::string mLHCState = ""; ///< machine state - ClassDefNV(GRPObject, 5); + ClassDefNV(GRPObject, 6); }; //______________________________________________ @@ -176,6 +180,18 @@ inline float GRPObject::getBeamZ2A(beamDirection b) const return a ? getBeamZ(b) / static_cast(a) : 0.f; } +//______________________________________________ +inline int8_t GRPObject::getNominalL3Field() +{ + // compute nominal L3 field in kG + + if (mNominalL3FieldValid == false) { + mNominalL3Field = std::lround(5.f * mL3Current / 30000.f); + mNominalL3FieldValid = true; + } + return mNominalL3Field; +} + } // namespace parameters } // namespace o2 From 5087e36e70d1185282d0f3255e0d2ca5ebc1658c Mon Sep 17 00:00:00 2001 From: Jan Fiete Date: Wed, 3 Nov 2021 15:26:28 +0100 Subject: [PATCH 2/3] do not make temporary values persistent --- .../Parameters/include/DataFormatsParameters/GRPObject.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DataFormats/Parameters/include/DataFormatsParameters/GRPObject.h b/DataFormats/Parameters/include/DataFormatsParameters/GRPObject.h index 2b38d0849bef6..8f7df7c571151 100644 --- a/DataFormats/Parameters/include/DataFormatsParameters/GRPObject.h +++ b/DataFormats/Parameters/include/DataFormatsParameters/GRPObject.h @@ -159,8 +159,8 @@ class GRPObject bool mUniformField = false; ///< uniformity of magnetic field float mBeamEnergyPerZ = 0.f; ///< beam energy per charge (i.e. sqrt(s)/2 for pp) - int8_t mNominalL3Field = 0; ///< Nominal L3 field deduced from mL3Current - bool mNominalL3FieldValid = false; ///< Has the field been computed (for caching) + int8_t mNominalL3Field = 0; //! Nominal L3 field deduced from mL3Current + bool mNominalL3FieldValid = false; //! Has the field been computed (for caching) int mBeamAZ[beamDirection::NBeamDirections] = {0, 0}; ///< A<<16+Z for each beam From e740701ce39d99e00e523dfba46c66b0bf41476c Mon Sep 17 00:00:00 2001 From: Jan Fiete Date: Thu, 4 Nov 2021 08:39:24 +0100 Subject: [PATCH 3/3] Update DataFormats/Parameters/include/DataFormatsParameters/GRPObject.h Co-authored-by: wiechula <11199190+wiechula@users.noreply.github.com> --- .../Parameters/include/DataFormatsParameters/GRPObject.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DataFormats/Parameters/include/DataFormatsParameters/GRPObject.h b/DataFormats/Parameters/include/DataFormatsParameters/GRPObject.h index 8f7df7c571151..4fcfcd172580d 100644 --- a/DataFormats/Parameters/include/DataFormatsParameters/GRPObject.h +++ b/DataFormats/Parameters/include/DataFormatsParameters/GRPObject.h @@ -159,8 +159,8 @@ class GRPObject bool mUniformField = false; ///< uniformity of magnetic field float mBeamEnergyPerZ = 0.f; ///< beam energy per charge (i.e. sqrt(s)/2 for pp) - int8_t mNominalL3Field = 0; //! Nominal L3 field deduced from mL3Current - bool mNominalL3FieldValid = false; //! Has the field been computed (for caching) + int8_t mNominalL3Field = 0; //!< Nominal L3 field deduced from mL3Current + bool mNominalL3FieldValid = false; //!< Has the field been computed (for caching) int mBeamAZ[beamDirection::NBeamDirections] = {0, 0}; ///< A<<16+Z for each beam