35 auto run_mid_timestamp =
sor + (
eor -
sor) / 2;
38 auto ctpx = ccdb.
getForTimeStamp<std::vector<Long64_t>>(
"CTP/Calib/OrbitReset", run_mid_timestamp);
39 int64_t tsOrbitReset = (*ctpx)[0];
42 std::map<std::string, std::string> metadata;
43 metadata[
"runNumber"] = Form(
"%d", runnumber);
47 auto ctp_first_run_orbit = ccdb.
getForTimeStamp<std::vector<Long64_t>>(
"CTP/Calib/FirstRunOrbit", run_mid_timestamp);
57 if (ctfFirstRunOrbitVec && ctfFirstRunOrbitVec->size() >= 3) {
58 int64_t creation_timeIGNORED = (*ctfFirstRunOrbitVec)[0];
59 int64_t ctp_run_number = (*ctfFirstRunOrbitVec)[1];
60 int64_t ctp_orbitSOR = (*ctfFirstRunOrbitVec)[2];
61 if (creation_timeIGNORED == -1 && ctp_run_number == -1 && ctp_orbitSOR == -1) {
62 LOGP(warn,
"Default dummy CTP/Calib/FirstRunOrbit was provides, ignoring");
63 }
else if (ctp_run_number == runnumber) {
66 if (sor_new != sorMS) {
67 LOGP(warn,
"Adjusting SOR from {} to {}", sorMS, sor_new);
71 LOGP(error,
"AggregatedRunInfo: run number inconsistency found (asked: {} vs CTP found: {}, ignoring", runnumber, ctp_run_number);
75 if (runnumber > 523897) {
80 if (runnumber > 523897) {
91std::string getFullPath_MC(std::string
const& username, std::string
const& lpm_prod_tag)
94 std::string
path =
"/Users/" + std::string(1, username[0]) +
"/" + username;
95 std::string fullpath =
path +
"/" +
"MCProdInfo/" + lpm_prod_tag;
103 std::string
const& lpm_prod_tag,
104 std::string
const& username)
106 std::map<std::string, std::string> metaDataFilter;
107 metaDataFilter[
"LPMProductionTag"] = lpm_prod_tag;
116 std::string
const& lpm_prod_tag,
117 std::string
const& username)
122 auto iter = header_data.find(
"OrbitsPerTF");
123 if (iter != header_data.end()) {
124 auto mc_orbitsPerTF = std::stoi(iter->second);
126 LOG(info) <<
"Adjusting OrbitsPerTF from " <<
orbitsPerTF <<
" to " << mc_orbitsPerTF <<
" based on differing MC info";
130 LOG(warn) <<
"No OrbitsPerTF information found for MC production " << lpm_prod_tag <<
" and run number " << run_number;
141 if (lpm_prod_tag.size() == 0) {
142 return original_info;
146 original_info.adjust_from_MC(ccdb, run_number, lpm_prod_tag, username);
148 return original_info;
Header of the AggregatedRunInfo struct.
Header to collect LHC related constants.
T * getForTimeStamp(std::string const &path, long timestamp)
retrieve an object of type T from CCDB as stored under path and timestamp
std::pair< int64_t, int64_t > getRunDuration(int runnumber, bool fatal=true)
bool getFatalWhenNull() const
get the fatalWhenNull state
CcdbApi & getCCDBAccessor()
T * getSpecific(std::string const &path, long timestamp=-1, MD metaData=MD(), std::map< std::string, std::string > *headers=nullptr)
retrieve an object of type T from CCDB as stored under path, timestamp and metaData
void setFatalWhenNull(bool b)
set the fatal property (when false; nullptr object responses will not abort)
std::map< std::string, std::string > retrieveHeaders(std::string const &path, std::map< std::string, std::string > const &metadata, long timestamp=-1) const
uint32_t getNHBFPerTF() const
GLsizei const GLchar *const * path
constexpr double LHCOrbitMUS
void adjust_from_MC(o2::ccdb::CCDBManagerInstance &ccdb, int run_number, std::string const &lpm_prod_tag, std::string const &username="aliprod")
static AggregatedRunInfo buildAggregatedRunInfo_DATA(o2::ccdb::CCDBManagerInstance &ccdb, int runnumber)
static AggregatedRunInfo buildAggregatedRunInfo(int runnumber, long sorMS, long eorMS, long orbitResetMUS, const o2::parameters::GRPECSObject *grpecs, const std::vector< Long64_t > *ctfFirstRunOrbitVec)
static std::map< std::string, std::string > getMCProdInfo(o2::ccdb::CCDBManagerInstance &ccdb, int runnumber, std::string const &lpm_prod_tag, std::string const &username="aliprod")
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"