6 #include <FairLogger.h>
12 #include <H5Gpublic.h>
13 #include <H5Ipublic.h>
30 LOG(info) << numEvents <<
" " << uniqueEvents <<
"\n";
32 LOG(fatal) <<
"Exceded valid range of event numbers. Looking for " <<
fEventID <<
" max event number is "
34 if (uniqueEvents != numEvents / 3)
35 LOG(error) <<
"Number of events from metaData does not match the number of entries in HDF5 file!";
49 if (std::get<0>(group_n_entries) == -1)
51 _group = std::get<0>(group_n_entries);
53 return std::get<1>(group_n_entries);
58 TString event_name = TString::Format(
"evt%lld_1903",
fDataEventID);
60 std::size_t npads =
n_pads(event_name.Data());
62 for (
auto ipad = 0; ipad < npads; ++ipad)
74 for (Int_t iTb = 0; iTb < 2048; iTb++) {
75 trace->SetRawADC(iTb, rawadc.at(iTb));
76 trace->SetADC(iTb, rawadc.at(iTb) - baseline);
83 hsize_t counts[2] = {2048, 1};
84 hsize_t offsets[2] = {0, i_pad};
85 hsize_t dims_out[2] = {2048, 1};
86 read_slab<int16_t>(
_dataset, counts, offsets, dims_out, data);
87 std::vector<int16_t> datav(data, data + 2048);
93 std::string dataset_name = i_raw_event;
95 if (std::get<0>(dataset_dims) == 0)
97 _dataset = std::get<0>(dataset_dims);
98 return std::get<1>(dataset_dims)[1];
107 auto addToVector = [](hid_t group,
const char *name,
void *op_data) -> herr_t {
108 std::string text = std::string(name);
109 if (text.find(
"header") != std::string::npos)
111 std::regex regex(
"evt(\\d+)_\\d+");
112 std::string result = std::regex_replace(text, regex,
"$1\n");
115 std::istringstream iss(result);
116 while (iss >> number) {
117 LOG(debug) << number << std::endl;
121 auto data = (std::vector<long> *)op_data;
122 data->push_back(number);
124 LOG(info) << name <<
" to " << number <<
" " << data->size();
128 std::vector<long> eventIDs;
129 H5Giterate(
_file,
"frib/evt", &idx, addToVector, &eventIDs);
130 fLastEvent = *std::max_element(eventIDs.begin(), eventIDs.end());
131 fFirstEvent = *std::min_element(eventIDs.begin(), eventIDs.end());