Skip to content

Commit 89375b5

Browse files
committed
Add treatment of clustom dE/dx file and disabling dE/dx input
1 parent 366d75e commit 89375b5

File tree

2 files changed

+61
-9
lines changed

2 files changed

+61
-9
lines changed

Detectors/TPC/workflow/src/CalibdEdxSpec.cxx

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,18 @@
1818
// o2 includes
1919
#include "CCDB/CcdbApi.h"
2020
#include "CCDB/CcdbObjectInfo.h"
21-
#include "CommonUtils/NameConf.h"
21+
// #include "CommonUtils/NameConf.h"
2222
#include "DataFormatsTPC/TrackTPC.h"
23-
#include "DataFormatsParameters/GRPObject.h"
23+
// #include "DataFormatsParameters/GRPObject.h"
2424
#include "DetectorsCalibration/Utils.h"
2525
#include "Framework/Task.h"
2626
#include "Framework/DataProcessorSpec.h"
2727
#include "Framework/ConfigParamRegistry.h"
2828
#include "Framework/CCDBParamSpec.h"
29+
#include "GPUO2InterfaceConfigurableParam.h"
2930
#include "TPCCalibration/CalibdEdx.h"
3031
#include "TPCWorkflow/ProcessingHelpers.h"
31-
#include "TPCBase/CDBInterface.h"
32+
#include "TPCBase/CDBTypes.h"
3233
#include "TPCBase/Utils.h"
3334
#include "DetectorsBase/GRPGeomHelper.h"
3435

@@ -68,14 +69,37 @@ class CalibdEdxDevice : public Task
6869
mCalib->set2DFitThreshold(minEntries2D);
6970
mCalib->setElectronCut(fitThreshold, fitPasses, fitThresholdLowFactor);
7071
mCalib->setMaterialType(mMatType);
72+
73+
mCustomdEdxFileName = o2::gpu::GPUConfigurableParamGPUSettingsO2::Instance().dEdxCorrFile;
74+
mDisableTimeGain = o2::gpu::GPUConfigurableParamGPUSettingsO2::Instance().dEdxDisableResidualGain;
75+
76+
if (mDisableTimeGain) {
77+
LOGP(info, "TimeGain correction was disabled via GPU_global.dEdxDisableResidualGain=1");
78+
}
79+
80+
if (!mDisableTimeGain && !mCustomdEdxFileName.empty()) {
81+
std::unique_ptr<TFile> fdEdxCustom(TFile::Open(mCustomdEdxFileName.data()));
82+
if (!fdEdxCustom || !fdEdxCustom->IsOpen() || fdEdxCustom->IsZombie()) {
83+
LOGP(error, "Could not open custom TimeGain file {}", mCustomdEdxFileName);
84+
} else {
85+
const auto timeGain = fdEdxCustom->Get<o2::tpc::CalibdEdxCorrection>("CalibdEdxCorrection");
86+
if (!timeGain) {
87+
LOGP(error, "Could not load 'CalibdEdxCorrection' from file {}", mCustomdEdxFileName);
88+
} else {
89+
const auto meanParamTot = timeGain->getMeanParams(ChargeType::Tot);
90+
LOGP(info, "Loaded custom TimeGain from file {} with {} dimensions and mean qTot Params {}", mCustomdEdxFileName, timeGain->getDims(), utils::elementsToString(meanParamTot));
91+
mCalib->setCalibrationInput(*timeGain);
92+
}
93+
}
94+
}
7195
}
7296

7397
void finaliseCCDB(o2::framework::ConcreteDataMatcher& matcher, void* obj) final
7498
{
7599
if (o2::base::GRPGeomHelper::instance().finaliseCCDB(matcher, obj)) {
76100
return;
77101
}
78-
if (matcher == ConcreteDataMatcher("TPC", "TIMEGAIN", 0)) {
102+
if ((mDisableTimeGain == 0) && mCustomdEdxFileName.empty() && (matcher == ConcreteDataMatcher("TPC", "TIMEGAIN", 0))) {
79103
mCalib->setCalibrationInput(*(o2::tpc::CalibdEdxCorrection*)obj);
80104
const auto meanParamTot = mCalib->getCalibrationInput().getMeanParams(ChargeType::Tot);
81105
LOGP(info, "Updating TimeGain with {} dimensions and mean qTot Params {}", mCalib->getCalibrationInput().getDims(), utils::elementsToString(meanParamTot));
@@ -143,7 +167,9 @@ class CalibdEdxDevice : public Task
143167
uint64_t mRunNumber{0}; ///< processed run number
144168
uint64_t mTimeStampStart{0}; ///< time stamp for first TF for CCDB output
145169
std::unique_ptr<CalibdEdx> mCalib;
146-
bool mMakeGaussianFits{true}; ///< make gaussian fits or take the mean
170+
bool mMakeGaussianFits{true}; ///< make gaussian fits or take the mean
171+
bool mDisableTimeGain{false}; ///< if time gain is disabled via GPU_global.dEdxDisableResidualGain=1
172+
std::string mCustomdEdxFileName{}; ///< name of the custom dE/dx file configured via GPU_global.dEdxCorrFile
147173
};
148174

149175
DataProcessorSpec getCalibdEdxSpec(const o2::base::Propagator::MatCorrType matType)

Detectors/TPC/workflow/src/CalibratordEdxSpec.cxx

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,19 @@
2121
// o2 includes
2222
#include "CCDB/CcdbApi.h"
2323
#include "CCDB/CcdbObjectInfo.h"
24-
#include "CommonUtils/NameConf.h"
24+
// #include "CommonUtils/NameConf.h"
2525
#include "DataFormatsTPC/TrackTPC.h"
26-
#include "DataFormatsParameters/GRPObject.h"
26+
// #include "DataFormatsParameters/GRPObject.h"
2727
#include "DetectorsCalibration/Utils.h"
2828
#include "Framework/Task.h"
2929
#include "Framework/DataProcessorSpec.h"
3030
#include "Framework/ConfigParamRegistry.h"
3131
#include "Framework/CCDBParamSpec.h"
32+
#include "GPUO2InterfaceConfigurableParam.h"
3233
#include "TPCCalibration/CalibratordEdx.h"
3334
#include "TPCWorkflow/ProcessingHelpers.h"
3435
#include "DetectorsBase/GRPGeomHelper.h"
35-
#include "TPCBase/CDBInterface.h"
36+
#include "TPCBase/CDBTypes.h"
3637
#include "TPCBase/Utils.h"
3738

3839
using namespace o2::framework;
@@ -85,6 +86,29 @@ class CalibratordEdxDevice : public Task
8586
mCalibrator->setTrackDebug(trackDebug);
8687
mCalibrator->setMakeGaussianFits(makeGaussianFits);
8788

89+
mCustomdEdxFileName = o2::gpu::GPUConfigurableParamGPUSettingsO2::Instance().dEdxCorrFile;
90+
mDisableTimeGain = o2::gpu::GPUConfigurableParamGPUSettingsO2::Instance().dEdxDisableResidualGain;
91+
92+
if (mDisableTimeGain) {
93+
LOGP(info, "TimeGain correction was disabled via GPU_global.dEdxDisableResidualGain=1");
94+
}
95+
96+
if (!mDisableTimeGain && !mCustomdEdxFileName.empty()) {
97+
std::unique_ptr<TFile> fdEdxCustom(TFile::Open(mCustomdEdxFileName.data()));
98+
if (!fdEdxCustom || !fdEdxCustom->IsOpen() || fdEdxCustom->IsZombie()) {
99+
LOGP(error, "Could not open custom TimeGain file {}", mCustomdEdxFileName);
100+
} else {
101+
const auto timeGain = fdEdxCustom->Get<o2::tpc::CalibdEdxCorrection>("CalibdEdxCorrection");
102+
if (!timeGain) {
103+
LOGP(error, "Could not load 'CalibdEdxCorrection' from file {}", mCustomdEdxFileName);
104+
} else {
105+
mTimeGain = *timeGain;
106+
const auto meanParamTot = mTimeGain.getMeanParams(ChargeType::Tot);
107+
LOGP(info, "Loaded custom TimeGain from file {} with {} dimensions and mean qTot Params {}", mCustomdEdxFileName, mTimeGain.getDims(), utils::elementsToString(meanParamTot));
108+
}
109+
}
110+
}
111+
88112
if (dumpData) {
89113
const auto dumpDataName = ic.options().get<std::string>("file-dump-name");
90114
mCalibrator->enableDebugOutput(dumpDataName);
@@ -96,7 +120,7 @@ class CalibratordEdxDevice : public Task
96120
if (o2::base::GRPGeomHelper::instance().finaliseCCDB(matcher, obj)) {
97121
return;
98122
}
99-
if (matcher == ConcreteDataMatcher("TPC", "TIMEGAIN", 0)) {
123+
if ((mDisableTimeGain == 0) && mCustomdEdxFileName.empty() && (matcher == ConcreteDataMatcher("TPC", "TIMEGAIN", 0))) {
100124
mTimeGain = *(o2::tpc::CalibdEdxCorrection*)obj;
101125
const auto meanParamTot = mTimeGain.getMeanParams(ChargeType::Tot);
102126
LOGP(info, "Updating TimeGain with {} dimensions and mean qTot Params {}", mTimeGain.getDims(), utils::elementsToString(meanParamTot));
@@ -181,6 +205,8 @@ class CalibratordEdxDevice : public Task
181205
uint32_t mRunNumber{0}; ///< processed run number
182206
long mCalibIntervalExtensionMS{0}; ///< Extension of the calibration interval end in ms
183207
o2::tpc::CalibdEdxCorrection mTimeGain{}; ///< currently valid TimeGain
208+
bool mDisableTimeGain{false}; ///< if time gain is disabled via GPU_global.dEdxDisableResidualGain=1
209+
std::string mCustomdEdxFileName{}; ///< name of the custom dE/dx file configured via GPU_global.dEdxCorrFile
184210
};
185211

186212
DataProcessorSpec getCalibratordEdxSpec(const o2::base::Propagator::MatCorrType matType)

0 commit comments

Comments
 (0)