125 std::scoped_lock<std::mutex> metadataLock(s_metadataMutex);
128 size_t pos = path.find_last_of(
'/');
129 auto splitPath = std::make_pair(path.substr(0, pos), path.substr(pos + 1));
130 std::string treePath = splitPath.first +
"/metadata";
131 auto &histSvc =
m_gmTool->histogramService();
132 std::string interval;
133 char triggerData[] =
"<none>";
134 const std::string mergeDataStr =
m_histDef->merge ==
"" ?
"<default>" :
m_histDef->merge;
135 std::vector<char> mergeData{mergeDataStr.begin(), mergeDataStr.end()};
136 mergeData.push_back(
'\0');
142 interval =
"lowStat";
144 interval =
"lumiBlock";
146 if (!histSvc->existsTree(treePath)) {
147 auto tree = std::make_unique<TTree>(
"metadata",
"Monitoring Metadata");
149 tree->Branch(
"Name", &(splitPath.second[0]),
"Name/C");
150 tree->Branch(
"Interval", &(interval[0]),
"Interval/C");
151 tree->Branch(
"TriggerChain", triggerData,
"TriggerChain/C");
152 tree->Branch(
"MergeMethod", mergeData.data(),
"MergeMethod/C");
155 if (!histSvc->regTree(treePath, std::move(
tree))) {
158 <<
"Failed to register DQ metadata TTree " << treePath <<
endmsg;
161 TTree *
tree{
nullptr};
162 if (histSvc->getTree(treePath,
tree).isSuccess()) {
163 tree->SetBranchAddress(
"Name", &(splitPath.second[0]));
164 tree->SetBranchAddress(
"Interval", &(interval[0]));
165 tree->SetBranchAddress(
"TriggerChain", triggerData);
166 tree->SetBranchAddress(
"MergeMethod", mergeData.data());
171 <<
"Failed to retrieve DQ metadata TTree " << treePath <<
" which is reported to exist" <<
endmsg;