-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMBDetectorStatus.cpp
64 lines (51 loc) · 1.59 KB
/
MBDetectorStatus.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "include/MBDetectorStatus.h"
//____________________________________________________
MBDetectorStatus::MBDetectorStatus() :
fBadDetectors(0)
{
fBadDetectors = new bool * [N_MICROBALL_RINGS];
for(int i=0; i< N_MICROBALL_RINGS; i++) {
fBadDetectors[i] = new bool [N_MICROBALL_DETS_PER_RING[i]];
}
}
//____________________________________________________
MBDetectorStatus::~MBDetectorStatus()
{
if(fBadDetectors) {
for(int i=0; i< N_MICROBALL_RINGS; i++) {
if(fBadDetectors[i]) delete [] fBadDetectors[i];
}
delete [] fBadDetectors;
}
}
//____________________________________________________
int MBDetectorStatus::LoadBadDetectors(const char * file_name)
{
std::ifstream FileIn(file_name);
if(!FileIn.is_open()) {
return -1;
}
int NRead=0;
while (!FileIn.eof())
{
std::string LineRead;
std::getline(FileIn, LineRead);
if(LineRead.empty()) continue;
LineRead.assign(LineRead.substr(0,LineRead.find('*')));
if(LineRead.find_first_not_of(' ') == std::string::npos) continue;
std::istringstream LineStream(LineRead);
std::string DetName;
bool status;
LineStream >> DetName >> status;
int ring = std::stoi(DetName.substr(DetName.find("R")+1,2));
int detector = std::stoi(DetName.substr(DetName.find("_")+1,2));
fBadDetectors[ring-1][detector-1] = status;
NRead++;
}
return NRead;
}
//____________________________________________________
bool MBDetectorStatus::IsBad(int num_ring, int num_det) const
{
return fBadDetectors[num_ring-1][num_det-1];
}