All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
HiveTestAlgorithm.cpp
Go to the documentation of this file.
5 
6 #include <atomic>
7 
8 DECLARE_ALGORITHM_FACTORY(HiveTestAlgorithm)
9 
10 using namespace std;
11 
13  int m_data;
16 public:
17  MyObject(int d) : m_data(d) {c_instances++;}
18  MyObject(const MyObject& o) : DataObject(), m_data(o.m_data) {c_instances++;}
19  ~MyObject() {d_instances++;}
20  int getData() { return m_data; }
21  static void dump() { cout << "MyObject (C/D): " << c_instances << "/" << d_instances <<endl;}
22 };
23 
26 
29 {
30  info() << ":HiveTestAlgorithm::initialize " << endmsg;
31 
32  int i=0;
33  for (auto k: m_inputs) {
34  debug() << "adding input key " << k << endmsg;
35  m_inputHandles.push_back( new DataObjectHandle<DataObject>( k, Gaudi::DataHandle::Reader, this ));
36  declareProperty("dummy_in_" + std::to_string(i), *(m_inputHandles.back()) );
37  i++;
38  }
39 
40  i = 0;
41  for (auto k: m_outputs) {
42  debug() << "adding output key " << k << endmsg;
43  m_outputHandles.push_back( new DataObjectHandle<DataObject>( k, Gaudi::DataHandle::Writer, this ));
44  declareProperty("dummy_out_" + std::to_string(i), *(m_outputHandles.back()) );
45  i++;
46  }
47 
48  return StatusCode::SUCCESS;
49 }
50 
53 {
54  ++m_total;
56 
57  info() << ":HiveTestAlgorithm::getting inputs... " << evt << endmsg;
58 
59  for(auto& handle : m_inputHandles) {
60  auto obj = dynamic_cast<MyObject*>(handle->get());
61  info() << "Got data with value " << obj->getData() << endmsg;
62  }
63 
64  info() << ":HiveTestAlgorithm::registering outputs... " << evt << endmsg;
65 
66  for (auto & outputHandle: m_outputHandles){ outputHandle->put(new MyObject(1000+evt)); }
67 
68  return StatusCode::SUCCESS;
69 }
70 
73 {
74  info() << name() << ":HiveTestAlgorithm::finalize - total events: " << m_total << endmsg;
76  return StatusCode::SUCCESS;
77 }
78 
80 {
81  return m_inputs;
82 }
83 
85 {
86  return m_outputs;
87 }
static atomic< int > c_instances
MyObject(const MyObject &o)
T to_string(T...args)
T endl(T...args)
virtual const std::vector< std::string > get_outputs()
STL namespace.
static void dump()
#define class
static atomic< int > d_instances
ContextEvt_t evt() const
Definition: EventContext.h:40
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
Gaudi::Details::PropertyBase * declareProperty(const std::string &name, TYPE &value, const std::string &doc="none")
Declare a property (templated)
#define DECLARE_ALGORITHM_FACTORY(x)
Definition: Algorithm.h:620
GAUDI_API const EventContext & currentContext()
StatusCode initialize() override
std::vector< InputHandle_t< In > > m_inputs
virtual const std::vector< std::string > get_inputs()
StatusCode execute() override
StatusCode finalize() override
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
evt
Definition: IOTest.py:85