BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnDataReader.h
Go to the documentation of this file.
1
/*
2
BM@N alignment routine
3
BM@N experiment at NICA complex, JINR, 2025
4
5
Department: Math & Soft Group of HEP lab
6
Author: Igor Polev, polev@jinr.ru
7
8
BmnDataReader class header-only implementation
9
Stadard interface for reading data from set of ROOT files
10
*/
11
12
#ifndef BMNDATAREADER_H
13
#define BMNDATAREADER_H
14
15
#include "
TChain.h
"
16
#include "
TString.h
"
17
#include "
TTreeReader.h
"
18
19
#include <fstream>
20
#include <string>
21
22
#define BMN_TREE_NAME_DEFAULT "bmndata"
23
24
class
BmnDataReader
25
{
26
public
:
27
BmnDataReader
() =
delete
;
28
BmnDataReader
(
const
char
* filesListPath,
const
char
* treeName =
nullptr
);
29
BmnDataReader
(
const
std::string& filesListPath,
const
char
* treeName =
nullptr
)
30
:
BmnDataReader
(filesListPath.c_str(), treeName) {};
31
BmnDataReader
(
const
TString
& filesListPath,
const
char
* treeName =
nullptr
)
32
:
BmnDataReader
(filesListPath.Data(), treeName) {};
33
~BmnDataReader
()
34
{
35
if
(
fpDataChain
)
36
delete
fpDataChain
;
37
if
(
fpReader
)
38
delete
fpReader
;
39
}
40
41
TChain
&
Chain
() {
return
*
fpDataChain
; }
42
TTreeReader
&
Reader
() {
return
*
fpReader
; }
43
44
private
:
45
TChain
*
fpDataChain
{
nullptr
};
46
TTreeReader*
fpReader
{
nullptr
};
47
};
48
49
inline
BmnDataReader::BmnDataReader
(
const
char
* filePathList,
const
char
* treeName)
50
{
51
const
char
* treeNameFinal{treeName ? treeName :
BMN_TREE_NAME_DEFAULT
};
52
53
// collect .root files into chain
54
std::ifstream file(filePathList);
55
if
(!file.is_open())
56
throw
std::runtime_error(std::string(
"BmnDataReader: failed to open ROOT list file "
) + filePathList);
57
fpDataChain
=
new
TChain(treeNameFinal);
58
std::string filePath;
59
while
(getline(file, filePath))
60
if
(!
fpDataChain
->Add(filePath.c_str(), 0)) {
61
delete
fpDataChain
;
62
throw
std::runtime_error(std::string(
"BmnDataReader: failed to access file "
) + filePath +
" or tree "
63
+ treeNameFinal +
" not found"
);
64
}
65
file.close();
66
67
// init reader
68
fpReader
=
new
TTreeReader{
fpDataChain
};
69
if
(-1 ==
fpReader
->GetEntries()) {
70
delete
fpReader
;
71
delete
fpDataChain
;
72
throw
std::runtime_error(std::string(
"BmnDataReader: failed to init reader for "
) + treeNameFinal);
73
}
74
}
75
76
#endif
// BMNDATAREADER_H
TChain.h
TString.h
TTreeReader.h
BmnDataReader
Definition
BmnDataReader.h:25
BmnDataReader::Reader
TTreeReader & Reader()
Definition
BmnDataReader.h:42
BmnDataReader::BmnDataReader
BmnDataReader(const char *filesListPath, const char *treeName=nullptr)
BmnDataReader::fpReader
TTreeReader * fpReader
Definition
BmnDataReader.h:46
BmnDataReader::BmnDataReader
BmnDataReader(const std::string &filesListPath, const char *treeName=nullptr)
Definition
BmnDataReader.h:29
BmnDataReader::BmnDataReader
BmnDataReader(const TString &filesListPath, const char *treeName=nullptr)
Definition
BmnDataReader.h:31
BmnDataReader::Chain
TChain & Chain()
Definition
BmnDataReader.h:41
BmnDataReader::BmnDataReader
BmnDataReader()=delete
BmnDataReader::fpDataChain
TChain * fpDataChain
Definition
BmnDataReader.h:45
BmnDataReader::~BmnDataReader
~BmnDataReader()
Definition
BmnDataReader.h:33
TChain
TString
TTreeReader
BMN_TREE_NAME_DEFAULT
#define BMN_TREE_NAME_DEFAULT
Definition
BmnDataReader.h:22
install
include
BmnDataReader.h
Generated on
for BmnRoot by
1.17.0