Skip to content

Commit 71435ff

Browse files
dstoccoBarthelemy
authored andcommitted
Fill MID digits summary histo in the checker to avoid merging (#1812)
1 parent db44529 commit 71435ff

2 files changed

Lines changed: 47 additions & 44 deletions

File tree

Modules/MUON/MID/src/DigitsQcCheck.cxx

Lines changed: 47 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -64,56 +64,65 @@ Quality DigitsQcCheck::check(std::map<std::string, std::shared_ptr<MonitorObject
6464
{
6565
Quality result = Quality::Null;
6666
// This info must be available from the beginning
67+
TH1* meanMultiHits = nullptr;
6768
for (auto& item : *moMap) {
6869
if (item.second->getName() == "NbDigitTF") {
6970
mHistoHelper.setNTFs(static_cast<TH1F*>(item.second->getObject())->GetBinContent(1));
70-
break;
71+
} else if (item.second->getName() == "MeanMultiHits") {
72+
meanMultiHits = static_cast<TH1*>(item.second->getObject());
7173
}
7274
}
7375

74-
for (auto& [moName, mo] : *moMap) {
75-
if (mo->getName() == "MeanMultiHits") {
76-
int nGood = 0, nNull = 0, nBad = 0, nMedium = 0;
77-
auto globalQual = Quality::Null;
78-
for (int icath = 0; icath < 2; ++icath) {
79-
for (int ich = 0; ich < 4; ++ich) {
80-
int ibin = 1 + 4 * icath + ich;
81-
auto histo = static_cast<TH1F*>(mo->getObject());
82-
auto mean = histo->GetBinContent(ibin);
83-
auto qual = Quality::Good;
84-
if (mean == 0.) {
85-
++nNull;
86-
qual = Quality::Null;
87-
} else if (mean > mMeanMultThreshold || mean < mMinMultThreshold) {
88-
qual = Quality::Bad;
89-
result = qual;
90-
++nBad;
91-
} else if (mean > mMeanMultThreshold / 2.) {
92-
qual = Quality::Medium;
93-
++nMedium;
94-
} else {
95-
++nGood;
96-
}
97-
std::string hName = "MultHit";
98-
hName += histo->GetXaxis()->GetBinLabel(ibin);
99-
mQualityMap[hName] = qual;
76+
// Fill the summary multiplicity histogram
77+
if (meanMultiHits) {
78+
meanMultiHits->Reset();
79+
std::unordered_map<std::string, int> ref;
80+
for (int ibin = 1; ibin <= meanMultiHits->GetNbinsX(); ++ibin) {
81+
std::string hName = "MultHit";
82+
hName += meanMultiHits->GetXaxis()->GetBinLabel(ibin);
83+
ref[hName] = ibin;
84+
}
85+
86+
int nGood = 0, nNull = 0, nBad = 0, nMedium = 0;
87+
auto globalQual = Quality::Null;
88+
for (auto& item : *moMap) {
89+
if (item.second->getName().find("MultHitMT") != std::string::npos) {
90+
std::string hName = item.second->getName();
91+
auto mean = static_cast<TH1*>(item.second->getObject())->GetMean();
92+
meanMultiHits->SetBinContent(ref[hName], mean);
93+
auto qual = Quality::Good;
94+
if (mean == 0.) {
95+
++nNull;
96+
qual = Quality::Null;
97+
} else if (mean > mMeanMultThreshold || mean < mMinMultThreshold) {
98+
qual = Quality::Bad;
99+
result = qual;
100+
++nBad;
101+
} else if (mean > mMeanMultThreshold / 2.) {
102+
qual = Quality::Medium;
103+
++nMedium;
104+
} else {
105+
++nGood;
100106
}
107+
mQualityMap[hName] = qual;
101108
}
102-
if (nBad > 0) {
103-
globalQual = Quality::Bad;
104-
} else if (nMedium > 0) {
105-
globalQual = Quality::Medium;
106-
} else if (nGood == 8) {
107-
globalQual = Quality::Good;
108-
}
109-
mQualityMap[mo->getName()] = globalQual;
110109
}
110+
if (nBad > 0) {
111+
globalQual = Quality::Bad;
112+
} else if (nMedium > 0) {
113+
globalQual = Quality::Medium;
114+
} else if (nGood == 8) {
115+
globalQual = Quality::Good;
116+
}
117+
mQualityMap[meanMultiHits->GetName()] = globalQual;
118+
}
111119

112-
if (mo->getName() == "LocalBoardsMap") {
120+
for (auto& item : *moMap) {
121+
if (item.second->getName() == "LocalBoardsMap") {
113122
if (mHistoHelper.getNTFs() > 0) {
114123
int nEmptyLB = 0;
115124
int nBadLB = 0;
116-
auto histo = static_cast<TH2F*>(mo->getObject());
125+
auto histo = static_cast<TH2F*>(item.second->getObject());
117126
mHistoHelper.normalizeHistoTokHz(histo);
118127
for (int bx = 1; bx < 15; bx++) {
119128
for (int by = 1; by < 37; by++) {
@@ -147,7 +156,7 @@ Quality DigitsQcCheck::check(std::map<std::string, std::shared_ptr<MonitorObject
147156
auto flag = o2::quality_control::FlagReason();
148157
qual.addReason(flag, fmt::format("{} boards empty", nEmptyLB));
149158
}
150-
mQualityMap[mo->getName()] = qual;
159+
mQualityMap[item.second->getName()] = qual;
151160
} // if mNTFInSeconds > 0.
152161
}
153162
}

Modules/MUON/MID/src/DigitsQcTask.cxx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -171,12 +171,6 @@ void DigitsQcTask::endOfCycle()
171171

172172
// Then fill from the strip histogram
173173
mDigitsHelper.fillMapHistos(mHits.get(), mBendHitsMap, mNBendHitsMap, mLocalBoardsMap);
174-
175-
// Fill the summary multiplicity histogram
176-
for (int ich = 0; ich < 4; ++ich) {
177-
mMeanMultiHits->SetBinContent(1 + ich, mMultHitB[ich]->GetMean());
178-
mMeanMultiHits->SetBinContent(5 + ich, mMultHitNB[ich]->GetMean());
179-
}
180174
}
181175

182176
void DigitsQcTask::endOfActivity(Activity& /*activity*/)

0 commit comments

Comments
 (0)