ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Control
AthenaMonitoringKernel
src
HistogramFiller
HistogramFillerEfficiency.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef AthenaMonitoringKernel_HistogramFiller_HistogramFillerEfficiency_h
6
#define AthenaMonitoringKernel_HistogramFiller_HistogramFillerEfficiency_h
7
8
#include "TEfficiency.h"
9
10
#include "
HistogramFiller.h
"
11
#include "
HistogramFillerUtils.h
"
12
13
namespace
Monitored
{
17
class
HistogramFillerEfficiency
:
public
HistogramFiller
{
18
public
:
19
HistogramFillerEfficiency
(
const
HistogramDef
& definition, std::shared_ptr<IHistogramProvider> provider)
20
:
HistogramFiller
(definition,
std
::move(provider)) {}
21
22
virtual
unsigned
fill
(
const
HistogramFiller::VariablesPack
& vars )
const override
{
23
24
if
(
ATH_UNLIKELY
( vars[0] ==
nullptr
or vars[1] ==
nullptr
) )
return
0;
25
26
if
(vars.
cut
) {
27
const
size_t
maskSize = vars.
cut
->
size
();
28
// Abort if no cut entries or first (and only) entry is false
29
if
(maskSize == 0 || (maskSize == 1 && !vars.
cut
->
get
(0))) {
return
0; }
30
if
(
ATH_UNLIKELY
(maskSize > 1 && maskSize != vars[0]->
size
())) {
31
MsgStream log(
Athena::getMessageSvc
(),
"HistogramFillerEfficiency"
);
32
log << MSG::ERROR <<
"CutMask does not match the size of plotted variable: "
33
<< maskSize <<
" "
<< vars[0]->
size
() <<
endmsg
;
34
}
35
}
36
37
TEfficiency*
efficiency
= this->
histogram<TEfficiency>
();
38
const
TH1* efftot =
efficiency
->GetTotalHistogram();
39
40
const
unsigned
nMonVar = vars.
size
();
41
const
size_t
var0Size = vars[0]->
size
();
42
if
( nMonVar==2 ) {
// Single observable (1D TEfficiency)
43
for
(
unsigned
i = 0; i < var0Size; ++i) {
44
if
(vars.
cut
==
nullptr
|| vars.
cut
->
get
(i)) {
45
efficiency
->Fill(vars[0]->
get
(i),
46
detail::getFillValue<Axis::X>
(efftot, vars[1], i));
47
}
48
}
49
return
var0Size;
50
}
else
if
( nMonVar==3 ) {
// Two observables (2D TEfficiency)
51
for
(
unsigned
i = 0; i < var0Size; ++i) {
52
if
(vars.
cut
==
nullptr
|| vars.
cut
->
get
(i)) {
53
efficiency
->Fill(vars[0]->
get
(i),
54
detail::getFillValue<Axis::X>
(efftot, vars[1], i),
55
detail::getFillValue<Axis::Y>
(efftot, vars[2], i));
56
}
57
}
58
return
var0Size;
59
}
else
if
( nMonVar==4 ) {
// Three observables (3D Efficiency)
60
for
(
unsigned
i = 0; i < var0Size; ++i) {
61
if
(vars.
cut
==
nullptr
|| vars.
cut
->
get
(i)) {
62
efficiency
->Fill(vars[0]->
get
(i),
63
detail::getFillValue<Axis::X>
(efftot, vars[1], i),
64
detail::getFillValue<Axis::Y>
(efftot, vars[2], i),
65
detail::getFillValue<Axis::Z>
(efftot, vars[3], i));
66
}
67
}
68
return
var0Size;
69
}
else
{
70
return
0;
71
}
72
return
var0Size;
73
}
74
};
75
}
76
77
#endif
/* AthenaMonitoringKernel_HistogramFiller_HistogramFillerEfficiency_h */
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:61
ATH_UNLIKELY
#define ATH_UNLIKELY(x)
Definition
AthUnlikelyMacros.h:17
HistogramFillerUtils.h
HistogramFiller.h
size
size_t size() const
Number of registered mappings.
Monitored::HistogramFillerEfficiency::HistogramFillerEfficiency
HistogramFillerEfficiency(const HistogramDef &definition, std::shared_ptr< IHistogramProvider > provider)
Definition
HistogramFillerEfficiency.h:19
Monitored::HistogramFillerEfficiency::fill
virtual unsigned fill(const HistogramFiller::VariablesPack &vars) const override
Method that actually fills the ROOT object.
Definition
HistogramFillerEfficiency.h:22
Monitored::HistogramFiller::HistogramFiller
HistogramFiller(const HistogramDef &histDef, std::shared_ptr< IHistogramProvider > histogramProvider)
Default constructor.
Definition
HistogramFiller.h:51
Monitored::HistogramFiller::histogram
H * histogram() const
Definition
HistogramFiller.h:153
Monitored::IMonitoredVariable::get
virtual double get(size_t) const =0
Monitored::IMonitoredVariable::size
virtual size_t size() const =0
gives size of vector representation
efficiency
void efficiency(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
Definition
dependence.cxx:128
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition
hcg.cxx:132
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition
getMessageSvc.cxx:20
Monitored::detail::getFillValue
double getFillValue(const H *hist, const IMonitoredVariable *var, size_t i)
Return value for filling i'th entry of var into AXIS for hist.
Definition
HistogramFillerUtils.h:56
Monitored
Generic monitoring tool for athena components.
Definition
GenericMonitoringTool.h:28
std
STL namespace.
Monitored::HistogramDef
the internal class used to keep parsed Filler properties
Definition
HistogramDef.h:15
Monitored::HistogramFiller::VariablesPack
helper class to pass variables to fillers
Definition
HistogramFiller.h:72
Monitored::HistogramFiller::VariablesPack::cut
const Monitored::IMonitoredVariable * cut
pointer to cut mask variable, typically absent
Definition
HistogramFiller.h:113
Monitored::HistogramFiller::VariablesPack::size
size_t size() const
number of variables in the pack ( not counting the weight and mask )
Definition
HistogramFiller.h:87
Generated on
for ATLAS Offline Software by
1.17.0