The Gaudi Framework
master (9f3f8895)
Toggle main menu visibility
Loading...
Searching...
No Matches
AxisAsProperty.h
Go to the documentation of this file.
1
/***********************************************************************************\
2
* (c) Copyright 1998-2025 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
// cppcheck-suppress-file useInitializationList; for consistency
13
14
#pragma once
15
16
#include <
Gaudi/Accumulators/StaticHistogram.h
>
17
18
#include <
Gaudi/Parsers/Factory.h
>
19
#include <
GaudiKernel/ToStream.h
>
20
21
#if ( BOOST_VERSION >= 187000 ) && ( BOOST_VERSION < 188000 )
22
# define BOOST_ALLOW_DEPRECATED_HEADERS
23
#endif
24
#include <boost/spirit/include/qi.hpp>
25
#undef BOOST_ALLOW_DEPRECATED_HEADERS
26
36
namespace
Gaudi
{
37
namespace
Parsers
{
38
39
namespace
qi = boost::spirit::qi;
40
41
template
<
typename
Iterator,
typename
Skipper,
typename
Arithmetic>
42
struct
AxisGrammar
: qi::grammar<Iterator, Gaudi::Accumulators::Axis<Arithmetic>(), qi::locals<char>, Skipper> {
43
using
Axis
=
Gaudi::Accumulators::Axis<Arithmetic>
;
44
struct
StoreNbinsOp
{
45
void
operator()
(
Axis
& res,
unsigned
int
const
& nBins )
const
{ res.
setNumBins
( nBins ); }
46
};
47
struct
StoreMinValueOp
{
48
void
operator()
(
Axis
& res, Arithmetic
const
& minValue )
const
{ res.
setMinValue
( minValue ); }
49
};
50
struct
StoreMaxValueOp
{
51
void
operator()
(
Axis
& res, Arithmetic
const
& maxValue )
const
{ res.
setMaxValue
( maxValue ); }
52
};
53
struct
StoreTitleOp
{
54
void
operator()
(
Axis
& res, std::string
const
&
title
)
const
{ res.
setTitle
(
title
); }
55
};
56
AxisGrammar
() :
AxisGrammar
::base_type(
axis
) {
57
begin
= enc::char_(
'['
)[qi::_val =
']'
] | enc::char_(
'('
)[qi::_val =
')'
];
58
end
= enc::char_( qi::_r1 );
59
core
= qi::int_[
storeNbins
( qi::_val, qi::_1 )] >>
","
>> qi::double_[
storeMinValue
( qi::_val, qi::_1 )] >>
60
","
>> qi::double_[
storeMaxValue
( qi::_val, qi::_1 )] >>
61
-(
","
>>
title
[
storeTitle
( qi::_val, qi::_1 )] );
62
axis
=
begin
[qi::_a = qi::_1] >>
core
[qi::_val = qi::_1] >>
end
( qi::_a );
63
}
64
qi::rule<
Iterator
,
Axis
(), qi::locals<char>,
Skipper
>
axis
;
65
qi::rule<
Iterator
,
Axis
(),
Skipper
>
core
;
66
qi::rule<
Iterator
, char()>
begin
;
67
qi::rule<
Iterator
, void(
char
)>
end
;
68
StringGrammar<Iterator, Skipper>
title
;
69
ph::function<StoreNbinsOp>
storeNbins
;
70
ph::function<StoreMinValueOp>
storeMinValue
;
71
ph::function<StoreMaxValueOp>
storeMaxValue
;
72
ph::function<StoreTitleOp>
storeTitle
;
73
};
74
75
template
<
typename
Iterator,
typename
Skipper,
typename
Arithmetic>
76
struct
Grammar_
<
Iterator
,
Gaudi
::
Accumulators::Axis
<Arithmetic>,
Skipper
> {
77
using
Grammar
=
AxisGrammar<Iterator, Skipper, Arithmetic>
;
78
};
79
80
// Parse function... nothing special, but it must be done explicitely.
81
template
<
typename
Arithmetic>
82
StatusCode
parse
(
Gaudi::Accumulators::Axis<Arithmetic>
& result,
const
std::string& input ) {
83
return
parse_
( result, input );
84
}
85
86
}
// namespace Parsers
87
88
}
// namespace Gaudi
Factory.h
Iterator
boost::spirit::classic::position_iterator2< ForwardIterator > Iterator
Definition
Iterator.h:18
StaticHistogram.h
ToStream.h
implementation of various functions for streaming.
Gaudi::Accumulators::Axis
Definition of a default type of Histogram Axis It contains number of bins, min and max value plus a t...
Definition
StaticHistogram.h:229
Gaudi::Accumulators::Axis::setMinValue
void setMinValue(Arithmetic v)
Definition
StaticHistogram.h:281
Gaudi::Accumulators::Axis::setMaxValue
void setMaxValue(Arithmetic v)
Definition
StaticHistogram.h:286
Gaudi::Accumulators::Axis::setNumBins
void setNumBins(unsigned int n)
Definition
StaticHistogram.h:276
Gaudi::Accumulators::Axis::setTitle
void setTitle(std::string const &t)
Definition
StaticHistogram.h:291
StatusCode
This class is used for returning status codes from appropriate routines.
Definition
StatusCode.h:64
Gaudi::Parsers
Definition
DODBasicMapper.cpp:17
Gaudi::Parsers::Skipper
SkipperGrammar< IteratorT > Skipper
Definition
Factory.h:20
Gaudi::Parsers::parse
StatusCode parse(GaudiUtils::HashMap< K, V > &result, std::string_view input)
Basic parser for the types of HashMap used in DODBasicMapper.
Definition
DODBasicMapper.cpp:21
Gaudi::Parsers::parse_
StatusCode parse_(ResultT &result, std::string_view input)
Definition
Factory.h:22
Gaudi
This file provides a Grammar for the type Gaudi::Accumulators::Axis It allows to use that type from p...
Definition
__init__.py:1
Gaudi::Parsers::AxisGrammar::StoreMaxValueOp
Definition
AxisAsProperty.h:50
Gaudi::Parsers::AxisGrammar::StoreMaxValueOp::operator()
void operator()(Axis &res, Arithmetic const &maxValue) const
Definition
AxisAsProperty.h:51
Gaudi::Parsers::AxisGrammar::StoreMinValueOp
Definition
AxisAsProperty.h:47
Gaudi::Parsers::AxisGrammar::StoreMinValueOp::operator()
void operator()(Axis &res, Arithmetic const &minValue) const
Definition
AxisAsProperty.h:48
Gaudi::Parsers::AxisGrammar::StoreNbinsOp
Definition
AxisAsProperty.h:44
Gaudi::Parsers::AxisGrammar::StoreNbinsOp::operator()
void operator()(Axis &res, unsigned int const &nBins) const
Definition
AxisAsProperty.h:45
Gaudi::Parsers::AxisGrammar::StoreTitleOp
Definition
AxisAsProperty.h:53
Gaudi::Parsers::AxisGrammar::StoreTitleOp::operator()
void operator()(Axis &res, std::string const &title) const
Definition
AxisAsProperty.h:54
Gaudi::Parsers::AxisGrammar
Definition
AxisAsProperty.h:42
Gaudi::Parsers::AxisGrammar::storeNbins
ph::function< StoreNbinsOp > storeNbins
Definition
AxisAsProperty.h:69
Gaudi::Parsers::AxisGrammar::title
StringGrammar< Iterator, Skipper > title
Definition
AxisAsProperty.h:68
Gaudi::Parsers::AxisGrammar::storeTitle
ph::function< StoreTitleOp > storeTitle
Definition
AxisAsProperty.h:72
Gaudi::Parsers::AxisGrammar::storeMaxValue
ph::function< StoreMaxValueOp > storeMaxValue
Definition
AxisAsProperty.h:71
Gaudi::Parsers::AxisGrammar::storeMinValue
ph::function< StoreMinValueOp > storeMinValue
Definition
AxisAsProperty.h:70
Gaudi::Parsers::AxisGrammar::AxisGrammar
AxisGrammar()
Definition
AxisAsProperty.h:56
Gaudi::Parsers::AxisGrammar::begin
qi::rule< Iterator, char()> begin
Definition
AxisAsProperty.h:66
Gaudi::Parsers::AxisGrammar::core
qi::rule< Iterator, Axis(), Skipper > core
Definition
AxisAsProperty.h:65
Gaudi::Parsers::AxisGrammar::Axis
Gaudi::Accumulators::Axis< Arithmetic > Axis
Definition
AxisAsProperty.h:43
Gaudi::Parsers::AxisGrammar::end
qi::rule< Iterator, void(char)> end
Definition
AxisAsProperty.h:67
Gaudi::Parsers::AxisGrammar::axis
qi::rule< Iterator, Axis(), qi::locals< char >, Skipper > axis
Definition
AxisAsProperty.h:64
Gaudi::Parsers::Grammar_< Iterator, Gaudi::Accumulators::Axis< Arithmetic >, Skipper >::Grammar
AxisGrammar< Iterator, Skipper, Arithmetic > Grammar
Definition
AxisAsProperty.h:77
Gaudi::Parsers::Grammar_
Definition
Grammars.h:55
Gaudi::Parsers::StringGrammar
Definition
Grammar.h:45
GaudiKernel
include
Gaudi
Accumulators
AxisAsProperty.h
Generated on
for The Gaudi Framework by
1.17.0