clas12root
Loading...
Searching...
No Matches
ntuple_reader.h
Go to the documentation of this file.
1#pragma once
2
3#include <hipo4/reader.h>
4#include <hipo4/bank.h>
5#include "ntuple_writer.h"
6
7namespace hipo {
8
9 using std::string;
11 using get_funcs=std::vector<get_func>;
12
14
15 public:
16
17 ntuple_reader()=default;
18 ntuple_reader(string filename);
19
20 virtual ~ntuple_reader()=default;
21
22 bool next();
23 //hipo::bank *data() const noexcept{return _bank.get();}
24 bool loadIndex(int index);
25
26 bool initBank(string name);
27 void linkItemGetter(string bankName, string itemName, void* addr);
28
29 int32_t& getInt(string bankName,string itemName);
30 int16_t& getShort(string bankName,string itemName);
31 int8_t& getByte(string bankName,string itemName);
32 int64_t& getLong(string bankName,string itemName);
33 float& getFloat(string bankName,string itemName);
34 double& getDouble(string bankName,string itemName);
35
36 int getBankRows(int i)const {return _banks[i]->getRows();}
37
38 void show(const string& bank){
39 auto sch=_dict.getSchema(bank.data());
40 sch.show();
41 }
42 private:
43 hipo::reader _reader;
44 hipo::dictionary _dict;
45 hipo::event _event;
46
47 std::vector<hipo::schema> _schemas;
48 // schema_uptrs _schemas;//!
49 bank_uptrs _banks;
50 std::vector<string> _bankNames;
51
52 get_funcs _getters{6}; //6 types allowed in schema, see typeToPos
53
54 std::vector<data_addrs_to_func> _itemLinksAndGets;
55
56 std::vector<std::vector<int_uptr > > _itemInts;
57 std::vector<std::vector<short_uptr > > _itemShorts;
58 std::vector<std::vector<byte_uptr > > _itemBytes;
59 std::vector<std::vector<long_uptr > > _itemLongs;
60 std::vector<std::vector<float_uptr > > _itemFloats;
61 std::vector<std::vector<double_uptr > > _itemDoubles;
62
63 uint _bankNumber{0}; //unique number associated with each bank
64
65 std::map<string, uint> _schemaID;
66 const std::map<int,int> _typeToPos{{3,0},{2,1},{1,2},{8,3},{4,4},{5,5}};
67 };
68
69}
bool initBank(string name)
Definition ntuple_reader.cpp:28
int16_t & getShort(string bankName, string itemName)
Definition ntuple_reader.cpp:73
void show(const string &bank)
Definition ntuple_reader.h:38
int getBankRows(int i) const
Definition ntuple_reader.h:36
virtual ~ntuple_reader()=default
ntuple_reader()=default
int8_t & getByte(string bankName, string itemName)
Definition ntuple_reader.cpp:93
int64_t & getLong(string bankName, string itemName)
Definition ntuple_reader.cpp:113
void linkItemGetter(string bankName, string itemName, void *addr)
Definition ntuple_reader.cpp:173
float & getFloat(string bankName, string itemName)
Definition ntuple_reader.cpp:133
bool loadIndex(int index)
Definition ntuple_reader.cpp:208
bool next()
Definition ntuple_reader.cpp:185
int32_t & getInt(string bankName, string itemName)
Definition ntuple_reader.cpp:53
double & getDouble(string bankName, string itemName)
Definition ntuple_reader.cpp:153
Definition ntuple_reader.cpp:4
std::vector< bank_uptr > bank_uptrs
Definition ntuple_writer.h:16
put_func get_func
Definition ntuple_reader.h:10
std::vector< get_func > get_funcs
Definition ntuple_reader.h:11
void(*)(hipo::bank *, void *, int, int) put_func
Definition ntuple_writer.h:20