HIPO4 C++ Library 4.4.1
Columnar I/O library for CLAS12 physics data
Loading...
Searching...
No Matches
fusion.h
Go to the documentation of this file.
1/*
2 * To change this license header, choose License Headers in Project Properties.
3 * To change this template file, choose Tools | Templates
4 * and open the template in the editor.
5 */
6
7/*
8 * File: fusion.h
9 * Author: gavalian
10 *
11 * Created on April 27, 2017, 10:01 AM
12 */
13
14#ifndef FUSION_H
15#define FUSION_H
16
17#include <iostream>
18#include <cstdlib>
19#include <cstdio>
20#include <string>
21#include <vector>
22#include <map>
23#include "reader.h"
24#include <chrono>
25
26namespace hipo {
27
29
30 private:
31
33 std::map<std::string,hipo::bank> banks;
34 hipo::dictionary factory;
36
37 public:
38
40 inputSource(const char *filename){ open(filename); }
41 inputSource(const char *filename, int tag) { open(filename, tag); }
43
44 void open(const char *filename);
45 void open(const char *filename, int tag);
46 void define(const char *bank);
47 void describe(const char *bank);
48 bool next();
49
50 std::string schema(const char *bank);
51 hipo::bank &get(const char *bank){ return banks[bank];}
52 int getSize(const char *bank);
53
54 int getInt( const char *bank, const char *entry, int row);
55 int64_t getLong( const char *bank, const char *entry, int row);
56 float getFloat( const char *bank, const char *entry, int row);
57 double getDouble( const char *bank, const char *entry, int row);
58
59 void getByteArray( const char *bank, int entry, int8_t *ptr, int length);
60 void getShortArray( const char *bank, int entry, int16_t *ptr, int length);
61 void getIntArray( const char *bank, int entry, int32_t *ptr, int length);
62 void getFloatArray( const char *bank, int entry, float *ptr, int length);
63
65 };
66
67class fusion {
68
69 private:
70
71 std::map<int,inputSource*> sources;
72
73 public:
74
77
78
79 int open(const char *filename);
80 int open(const char *filename, int tag);
81 bool next(int handle);
82
83 void define(int fid, const char *bank);
84 void describe(int fid, const char *bank);
85 std::string schema(int fid, const char *bank);
86
87 int getSize(int fid, const char *bank);
88
89 void getByteArray( int handle, const char *bank, int entry, int8_t *ptr, int length){
90 sources[handle]->getByteArray(bank,entry,ptr,length);
91 }
92 void getShortArray( int handle, const char *bank, int entry, int16_t *ptr, int length){
93 sources[handle]->getShortArray(bank,entry,ptr,length);
94 }
95 void getIntArray( int handle, const char *bank, int entry, int32_t *ptr, int length){
96 sources[handle]->getIntArray(bank,entry,ptr,length);
97 }
98 void getFloatArray( int handle, const char *bank, int entry, float *ptr, int length){
99 sources[handle]->getFloatArray(bank,entry,ptr,length);
100 }
101
102 int getInt( int handle, const char *bank, const char *entry, int row);
103 int64_t getLong( int handle, const char *bank, const char *entry, int row);
104 float getFloat( int handle, const char *bank, const char *entry, int row);
105 double getDouble( int handle, const char *bank, const char *entry, int row);
106 int getType( int handle, const char *bank, const char *entry);
107
108 int64_t getEntries(int handle) { return sources[handle]->getEntries(); }
109 hipo::bank &getBank(int handle, const char *bank) {return sources[handle]->get(bank);}
110};
111}
112
113#endif /* FUSION_H */
Definition bank.h:210
T get(int item, int index) const noexcept
Definition bank.h:311
Collection of schema definitions, typically read from a HIPO file header.
Definition dictionary.h:157
Definition event.h:62
Definition fusion.h:67
void define(int fid, const char *bank)
Definition fusion.cpp:102
hipo::bank & getBank(int handle, const char *bank)
Definition fusion.h:109
int getInt(int handle, const char *bank, const char *entry, int row)
Definition fusion.cpp:121
int getSize(int fid, const char *bank)
Definition fusion.cpp:113
int getType(int handle, const char *bank, const char *entry)
Definition fusion.cpp:139
int64_t getLong(int handle, const char *bank, const char *entry, int row)
Definition fusion.cpp:125
fusion()
Definition fusion.h:75
double getDouble(int handle, const char *bank, const char *entry, int row)
Definition fusion.cpp:135
void describe(int fid, const char *bank)
Definition fusion.cpp:109
~fusion()
Definition fusion.h:76
void getShortArray(int handle, const char *bank, int entry, int16_t *ptr, int length)
Definition fusion.h:92
int open(const char *filename)
Definition fusion.cpp:90
float getFloat(int handle, const char *bank, const char *entry, int row)
Definition fusion.cpp:129
void getByteArray(int handle, const char *bank, int entry, int8_t *ptr, int length)
Definition fusion.h:89
void getFloatArray(int handle, const char *bank, int entry, float *ptr, int length)
Definition fusion.h:98
int64_t getEntries(int handle)
Definition fusion.h:108
void getIntArray(int handle, const char *bank, int entry, int32_t *ptr, int length)
Definition fusion.h:95
bool next(int handle)
Definition fusion.cpp:117
Definition fusion.h:28
void open(const char *filename)
Definition fusion.cpp:13
float getFloat(const char *bank, const char *entry, int row)
Definition fusion.cpp:63
void describe(const char *bank)
Definition fusion.cpp:32
hipo::bank & get(const char *bank)
Definition fusion.h:51
bool next()
Definition fusion.cpp:36
void getIntArray(const char *bank, int entry, int32_t *ptr, int length)
Definition fusion.cpp:79
void getByteArray(const char *bank, int entry, int8_t *ptr, int length)
Definition fusion.cpp:71
inputSource(const char *filename)
Definition fusion.h:40
int64_t getLong(const char *bank, const char *entry, int row)
Definition fusion.cpp:59
int64_t getEntries()
Definition fusion.h:64
inputSource()
Definition fusion.h:39
void define(const char *bank)
Definition fusion.cpp:28
int getSize(const char *bank)
Definition fusion.cpp:50
void getShortArray(const char *bank, int entry, int16_t *ptr, int length)
Definition fusion.cpp:75
~inputSource()
Definition fusion.h:42
inputSource(const char *filename, int tag)
Definition fusion.h:41
int getInt(const char *bank, const char *entry, int row)
Definition fusion.cpp:55
void getFloatArray(const char *bank, int entry, float *ptr, int length)
Definition fusion.cpp:84
double getDouble(const char *bank, const char *entry, int row)
Definition fusion.cpp:67
Definition reader.h:197
int getEntries()
Definition reader.h:268
Schema definition for a HIPO bank.
Definition dictionary.h:56
HIPO namespace is used for the classes that read/write files and records.
Definition bank.cpp:45