All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
NTupleImplementation.cpp
Go to the documentation of this file.
1 //====================================================================
2 // NTuple class implementation
3 //--------------------------------------------------------------------
4 //
5 // Package : Gaudi/NTupleSvc ( The LHCb Offline System)
6 // Author : M.Frank
7 //
8 // +---------+----------------------------------------------+--------+
9 // | Date | Comment | Who |
10 // +---------+----------------------------------------------+--------+
11 // | 21/10/99| Initial version. | MF |
12 // +---------+----------------------------------------------+--------+
13 //====================================================================
14 #define GAUDI_NTUPLEIMP_CPP 1
15 
16 // Framework include files
17 #include "GaudiKernel/INTupleSvc.h"
18 #include "GaudiKernel/IDataSelector.h"
19 #include "GaudiKernel/ISelectStatement.h"
20 #include "GaudiKernel/NTupleImplementation.h"
21 
22 /*
23 */
24 namespace NTuple {
26  TupleImp::TupleImp ( std::string title )
27  : m_title(std::move(title))
28  {
29  }
30 
33  for (auto &i : m_items) i->release();
34  }
35 
38  m_pSelector = sel;
39  return StatusCode::SUCCESS;
40  }
41 
44  return m_pSelector.get();
45  }
46 
48  void TupleImp::reset ( ) {
49  for (auto& i : m_items ) i->reset();
50  }
51 
53  INTupleItem* TupleImp::i_find ( const std::string& name ) const {
54  auto i = std::find_if( std::begin(m_items), std::end(m_items),
55  [&](ItemContainer::const_reference j)
56  { return j->name() == name; } );
57  return i!=std::end(m_items) ? const_cast<INTupleItem*>(*i) : nullptr;
58  }
59 
62  if ( item ) {
63  INTupleItem* i = i_find(item->name());
64  if ( !i ) {
65  m_items.push_back( item );
66  return StatusCode::SUCCESS;
67  }
68  }
69  return StatusCode::FAILURE;
70  }
71 
73  StatusCode TupleImp::remove ( const std::string& name ) {
74  INTupleItem* i = i_find(name);
75  return i ? remove(i) : StatusCode::FAILURE;
76  }
77 
80  auto i = std::find( std::begin(m_items), std::end(m_items), item );
81  if ( i == std::end( m_items) ) return StatusCode::FAILURE;
82  m_items.erase(i);
83  item->release();
84  return StatusCode::SUCCESS;
85  }
87  char* TupleImp::setBuffer(std::unique_ptr<char[]>&& buff) {
88  m_buffer = std::move(buff);
89  return m_buffer.get();
90  }
92  char* TupleImp::setBuffer(char* buff) {
93  m_buffer.reset( buff );
94  return m_buffer.get();
95  }
98  return m_ntupleSvc->writeRecord(this);
99  }
102  return m_ntupleSvc->writeRecord(this);
103  }
106  return m_ntupleSvc->readRecord(this);
107  }
110  return m_ntupleSvc->readRecord(this);
111  }
114  return m_ntupleSvc->save(this);
115  }
116 } // end namespace NTuple
void reset() override
Reset all entries to their default values.
INTupleItem * i_find(const std::string &name) const override
Internally used by abstract classes.
SmartIF< ISelectStatement > m_pSelector
Possibly hanging selector.
TupleImp(const TupleImp &)=delete
Standard Copy Constructor.
A select statement can either contain.
StatusCode add(INTupleItem *item) override
Add an item row to the N tuple.
auto begin(reverse_wrapper< T > &w)
Definition: reverse.h:45
StatusCode attachSelector(ISelectStatement *sel) override
Attach selector.
ISelectStatement * selector() override
Access selector.
INTupleSvc * m_ntupleSvc
Reference to N-tuple service used.
STL namespace.
StatusCode write() override
Write record of the NTuple (Shortcut of writeRecord)
NTuple name space.
Definition: INTupleSvc.h:10
virtual const std::string & name() const =0
Access _Item name.
StatusCode save() override
Save the NTuple.
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:76
StatusCode read() override
Read record of the NTuple (Shortcut of readRecord)
NTuple interface class definition.
Definition: INTuple.h:26
~TupleImp() override
Standard Destructor.
StatusCode remove(INTupleItem *item) override
Remove an item row (identified by pointer) from the N tuple.
auto end(reverse_wrapper< T > &w)
Definition: reverse.h:47
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
virtual StatusCode writeRecord(NTuple::Tuple *tuple)=0
Write single record to N tuple.
virtual StatusCode save(const std::string &fullPath)=0
Save N tuple to disk.
StatusCode readRecord() override
Read record of the NTuple.
ItemContainer m_items
Container with N tuple _Columns.
virtual StatusCode readRecord(NTuple::Tuple *tuple)=0
Read single record from N tuple.
tuple item
print s1,s2
Definition: ana.py:146
virtual void release()=0
Destruct object.
const std::string & name() const
Retreive DataObject name. It is the name when registered in the store.
Definition: DataObject.cpp:78
virtual char * setBuffer(std::unique_ptr< char[]> &&buff)
Set N tuple data buffer.
std::unique_ptr< char[]> m_buffer
Buffer.
list i
Definition: ana.py:128
StatusCode writeRecord() override
Write record of the NTuple.