Skip to content

Commit 6f830a2

Browse files
committed
Fix GPU b-field initialization
The 12kA L3 field should be scaled wrt its own nominal rather than 30kA nominal Bz. Keep the old scaling for backward compatibility
1 parent 6808cc4 commit 6f830a2

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

GPU/GPUTracking/Interface/GPUO2InterfaceUtils.cxx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,3 +142,9 @@ uint32_t GPUO2InterfaceUtils::getTpcMaxTimeBinFromNHbf(uint32_t nHbf)
142142
{
143143
return (nHbf * o2::constants::lhc::LHCMaxBunches + 2 * o2::tpc::constants::LHCBCPERTIMEBIN - 2) / o2::tpc::constants::LHCBCPERTIMEBIN;
144144
}
145+
146+
float GPUO2InterfaceUtils::getNominalGPUBzFromCurrent(float l3curr)
147+
{
148+
float al3curr = CAMath::Abs(l3curr);
149+
return (CAMath::Abs(al3curr - 12000) < CAMath::Abs(al3curr - 30000) ? (2.04487f / 12000.f) : (5.00668f / 30000.f)) * l3curr;
150+
}

GPU/GPUTracking/Interface/GPUO2InterfaceUtils.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,9 @@ class GPUO2InterfaceUtils
5353
template <class T>
5454
static float getNominalGPUBz(T& src)
5555
{
56-
return (5.00668f / 30000.f) * src.getL3Current();
56+
return getNominalGPUBzFromCurrent(src.getL3Current());
5757
}
58+
static float getNominalGPUBzFromCurrent(float l3curr);
5859
static std::unique_ptr<GPUParam> getFullParam(float solenoidBz, uint32_t nHbfPerTf = 0, std::unique_ptr<GPUO2InterfaceConfiguration>* pConfiguration = nullptr, std::unique_ptr<GPUSettingsO2>* pO2Settings = nullptr, bool* autoMaxTimeBin = nullptr);
5960
static std::shared_ptr<GPUParam> getFullParamShared(float solenoidBz, uint32_t nHbfPerTf = 0, std::unique_ptr<GPUO2InterfaceConfiguration>* pConfiguration = nullptr, std::unique_ptr<GPUSettingsO2>* pO2Settings = nullptr, bool* autoMaxTimeBin = nullptr); // Return owning pointer
6061
static void paramUseExternalOccupancyMap(GPUParam* param, uint32_t nHbfPerTf, const uint32_t* occupancymap, int32_t occupancyMapSize);

0 commit comments

Comments
 (0)