1 #include <arich/calibration/ARICHChannelMaskMaker.h>
2 #include <arich/dbobjects/ARICHChannelMask.h>
10 " --------------------- ARICHChannelMask Calibration Algoritm ------------------\n"
12 " Produces channel mask for arich hot/dead channels, based on criteria of \n"
13 " minimal and maximal occupancy \n"
14 " ------------------------------------------------------------------------------\n"
21 auto hist = getObjectPtr<TH2F>(
"ch_occupancy");
24 B2INFO(
"Number of Entries in ARICH ch_occupancy histogram was " << hist->GetEntries());
26 const int NumberOfChannelsPerHapd = 144;
27 int numChannels = hist->GetNbinsX();
29 int nevt = hist->GetBinContent(numChannels, 1);
33 double ringChnAvg[7] = {0.};
34 double ringChnAvgS2N[7] = {0.};
35 int hapdInRing[7] = {42, 48, 54, 60, 66, 72, 78};
37 for (
int bin = 1; bin < numChannels; ++bin) {
38 int moduleID = (bin - 1) / NumberOfChannelsPerHapd + 1;
39 double nsig = hist->GetBinContent(bin, 2) + hist->GetBinContent(bin, 3) - hist->GetBinContent(bin, 1) - hist->GetBinContent(bin, 4);
40 double s2n = nsig / (hist->GetBinContent(bin, 2) + hist->GetBinContent(bin, 3));
42 if (nsig /
float(nevt) > 0.02)
continue;
43 ringChnAvg[ring] += nsig;
44 ringChnAvgS2N[ring] += s2n;
47 for (
int i = 0; i < 7; i++) {
48 ringChnAvg[i] /= float(hapdInRing[i] * NumberOfChannelsPerHapd);
49 ringChnAvgS2N[i] /= float(hapdInRing[i] * NumberOfChannelsPerHapd);
51 B2INFO(
"Average hits in channel in outter HAPD ring is " << ringChnAvg[6] <<
" (which is less that minimaly required, " <<
55 for (
int bin = 1; bin < numChannels; ++bin) {
56 int moduleID = (bin - 1) / NumberOfChannelsPerHapd + 1;
57 int channelID = (bin - 1) % NumberOfChannelsPerHapd;
58 double nsig = hist->GetBinContent(bin, 2) + hist->GetBinContent(bin, 3) - hist->GetBinContent(bin, 1) - hist->GetBinContent(bin, 4);
59 double s2n = nsig / (hist->GetBinContent(bin, 2) + hist->GetBinContent(bin, 3));
63 mask->setActiveCh(moduleID, channelID, value);
75 if (modID <= 42)
return 0;
76 if (modID <= 90)
return 1;
77 if (modID <= 144)
return 2;
78 if (modID <= 204)
return 3;
79 if (modID <= 270)
return 4;
80 if (modID <= 342)
return 5;
81 if (modID <= 420)
return 6;