Base class for Trigger configuration data and wrapper around underlying representation.
More...
#include <DataStructure.h>
Inherited by TrigConf::Chain, TrigConf::HLTMenu, TrigConf::HLTMonitoring, TrigConf::HLTPrescalesSet, TrigConf::L1Board, TrigConf::L1BunchGroup, TrigConf::L1BunchGroupSet, TrigConf::L1Connector, TrigConf::L1CTP, TrigConf::L1Item, TrigConf::L1Menu, TrigConf::L1PrescalesSet, TrigConf::L1Threshold, TrigConf::L1ThrExtraInfoBase, TrigConf::L1TopoAlgorithm, and TrigConf::L1TopoOutput.
|
using | ptree = boost::property_tree::ptree |
|
|
| DataStructure () |
| Default constructor, leading to an uninitialized configuration object. More...
|
|
| DataStructure (const DataStructure &)=default |
|
| DataStructure (DataStructure &&)=default |
|
DataStructure & | operator= (const DataStructure &)=default |
|
DataStructure & | operator= (DataStructure &&)=default |
|
| DataStructure (const ptree &data) |
| Constructor initialized with configuration data. More...
|
|
| DataStructure (const std::string &name, const ptree &data) |
|
| DataStructure (ptree &&data) |
|
| DataStructure (const std::string &name, ptree &&data) |
|
virtual | ~DataStructure ()=default |
| Destructor. More...
|
|
void | setData (const ptree &data) |
| Setting the configuration data. More...
|
|
void | setData (ptree &&data) |
|
void | setName (const std::string &n) |
| Setting the configuration element name. More...
|
|
virtual std::string | className () const |
| A string that is the name of the class. More...
|
|
virtual const std::string & | name () const final |
|
virtual void | clear () |
| Clearing the configuration data. More...
|
|
const ptree & | data () const |
| Access to the underlying data, if needed. More...
|
|
bool | isValue () const |
| Check for attribute. More...
|
|
std::string | getValue () const |
| Access to simple content. More...
|
|
template<class T > |
T | getValue () const |
|
template<class T > |
std::optional< T > | getValue_optional () const |
| access to content of the note Will return false if the value could not be converted into T More...
|
|
bool | hasAttribute (const std::string &key) const |
| Check for attribute. More...
|
|
bool | isNull (const std::string &key) const |
| Check if an attribute is null. More...
|
|
bool | hasChild (const std::string &path) const |
| Check if child exists. More...
|
|
std::string | operator[] (const std::string &key) const |
| Access to simple attribute. More...
|
|
template<class T > |
T | getAttribute (const std::string &key, bool ignoreIfMissing=false, const T &def=T()) const |
| Access to simple attribute. More...
|
|
template<class T > |
std::optional< T > | getAttribute_optional (const std::string &key) const |
|
const std::string & | getAttribute (const std::string &key, bool ignoreIfMissing=false, const std::string &def="") const |
|
std::vector< DataStructure > | getList (const std::string &pathToChild, bool ignoreIfMissing=false) const |
| Access to array structure. More...
|
|
std::optional< std::vector< DataStructure > > | getList_optional (const std::string &pathToChild) const |
|
DataStructure | getObject (const std::string &pathToChild, bool ignoreIfMissing=false) const |
| Access to configuration object. More...
|
|
std::optional< TrigConf::DataStructure > | getObject_optional (const std::string &pathToChild) const |
|
std::vector< std::string > | getKeys () const |
| Access to the keys of an DataStructure which presents a dictionary. More...
|
|
| operator bool () const |
| Access to initialized state. More...
|
|
bool | isValid () const |
|
bool | isInitialized () const |
|
bool | empty () const |
| Check if children exist. More...
|
|
void | printRaw (std::ostream &os=std::cout) const |
|
virtual void | print (std::ostream &os=std::cout) const |
|
bool | ownsData () const |
|
|
virtual void | update () |
| Update the internal data after modification of the data object. More...
|
|
Base class for Trigger configuration data and wrapper around underlying representation.
Triggger configuration description data uses json format which can be represented as boost::ptree (or other formats if ATLAS decides to support those)
The class acts as layer to shield the clients of the trigger configuration from the concrete representation of the transient configuration data
Configuration data is typically recursive, meaning that sub-configurations can also be expressed as DataStructure objects. Therefore this class also is base class to all other classes describing parts of the trigger configuration in this package
Detailed information can be found under https://twiki.cern.ch/twiki/bin/view/Atlas/TriggerConfigurationAccess
Definition at line 37 of file DataStructure.h.
◆ ptree
◆ DataStructure() [1/7]
TrigConf::DataStructure::DataStructure |
( |
| ) |
|
◆ DataStructure() [2/7]
◆ DataStructure() [3/7]
◆ DataStructure() [4/7]
TrigConf::DataStructure::DataStructure |
( |
const ptree & |
data | ) |
|
Constructor initialized with configuration data.
- Parameters
-
data | Reference to the data container |
Definition at line 15 of file DataStructure.cxx.
◆ DataStructure() [5/7]
TrigConf::DataStructure::DataStructure |
( |
const std::string & |
name, |
|
|
const ptree & |
data |
|
) |
| |
◆ DataStructure() [6/7]
TrigConf::DataStructure::DataStructure |
( |
ptree && |
data | ) |
|
◆ DataStructure() [7/7]
TrigConf::DataStructure::DataStructure |
( |
const std::string & |
name, |
|
|
ptree && |
data |
|
) |
| |
◆ ~DataStructure()
virtual TrigConf::DataStructure::~DataStructure |
( |
| ) |
|
|
virtualdefault |
◆ className()
std::string TrigConf::DataStructure::className |
( |
| ) |
const |
|
virtual |
A string that is the name of the class.
Reimplemented in TrigConf::L1ThrExtraInfo_MU, TrigConf::L1ThrExtraInfo_gTE, TrigConf::L1ThrExtraInfo_gXE, TrigConf::L1ThrExtraInfo_jTE, TrigConf::L1ThrExtraInfo_jXE, TrigConf::L1ThrExtraInfo_gLJ, TrigConf::L1ThrExtraInfo_gJ, TrigConf::L1ThrExtraInfo_jLJ, TrigConf::L1Threshold_MU, TrigConf::L1ThrExtraInfo_jJ, TrigConf::L1Threshold_gTE, TrigConf::L1ThrExtraInfo_cTAU, TrigConf::L1Threshold_gXE, TrigConf::L1Threshold_jTE, TrigConf::L1Threshold_jXE, TrigConf::L1Threshold_gLJ, TrigConf::L1ThrExtraInfo_jTAU, TrigConf::L1Threshold_gJ, TrigConf::L1Threshold_jLJ, TrigConf::L1Threshold_jJ, TrigConf::L1ThrExtraInfo_eTAU, TrigConf::L1Threshold_cTAU, TrigConf::L1Threshold_jTAU, TrigConf::L1Threshold_eTAU, TrigConf::L1ThrExtraInfo_jEM, TrigConf::L1Threshold_jEM, TrigConf::L1Threshold_eEM, TrigConf::L1ThrExtraInfo_eEM, TrigConf::L1Threshold_internal, TrigConf::L1Threshold, TrigConf::L1Threshold_NIM, TrigConf::L1Threshold_ZBTopo, TrigConf::L1ThrExtraInfo_XSLegacy, TrigConf::L1Threshold_ZB, TrigConf::L1ThrExtraInfo_JETLegacy, TrigConf::L1Threshold_TE, TrigConf::L1BunchGroupSet, TrigConf::L1ThrExtraInfoBase, TrigConf::L1Threshold_XS, TrigConf::L1ThrExtraInfo_EMTAULegacy, TrigConf::L1Threshold_XE, TrigConf::L1Connector, TrigConf::L1Threshold_JET, TrigConf::L1TopoAlgorithm, TrigConf::HLTMonitoring, TrigConf::L1PrescalesSet, TrigConf::L1Board, TrigConf::L1Menu, TrigConf::L1Threshold_TAU, TrigConf::HLTPrescalesSet, TrigConf::HLTMenu, TrigConf::L1BunchGroup, TrigConf::Chain, TrigConf::L1Item, TrigConf::L1TopoOutput, and TrigConf::L1Threshold_EM.
Definition at line 104 of file DataStructure.cxx.
105 return "DataStructure";
◆ clear()
void TrigConf::DataStructure::clear |
( |
| ) |
|
|
virtual |
◆ data()
const ptree& TrigConf::DataStructure::data |
( |
| ) |
const |
|
inline |
Access to the underlying data, if needed.
Definition at line 83 of file DataStructure.h.
85 throw std::runtime_error(
"Trying to access data of uninitialized object of type " +
className());
◆ empty()
bool TrigConf::DataStructure::empty |
( |
| ) |
const |
|
inline |
◆ getAttribute() [1/2]
const std::string & TrigConf::DataStructure::getAttribute |
( |
const std::string & |
key, |
|
|
bool |
ignoreIfMissing = false , |
|
|
const std::string & |
def = "" |
|
) |
| const |
Definition at line 136 of file DataStructure.cxx.
138 const auto &
obj =
data().get_child_optional(
key);
140 if( ignoreIfMissing ) {
143 throw std::runtime_error(
className() +
"#" +
name() +
": structure '" +
key +
"' does not exist" );
147 if ( !
obj.get().empty() ) {
148 if (
obj.get().front().first.empty() ) {
149 throw std::runtime_error(
className() +
"#" +
name() +
": structure '" +
key +
"' is not a simple attribute but a list [], it needs to be accessed via getList(\"" +
key +
"\") -> vector<DataStructure>");
151 throw std::runtime_error(
className() +
"#" +
name() +
": structure '" +
key +
"' is not a simple attribute but an object {}, it needs to be accessed via getObject(\"" +
key +
"\") -> DataStructure");
154 return obj.get().data();
◆ getAttribute() [2/2]
template<class T >
T TrigConf::DataStructure::getAttribute |
( |
const std::string & |
key, |
|
|
bool |
ignoreIfMissing = false , |
|
|
const T & |
def = T() |
|
) |
| const |
|
inline |
Access to simple attribute.
- Parameters
-
key | The path to the attribute name, relative to the current one in form "path.to.child" |
ignoreIfMissing | Controls the behavior in case of missing configuration child |
Definition at line 152 of file DataStructure.h.
153 const auto &
obj =
data().get_child_optional(
key);
155 if( ignoreIfMissing ) {
158 throw std::runtime_error(
className() +
"#" +
name() +
": structure '" +
key +
"' does not exist" );
161 return obj.get().get_value<
T>();
◆ getAttribute_optional()
template<class T >
std::optional<T> TrigConf::DataStructure::getAttribute_optional |
( |
const std::string & |
key | ) |
const |
|
inline |
Definition at line 165 of file DataStructure.h.
166 const auto &
obj =
data().get_child_optional(
key);
170 auto v =
obj.get().get_value_optional<
T>();
171 return v ? std::optional(std::move(*
v)) : std::nullopt;
◆ getKeys()
std::vector< std::string > TrigConf::DataStructure::getKeys |
( |
| ) |
const |
◆ getList()
std::vector< TrigConf::DataStructure > TrigConf::DataStructure::getList |
( |
const std::string & |
pathToChild, |
|
|
bool |
ignoreIfMissing = false |
|
) |
| const |
Access to array structure.
- Parameters
-
pathToChild | The path to the configuration child, relative to the current one in form "path.to.child" |
ignoreIfMissing | Controls the behavior in case of missing configuration child |
In case the child is missing and ignoreIfMissing
is set to true
, and empty vector will be returned. Otherwise a runtime exception will be thrown.
Definition at line 158 of file DataStructure.cxx.
160 std::vector<TrigConf::DataStructure> childList;
161 const auto &
list =
data().get_child_optional(pathToChild);
163 if ( ignoreIfMissing ) {
166 throw std::runtime_error(
className() +
"#" +
name() +
": structure '" + pathToChild +
"' does not exist.");
176 if (
list.get().empty() ) {
177 if (
list.get().get_value<std::string>() !=
"" ) {
179 throw std::runtime_error(
className() +
"#" +
name() +
": structure '" + pathToChild +
"' is not a list [] but a simple attribute, it needs to be accessed via [\"" + pathToChild +
"\"] -> string");
183 }
else if ( !
list.get().front().first.empty() ) {
184 throw std::runtime_error(
className() +
"#" +
name() +
": structure '" + pathToChild +
"' is not a list [] but an object {}, it needs to be accessed via getObject(\"" + pathToChild +
"\") -> DataStructure");
187 childList.reserve(
list.get().size());
189 for(
auto & childData :
list.get() )
190 childList.emplace_back( childData.second );
◆ getList_optional()
Definition at line 197 of file DataStructure.cxx.
202 return std::optional<std::vector<TrigConf::DataStructure> >(
getList(pathToChild));
◆ getObject()
Access to configuration object.
- Parameters
-
pathToChild | The path to the configuration child, relative to the current one |
ignoreIfMissing | Controls the behavior in case of missing configuration child |
In case the child is missing and ignoreIfMissing
is set to true
, an uninitialized DataStructure
will be returned. Otherwise a runtime exception will be thrown.
*bool ignoreIfMissing = true;
*
if(
const DataStructure & child =
ds.getObject(
"path.to.child", ignoreIfMissing) ) {
cout << child["key"] << endl;
}
Definition at line 207 of file DataStructure.cxx.
209 const auto &
obj =
data().get_child_optional(pathToChild);
211 if ( ignoreIfMissing ) {
214 throw std::runtime_error(
className() +
"#" +
name() +
": structure '" + pathToChild +
"' does not exist.");
218 if(
obj.get().get_value<std::string>() !=
"" ) {
219 throw std::runtime_error(
className() +
"#" +
name() +
": structure '" + pathToChild +
"' is not an object {} but a simple attribute, it needs to be accessed via [\"" + pathToChild +
"\"] -> string");
222 if (
obj.get().front().first.empty() ) {
223 throw std::runtime_error(
className() +
"#" +
name() +
": structure '" + pathToChild +
"' is not an object {} but a list [], it needs to be accessed via getList(\"" + pathToChild +
"\") -> vector<DataStructure>");
225 return {
obj.get() };
◆ getObject_optional()
Definition at line 230 of file DataStructure.cxx.
233 if(
const auto &
obj =
data().get_child_optional(pathToChild)) {
235 if(
obj.get().get_value<std::string>() !=
"" ) {
236 throw std::runtime_error(
className() +
"#" +
name() +
": structure '" + pathToChild +
"' is not an object {} but a simple attribute, it needs to be accessed via [\"" + pathToChild +
"\"] -> string");
239 if (
obj.get().front().first.empty() ) {
240 throw std::runtime_error(
className() +
"#" +
name() +
": structure '" + pathToChild +
"' is not an object {} but a list [], it needs to be accessed via getList(\"" + pathToChild +
"\") -> vector<DataStructure>");
242 return std::optional<TrigConf::DataStructure>(
obj.get());
◆ getValue() [1/2]
std::string TrigConf::DataStructure::getValue |
( |
| ) |
const |
Access to simple content.
- Returns
- string that is the content of the structure
For instance when the json structure contains an array of values (ptree only works with strings) which one retrieved via getList
, then the values in the vector<DataStructure>
can be accessed using getValue
Definition at line 80 of file DataStructure.cxx.
81 const std::string
value =
data().get_value<std::string>();
◆ getValue() [2/2]
template<class T >
T TrigConf::DataStructure::getValue |
( |
| ) |
const |
|
inline |
◆ getValue_optional()
template<class T >
std::optional<T> TrigConf::DataStructure::getValue_optional |
( |
| ) |
const |
|
inline |
access to content of the note Will return false if the value could not be converted into T
Definition at line 116 of file DataStructure.h.
117 auto v =
data().get_value_optional<
T>();
118 return v ? std::optional<T>(std::move(*
v)) : std::nullopt;
◆ hasAttribute()
bool TrigConf::DataStructure::hasAttribute |
( |
const std::string & |
key | ) |
const |
Check for attribute.
- Parameters
-
key | The path to the attribute name, relative to the current one in form "path.to.child" |
- Returns
- true if path
key
exists and is an attribute
Definition at line 86 of file DataStructure.cxx.
87 const auto & child =
data().get_child_optional(
key );
90 return child.get().empty();
◆ hasChild()
bool TrigConf::DataStructure::hasChild |
( |
const std::string & |
path | ) |
const |
Check if child exists.
- Parameters
-
path | The path to the child, relative to the current one in form "path.to.child" |
- Returns
- true if path exists
Definition at line 114 of file DataStructure.cxx.
115 const auto & child =
data().get_child_optional(
path );
◆ isInitialized()
bool TrigConf::DataStructure::isInitialized |
( |
| ) |
const |
|
inline |
◆ isNull()
bool TrigConf::DataStructure::isNull |
( |
const std::string & |
key | ) |
const |
Check if an attribute is null.
- Parameters
-
key | The path to the attribute name, relative to the current one in form "path.to.child" |
- Returns
- true if path
key
exists and is null
If the attribute doesn't exist, the function returns false. To check if an attribute exists and is null, use it together with hasAttribute
.
Definition at line 94 of file DataStructure.cxx.
95 auto child =
data().get_child_optional(
key );
99 return child->get_value<std::string>() ==
"null";
◆ isValid()
bool TrigConf::DataStructure::isValid |
( |
| ) |
const |
|
inline |
◆ isValue()
bool TrigConf::DataStructure::isValue |
( |
| ) |
const |
Check for attribute.
- Returns
- true if the structure is just a value
Definition at line 74 of file DataStructure.cxx.
75 return data().empty();
◆ name()
const std::string & TrigConf::DataStructure::name |
( |
| ) |
const |
|
finalvirtual |
◆ operator bool()
TrigConf::DataStructure::operator bool |
( |
| ) |
const |
|
inlineexplicit |
◆ operator=() [1/2]
◆ operator=() [2/2]
◆ operator[]()
std::string TrigConf::DataStructure::operator[] |
( |
const std::string & |
key | ) |
const |
Access to simple attribute.
- Parameters
-
key | The path to the attribute name, relative to the current one in form "path.to.child" |
Definition at line 121 of file DataStructure.cxx.
125 if ( !
obj.empty() ) {
126 if (
obj.front().first.empty() ) {
127 throw std::runtime_error(
className() +
"#" +
name() +
": structure '" +
key +
"' is not a simple attribute but a list [], it needs to be accessed via getList(\"" +
key +
"\") -> vector<DataStructure>");
129 throw std::runtime_error(
className() +
"#" +
name() +
": structure '" +
key +
"' is not a simple attribute but an object {}, it needs to be accessed via getObject(\"" +
key +
"\") -> DataStructure");
◆ ownsData()
bool TrigConf::DataStructure::ownsData |
( |
| ) |
const |
|
inline |
◆ print()
void TrigConf::DataStructure::print |
( |
std::ostream & |
os = std::cout | ) |
const |
|
virtual |
◆ printElement()
void TrigConf::DataStructure::printElement |
( |
const std::string & |
key, |
|
|
const ptree & |
data, |
|
|
uint |
level = 0 , |
|
|
std::ostream & |
os = std::cout |
|
) |
| |
|
static |
Static function to print a ptree
object.
- Parameters
-
key | The key of this data as found in the parent structure |
data | The ptree to print |
level | The substruture level used to indent the output |
os | The output stream |
Definition at line 279 of file DataStructure.cxx.
281 constexpr
char del =
'"';
283 const std::string
value =
data.get_value<std::string>();
287 os << del <<
key << del <<
": " << del <<
value << del;
292 bool isArray (
data.begin()->first.empty() );
295 os << del <<
key << del <<
": ";
296 os << (isArray ?
"[" :
"{") << std::endl;
298 size_t childCounter =
data.size();
299 for(
const boost::property_tree::ptree::value_type &
x :
data ) {
301 if( --childCounter )
os <<
",";
305 os << (isArray ?
"]" :
"}");
◆ printRaw()
void TrigConf::DataStructure::printRaw |
( |
std::ostream & |
os = std::cout | ) |
const |
◆ setData() [1/2]
void TrigConf::DataStructure::setData |
( |
const ptree & |
data | ) |
|
◆ setData() [2/2]
void TrigConf::DataStructure::setData |
( |
ptree && |
data | ) |
|
◆ setName()
void TrigConf::DataStructure::setName |
( |
const std::string & |
n | ) |
|
◆ update()
virtual void TrigConf::DataStructure::update |
( |
| ) |
|
|
inlineprotectedvirtual |
Update the internal data after modification of the data object.
to be implemented by the derived class
Reimplemented in TrigConf::L1Threshold_MU, TrigConf::L1Threshold_gTE, TrigConf::L1Threshold_gXE, TrigConf::L1Threshold_jTE, TrigConf::L1Threshold_jXE, TrigConf::L1Threshold_gLJ, TrigConf::L1Threshold_gJ, TrigConf::L1Threshold_jLJ, TrigConf::L1Threshold_jJ, TrigConf::L1Threshold_cTAU, TrigConf::L1Threshold_jTAU, TrigConf::L1Threshold_Calo, TrigConf::L1Threshold_eTAU, TrigConf::L1Threshold_jEM, TrigConf::L1Threshold_eEM, TrigConf::L1Threshold, TrigConf::L1Menu, TrigConf::L1Threshold_ZBTopo, TrigConf::L1BunchGroupSet, TrigConf::L1Threshold_ZB, TrigConf::L1ThrExtraInfoBase, TrigConf::L1Connector, TrigConf::L1TopoAlgorithm, TrigConf::HLTMenu, TrigConf::L1Item, TrigConf::HLTMonitoring, TrigConf::HLTPrescalesSet, TrigConf::Chain, TrigConf::L1CTP, TrigConf::L1PrescalesSet, TrigConf::L1Threshold_JET, TrigConf::L1Board, TrigConf::L1BunchGroup, TrigConf::L1Threshold_TAU, and TrigConf::L1Threshold_EM.
Definition at line 252 of file DataStructure.h.
◆ m_dataPtr
const ptree* TrigConf::DataStructure::m_dataPtr { nullptr } |
|
protected |
◆ m_dataSPtr
std::shared_ptr<ptree> TrigConf::DataStructure::m_dataSPtr { nullptr } |
|
protected |
◆ m_initialized
bool TrigConf::DataStructure::m_initialized { false } |
|
protected |
if initialized, the underlying ptree is has been assigned to (can be empty)
Definition at line 254 of file DataStructure.h.
◆ m_name
std::string TrigConf::DataStructure::m_name {""} |
|
protected |
The documentation for this class was generated from the following files: