ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
AthPoolEx::ReadMeta Class Reference

This class provides an example for reading in file meta data objects from Pool. More...

#include <ReadMeta.h>

Inheritance diagram for AthPoolEx::ReadMeta:
Collaboration diagram for AthPoolEx::ReadMeta:

Public Member Functions

 ReadMeta (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual ~ReadMeta ()=default
 
virtual StatusCode initialize () override final
 Gaudi AlgTool Interface method implementations: More...
 
virtual StatusCode beginInputFile (const SG::SourceID &) override final
 Function called when a new input file is opened. More...
 
virtual StatusCode endInputFile (const SG::SourceID &) override final
 Function called when the currently open input file got completely processed. More...
 
virtual StatusCode metaDataStop () override final
 Function writing the collected metadata to the output. More...
 
virtual void handle (const Incident &incident) override final
 Incident service handle listening for BeginInputFile and EndInputFile. More...
 

Private Attributes

ServiceHandle< StoreGateSvcm_pMetaDataStore
 
ServiceHandle< StoreGateSvcm_pInputStore
 

Detailed Description

This class provides an example for reading in file meta data objects from Pool.

Definition at line 25 of file ReadMeta.h.

Constructor & Destructor Documentation

◆ ReadMeta()

ReadMeta::ReadMeta ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 23 of file ReadMeta.cxx.

23  :
24  base_class(type, name, parent),
25  m_pMetaDataStore ("StoreGateSvc/MetaDataStore", name),
26  m_pInputStore ("StoreGateSvc/InputMetaDataStore", name) {
27 }

◆ ~ReadMeta()

virtual AthPoolEx::ReadMeta::~ReadMeta ( )
virtualdefault

Member Function Documentation

◆ beginInputFile()

StatusCode ReadMeta::beginInputFile ( const SG::SourceID )
finaloverridevirtual

Function called when a new input file is opened.

Definition at line 54 of file ReadMeta.cxx.

55 {
56  ATH_MSG_DEBUG("saw BeginInputFile incident.");
57  if (m_pInputStore->contains<ExampleHitContainer>("PedestalWriteData")) {
58  std::list<SG::ObjectWithVersion<ExampleHitContainer> > allVersions;
59  ATH_CHECK( m_pInputStore->retrieveAllVersions(allVersions, "PedestalWriteData") );
60  //const ExampleHitContainer* ep;
61  ExampleHitContainer* ep_out = nullptr;
62  for (SG::ObjectWithVersion<ExampleHitContainer>& obj : allVersions) {
63  const ExampleHitContainer* ep = obj.dataObject.cptr();
64  if (!m_pMetaDataStore->contains<ExampleHitContainer>("PedestalWriteData")) {
65  auto ep_out_unique = std::make_unique<ExampleHitContainer>();
66  const ExampleHit* entry = *ep->begin();
67  auto entry_out = std::make_unique<ExampleHit>();
68  entry_out->setX(entry->getX());
69  entry_out->setY(entry->getY());
70  entry_out->setZ(entry->getZ());
71  entry_out->setDetector(entry->getDetector());
72  ep_out_unique->push_back(std::move(entry_out));
73  ep_out = ep_out_unique.get();
74  ATH_CHECK( m_pMetaDataStore->record(std::move(ep_out_unique), "PedestalWriteData") );
75  } else {
76  ATH_CHECK( m_pMetaDataStore->retrieve(ep_out, "PedestalWriteData") );
77  const ExampleHit* entry = *ep->begin();
78  ExampleHit* entry_out = *ep_out->begin();
79  int weight = entry->getDetector().size() - 2;
80  int weight_out = entry_out->getDetector().size() - 2;
81  entry_out->setX((entry->getX() * weight + entry_out->getX() * weight_out) / (weight + weight_out));
82  entry_out->setY((entry->getY() * weight + entry_out->getY() * weight_out) / (weight + weight_out));
83  entry_out->setZ((entry->getZ() * weight + entry_out->getZ() * weight_out) / (weight + weight_out));
84  entry_out->setDetector(entry->getDetector().substr(0, entry->getDetector().size() - 1) + entry_out->getDetector().substr(1));
85  }
86  }
87  if (ep_out != nullptr) {
88  for (const ExampleHit* obj : *ep_out) {
89  ATH_MSG_INFO("Pedestal x = " << obj->getX() << " y = " << obj->getY() << " z = " << obj->getZ() << " string = " << obj->getDetector());
90  }
91  }
92  }
93 
94  return StatusCode::SUCCESS;
95 }

◆ endInputFile()

virtual StatusCode AthPoolEx::ReadMeta::endInputFile ( const SG::SourceID )
inlinefinaloverridevirtual

Function called when the currently open input file got completely processed.

Definition at line 39 of file ReadMeta.h.

39 {return StatusCode::SUCCESS;}

◆ handle()

void ReadMeta::handle ( const Incident &  incident)
finaloverridevirtual

Incident service handle listening for BeginInputFile and EndInputFile.

Definition at line 44 of file ReadMeta.cxx.

44  {
45  ATH_MSG_DEBUG("handle() " << inc.type());
46  const FileIncident* fileInc = dynamic_cast<const FileIncident*>(&inc);
47  if (fileInc == nullptr) {
48  ATH_MSG_ERROR(" Unable to get FileName from BeginInputFile/EndInputFile incident");
49  return;
50  }
51  ATH_MSG_DEBUG("handle() " << inc.type() << " for " << fileInc->fileName());
52 }

◆ initialize()

StatusCode ReadMeta::initialize ( )
finaloverridevirtual

Gaudi AlgTool Interface method implementations:

Definition at line 29 of file ReadMeta.cxx.

29  {
30  ATH_MSG_INFO("in initialize()");
31 
32  // locate the DetectorStore and initialize our local ptr
33  ATH_CHECK( m_pMetaDataStore.retrieve() );
34  ATH_CHECK( m_pInputStore.retrieve() );
35 
36  // Set to be listener for end of event
37  ServiceHandle<IIncidentSvc> incSvc("IncidentSvc", this->name());
38  ATH_CHECK( incSvc.retrieve() );
39  incSvc->addListener(this, "BeginInputFile", 60); // pri has to be < 100 to be after MetaDataSvc.
40  incSvc->addListener(this, "EndInputFile", 50); // pri has to be > 10 to be before MetaDataSvc.
41  return StatusCode::SUCCESS;
42 }

◆ metaDataStop()

virtual StatusCode AthPoolEx::ReadMeta::metaDataStop ( )
inlinefinaloverridevirtual

Function writing the collected metadata to the output.

Definition at line 42 of file ReadMeta.h.

42 {return StatusCode::SUCCESS;}

Member Data Documentation

◆ m_pInputStore

ServiceHandle<StoreGateSvc> AthPoolEx::ReadMeta::m_pInputStore
private

Definition at line 49 of file ReadMeta.h.

◆ m_pMetaDataStore

ServiceHandle<StoreGateSvc> AthPoolEx::ReadMeta::m_pMetaDataStore
private

Definition at line 48 of file ReadMeta.h.


The documentation for this class was generated from the following files:
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ExampleHit::setY
void setY(double y)
Set the Y coordinate.
Definition: ExampleHit.h:51
AthPoolEx::ReadMeta::m_pMetaDataStore
ServiceHandle< StoreGateSvc > m_pMetaDataStore
Definition: ReadMeta.h:48
DataVector::get
const T * get(size_type n) const
Access an element, as an rvalue.
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
ExampleHit::getY
double getY() const
Definition: ExampleHit.h:37
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:190
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ExampleHit::getX
double getX() const
Definition: ExampleHit.h:34
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ExampleHit
This class provides a dummy hit data object for AthenaPool.
Definition: ExampleHit.h:24
ExampleHit::getZ
double getZ() const
Definition: ExampleHit.h:40
ExampleHit::setX
void setX(double x)
Set the X coordinate.
Definition: ExampleHit.h:47
ExampleHit::getDetector
const std::string & getDetector() const
Definition: ExampleHit.h:43
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
AthPoolEx::ReadMeta::m_pInputStore
ServiceHandle< StoreGateSvc > m_pInputStore
Definition: ReadMeta.h:49
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
SG::ObjectWithVersion
associate a data object with its VersionedKey The object is held by a ReadHandle to delay its retriev...
Definition: SGVersionedKey.h:17
python.PyAthena.obj
obj
Definition: PyAthena.py:132
ExampleHitContainer
This class provides a data vector for ExampleHit objects in AthenaPool.
Definition: ExampleHitContainer.h:20
ExampleHit::setZ
void setZ(double z)
Set the Z coordinate.
Definition: ExampleHit.h:55
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
ServiceHandle< IIncidentSvc >
ExampleHit::setDetector
void setDetector(const std::string &detector)
Set the detector string.
Definition: ExampleHit.h:59