10 #include <daq/hbasf2/utils/HistogramMapping.h>
12 #include <framework/pcore/MsgHandler.h>
13 #include <framework/logging/Logger.h>
15 #include <boost/range/combine.hpp>
17 #include <TDirectory.h>
26 std::vector<TObject*> objects;
27 std::vector<std::string> names;
28 msgHandler.
decode_msg(msg.get(), objects, names);
30 B2ASSERT(
"Objects and names need to align", names.size() == objects.size());
32 for (
const auto& keyValue : boost::combine(names, objects)) {
35 boost::tie(key,
object) = keyValue;
37 TH1* histogram =
dynamic_cast<TH1*
>(object);
38 if (histogram ==
nullptr) {
39 B2WARNING(
"Object " << key <<
" is not a histogram!");
43 m_histograms.insert({key, std::unique_ptr<TH1>(histogram)});
51 const auto& key = keyValue.first;
52 const auto& histogram = keyValue.second;
56 B2DEBUG(100,
"Creating new histogram with name " << key <<
".");
57 auto* copiedHistogram =
dynamic_cast<TH1*
>(histogram->Clone());
58 m_histograms.insert({key, std::unique_ptr<TH1>(copiedHistogram)});
68 histogram->SetDirectory(gDirectory);
86 B2INFO(key <<
": " << histogram->GetName() <<
" -> " << histogram->GetEntries());
94 int objectCounter = 0;
96 msgHandler.
add(histogram.get(), key);
100 std::unique_ptr<Belle2::EvtMessage> msg(msgHandler.
encode_msg(Belle2::ERecordType::MSG_EVENT));
101 (msg->
header())->reserved[0] = 0;
102 (msg->
header())->reserved[1] = objectCounter;