Skip to content

Commit b9caf64

Browse files
committed
Bias GPU field. Todo : pass bias to GPUSettingsGRP to set from the nominal field, like the configGRP.solenoidBzNominalGPU
1 parent 16b6488 commit b9caf64

5 files changed

Lines changed: 15 additions & 9 deletions

File tree

GPU/GPUTracking/Base/GPUParam.cxx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,15 +115,15 @@ void GPUParam::UpdateSettings(const GPUSettingsGRP* g, const GPUSettingsProcessi
115115
}
116116
}
117117

118-
void GPUParam::UpdateBzOnly(float newSolenoidBz, bool assumeConstantBz)
118+
void GPUParam::UpdateBzOnly(float newSolenoidBz, bool assumeConstantBz, float biasX, float biasY, float biasZ)
119119
{
120120
bzkG = newSolenoidBz;
121121
bzCLight = bzkG * o2::gpu::gpu_common_constants::kCLight;
122122
polynomialField.Reset();
123123
if (assumeConstantBz) {
124-
GPUTPCGMPolynomialFieldManager::GetPolynomialField(GPUTPCGMPolynomialFieldManager::kUniform, bzkG, polynomialField);
124+
GPUTPCGMPolynomialFieldManager::GetPolynomialField(GPUTPCGMPolynomialFieldManager::kUniform, bzkG, polynomialField, biasX, biasY, biasZ);
125125
} else {
126-
GPUTPCGMPolynomialFieldManager::GetPolynomialField(bzkG, polynomialField);
126+
GPUTPCGMPolynomialFieldManager::GetPolynomialField(bzkG, polynomialField, biasX, biasY, biasZ);
127127
}
128128
qptB5Scaler = CAMath::Abs(bzkG) > 0.1f ? CAMath::Abs(bzkG) / 5.006680f : 1.f;
129129
}

GPU/GPUTracking/Base/GPUParam.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ struct GPUParam : public internal::GPUParam_t<GPUSettingsRec, GPUSettingsParam>
7575
void SetDefaults(float solenoidBz, bool assumeConstantBz = false);
7676
void SetDefaults(const GPUSettingsGRP* g, const GPUSettingsRec* r = nullptr, const GPUSettingsProcessing* p = nullptr, const GPURecoStepConfiguration* w = nullptr);
7777
void UpdateSettings(const GPUSettingsGRP* g, const GPUSettingsProcessing* p = nullptr, const GPURecoStepConfiguration* w = nullptr, const GPUSettingsRecDynamic* d = nullptr);
78-
void UpdateBzOnly(float newSolenoidBz, bool assumeConstantBz = false);
78+
void UpdateBzOnly(float newSolenoidBz, bool assumeConstantBz = false, float biasX = 0.f, float biasY = 0.f, float biasZ = 0.f);
7979
void UpdateRun3ClusterErrors(const float* yErrorParam, const float* zErrorParam);
8080
#endif
8181

GPU/GPUTracking/DataTypes/GPUSettings.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ class GPUSettings
5151
struct GPUSettingsGRP {
5252
// All new members must be sizeof(int32_t) resp. sizeof(float) for alignment reasons!, default value for newly added members for old data will be 0.
5353
float solenoidBzNominalGPU = -5.00668f; // solenoid field strength
54+
float fieldOrigin[3] = {0.f, 0.f, 0.f}; // field origin in lab
5455
int32_t constBz = 0; // for test-MC events with constant Bz
5556
int32_t removed0 = 0; // Obsolete parameter, dummy value needed to support reading old dumps
5657
int32_t grpContinuousMaxTimeBin = -2; // 0 for triggered events, -1 for automatic setting, -2 invalid default

GPU/GPUTracking/Merger/GPUTPCGMPolynomialFieldManager.cxx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
using namespace o2::gpu;
2121

22-
int32_t GPUTPCGMPolynomialFieldManager::GetPolynomialField(StoredField_t fieldType, float nominalFieldkG, GPUTPCGMPolynomialField& field)
22+
int32_t GPUTPCGMPolynomialFieldManager::GetPolynomialField(StoredField_t fieldType, float nominalFieldkG, GPUTPCGMPolynomialField& field, float biasX, float biasY, float biasZ)
2323
{
2424
//
2525
// get pre-calculated polynomial field approximation of the TPC region
@@ -180,10 +180,15 @@ int32_t GPUTPCGMPolynomialFieldManager::GetPolynomialField(StoredField_t fieldTy
180180
field.SetFieldTrd(TrdBx, TrdBy, TrdBz);
181181
field.SetFieldIts(ItsBx, ItsBy, ItsBz);
182182

183+
if (biasX!=0.f || biasY!=0.f || biasZ!=0.f) {
184+
field.ShiftFieldOriginIts(biasX, biasY, biasZ);
185+
field.ShiftFieldOriginTpc(biasX, biasY, biasZ);
186+
field.ShiftFieldOriginTrd(biasX, biasY, biasZ);
187+
}
183188
return 0;
184189
}
185190

186-
int32_t GPUTPCGMPolynomialFieldManager::GetPolynomialField(float nominalFieldkG, GPUTPCGMPolynomialField& field)
191+
int32_t GPUTPCGMPolynomialFieldManager::GetPolynomialField(float nominalFieldkG, GPUTPCGMPolynomialField& field, float biasX, float biasY, float biasZ)
187192
{
188193
//
189194
// get closest pre-calculated polynomial field approximation of the TPC region for the given field value nominalFieldkG
@@ -204,5 +209,5 @@ int32_t GPUTPCGMPolynomialFieldManager::GetPolynomialField(float nominalFieldkG,
204209
type = k2kG;
205210
}
206211

207-
return GetPolynomialField(type, nominalFieldkG, field);
212+
return GetPolynomialField(type, nominalFieldkG, field, biasX, biasY, biasZ);
208213
}

GPU/GPUTracking/Merger/GPUTPCGMPolynomialFieldManager.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ class GPUTPCGMPolynomialFieldManager
4040

4141
/* Get appropriate pre-calculated polynomial field for the given field value nominalFieldkG
4242
*/
43-
static int32_t GetPolynomialField(float nominalFieldkG, o2::gpu::GPUTPCGMPolynomialField& field);
43+
static int32_t GetPolynomialField(float nominalFieldkG, o2::gpu::GPUTPCGMPolynomialField& field, float biasX=0.f, float biasY=0.f, float biasZ=0.f);
4444

4545
/* Get pre-calculated polynomial field of type "type", scaled with respect to nominalFieldkG
4646
*/
47-
static int32_t GetPolynomialField(StoredField_t type, float nominalFieldkG, o2::gpu::GPUTPCGMPolynomialField& field);
47+
static int32_t GetPolynomialField(StoredField_t type, float nominalFieldkG, o2::gpu::GPUTPCGMPolynomialField& field, float biasX=0.f, float biasY=0.f, float biasZ=0.f);
4848
};
4949

5050
#endif

0 commit comments

Comments
 (0)