Monitored::HistogramFiller2DProfile Node1 Monitored::HistogramFiller2 DProfile + HistogramFiller2DProfile() + fill() Node2 Monitored::HistogramFiller + HistogramFiller() + HistogramFiller() + ~HistogramFiller() + fill() + touch() + histogramVariablesNames() + histogramWeightName() + histogramCutMaskName() + getLock() # histogram() # getCutMaskFunc() # fill() - operator=() Node2->Node1 Node3 std::mutex Node3->Node2 #m_lock Node4 std::shared_ptr< Monitored ::IHistogramProvider > + operator->() Node4->Node2 #m_histogramProvider Node5 Monitored::IHistogramProvider + ~IHistogramProvider() + histogram() Node5->Node4 +ptr Node6 std::shared_ptr< Monitored ::HistogramDef > + operator->() Node6->Node2 #m_histDef Node7 Monitored::HistogramDef + path + tld + convention + runmode + runperiod + Sumw2 + kLBNHistoryDepth + kAddBinsDynamically + kRebinAxes + kCanRebin and 16 more... + parse() Node7->Node6 +ptr Node8 std::string Node8->Node7 +cutMask +alias +type +opt +zvar +yvar +xvar +weight +merge +title ... Node10 std::vector< std::string > Node8->Node10 +elements Node10->Node7 +name +xlabels +ylabels +zlabels Node11 std::vector< double > + elements Node11->Node7 +yarray +xarray