5#ifndef AthenaMonitoringKernel_HistogramFiller_HistogramFiller2D_h
6#define AthenaMonitoringKernel_HistogramFiller_HistogramFiller2D_h
13#include "GaudiKernel/MsgStream.h"
29 if (
ATH_UNLIKELY(vars.
size()!=2 or vars[0] ==
nullptr or vars[1] ==
nullptr ))
return 0;
31 const size_t size0 = vars[0]->
size();
32 const size_t size1 = vars[1]->
size();
39 if (
ATH_UNLIKELY(size0 > 1 && size1 > 1 && size0 != size1)) {
41 log << MSG::ERROR <<
"Mismatch of provided vector sizes "
47 const size_t maskSize = vars.
cut->
size();
49 if (maskSize == 0 || (maskSize == 1 && !vars.
cut->
get(0))) {
return 0; }
51 maskSize > 1 && size0 != maskSize)) {
53 log << MSG::ERROR <<
"CutMask does not match the size of plotted variable: "
54 << maskSize <<
" " << size0 <<
endmsg;
60 auto cutMaskAccessor = [&](
size_t i) {
return static_cast<bool>(vars.
cut->
get(i)); };
63 auto weightAccessor = [&](
size_t i){
return vars.
weight->
get(i); };
67 log << MSG::ERROR <<
"Weight does not match the size of plotted variable: "
Generic filler for 2D histogram.
HistogramFiller2DGeneric(const HistogramDef &definition, std::shared_ptr< IHistogramProvider > provider)
virtual unsigned fill(const HistogramFiller::VariablesPack &vars) const override
Method that actually fills the ROOT object.
HistogramFiller(const HistogramDef &histDef, std::shared_ptr< IHistogramProvider > histogramProvider)
Default constructor.
std::shared_ptr< HistogramDef > m_histDef
virtual unsigned fill(const VariablesPack &) const =0
Method that actually fills the ROOT object.
virtual double get(size_t) const =0
virtual size_t size() const =0
gives size of vector representation
IMessageSvc * getMessageSvc(bool quiet=false)
auto noWeight
no weight for filling
auto noCut
no cut for filling
Generic monitoring tool for athena components.
HistogramFiller2DGeneric< TH2 > HistogramFiller2D
the internal class used to keep parsed Filler properties
helper class to pass variables to fillers
const Monitored::IMonitoredVariable * cut
pointer to cut mask variable, typically absent
size_t size() const
number of variables in the pack ( not counting the weight and mask )
const Monitored::IMonitoredVariable * weight
pointer to weight variable, typically absent