The Gaudi Framework
master (9f3f8895)
Toggle main menu visibility
Loading...
Searching...
No Matches
RootHistogramSink.cpp
Go to the documentation of this file.
1
/***********************************************************************************\
2
* (c) Copyright 1998-2024 CERN for the benefit of the LHCb and ATLAS collaborations *
3
* *
4
* This software is distributed under the terms of the Apache version 2 licence, *
5
* copied verbatim in the file "LICENSE". *
6
* *
7
* In applying this licence, CERN does not waive the privileges and immunities *
8
* granted to it by virtue of its status as an Intergovernmental Organization *
9
* or submit itself to any jurisdiction. *
10
\***********************************************************************************/
11
12
#include <
Gaudi/Accumulators/StaticHistogram.h
>
13
#include <
Gaudi/Histograming/Sink/Base.h
>
14
#include <
Gaudi/Histograming/Sink/Utils.h
>
15
#include <
GaudiKernel/Service.h
>
16
#include <TH1D.h>
17
#include <TH2D.h>
18
#include <TH3D.h>
19
#include <TProfile.h>
20
#include <TProfile2D.h>
21
#include <TProfile3D.h>
22
23
namespace
Gaudi::Histograming::Sink
{
24
25
namespace
{
26
using namespace
std::string_literals;
27
Base::HistoBinRegistry
const
binRegistry = {
28
{ std::type_index(
typeid
(
Accumulators::StaticProfileHistogram<1u, Accumulators::atomicity::full, double>
) ),
29
&
saveProfileHisto<1, Accumulators::atomicity::full, double>
},
30
{ std::type_index(
typeid
(
Accumulators::StaticProfileHistogram<1u, Accumulators::atomicity::none, double>
) ),
31
&
saveProfileHisto<1, Accumulators::atomicity::none, double>
},
32
{ std::type_index(
typeid
(
Accumulators::StaticProfileHistogram<1u, Accumulators::atomicity::full, float>
) ),
33
&
saveProfileHisto<1, Accumulators::atomicity::full, float>
},
34
{ std::type_index(
typeid
(
Accumulators::StaticProfileHistogram<1u, Accumulators::atomicity::none, float>
) ),
35
&
saveProfileHisto<1, Accumulators::atomicity::none, float>
},
36
{ std::type_index(
typeid
(
Accumulators::StaticProfileHistogram<2u, Accumulators::atomicity::full, double>
) ),
37
&
saveProfileHisto<2, Accumulators::atomicity::full, double>
},
38
{ std::type_index(
typeid
(
Accumulators::StaticProfileHistogram<2u, Accumulators::atomicity::none, double>
) ),
39
&
saveProfileHisto<2, Accumulators::atomicity::none, double>
},
40
{ std::type_index(
typeid
(
Accumulators::StaticProfileHistogram<2u, Accumulators::atomicity::full, float>
) ),
41
&
saveProfileHisto<2, Accumulators::atomicity::full, float>
},
42
{ std::type_index(
typeid
(
Accumulators::StaticProfileHistogram<2u, Accumulators::atomicity::none, float>
) ),
43
&
saveProfileHisto<2, Accumulators::atomicity::none, float>
},
44
{ std::type_index(
typeid
(
Accumulators::StaticProfileHistogram<3u, Accumulators::atomicity::full, double>
) ),
45
&
saveProfileHisto<3, Accumulators::atomicity::full, double>
},
46
{ std::type_index(
typeid
(
Accumulators::StaticProfileHistogram<3u, Accumulators::atomicity::none, double>
) ),
47
&
saveProfileHisto<3, Accumulators::atomicity::none, double>
},
48
{ std::type_index(
typeid
(
Accumulators::StaticProfileHistogram<3u, Accumulators::atomicity::full, float>
) ),
49
&
saveProfileHisto<3, Accumulators::atomicity::full, float>
},
50
{ std::type_index(
typeid
(
Accumulators::StaticProfileHistogram<3u, Accumulators::atomicity::none, float>
) ),
51
&
saveProfileHisto<3, Accumulators::atomicity::none, float>
},
52
};
53
Base::HistoRegistry
const
registry = {
54
{ {
"histogram:Histogram"
s, 1 }, &
saveRootHisto<1, false, TH1D>
},
55
{ {
"histogram:WeightedHistogram"
s, 1 }, &
saveRootHisto<1, false, TH1D>
},
56
{ {
"histogram:Histogram"
s, 2 }, &
saveRootHisto<2, false, TH2D>
},
57
{ {
"histogram:WeightedHistogram"
s, 2 }, &
saveRootHisto<2, false, TH2D>
},
58
{ {
"histogram:Histogram"
s, 3 }, &
saveRootHisto<3, false, TH3D>
},
59
{ {
"histogram:WeightedHistogram"
s, 3 }, &
saveRootHisto<3, false, TH3D>
},
60
{ {
"histogram:ProfileHistogram"
s, 1 }, &
saveRootHisto<1, true, TProfile>
},
61
{ {
"histogram:WeightedProfileHistogram"
s, 1 }, &
saveRootHisto<1, true, TProfile>
},
62
{ {
"histogram:ProfileHistogram"
s, 2 }, &
saveRootHisto<2, true, TProfile2D>
},
63
{ {
"histogram:WeightedProfileHistogram"
s, 2 }, &
saveRootHisto<2, true, TProfile2D>
},
64
{ {
"histogram:ProfileHistogram"
s, 3 }, &
saveRootHisto<3, true, TProfile3D>
},
65
{ {
"histogram:WeightedProfileHistogram"
s, 3 }, &
saveRootHisto<3, true, TProfile3D>
} };
66
}
// namespace
67
68
struct
Root
:
Base
{
69
using
Base::Base
;
70
71
StatusCode
initialize
()
override
{
72
return
Base::initialize
().
andThen
( [&] {
73
for
(
auto
& [
id
, func] : binRegistry ) {
registerHandler
(
id
, func ); }
74
for
(
auto
& [
id
, func] : registry ) {
registerHandler
(
id
, func ); }
75
} );
76
}
77
};
78
79
DECLARE_COMPONENT
( Root )
80
81
}
// namespace Gaudi::Histograming::Sink
Base.h
Utils.h
DECLARE_COMPONENT
#define DECLARE_COMPONENT(type)
Definition
PluginServiceV1.h:45
Service.h
StaticHistogram.h
Gaudi::Histograming::Sink::Base::Base
Base(const std::string &name, ISvcLocator *svcloc)
Definition
Base.h:43
Gaudi::Histograming::Sink::Base::HistoBinRegistry
std::map< HistoBinIdentification, HistoBinHandler > HistoBinRegistry
Definition
Base.h:41
Gaudi::Histograming::Sink::Base::initialize
StatusCode initialize() override
Definition
Base.h:49
Gaudi::Histograming::Sink::Base::registerHandler
void registerHandler(HistoBinIdentification const &id, HistoBinHandler const &func)
Definition
Base.h:99
Gaudi::Histograming::Sink::Base::HistoRegistry
std::map< HistoIdentification, HistoHandler > HistoRegistry
Definition
Base.h:36
StatusCode
This class is used for returning status codes from appropriate routines.
Definition
StatusCode.h:64
StatusCode::andThen
StatusCode andThen(F &&f, ARGS &&... args) const
Chain code blocks making the execution conditional a success result.
Definition
StatusCode.h:151
Gaudi::Accumulators::StaticProfileHistogram
HistogramingCounterBase< ND, Atomicity, Arithmetic, naming::profilehistogramString, ProfileHistogramingAccumulator, AxisTupleType > StaticProfileHistogram
profile static histograming counter. See HistogramingCounterBase for details
Definition
StaticHistogram.h:756
Gaudi::Histograming::Sink
Definition
RootHistogramSink.cpp:23
Gaudi::Histograming::Sink::saveProfileHisto
void saveProfileHisto(TFile &file, std::string dir, std::string name, Monitoring::Hub::Entity const &ent)
Definition
Utils.h:657
Gaudi::Histograming::Sink::saveRootHisto
void saveRootHisto(TFile &file, std::string dir, std::string name, nlohmann::json const &j)
generic method to save histograms to files, based on Traits
Definition
Utils.h:528
Gaudi::Histograming::Sink::Root
Definition
RootHistogramSink.cpp:68
Gaudi::Histograming::Sink::Root::Base
Base(const std::string &name, ISvcLocator *svcloc)
Definition
Base.h:43
Gaudi::Histograming::Sink::Root::initialize
StatusCode initialize() override
Definition
RootHistogramSink.cpp:71
GaudiCommonSvc
src
HistogramPersistencySvc
RootHistogramSink.cpp
Generated on
for The Gaudi Framework by
1.17.0