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