The Gaudi Framework  v29r0 (ff2e7097)
NTupleImplementation.h
Go to the documentation of this file.
1 #ifndef GAUDIKERNEL_NTUPLEIMP_H
2 #define GAUDIKERNEL_NTUPLEIMP_H
3 
4 #include <memory>
5 // Framework include files
6 #include "GaudiKernel/Kernel.h"
7 #include "GaudiKernel/NTuple.h"
8 #include "GaudiKernel/SmartIF.h"
9 
10 // Forward declarations
11 class INTupleSvc;
12 class IConversionSvc;
13 
14 namespace NTuple
15 {
16  // Concrete N tuple class definition
17  class GAUDI_API TupleImp : public Tuple
18  {
19  protected:
23  bool m_isBooked = false;
31  INTupleSvc* m_ntupleSvc = nullptr;
33  IConversionSvc* m_cnvSvc = nullptr;
34 
35  private:
37  TupleImp( const TupleImp& ) = delete;
38 
39  public:
41  INTupleItem* i_find( const std::string& name ) const override;
42 
43  public:
45  TupleImp( std::string title );
47  ~TupleImp() override;
49  ItemContainer& items() override { return m_items; }
51  const ItemContainer& items() const override { return m_items; }
53  const std::string& title() const override { return m_title; }
55  const INTupleItem* find( const std::string& name ) const override { return i_find( name ); }
57  INTupleItem* find( const std::string& name ) override { return i_find( name ); }
59  char* buffer() override { return m_buffer.get(); }
61  const char* buffer() const override { return m_buffer.get(); }
63  IConversionSvc* conversionService() const { return m_cnvSvc; }
65  void setConversionService( IConversionSvc* svc ) { m_cnvSvc = svc; }
67  INTupleSvc* tupleService() const { return m_ntupleSvc; }
69  void setTupleService( INTupleSvc* svc ) { m_ntupleSvc = svc; }
71  StatusCode attachSelector( ISelectStatement* sel ) override;
73  ISelectStatement* selector() override;
75  virtual char* setBuffer( std::unique_ptr<char[]>&& buff );
76  char* setBuffer( char* buff ) override;
78  void reset() override;
80  StatusCode add( INTupleItem* item ) override;
82  StatusCode remove( INTupleItem* item ) override;
84  StatusCode remove( const std::string& name ) override;
86  StatusCode write() override;
88  StatusCode writeRecord() override;
90  StatusCode read() override;
92  StatusCode readRecord() override;
94  StatusCode save() override;
95 
96  }; // end class definition: Tuple
97 
98  // Concrete column wise N tuple class definition
99  class ColumnWiseTuple : public TupleImp
100  {
101  public:
103  ColumnWiseTuple( std::string title ) : TupleImp( std::move( title ) ) {}
105  ~ColumnWiseTuple() override = default;
107  const CLID& clID() const override { return classID(); }
109  static const CLID& classID() { return CLID_ColumnWiseTuple; }
110  }; // end class definition: ColumnWiseTuple
111 
112  // Concrete column wise N tuple class definition
113  class RowWiseTuple : public TupleImp
114  {
115  public:
117  RowWiseTuple( std::string title ) : TupleImp( std::move( title ) ) {}
119  ~RowWiseTuple() override = default;
121  const CLID& clID() const override { return classID(); }
123  static const CLID& classID() { return CLID_RowWiseTuple; }
124  }; // end class definition: RowWiseTuple
125 } // end name space NTuple
126 
127 #endif // GAUDIKERNEL_NTUPLEIMP_H
const char * buffer() const override
Access N tuple data buffer (CONST)
A select statement can either contain.
std::unique_ptr< char[]> m_buffer
Buffer.
sel
Definition: IOTest.py:95
const ItemContainer & items() const override
Access item container (CONST)
const CLID & clID() const override
Retrieve Reference to class defininition structure.
STL namespace.
def read(f, regex='.*', skipevents=0)
Definition: hivetimeline.py:22
INTupleItem * find(const std::string &name) override
Find an item row of the Ntuple.
RowWiseTuple(std::string title)
Standard Constructor.
NTuple name space.
Definition: INTupleSvc.h:9
static const CLID & classID()
Static access to class defininition structure.
ColumnWiseTuple(std::string title)
Standard Constructor.
STL class.
NTuple interface class definition.
Definition: INTuple.h:27
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
unsigned int CLID
Class ID definition.
Definition: ClassID.h:8
ItemContainer & items() override
Access item container.
std::string m_title
N tuple title.
Abstract base class which allows the user to interact with the actual N tuple implementation.
Definition: NTuple.h:412
T get(T...args)
const std::string & title() const override
Object title.
STL class.
SmartIF< ISelectStatement > m_pSelector
Possibly hanging selector.
ItemContainer m_items
Container with N tuple _Columns.
void setTupleService(INTupleSvc *svc)
Access conversion service.
void setConversionService(IConversionSvc *svc)
Access conversion service.
const CLID & clID() const override
Retrieve Reference to class defininition structure.
const INTupleItem * find(const std::string &name) const override
Find an item row of the Ntuple (CONST)
#define GAUDI_API
Definition: Kernel.h:110
static const CLID & classID()
Static access to class defininition structure.
INTupleSvc * tupleService() const
Access conversion service.
char * buffer() override
Access N tuple data buffer.
IConversionSvc * conversionService() const
Access conversion service.