ATLAS Offline Software
Loading...
Searching...
No Matches
SubgroupSvc Class Reference

#include <SubgroupSvc.h>

Inheritance diagram for SubgroupSvc:
Collaboration diagram for SubgroupSvc:

Public Member Functions

 SubgroupSvc (const std::string &name, ISvcLocator *pSvcLocator)
 ~SubgroupSvc ()
virtual StatusCode initialize () override
virtual H5::Group * group () override

Private Attributes

ServiceHandle< IH5GroupSvcm_parent
Gaudi::Property< std::string > m_subgroup
Gaudi::Property< bool > m_mustBeNew
std::unique_ptr< H5::Group > m_group {nullptr}

Detailed Description

Definition at line 19 of file SubgroupSvc.h.

Constructor & Destructor Documentation

◆ SubgroupSvc()

SubgroupSvc::SubgroupSvc ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 7 of file SubgroupSvc.cxx.

8 :
9 base_class(name, pSvcLocator)
10{
11}

◆ ~SubgroupSvc()

SubgroupSvc::~SubgroupSvc ( )
default

Member Function Documentation

◆ group()

H5::Group * SubgroupSvc::group ( )
overridevirtual

Definition at line 37 of file SubgroupSvc.cxx.

37 {
38 return m_group.get();
39}
std::unique_ptr< H5::Group > m_group
Definition SubgroupSvc.h:33

◆ initialize()

StatusCode SubgroupSvc::initialize ( )
overridevirtual

Definition at line 15 of file SubgroupSvc.cxx.

15 {
16 if (m_subgroup.value().empty()) {
17 ATH_MSG_ERROR("subgroup name is empty");
18 return StatusCode::FAILURE;
19 }
20 ATH_CHECK(m_parent.retrieve());
21 H5::Group* parent = m_parent->group();
22 if (parent->nameExists(m_subgroup)) {
23 if (m_mustBeNew) {
24 ATH_MSG_ERROR("subgroup '" << m_subgroup.value()
25 << "' already exists");
26 return StatusCode::FAILURE;
27 }
28 m_group = std::make_unique<H5::Group>(
29 parent->openGroup(m_subgroup));
30 } else {
31 m_group = std::make_unique<H5::Group>(
32 parent->createGroup(m_subgroup));
33 }
34 return StatusCode::SUCCESS;
35}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
Gaudi::Property< bool > m_mustBeNew
Definition SubgroupSvc.h:31
Gaudi::Property< std::string > m_subgroup
Definition SubgroupSvc.h:29
ServiceHandle< IH5GroupSvc > m_parent
Definition SubgroupSvc.h:27

Member Data Documentation

◆ m_group

std::unique_ptr<H5::Group> SubgroupSvc::m_group {nullptr}
private

Definition at line 33 of file SubgroupSvc.h.

33{nullptr};

◆ m_mustBeNew

Gaudi::Property<bool> SubgroupSvc::m_mustBeNew
private
Initial value:
{this, "mustBeNew", false,
"fail if subgroup already exists"}

Definition at line 31 of file SubgroupSvc.h.

31 {this, "mustBeNew", false,
32 "fail if subgroup already exists"};

◆ m_parent

ServiceHandle<IH5GroupSvc> SubgroupSvc::m_parent
private
Initial value:
{this, "parent", "",
"parent group service"}

Definition at line 27 of file SubgroupSvc.h.

27 {this, "parent", "",
28 "parent group service"};

◆ m_subgroup

Gaudi::Property<std::string> SubgroupSvc::m_subgroup
private
Initial value:
{this, "subgroup", "",
"subgroup name"}

Definition at line 29 of file SubgroupSvc.h.

29 {this, "subgroup", "",
30 "subgroup name"};

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