@@ -67,9 +67,9 @@ Quality DigitsQcCheck::check(std::map<std::string, std::shared_ptr<MonitorObject
6767 TH1 * meanMultiHits = nullptr ;
6868 for (auto & item : *moMap) {
6969 if (item.second ->getName () == " NbDigitTF" ) {
70- mHistoHelper .setNTFs (static_cast <TH1F *>(item.second ->getObject ())->GetBinContent (1 ));
70+ mHistoHelper .setNTFs (dynamic_cast <TH1F *>(item.second ->getObject ())->GetBinContent (1 ));
7171 } else if (item.second ->getName () == " MeanMultiHits" ) {
72- meanMultiHits = static_cast <TH1 *>(item.second ->getObject ());
72+ meanMultiHits = dynamic_cast <TH1 *>(item.second ->getObject ());
7373 }
7474 }
7575
@@ -88,7 +88,7 @@ Quality DigitsQcCheck::check(std::map<std::string, std::shared_ptr<MonitorObject
8888 for (auto & item : *moMap) {
8989 if (item.second ->getName ().find (" MultHitMT" ) != std::string::npos) {
9090 std::string hName = item.second ->getName ();
91- auto mean = static_cast <TH1 *>(item.second ->getObject ())->GetMean ();
91+ auto mean = dynamic_cast <TH1 *>(item.second ->getObject ())->GetMean ();
9292 meanMultiHits->SetBinContent (ref[hName], mean);
9393 auto qual = Quality::Good;
9494 if (mean == 0 .) {
@@ -124,29 +124,31 @@ Quality DigitsQcCheck::check(std::map<std::string, std::shared_ptr<MonitorObject
124124 nBadLB = 0 ;
125125 maxVal = 0 ;
126126 minVal = 1000 ;
127- auto histo = static_cast <TH2F *>(item.second ->getObject ());
128- mHistoHelper .normalizeHistoTokHz (histo);
129- for (int bx = 1 ; bx < 15 ; bx++) {
130- for (int by = 1 ; by < 37 ; by++) {
131- if (!((bx > 6 ) && (bx < 9 ) && (by > 15 ) && (by < 22 ))) { // central zone empty
132- double val = histo->GetBinContent (bx, by);
133- if (val > maxVal) {
134- maxVal = val;
135- }
136- if (val < minVal) {
137- minVal = val;
138- }
139- if (val == 0 ) {
140- nEmptyLB++;
141- } else if (val > mLocalBoardThreshold ) {
142- nBadLB++;
127+ auto histo = dynamic_cast <TH2F *>(item.second ->getObject ());
128+ if (histo) {
129+ mHistoHelper .normalizeHistoTokHz (histo);
130+ for (int bx = 1 ; bx < 15 ; bx++) {
131+ for (int by = 1 ; by < 37 ; by++) {
132+ if (!((bx > 6 ) && (bx < 9 ) && (by > 15 ) && (by < 22 ))) { // central zone empty
133+ double val = histo->GetBinContent (bx, by);
134+ if (val > maxVal) {
135+ maxVal = val;
136+ }
137+ if (val < minVal) {
138+ minVal = val;
139+ }
140+ if (val == 0 ) {
141+ nEmptyLB++;
142+ } else if (val > mLocalBoardThreshold ) {
143+ nBadLB++;
144+ }
145+ if ((bx == 1 ) || (bx == 14 ) || (by == 1 ) || (by == 33 )) {
146+ by += 3 ;
147+ } // zones 1 board
148+ else if (!((bx > 4 ) && (bx < 11 ) && (by > 12 ) && (by < 25 ))) {
149+ by += 1 ;
150+ } // zones 2 boards
143151 }
144- if ((bx == 1 ) || (bx == 14 ) || (by == 1 ) || (by == 33 )) {
145- by += 3 ;
146- } // zones 1 board
147- else if (!((bx > 4 ) && (bx < 11 ) && (by > 12 ) && (by < 25 ))) {
148- by += 1 ;
149- } // zones 2 boards
150152 }
151153 }
152154 }
@@ -211,19 +213,23 @@ void DigitsQcCheck::beautify(std::shared_ptr<MonitorObject> mo, Quality checkRes
211213 if (mo->getName ().find (" MultHitMT" ) != std::string::npos) {
212214 // This matches "MultHitMT*"
213215 if (mHistoHelper .getNTFs () > 0 ) {
214- auto histo = static_cast <TH1F *>(mo->getObject ());
215- histo->SetFillColor (color);
216- mHistoHelper .addLatex (histo, 0.15 , 0.82 , color, Form (" Limit : [%g;%g]" , mMinMultThreshold , mMeanMultThreshold ));
217- mHistoHelper .addLatex (histo, 0.3 , 0.62 , color, Form (" Mean=%g " , histo->GetMean ()));
218- mHistoHelper .addLatex (histo, 0.3 , 0.52 , color, fmt::format (" Quality::{}" , checkResult.getName ()));
219- histo->SetTitleSize (0.04 );
220- histo->SetLineColor (kBlack );
216+ auto histo = dynamic_cast <TH1F *>(mo->getObject ());
217+ if (histo) {
218+ histo->SetFillColor (color);
219+ mHistoHelper .addLatex (histo, 0.15 , 0.82 , color, Form (" Limit : [%g;%g]" , mMinMultThreshold , mMeanMultThreshold ));
220+ mHistoHelper .addLatex (histo, 0.3 , 0.62 , color, Form (" Mean=%g " , histo->GetMean ()));
221+ mHistoHelper .addLatex (histo, 0.3 , 0.52 , color, fmt::format (" Quality::{}" , checkResult.getName ()));
222+ histo->SetTitleSize (0.04 );
223+ histo->SetLineColor (kBlack );
224+ }
221225 }
222226 } else if (mo->getName () == " MeanMultiHits" ) {
223- auto histo = static_cast <TH1F *>(mo->getObject ());
224- mHistoHelper .addLatex (histo, 0.3 , 0.52 , color, fmt::format (" Quality::{}" , checkResult.getName ()));
225- mHistoHelper .updateTitleWithNTF (histo);
226- histo->SetStats (0 );
227+ auto histo = dynamic_cast <TH1F *>(mo->getObject ());
228+ if (histo) {
229+ mHistoHelper .addLatex (histo, 0.3 , 0.52 , color, fmt::format (" Quality::{}" , checkResult.getName ()));
230+ mHistoHelper .updateTitleWithNTF (histo);
231+ histo->SetStats (0 );
232+ }
227233 } else {
228234 // Change palette contours so that visibility of low-multiplicity strips or boards is improved
229235 std::vector<double > zcontoursLoc{ 0 , 0.025 , 0.05 , 0.075 , 0.1 , 0.25 , 0.5 , 0.75 , 1 , 2.5 , 5 , 7.5 , 10 , 25 , 50 , 75 , 100 };
@@ -238,7 +244,7 @@ void DigitsQcCheck::beautify(std::shared_ptr<MonitorObject> mo, Quality checkRes
238244 std::string lbHistoName = " LocalBoardsMap" ;
239245 if (mo->getName ().find (lbHistoName) != std::string::npos) {
240246 // This matches "LocalBoardsMap*"
241- auto histo = static_cast <TH2F *>(mo->getObject ());
247+ auto histo = dynamic_cast <TH2F *>(mo->getObject ());
242248 if (mo->getName () == lbHistoName) {
243249 // This is LocalBoardsMap and it was already scaled in the checker
244250 if (!checkResult.getReasons ().empty ()) {
@@ -260,13 +266,13 @@ void DigitsQcCheck::beautify(std::shared_ptr<MonitorObject> mo, Quality checkRes
260266 if (mo->getName ().find (" BendHitsMap" ) != std::string::npos) {
261267 // This matches both [N]BendHitsMap*
262268 int maxStrip = 20 ; // 20kHz Max Display
263- auto histo = static_cast <TH2F *>(mo->getObject ());
269+ auto histo = dynamic_cast <TH2F *>(mo->getObject ());
264270 mHistoHelper .normalizeHistoTokHz (histo);
265271 histo->SetMaximum (zcontoursStrip.back ());
266272 histo->SetContour (zcontoursStrip.size (), zcontoursStrip.data ());
267273 histo->SetStats (0 );
268274 } else if (mo->getName () == " Hits" ) {
269- auto histo = static_cast <TH1F *>(mo->getObject ());
275+ auto histo = dynamic_cast <TH1F *>(mo->getObject ());
270276 mHistoHelper .normalizeHistoTokHz (histo);
271277 histo->SetStats (0 );
272278 }
0 commit comments