25 constexpr
float infinity=std::numeric_limits<float>::infinity();
30 std::map<unsigned int, unsigned int> occ;
33 if (!history)
continue;
34 for (
unsigned int k = 0;
k < history->
nData();
k++)
41 runMin = occ.begin()->first;
42 runMax = occ.rbegin()->first;
46 h->GetXaxis()->SetTitle(
"Run number");
47 h->GetYaxis()->SetTitle(
"Occupancy");
48 for (std::map<unsigned int, unsigned int>::const_iterator
run = occ.begin();
53 h->SetBinContent(
bin,
run->second);
54 h->GetXaxis()->SetBinLabel(
bin, Form(
"%d",
run->first));
62 std::map<std::pair<unsigned int, unsigned int>,
unsigned int> occ;
65 if (!history)
continue;
66 for (
unsigned int k = 0;
k < history->
nData();
k++)
70 TH1I*
h =
new TH1I(
"occ",
"Event occupancies", occ.size(), 0, occ.size());
71 h->GetXaxis()->SetTitle(
"Recorded Event");
72 h->GetYaxis()->SetTitle(
"Occupancy");
75 for (std::map<std::pair<unsigned int, unsigned int>,
unsigned int>::const_iterator
event = occ.begin();
78 if (occForDump > 0 && occForDump <= event->
second)
79 cout <<
"run = " <<
event->first.first <<
" event = " <<
event->first.second <<
" occ = " <<
event->second << endl;
88 std::map<unsigned int, unsigned int> occ;
91 if (!history)
continue;
92 for (
unsigned int k = 0;
k < history->
nData();
k++)
96 unsigned int oMin = 999999999, oMax = 0;
98 for (std::map<unsigned int, unsigned int>::const_iterator
event = occ.begin();
101 if (
event->second < oMin) oMin =
event->second;
102 if (
event->second > oMax) oMax =
event->second;
109 TH1I*
h =
new TH1I(
"occ",
"Event occupancies", oMax - oMin + 1, oMin - 0.5, oMax + 0.5);
110 h->GetXaxis()->SetTitle(
"Occupancy");
111 h->GetYaxis()->SetTitle(
"Number of events");
112 for (std::map<unsigned int, unsigned int>::const_iterator
event = occ.begin();
122 std::vector<unsigned int> occ(
nChannels());
126 occ[
i] = occ[
i] + history->
nData();
130 unsigned int oMin = 999999999, oMax = 0;
132 for (std::vector<unsigned int>::const_iterator
cell = occ.begin();
144 std::map<std::pair<unsigned int, unsigned int>, std::string>
names;
145 TH1I*
h =
new TH1I(
"occ",
"Cell occupancies", oMax - oMin + 1, oMin - 0.5, oMax + 0.5);
146 h->GetXaxis()->SetTitle(
"Occupancy");
147 h->GetYaxis()->SetTitle(
"Number of cells");
150 for (std::vector<unsigned int>::const_iterator cellOcc = occ.begin();
151 cellOcc != occ.end(); ++cellOcc, ++
i) {
154 if (!history)
continue;
155 if (minForPrintout >= 0) {
158 names[ std::pair<unsigned int, unsigned int>(*cellOcc,
i) ] = heading.Data();
162 if (minForPrintout >= 0) {
169 for (std::map<std::pair<unsigned int, unsigned int>, std::string>::reverse_iterator
cell =
names.rbegin();
172 if (
cell->first.first < (
unsigned int)minForPrintout)
break;
173 cout <<
cell->first.first <<
" : " <<
cell->first.second <<
", " <<
cell->second << endl;
183 std::map<unsigned int, unsigned int> occ;
188 if (!history)
continue;
189 for (
unsigned int k = 0;
k < history->
nData();
k++)
193 unsigned int oMin = 999999999, oMax = 0;
195 for (std::map<unsigned int, unsigned int>::const_iterator feb = occ.begin();
196 feb != occ.end(); ++feb)
198 if (feb->second < oMin) oMin = feb->second;
199 if (feb->second > oMax) oMax = feb->second;
206 TH1I*
h =
new TH1I(
"occ",
"FEB occupancies", oMax - oMin + 1, oMin - 0.5, oMax + 0.5);
207 h->GetXaxis()->SetTitle(
"Occupancy");
208 h->GetYaxis()->SetTitle(
"Number of FEBs");
209 for (std::map<unsigned int, unsigned int>::const_iterator feb = occ.begin();
210 feb != occ.end(); ++feb)
211 h->Fill(feb->second);
222 if (!history)
continue;
236 Form(
"Occupancies for partition %s, layer %d",
Id::str(calo).
Data(),
layer),
245 if (!history)
continue;
248 cout <<
" : " << history->
nData() <<
" pulse" << endl;
251 for (
unsigned int i = 0;
i < history->
nData();
i++)
252 cout <<
"E = " << history->
data(
i)->
energy() <<
" MeV, " << endl;
260 const unsigned int nPhiRings = 5516;
261 using block_t =
unsigned int[4][3];
263 std::vector<block_t> ringOccupancy (nPhiRings);
265 for (
unsigned int i = 0;
i < 4;
i++)
266 for (
unsigned int j = 0; j < 3; j++) {
267 for (
unsigned int k = 0;
k < nPhiRings;
k++) ringOccupancy[
k][
i][j] = 0;
273 if (
i%10000 == 0) cout <<
"Processing hash = " <<
i << endl;
275 if (!history)
continue;
277 unsigned int n[3] = {0,0,0};
279 for (
unsigned int k = 0;
k < history->
nData();
k++) {
281 if (globalPhiRing<0)
continue;
288 for (
unsigned int i = 0;
i < 4;
i++)
289 for (
unsigned int j = 0; j < 3; j++) {
290 for (
unsigned int k = 0;
k < nPhiRings;
k++)
291 if (ringOccupancy[
k][
i][j] >= nMin) nRings[
i][j]++;
294 for (
unsigned int i = 0;
i < 4;
i++) {
295 cout <<
"layer " <<
i << endl;
298 for (
unsigned int j = 0; j < 3; j++) {
299 float nCellFract= infinity;
300 if (nChann>0) nCellFract =
nCells[
i][j]*100.0/nChann;
301 float nRingFract = infinity;
302 if (
nEta > 0) nRingFract = nRings[
i][j]*100.0/
nEta;
303 cout <<
" gain " << j <<
" : "
304 <<
nCells[
i][j] <<
" cells of " << nChann <<
" (" << nCellFract <<
" %), "
305 << nRings[
i][j] <<
" rings of " <<
nEta <<
" (" << nRingFract <<
" %)." << endl;
308 for (
unsigned int i = 0;
i < 4;
i++) {
311 cout <<
i <<
" & " << nChann <<
" & " <<
nEta <<
" & ";
312 for (
unsigned int j = 0; j < 3; j++){
313 float val = infinity;
314 if (nChann>0)
val =
nCells[
i][j]*100.0/nChann;
315 cout << Form(
"%4.1f\\%% & ",
val);
317 for (
unsigned int j = 0; j < 3; j++){
318 float val = infinity;
320 cout << Form(
"%4.1f\\%% & ",
val);