Skip to content
Merged

Ctpdev #14037

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class CTPRunManager : public ctpCCDBManager
CTPRunManager() = default;
void init();
int loadRun(const std::string& cfg);
int startRun(const std::string& cfg);
int setRunConfigBK(uint32_t runNumber, const std::string& cfg);
int stopRun(uint32_t irun, long timeStamp);
int addScalers(uint32_t irun, std::time_t time, bool start = 0);
int processMessage(std::string& topic, const std::string& message);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,11 @@ class ctpCCDBManager
int saveRunScalersToCCDB(CTPRunScalers& scalers, long timeStart, long timeStop);
int saveRunScalersToQCDB(CTPRunScalers& scalers, long timeStart, long timeStop);
int saveRunConfigToCCDB(CTPConfiguration* cfg, long timeStart);
int saveSoxOrbit(uint32_t runNumber, uint32_t soxOrbit, long timeStart);
int saveOrbitReset(long timeStamp);
static CTPConfiguration getConfigFromCCDB(long timestamp, std::string run, bool& ok);
static CTPConfiguration getConfigFromCCDB(long timestamp, std::string run);
CTPRunScalers getScalersFromCCDB(long timestamp, std::string, bool& ok);
void setCCDBPathConfig(std::string path) { mCCDBPathCTPConfig = path; };
void setCCDBPathScalers(std::string path) { mCCDBPathCTPScalers = path; };
void setQCDBPathScalers(std::string path) { mQCDBPathCTPScalers = path; };
static void setCCDBHost(std::string host) { mCCDBHost = host; };
static void setQCDBHost(std::string host) { mQCDBHost = host; };

Expand All @@ -42,9 +41,11 @@ class ctpCCDBManager
// std::string mQCDBHost = "http://ali-qcdb.cern.ch:8083";
static std::string mCCDBHost;
static std::string mQCDBHost;
std::string mCCDBPathCTPScalers = "CTP/Calib/Scalers";
std::string mCCDBPathCTPConfig = "CTP/Config/Config";
std::string mQCDBPathCTPScalers = "qc/CTP/Scalers";
const std::string mCCDBPathCTPScalers = "CTP/Calib/Scalers";
// std::string mCCDBPathCTPConfig = "CTP/Config/Config"; - in Configuration.h
const std::string mQCDBPathCTPScalers = "qc/CTP/Scalers";
const std::string mCCDBPathSoxOrbit = "CTP/Calib/FirstRunOrbit";
const std::string mCCDBPathOrbitReset = "CTP/Calib/OrbitReset";
ClassDefNV(ctpCCDBManager, 1);
};
} // namespace ctp
Expand Down
37 changes: 27 additions & 10 deletions Detectors/CTP/workflowScalers/src/RunManager.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ int CTPActiveRun::send2BK(std::unique_ptr<BkpClient>& BKClient, size_t ts, bool
std::string clsname = cfg.getClassNameFromHWIndex(cls.first);
// clsname = std::to_string(runOri) + "_" + clsname;
try {
BKClient->triggerCounters()->createOrUpdateForRun(runNumber, clsname, ts, cntsbk[0], cntsbk[1], cntsbk[2], cntsbk[3], cntsbk[4], cntsbk[5]);
BKClient->ctpTriggerCounters()->createOrUpdateForRun(runNumber, clsname, ts, cntsbk[0], cntsbk[1], cntsbk[2], cntsbk[3], cntsbk[4], cntsbk[5]);
} catch (std::runtime_error& error) {
std::cerr << "An error occurred: " << error.what() << std::endl;
return 1;
Expand Down Expand Up @@ -124,8 +124,19 @@ int CTPRunManager::loadRun(const std::string& cfg)

return 0;
}
int CTPRunManager::startRun(const std::string& cfg)
int CTPRunManager::setRunConfigBK(uint32_t runNumber, const std::string& cfg)
{
std::cout << "Printing cfg:" << cfg << std::endl;
if (mBKClient) {
try {
uint32_t runNumber = 1;
mBKClient->run()->setRawCtpTriggerConfiguration(runNumber, cfg);
} catch (std::runtime_error& error) {
std::cerr << "An error occurred: " << error.what() << std::endl;
return 1;
}
LOG(info) << "Run BK:" << runNumber << " CFG:" << cfg;
}
return 0;
}
int CTPRunManager::stopRun(uint32_t irun, long timeStamp)
Expand Down Expand Up @@ -221,6 +232,13 @@ int CTPRunManager::processMessage(std::string& topic, const std::string& message
loadRun(message);
return 0;
}
if (topic.find("soxorbit") != std::string::npos) {
return 0;
}
if (topic.find("orbitreset") != std::string::npos) {
return 0;
}
static int nerror = 0;
if (topic.find("sox") != std::string::npos) {
// get config
size_t irun = message.find("run");
Expand All @@ -230,17 +248,15 @@ int CTPRunManager::processMessage(std::string& topic, const std::string& message
}
LOG(info) << "SOX received, Run keyword position:" << irun;
std::string cfg = message.substr(irun, message.size() - irun);
startRun(cfg);
firstcounters = message.substr(0, irun);
}
if (topic.find("eox") != std::string::npos) {
} else if (topic.find("eox") != std::string::npos) {
LOG(info) << "EOX received";
mEOX = 1;
}
static int nerror = 0;
if (topic == "rocnts") {
if (nerror < 1) {
LOG(warning) << "Skipping topic rocnts";
} else if (topic.find("cnts") != std::string::npos) {
// just continue
} else {
if (nerror < 10) {
LOG(warning) << "Skipping topic:" << topic;
nerror++;
}
return 0;
Expand Down Expand Up @@ -293,6 +309,7 @@ int CTPRunManager::processMessage(std::string& topic, const std::string& message
mActiveRunNumbers[i] = mCounters[i];
mActiveRuns[i] = run->second;
mRunsLoaded.erase(run);
setRunConfigBK(mActiveRuns[i]->cfg.getRunNumber(), mActiveRuns[i]->cfg.getConfigString());
addScalers(i, tt, 1);
saveRunScalersToQCDB(mActiveRuns[i]->scalers, tt * 1000, tt * 1000);
} else {
Expand Down
59 changes: 59 additions & 0 deletions Detectors/CTP/workflowScalers/src/ctpCCDBManager.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,65 @@ int ctpCCDBManager::saveRunConfigToCCDB(CTPConfiguration* cfg, long timeStart)
}
return ret;
}
int ctpCCDBManager::saveSoxOrbit(uint32_t runNumber, uint32_t soxOrbit, long timestamp)
{
// data base
if (mCCDBHost == "none") {
LOG(info) << "SOX Orbit not written to CCDB none";
return 0;
}
std::vector<int64_t> vect;
if (timestamp == 0) {
auto now = std::chrono::system_clock::now();
timestamp = std::chrono::duration_cast<std::chrono::microseconds>(now.time_since_epoch()).count();
}
vect.push_back(timestamp);
vect.push_back((uint64_t)runNumber);
vect.push_back((uint64_t)soxOrbit);
long tmin = timestamp;
long tmax = tmin + 381928219;
o2::ccdb::CcdbApi api;
map<string, string> metadata; // can be empty
metadata["runNumber"] = std::to_string(runNumber);
api.init(mCCDBHost.c_str()); // or http://localhost:8080 for a local installation

// store abitrary user object in strongly typed manner
int ret = api.storeAsTFileAny(&vect, mCCDBPathSoxOrbit, metadata, tmin, tmax);
if (ret == 0) {
LOG(info) << "SOX orbit saved in ccdb:" << mCCDBHost << " run:" << runNumber << " tmin:" << tmin << " tmax:" << tmax;
} else {
LOG(fatal) << "SOX orbit Problem writing to database ret:" << ret;
}
return 0;
}
int ctpCCDBManager::saveOrbitReset(long timeStamp)
{
// data base
if (mCCDBHost == "none") {
LOG(info) << "Orbit Reset not written to CCDB none";
return 0;
}
std::vector<int64_t> vect;
if (timeStamp == 0) {
auto now = std::chrono::system_clock::now();
timeStamp = std::chrono::duration_cast<std::chrono::microseconds>(now.time_since_epoch()).count();
}
vect.push_back(timeStamp);
long tmin = timeStamp;
long tmax = tmin + 381928219;
o2::ccdb::CcdbApi api;
map<string, string> metadata; // can be empty
api.init(mCCDBHost.c_str()); // or http://localhost:8080 for a local installation

// store abitrary user object in strongly typed manner
int ret = api.storeAsTFileAny(&vect, mCCDBPathOrbitReset, metadata, tmin, tmax);
if (ret == 0) {
LOG(info) << "Orbit reset saved in ccdb:" << mCCDBHost << " tmin:" << tmin << " tmax:" << tmax;
} else {
LOG(fatal) << "Orbit reset Problem writing to database ret:" << ret;
}
return 0;
}
CTPConfiguration ctpCCDBManager::getConfigFromCCDB(long timestamp, std::string run, bool& ok)
{
auto& mgr = o2::ccdb::BasicCCDBManager::instance();
Expand Down