Skip to content

Commit 7cf775b

Browse files
wiechulashahor02
authored andcommitted
Implement usage of CCDB Redirect
1 parent 7fd0681 commit 7cf775b

File tree

10 files changed

+50
-35
lines changed

10 files changed

+50
-35
lines changed

Detectors/TPC/base/include/TPCBase/CDBTypes.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ const std::unordered_map<CDBType, const std::string> CDBTypeMap{
110110
//
111111
{CDBType::ConfigFEEPad, "TPC/Config/FEEPad"},
112112
{CDBType::ConfigFEE, "TPC/Config/FEE"},
113-
{CDBType::ConfigRunInfo, "TPC/Config/RunInfo"},
113+
{CDBType::ConfigRunInfo, "TPC/Config/RunInfoV2"},
114114
//
115115
{CDBType::ParDetector, "TPC/Parameter/Detector"},
116116
{CDBType::ParElectronics, "TPC/Parameter/Electronics"},

Detectors/TPC/base/include/TPCBase/DeadChannelMapCreator.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,11 @@ class DeadChannelMapCreator
5858
void load(long timeStampOrRun);
5959
void loadFEEConfigViaRunInfoTS(long timeStamp);
6060
void loadFEEConfigViaRunInfo(long timeStampOrRun);
61-
void loadFEEConfig(long tag, long createdNotAfter = -1);
61+
void loadFEEConfig(long timeStamp = -1);
6262
void loadIDCPadFlags(long timeStampOrRun);
6363

6464
void setDeadChannelMapIDCPadStatus(const CalDetFlag_t& padStatusMap, PadFlags mask = PadFlags::flagAllNoneGood);
65+
void setDeadChannelMapFEEConfig(const FEEConfig& feeConfig) { mDeadChannelMapFEE = feeConfig.getDeadChannelMap(); }
6566

6667
const CalDet<bool>& getDeadChannelMapIDC() const { return mDeadChannelMapIDC; }
6768
const CalDet<bool>& getDeadChannelMapFEE() const { return mDeadChannelMapFEE; }

Detectors/TPC/base/include/TPCBase/FEEConfig.h

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,19 @@ struct CRUConfig {
4848
struct FEEConfig {
4949
/// Tag definitions for TPC/Config/FEE
5050
enum class Tags : uint8_t {
51-
Unspecified = 0, ///< Unspecified
52-
TestWithZS = 1, ///< Test configuration with ZS
53-
Pedestals = 2, ///< Configuration for Pedestal data taking
54-
Pulser = 3, ///< Configuration for Pulser data taking
55-
Laser = 4, ///< Configuration for Laser data taking
56-
Cosmics = 5, ///< Configuration for Cosmics data taking
57-
Physics35sigma = 6, ///< Physics configuration with 3.5 sigma thresholds
58-
Physics30sigma = 7, ///< Physics configuration with 3.0 sigma thresholds
59-
Physics25sigma = 8, ///< Physics configuration with 2.5 sigma thresholds
60-
Laser10ADCoff = 9, ///< Configuration for Laser data taking with 10ADC offset for special studies
51+
Unspecified = 0, ///< Unspecified
52+
TestWithZS = 1, ///< Test configuration with ZS
53+
Pedestals = 2, ///< Configuration for Pedestal data taking
54+
Pulser = 3, ///< Configuration for Pulser data taking
55+
Laser = 4, ///< Configuration for Laser data taking
56+
Cosmics = 5, ///< Configuration for Cosmics data taking
57+
Physics35sigma = 6, ///< Physics configuration with 3.5 sigma thresholds
58+
Physics30sigma = 7, ///< Physics configuration with 3.0 sigma thresholds
59+
Physics25sigma = 8, ///< Physics configuration with 2.5 sigma thresholds
60+
Laser10ADCoff = 9, ///< Configuration for Laser data taking with 10ADC offset for special studies
61+
TestNoFilters = 10, ///< Test configuration without filters
62+
Physics2025sigma = 11, ///< Physics configuration with 2.0/2.5 sigma thresholds (IROC/OROC)
63+
Physics30sigmaPbPb = 12, ///< Physics configuration with 3.0 sigma thresholds for PbPb (using differnet CMC settings wrt. pp config 7)
6164
};
6265

6366
enum class PadConfig {

Detectors/TPC/base/src/CDBInterface.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,7 @@ void CDBInterface::createFEEConfig()
556556

557557
if (!mUseDefaults) {
558558
LOGP(info, "trying to load default FEEConfig");
559-
mDeadChannelMapCreator.loadFEEConfig(7, 1680525888290); // load oldest physics configuration
559+
mDeadChannelMapCreator.loadFEEConfig(1680525888290); // load oldest physics configuration
560560
if (mFEEConfig) {
561561
return;
562562
}

Detectors/TPC/base/src/DeadChannelMapCreator.cxx

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,7 @@ void DeadChannelMapCreator::loadFEEConfigViaRunInfoTS(long timeStamp)
4343
if (mObjectValidity[CDBType::ConfigRunInfo].isValid(timeStamp)) {
4444
return;
4545
}
46-
const auto meta = mCCDBApi.retrieveHeaders(CDBTypeMap.at(CDBType::ConfigRunInfo), {}, timeStamp);
47-
mObjectValidity[CDBType::ConfigRunInfo].startvalidity = std::stol(meta.at("Valid-From"));
48-
mObjectValidity[CDBType::ConfigRunInfo].endvalidity = std::stol(meta.at("Valid-Until"));
49-
const long tag = std::stol(meta.at("Tag"));
50-
LOGP(info, "Loading FEE config for time stamp {}, via RunInfo with Tag {}, RunType {}, runNumber {}, validity: {} - {}",
51-
timeStamp, tag, meta.at("RunType"), meta.at("runNumber"), meta.at("Valid-From"), meta.at("Valid-Until"));
52-
loadFEEConfig(tag, timeStamp);
46+
loadFEEConfig(timeStamp);
5347
}
5448

5549
//______________________________________________________________________________
@@ -59,13 +53,13 @@ void DeadChannelMapCreator::loadFEEConfigViaRunInfo(long timeStampOrRun)
5953
}
6054

6155
//______________________________________________________________________________
62-
void DeadChannelMapCreator::loadFEEConfig(long tag, long createdNotAfter)
56+
void DeadChannelMapCreator::loadFEEConfig(long timeStamp)
6357
{
64-
std::map<std::string, std::string> mm, meta;
65-
const std::string createdNotAfterS = (createdNotAfter < 0) ? "" : std::to_string(createdNotAfter);
66-
mFEEConfig.reset(mCCDBApi.retrieveFromTFileAny<o2::tpc::FEEConfig>(CDBTypeMap.at(CDBType::ConfigFEE), mm, tag, &meta, "", createdNotAfterS));
58+
std::map<std::string, std::string> meta;
59+
mFEEConfig.reset(mCCDBApi.retrieveFromTFileAny<o2::tpc::FEEConfig>(CDBTypeMap.at(CDBType::ConfigRunInfo), {}, timeStamp, &meta));
60+
const long tag = std::stol(meta.at("Tag"));
6761
if (!mFEEConfig) {
68-
LOGP(error, "Could not load {}/{}, createdNotAfter: {}", CDBTypeMap.at(CDBType::ConfigFEE), tag, createdNotAfterS);
62+
LOGP(error, "Could not load {}/{}, createdNotAfter: {}", CDBTypeMap.at(CDBType::ConfigFEE), tag, timeStamp);
6963
return;
7064
}
7165
LOGP(info, "Using FEE config for Tag {}, ETag {}, Last-Modified {}", meta.at("Valid-From"), meta.at("ETag"), meta.at("Last-Modified"));

Detectors/TPC/base/src/FEEConfig.cxx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ const std::unordered_map<FEEConfig::Tags, const std::string> FEEConfig::TagNames
5757
{Tags::Physics30sigma, "Physics30sigma"},
5858
{Tags::Physics25sigma, "Physics25sigma"},
5959
{Tags::Laser10ADCoff, "Laser10ADCoff"},
60+
{Tags::TestNoFilters, "TestNoFilter"},
61+
{Tags::Physics2025sigma, "Physics2025sigma"},
62+
{Tags::Physics30sigmaPbPb, "Physics30sigmaPbPb"},
6063
};
6164

6265
const std::unordered_map<FEEConfig::PadConfig, const std::string> FEEConfig::PadConfigNames{

Detectors/TPC/calibration/SpacePoints/include/SpacePoints/SpacePointsCalibParam.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ static constexpr int NZ2XBins = 5; ///< number of bins in z/x
5656
static constexpr float MaxResid = 20.f; ///< max residual in y and z
5757
static constexpr float MaxY = 50.f; ///< max value for y position (sector coordinates)
5858
static constexpr float MaxZ = 300.f; ///< max value for z position
59-
static constexpr float MaxTgSlp = 1.f; ///< max value for phi and lambda angles
59+
static constexpr float MaxTgSlp = 1.f; ///< max value for phi (from snp)
6060

6161
// miscellaneous
6262
static constexpr float sEps = 1e-6f; ///< small number for float comparisons

Detectors/TPC/calibration/SpacePoints/include/SpacePoints/TrackResiduals.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ class TrackResiduals
100100
LocalResid(short dyIn, short dzIn, short tgSlpIn, std::array<unsigned char, VoxDim> bvoxIn) : dy(dyIn), dz(dzIn), tgSlp(tgSlpIn), bvox(bvoxIn) {}
101101
short dy{0}; ///< residual in y, ranges from -param::sMaxResid to +param::sMaxResid
102102
short dz{0}; ///< residual in z, ranges from -param::sMaxResid to +param::sMaxResid
103-
short tgSlp{0}; ///< tangens of the phi angle between padrow and track, ranges from -param::sMaxAngle to +param::sMaxAngle
103+
short tgSlp{0}; ///< tangens of the phi angle between padrow and track, ranges from -param::MaxTgSlp to +param::MaxTgSlp
104104
std::array<unsigned char, VoxDim> bvox{}; ///< voxel identifier: VoxZ, VoxF, VoxX
105105
ClassDefNV(LocalResid, 1);
106106
};

Detectors/TPC/dcs/src/DCSConfigSpec.cxx

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,18 +189,28 @@ void DCSConfigDevice::updateRunInfo(gsl::span<const char> configBuff)
189189
LOGP(error, "{} has wrong format: {}, expected: {}, not writing RunInformation to CCDB", RunInfoFileName, line, runInfoConf);
190190
return;
191191
}
192+
const auto tagString = data[2];
193+
//
194+
// retrieve ETag from FEEConfig to set up Redirect
195+
const auto headers = mCCDBApi.retrieveHeaders(CDBTypeMap.at(CDBType::ConfigFEE), {}, std::stol(tagString));
196+
192197
std::map<std::string, std::string> md;
193198
md[o2::base::NameConf::CCDBRunTag.data()] = data[0];
194-
md["Tag"] = data[2];
195199
md["RunType"] = data[3];
196200
md[o2::ccdb::CcdbObjectInfo::AdjustableEOV] = "true";
197-
char tempChar{static_cast<char>(std::stoi(md["Tag"]))};
201+
if (headers.find("ETag") != headers.end()) {
202+
auto etag = headers.at("ETag");
203+
etag.erase(std::remove(etag.begin(), etag.end(), '"'), etag.end());
204+
md["Redirect"] = fmt::format("/{}/{}/{}", CDBTypeMap.at(CDBType::ConfigFEE), tagString, etag);
205+
} else {
206+
LOGP(error, "No ETag found for Tag {}, not setting Redirect in RunInfo", tagString);
207+
}
198208

199209
const long startValRCT = std::stol(data[1]);
200210
const long endValRCT = startValRCT + 48l * 60l * 60l * 1000l;
201211
if (!mDontWriteRunInfo) {
202212
o2::ccdb::CcdbObjectInfo w(CDBTypeMap.at(CDBType::ConfigRunInfo), "", "", md, startValRCT, endValRCT);
203-
mCCDBApi.storeAsBinaryFile(&tempChar, sizeof(tempChar), "tmp.dat", "char", CDBTypeMap.at(CDBType::ConfigRunInfo), md, startValRCT, endValRCT);
213+
mCCDBApi.storeAsBinaryFile(nullptr, 0, "ignored", "", CDBTypeMap.at(CDBType::ConfigRunInfo), md, startValRCT, endValRCT);
204214
if (!mCCDBApi.isSnapshotMode()) {
205215
o2::ccdb::adjustOverriddenEOV(mCCDBApi, w);
206216
}
@@ -255,7 +265,7 @@ void DCSConfigDevice::fillFEEPad(std::string_view configFileName, gsl::span<cons
255265
nLines = cru_calib_helpers::fillCalPad<2>(calPad, configBuff);
256266
mFEEPadDataReceived.set(3);
257267
} else if (configFileName == "CMkValues") {
258-
nLines = cru_calib_helpers::fillCalPad<6>(calPad, configBuff);
268+
nLines = cru_calib_helpers::fillCalPad<0>(calPad, configBuff);
259269
mFEEPadDataReceived.set(4);
260270
}
261271

GPU/Workflow/src/GPUWorkflowTPC.cxx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -281,11 +281,15 @@ void GPURecoWorkflowSpec::finaliseCCDBTPC(ConcreteDataMatcher& matcher, void* ob
281281
mTPCDeadChannelMapCreator->getDeadChannelMapIDC().getSum<int32_t>(), mTPCDeadChannelMapCreator->getDeadChannelMap().getSum<int32_t>());
282282
} else if (matcher == ConcreteDataMatcher(gDataOriginTPC, "TPCRUNINFO", 0)) {
283283
copyCalibsToBuffer();
284-
mTPCDeadChannelMapCreator->loadFEEConfigViaRunInfoTS(mCreationForCalib);
284+
const auto* fee = static_cast<o2::tpc::FEEConfig*>(obj);
285+
mTPCDeadChannelMapCreator->setDeadChannelMapFEEConfig(*fee);
285286
mTPCDeadChannelMapCreator->finalizeDeadChannelMap();
286287
mdEdxCalibContainerBufferNew.get()->setDeadChannelMap(mTPCDeadChannelMapCreator->getDeadChannelMap());
287-
LOGP(info, "Updating dead channel map with the FEE info loaded via TPCRUNINFO for creation time {}: {} / {} dead pads from FEE info / total",
288-
mCreationForCalib, mTPCDeadChannelMapCreator->getDeadChannelMapFEE().getSum<int32_t>(), mTPCDeadChannelMapCreator->getDeadChannelMap().getSum<int32_t>());
288+
LOGP(info,
289+
"Updating dead channel map with the FEE info (tag {}) loaded via TPCRUNINFO"
290+
" for creation time {}: {} / {} dead pads from FEE info / total, with",
291+
std::underlying_type_t<o2::tpc::FEEConfig::Tags>(fee->tag), mCreationForCalib,
292+
mTPCDeadChannelMapCreator->getDeadChannelMapFEE().getSum<int32_t>(), mTPCDeadChannelMapCreator->getDeadChannelMap().getSum<int32_t>());
289293
} else if (mTPCVDriftHelper->accountCCDBInputs(matcher, obj)) {
290294
} else if (mCalibObjects.mFastTransformHelper->accountCCDBInputs(matcher, obj)) {
291295
}
@@ -321,7 +325,7 @@ bool GPURecoWorkflowSpec::fetchCalibsCCDBTPC<GPUCalibObjectsConst>(ProcessingCon
321325
}
322326

323327
if (mTPCDeadChannelMapCreator->useSource(tpc::SourcesDeadMap::FEEConfig)) {
324-
pc.inputs().get<char*>("tpcruninfo");
328+
pc.inputs().get<o2::tpc::FEEConfig*>("tpcruninfo");
325329
}
326330

327331
if (dEdxCalibContainer->isCorrectionCCDB(o2::tpc::CalibsdEdx::CalResidualGainMap)) {

0 commit comments

Comments
 (0)