ATLAS Offline Software
Loading...
Searching...
No Matches
Monitored::HistogramFillerRebinableAxis< BASE, AXIS > Class Template Reference

Mixin class for rebinning of histogram axis. More...

#include <HistogramFillerRebinable.h>

Inheritance diagram for Monitored::HistogramFillerRebinableAxis< BASE, AXIS >:
Collaboration diagram for Monitored::HistogramFillerRebinableAxis< BASE, AXIS >:

Public Member Functions

 HistogramFillerRebinableAxis (const HistogramDef &definition, std::shared_ptr< IHistogramProvider > provider)
virtual unsigned fill (const HistogramFiller::VariablesPack &vars) const override

Private Types

enum class  RebinMode { AddBins , ExtendAxes }

Private Attributes

RebinMode m_rebinMode

Detailed Description

template<typename BASE, Monitored::Axis AXIS>
class Monitored::HistogramFillerRebinableAxis< BASE, AXIS >

Mixin class for rebinning of histogram axis.

Template Parameters
BASEHistogramFiller base class
AXISHistogram axis that should be made rebinable

Definition at line 24 of file HistogramFillerRebinable.h.

Member Enumeration Documentation

◆ RebinMode

template<typename BASE, Monitored::Axis AXIS>
enum class Monitored::HistogramFillerRebinableAxis::RebinMode
strongprivate
Enumerator
AddBins 
ExtendAxes 

Definition at line 76 of file HistogramFillerRebinable.h.

76{ AddBins, ExtendAxes };

Constructor & Destructor Documentation

◆ HistogramFillerRebinableAxis()

template<typename BASE, Monitored::Axis AXIS>
Monitored::HistogramFillerRebinableAxis< BASE, AXIS >::HistogramFillerRebinableAxis ( const HistogramDef & definition,
std::shared_ptr< IHistogramProvider > provider )
inline

Member Function Documentation

◆ fill()

template<typename BASE, Monitored::Axis AXIS>
virtual unsigned Monitored::HistogramFillerRebinableAxis< BASE, AXIS >::fill ( const HistogramFiller::VariablesPack & vars) const
inlineoverridevirtual

Reimplemented in Monitored::HistogramFillerRebinableAxis< HistogramFillerRebinable2DX, Axis::Y >.

Definition at line 36 of file HistogramFillerRebinable.h.

36 {
37 if (AXIS >= vars.size() ) { return 0; }
38 if (vars[AXIS]->size()==0) { return 0; }
39
40 // check if any of the cutmasks are non-zero before attempting any rebinning
41 if (vars.cut) {
42 bool anyTrue = false;
43 for(size_t i=0; i<vars.cut->size(); i++) {
44 anyTrue |= static_cast<bool>(vars.cut->get(i));
45 }
46 if(!anyTrue) { return 0; }
47 }
48
52 for (size_t i = 0; i < var.size(); i++) {
53 const double v = var.get(i);
54 if (v < min) min = v;
55 if (v > max) max = v;
56 }
57
58 TH1* hist = this->template histogram<TH1>();
63 }
64 } else {
65 hist->SetCanExtend(detail::axis_bit[AXIS]);
66 // ExtendAxis is an extremely expensive operation; only call if necessary
67 // Rebinning requires a lock on the global ROOT directory state
69 if (max >= axis->GetXmax()) hist->ExtendAxis(max, axis);
70 if (min < axis->GetXmin()) hist->ExtendAxis(min, axis);
71 }
72 return BASE::fill( vars );
73 }
std::string histogram
Definition chains.cxx:52
constexpr auto getAxis(H *hist)
Helper to get corresponding TAxis selected by Monitored::Axis.
void rebinHistogram(H *hist, const double value)
Method that rebins a histogram.

Member Data Documentation

◆ m_rebinMode

template<typename BASE, Monitored::Axis AXIS>
RebinMode Monitored::HistogramFillerRebinableAxis< BASE, AXIS >::m_rebinMode
private

Definition at line 77 of file HistogramFillerRebinable.h.


The documentation for this class was generated from the following file: