From 54b785d1efb1a01cfa5702902189bef8776e45da Mon Sep 17 00:00:00 2001 From: Cristina Terrevoli Date: Fri, 8 Oct 2021 20:03:15 +0200 Subject: [PATCH] [EMCAL-527] checkers beautify and remove hist stat --- Modules/EMCAL/src/RawCheck.cxx | 230 +++++++++++++++++++-------------- Modules/EMCAL/src/RawTask.cxx | 25 ++++ 2 files changed, 161 insertions(+), 94 deletions(-) diff --git a/Modules/EMCAL/src/RawCheck.cxx b/Modules/EMCAL/src/RawCheck.cxx index b56bc842b7..5d6d0fc18f 100644 --- a/Modules/EMCAL/src/RawCheck.cxx +++ b/Modules/EMCAL/src/RawCheck.cxx @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -46,76 +47,88 @@ Quality RawCheck::check(std::map>* m } if (mo->getName().find("BunchMinRawAmplitude") == 0) { auto* h = dynamic_cast(mo->getObject()); - Float_t totentries = h->Integral(10, 100); // Exclude dominant part of the channels for which the signal is in the noise range below pedestal - Float_t entriesBadRegion = h->Integral(20, 60); - int first = h->GetXaxis()->GetFirst(), - last = h->GetXaxis()->GetLast(); - h->GetXaxis()->SetRangeUser(20, 60); - Int_t maxbin = h->GetMaximumBin(); - h->GetXaxis()->SetRange(first, last); - if (maxbin > 30 && maxbin < 50) { - //Float_t entries = h->GetBinContent(maxbin + 1); - if (entriesBadRegion > 0.5 * totentries) { - result = Quality::Bad; + if (h->GetEntries() == 0) { + result = Quality::Medium; + } else { + Float_t totentries = h->Integral(10, 100); // Exclude dominant part of the channels for which the signal is in the noise range below pedestal + Float_t entriesBadRegion = h->Integral(20, 60); + int first = h->GetXaxis()->GetFirst(), + last = h->GetXaxis()->GetLast(); + h->GetXaxis()->SetRangeUser(20, 60); + Int_t maxbin = h->GetMaximumBin(); + h->GetXaxis()->SetRange(first, last); + if (maxbin > 30 && maxbin < 50) { + //Float_t entries = h->GetBinContent(maxbin + 1); + if (entriesBadRegion > 0.5 * totentries) { + result = Quality::Bad; + } } - } - } // checker for the raw ampl histos (second peak around 40) + } // checker for the raw ampl histos (second peak around 40) + } if (mo->getName() == "FECidMaxChWithInput_perSM") { double errormargin = 2.; auto* h = dynamic_cast(mo->getObject()); - bool hasBadFEC = false; - for (int ism = 0; ism < h->GetXaxis()->GetNbins(); ism++) { - std::unique_ptr smbin(h->ProjectionY("nextsm", ism + 1, ism + 1)); - if (!smbin->GetEntries()) - continue; - // get count rates for truncated mean - std::vector feccounts; - for (int ifec = 0; ifec < smbin->GetXaxis()->GetNbins(); ifec++) { - double countrate = smbin->GetBinContent(ifec + 1); - if (countrate > DBL_EPSILON) - feccounts.push_back(countrate); - } - // evaluate truncated mean to find outliers - double mean, sigma; - TRobustEstimator estimmator; - estimmator.EvaluateUni(feccounts.size(), feccounts.data(), mean, sigma); - // compare count rate of each FEC to truncated mean - for (int ifec = 0; ifec < smbin->GetXaxis()->GetNbins(); ifec++) { - double countrate = smbin->GetBinContent(ifec + 1); - if (countrate > mean + errormargin * sigma) { - hasBadFEC = true; - break; + if (h->GetEntries() == 0) { + result = Quality::Medium; + } else { + bool hasBadFEC = false; + for (int ism = 0; ism < h->GetXaxis()->GetNbins(); ism++) { + std::unique_ptr smbin(h->ProjectionY("nextsm", ism + 1, ism + 1)); + if (!smbin->GetEntries()) + continue; + // get count rates for truncated mean + std::vector feccounts; + for (int ifec = 0; ifec < smbin->GetXaxis()->GetNbins(); ifec++) { + double countrate = smbin->GetBinContent(ifec + 1); + if (countrate > DBL_EPSILON) + feccounts.push_back(countrate); + } + // evaluate truncated mean to find outliers + double mean, sigma; + TRobustEstimator estimmator; + estimmator.EvaluateUni(feccounts.size(), feccounts.data(), mean, sigma); + // compare count rate of each FEC to truncated mean + for (int ifec = 0; ifec < smbin->GetXaxis()->GetNbins(); ifec++) { + double countrate = smbin->GetBinContent(ifec + 1); + if (countrate > mean + errormargin * sigma) { + hasBadFEC = true; + break; + } } + if (hasBadFEC) + break; } if (hasBadFEC) - break; + result = Quality::Bad; } - if (hasBadFEC) - result = Quality::Bad; } if (mo->getName() == "PayloadSizeTFPerDDL") { std::map meanPayloadSizeDDL; double errormargin = 2.; auto* h = dynamic_cast(mo->getObject()); - std::vector meanPayloads; - for (int ism = 0; ism < h->GetXaxis()->GetNbins(); ism++) { - std::unique_ptr smbin(h->ProjectionY("nextsm", ism + 1, ism + 1)); - if (!smbin->GetEntries()) { - meanPayloadSizeDDL[ism] = 0; - continue; + if (h->GetEntries() == 0) { + result = Quality::Medium; + } else { + std::vector meanPayloads; + for (int ism = 0; ism < h->GetXaxis()->GetNbins(); ism++) { + std::unique_ptr smbin(h->ProjectionY("nextsm", ism + 1, ism + 1)); + if (!smbin->GetEntries()) { + meanPayloadSizeDDL[ism] = 0; + continue; + } + auto meanPayload = smbin->GetMean(); + meanPayloads.push_back(meanPayload); + meanPayloadSizeDDL[ism] = meanPayload; + // get count rates for truncated mean } - auto meanPayload = smbin->GetMean(); - meanPayloads.push_back(meanPayload); - meanPayloadSizeDDL[ism] = meanPayload; - // get count rates for truncated mean - } - double mean, sigma; - TRobustEstimator estimmator; - estimmator.EvaluateUni(meanPayloads.size(), meanPayloads.data(), mean, sigma); - for (auto [ddlID, payloadmean] : meanPayloadSizeDDL) { - if (payloadmean > mean + errormargin * sigma) { - result = Quality::Bad; - break; + double mean, sigma; + TRobustEstimator estimmator; + estimmator.EvaluateUni(meanPayloads.size(), meanPayloads.data(), mean, sigma); + for (auto [ddlID, payloadmean] : meanPayloadSizeDDL) { + if (payloadmean > mean + errormargin * sigma) { + result = Quality::Bad; + break; + } } } } @@ -127,26 +140,27 @@ std::string RawCheck::getAcceptedType() { return "TH1"; } void RawCheck::beautify(std::shared_ptr mo, Quality checkResult) { + QcInfoLogger::GetInstance().setDetector("EMC"); if (mo->getName().find("Error") != std::string::npos) { auto* h = dynamic_cast(mo->getObject()); - TPaveText* msg = new TPaveText(0.5, 0.5, 0.9, 0.75, "NDC"); - h->GetListOfFunctions()->Add(msg); - msg->SetName(Form("%s_msg", mo->GetName())); if (checkResult == Quality::Good) { //check the error type, loop on X entries to find the SM and on Y to find the Error Number - // - msg->Clear(); - msg->AddText("No Error: OK!!!"); - msg->SetFillColor(kGreen); - // - h->SetFillColor(kGreen); + TLatex* msg = new TLatex(0.2, 0.8, "#color[418]{No Error: OK}"); + msg->SetNDC(); + msg->SetTextSize(16); + msg->SetTextFont(43); + h->GetListOfFunctions()->Add(msg); + msg->Draw(); } else if (checkResult == Quality::Bad) { LOG(info) << "Quality::Bad, setting to red"; - msg->Clear(); - msg->AddText("Presence of Error Code"); //Type of the Error, in SM XX - msg->AddText("If NOT a technical run,"); - msg->AddText("call EMCAL on-call."); + QcInfoLogger::GetInstance() << QcInfoLogger::Error << " QualityBad:Presence of Error Code " << AliceO2::InfoLogger::InfoLogger::endm; + TLatex* msg = new TLatex(0.2, 0.8, "#color[2]{Presence of Error Code}"); + msg->SetNDC(); + msg->SetTextSize(16); + msg->SetTextFont(43); + h->GetListOfFunctions()->Add(msg); + msg->Draw(); h->SetFillColor(kRed); } else if (checkResult == Quality::Medium) { LOG(info) << "Quality::medium, setting to orange"; @@ -156,50 +170,78 @@ void RawCheck::beautify(std::shared_ptr mo, Quality checkResult) } if (mo->getName().find("BunchMinRawAmplitude") != std::string::npos) { auto* h = dynamic_cast(mo->getObject()); - TPaveText* msg = new TPaveText(0.5, 0.5, 0.9, 0.75, "NDC"); - h->GetListOfFunctions()->Add(msg); - msg->SetName(Form("%s_msg", mo->GetName())); - if (checkResult == Quality::Good) { - msg->Clear(); - msg->AddText("No Error: OK!!!"); - msg->SetFillColor(kGreen); + TLatex* msg = new TLatex(0.3, 0.8, "#color[418]{Data OK}"); + msg->SetNDC(); + msg->SetTextSize(16); + msg->SetTextFont(43); + h->GetListOfFunctions()->Add(msg); + msg->Draw(); h->SetFillColor(kGreen); } else if (checkResult == Quality::Bad) { LOG(info) << "Quality::Bad, setting to red"; - msg->Clear(); - msg->AddText("Min. bunch amplitude outside limits"); //Type of the Error, in SM XX - msg->AddText("If NOT a technical run,"); - msg->AddText("call EMCAL on-call."); + QcInfoLogger::GetInstance() << QcInfoLogger::Error << " QualityBad:Bunch min Amplitude outside limits " << AliceO2::InfoLogger::InfoLogger::endm; + TLatex* msg = new TLatex(0.2, 0.8, "#color[2]{Data outside limits}"); + msg->SetNDC(); + msg->SetTextSize(16); + msg->SetTextFont(43); + msg->SetTextColor(kRed); + h->GetListOfFunctions()->Add(msg); + msg->Draw(); + msg = new TLatex(0.2, 0.7, "#color[2]{If NOT techn.run: call EMCAL oncall}"); + msg->SetNDC(); + msg->SetTextSize(16); + msg->SetTextFont(43); + msg->SetTextColor(kRed); h->SetFillColor(kRed); + h->GetListOfFunctions()->Add(msg); + msg->Draw(); } else if (checkResult == Quality::Medium) { LOG(info) << "Quality::medium, setting to orange"; - h->SetFillColor(kOrange); + TLatex* msg = new TLatex(0.2, 0.8, "#color[42]{empty:if in run, call EMCAL oncall}"); + msg->SetNDC(); + msg->SetTextSize(16); + msg->SetTextFont(43); + h->GetListOfFunctions()->Add(msg); + msg->Draw(); } h->SetLineColor(kBlack); } std::vector payloadhists = { "FECidMaxChWithInput_perSM", "PayloadSizeTFPerDDL" }; if (std::find(payloadhists.begin(), payloadhists.end(), mo->getName()) != payloadhists.end()) { auto* h = dynamic_cast(mo->getObject()); - TPaveText* msg = new TPaveText(0.5, 0.5, 0.9, 0.75, "NDC"); - h->GetListOfFunctions()->Add(msg); - msg->SetName(Form("%s_msg", mo->GetName())); - if (checkResult == Quality::Good) { - msg->Clear(); - msg->AddText("No Error: OK!!!"); - msg->SetFillColor(kGreen); + TLatex* msg = new TLatex(0.2, 0.8, "#color[418]{Data OK}"); + msg->SetNDC(); + msg->SetTextSize(16); + msg->SetTextFont(43); h->SetFillColor(kGreen); + h->GetListOfFunctions()->Add(msg); + msg->Draw(); } else if (checkResult == Quality::Bad) { LOG(info) << "Quality::Bad, setting to red"; - msg->Clear(); - msg->AddText("entry out of trend!"); //Type of the Error, in SM XX - msg->AddText("If NOT a technical run,"); - msg->AddText("call EMCAL on-call."); - h->SetFillColor(kRed); + TLatex* msg = new TLatex(0.2, 0.8, "#color[2]{Entry out of trend!}"); + msg->SetNDC(); + msg->SetTextSize(16); + msg->SetTextFont(43); + msg->SetTextColor(kRed); + h->GetListOfFunctions()->Add(msg); + msg->Draw(); + msg = new TLatex(0.2, 0.7, "#color[2]{If NOT techn.run: call EMCAL oncall}"); + msg->SetNDC(); + msg->SetTextSize(16); + msg->SetTextFont(43); + msg->SetTextColor(kRed); + h->GetListOfFunctions()->Add(msg); + msg->Draw(); } else if (checkResult == Quality::Medium) { LOG(info) << "Quality::medium, setting to orange"; - h->SetFillColor(kOrange); + TLatex* msg = new TLatex(0.2, 0.8, "#color[42]{empty:if in run, call EMCAL-oncall}"); + msg->SetNDC(); + msg->SetTextSize(16); + msg->SetTextFont(43); + h->GetListOfFunctions()->Add(msg); + msg->Draw(); } h->SetLineColor(kBlack); } diff --git a/Modules/EMCAL/src/RawTask.cxx b/Modules/EMCAL/src/RawTask.cxx index a786f7ae65..37c09cf168 100644 --- a/Modules/EMCAL/src/RawTask.cxx +++ b/Modules/EMCAL/src/RawTask.cxx @@ -216,16 +216,19 @@ void RawTask::initialize(o2::framework::InitContext& /*ctx*/) mPayloadSizePerDDL = new TH2F("PayloadSizePerDDL", "Payload Size / Event", 40, 0, 40, 200, 0, 20); mPayloadSizePerDDL->GetXaxis()->SetTitle("DDL"); mPayloadSizePerDDL->GetYaxis()->SetTitle("Payload Size / Event (kB)"); + mPayloadSizePerDDL->SetStats(0); getObjectsManager()->startPublishing(mPayloadSizePerDDL); mPayloadSizeTFPerDDL = new TH2F("PayloadSizeTFPerDDL", "Payload Size / TF", 40, 0, 40, 100, 0, 100); mPayloadSizeTFPerDDL->GetXaxis()->SetTitle("DDL"); mPayloadSizeTFPerDDL->GetYaxis()->SetTitle("Payload Size / TF (kB)"); + mPayloadSizeTFPerDDL->SetStats(0); getObjectsManager()->startPublishing(mPayloadSizeTFPerDDL); mPayloadSize = new TH1F("PayloadSize", "PayloadSize", 20, 0, 60000000); // mPayloadSize->GetXaxis()->SetTitle("bytes"); mPayloadSize->GetYaxis()->SetTitle("Counts"); + mPayloadSize->SetStats(0); getObjectsManager()->startPublishing(mPayloadSize); mErrorTypeAltro = new TH2F("ErrorTypePerSM", "ErrorTypeForSM", 40, 0, 40, 10, 0, 10); @@ -241,29 +244,35 @@ void RawTask::initialize(o2::framework::InitContext& /*ctx*/) mErrorTypeAltro->GetYaxis()->SetBinLabel(8, "Channel"); mErrorTypeAltro->GetYaxis()->SetBinLabel(9, "Mapper HWAddress"); mErrorTypeAltro->GetYaxis()->SetBinLabel(10, "Geometry InvalidCell"); + mErrorTypeAltro->SetStats(0); getObjectsManager() ->startPublishing(mErrorTypeAltro); mNbunchPerChan = new TH1F("NumberBunchPerChannel", "Number of bunches per channel", 4, -0.5, 3.5); mNbunchPerChan->GetXaxis()->SetTitle("# bunches per channels"); + mNbunchPerChan->SetStats(0); getObjectsManager()->startPublishing(mNbunchPerChan); mNofADCsamples = new TH1F("NumberOfADCPerChannel", "Number od ADC samples per channel", 15, -0.5, 14.5); mNofADCsamples->GetXaxis()->SetTitle("# of ADC sample per channels"); + mNofADCsamples->SetStats(0); getObjectsManager()->startPublishing(mNofADCsamples); mADCsize = new TH1F("ADCsizePerBunch", "ADCsizePerBunch", 15, -0.5, 14.5); mADCsize->GetXaxis()->SetTitle("ADC size per bunch"); + mADCsize->SetStats(0); getObjectsManager()->startPublishing(mADCsize); mFECmaxCountperSM = new TH2F("NumberOfChWithInput_perSM", "NumberOfChWithInput_perSM", 20, 0, 20, 40, 0, 40); mFECmaxCountperSM->GetXaxis()->SetTitle("SM"); mFECmaxCountperSM->GetYaxis()->SetTitle("max channel count"); + mFECmaxCountperSM->SetStats(0); getObjectsManager()->startPublishing(mFECmaxCountperSM); mFECmaxIDperSM = new TH2F("FECidMaxChWithInput_perSM", "FECidMaxChWithInput_perSM", 20, 0, 20, 40, 0, 40); mFECmaxIDperSM->GetXaxis()->SetTitle("SM"); mFECmaxIDperSM->GetYaxis()->SetTitle("FEC id"); + mFECmaxIDperSM->SetStats(0); getObjectsManager()->startPublishing(mFECmaxIDperSM); //histos per SM @@ -271,11 +280,13 @@ void RawTask::initialize(o2::framework::InitContext& /*ctx*/) mFECmaxCount[ism] = new TH1F(Form("NumberOfChWithInputSM_%d", ism), Form("Number of Channels in max FEC for SM %d", ism), 40, -0.5, 39.5); mFECmaxCount[ism]->GetXaxis()->SetTitle("max FEC count"); mFECmaxCount[ism]->GetYaxis()->SetTitle("maximum occupancy"); + mFECmaxCount[ism]->SetStats(0); getObjectsManager()->startPublishing(mFECmaxCount[ism]); mFECmaxID[ism] = new TH1F(Form("IDFECMaxChWithInputSM_%d", ism), Form("ID FEC Max Number of Channels with input %d", ism), 40, -0.5, 39.5); mFECmaxID[ism]->GetXaxis()->SetTitle("FEC id"); mFECmaxID[ism]->GetYaxis()->SetTitle("maximum occupancy"); + mFECmaxID[ism]->SetStats(0); getObjectsManager()->startPublishing(mFECmaxID[ism]); } @@ -292,6 +303,7 @@ void RawTask::initialize(o2::framework::InitContext& /*ctx*/) histosRawAmplRmsRC = new TProfile2D(Form("RMSADC_EMCAL_%s", histoStr[trg].Data()), Form("Bunch ADC RMS (%s)", histoStr[trg].Data()), 96, 0, 95, 208, 0, 207); histosRawAmplRmsRC->GetXaxis()->SetTitle("col"); histosRawAmplRmsRC->GetYaxis()->SetTitle("row"); + histosRawAmplRmsRC->SetStats(0); getObjectsManager()->startPublishing(histosRawAmplRmsRC); histosRawAmplMeanRC = new TProfile2D(Form("MeanADC_EMCAL_%s", histoStr[trg].Data()), Form("Bunch ADC mean (%s)", histoStr[trg].Data()), 96, 0, 95, 208, 0, 207); @@ -302,11 +314,13 @@ void RawTask::initialize(o2::framework::InitContext& /*ctx*/) histosRawAmplMaxRC = new TProfile2D(Form("MaxADC_EMCAL_%s", histoStr[trg].Data()), Form("Channel ADC max (%s)", histoStr[trg].Data()), 96, 0, 95, 208, 0, 207); histosRawAmplMaxRC->GetXaxis()->SetTitle("col"); histosRawAmplMaxRC->GetYaxis()->SetTitle("row"); + histosRawAmplMaxRC->SetStats(0); getObjectsManager()->startPublishing(histosRawAmplMaxRC); histosRawAmplMinRC = new TProfile2D(Form("MinADC_EMCAL_%s", histoStr[trg].Data()), Form("Channel ADC min (%s)", histoStr[trg].Data()), 96, 0, 95, 208, 0, 207); histosRawAmplMinRC->GetXaxis()->SetTitle("col"); histosRawAmplMinRC->GetYaxis()->SetTitle("raw"); + histosRawAmplMinRC->SetStats(0); getObjectsManager()->startPublishing(histosRawAmplMinRC); TH1D* histosRawMinFull; @@ -316,16 +330,19 @@ void RawTask::initialize(o2::framework::InitContext& /*ctx*/) histosRawMinFull = new TH1D(Form("BunchMinRawAmplitudeFull_%s", histoStr[trg].Data()), Form("Bunch min raw amplitude EMCAL+DCAL (%s)", histoStr[trg].Data()), 100, 0., 100.); histosRawMinFull->GetXaxis()->SetTitle("Min raw amplitude (ADC)"); histosRawMinFull->GetYaxis()->SetTitle("Counts"); + histosRawMinFull->SetStats(0); getObjectsManager()->startPublishing(histosRawMinFull); histosRawMinEMCAL = new TH1D(Form("BunchMinRawAmplitudeEMCAL_%s", histoStr[trg].Data()), Form("Bunch min raw amplitude EMCAL (%s)", histoStr[trg].Data()), 100, 0., 100.); histosRawMinEMCAL->GetXaxis()->SetTitle("Min raw amplitude (ADC)"); histosRawMinEMCAL->GetYaxis()->SetTitle("Counts"); + histosRawMinEMCAL->SetStats(0); getObjectsManager()->startPublishing(histosRawMinEMCAL); histosRawMinDCAL = new TH1D(Form("BunchMinRawAmplitudeDCAL_%s", histoStr[trg].Data()), Form("Bunch min raw amplitude DCAL (%s)", histoStr[trg].Data()), 100, 0., 100.); histosRawMinDCAL->GetXaxis()->SetTitle("Min raw amplitude (ADC)"); histosRawMinDCAL->GetYaxis()->SetTitle("Counts"); + histosRawMinDCAL->SetStats(0); getObjectsManager()->startPublishing(histosRawMinDCAL); std::array histosMinBunchAmpSM; @@ -342,41 +359,49 @@ void RawTask::initialize(o2::framework::InitContext& /*ctx*/) histosMaxSMAmpSM[ism] = new TH1F(Form("SMMaxRawAmplitude_SM%d_%s", ism, histoStr[trg].Data()), Form("Max SM raw amplitude SM%d (%s)", ism, histoStr[trg].Data()), 100, 0., 100.); histosMaxSMAmpSM[ism]->GetXaxis()->SetTitle("Max raw amplitude (ADC)"); histosMaxSMAmpSM[ism]->GetYaxis()->SetTitle("Counts"); + histosMaxSMAmpSM[ism]->SetStats(0); getObjectsManager()->startPublishing(histosMaxSMAmpSM[ism]); histosMinSMAmpSM[ism] = new TH1F(Form("SMMinRawAmplitude_SM%d_%s", ism, histoStr[trg].Data()), Form("Min SM raw amplitude SM%d (%s)", ism, histoStr[trg].Data()), 100, 0., 100.); histosMinSMAmpSM[ism]->GetXaxis()->SetTitle("Min raw amplitude (ADC)"); histosMinSMAmpSM[ism]->GetYaxis()->SetTitle("Counts"); + histosMinSMAmpSM[ism]->SetStats(0); getObjectsManager()->startPublishing(histosMinSMAmpSM[ism]); histosMaxBunchAmpSM[ism] = new TH1F(Form("BunchMaxRawAmplitude_SM%d_%s", ism, histoStr[trg].Data()), Form("Max bunch raw amplitude SM%d (%s)", ism, histoStr[trg].Data()), 500, 0., 500.); histosMaxBunchAmpSM[ism]->GetXaxis()->SetTitle("Max Raw Amplitude (ADC)"); histosMaxBunchAmpSM[ism]->GetYaxis()->SetTitle("Counts"); + histosMaxBunchAmpSM[ism]->SetStats(0); getObjectsManager()->startPublishing(histosMaxBunchAmpSM[ism]); histosMinBunchAmpSM[ism] = new TH1F(Form("BunchMinRawAmplitude_SM%d_%s", ism, histoStr[trg].Data()), Form("Min bunch raw amplitude SM%d (%s)", ism, histoStr[trg].Data()), 100, 0., 100.); histosMinBunchAmpSM[ism]->GetXaxis()->SetTitle("Min Raw Amplitude (ADC)"); histosMinBunchAmpSM[ism]->GetYaxis()->SetTitle("Counts"); + histosMinBunchAmpSM[ism]->SetStats(0); getObjectsManager()->startPublishing(histosMinBunchAmpSM[ism]); histosBunchRawAmplRmsRC[ism] = new TProfile2D(Form("BunchRCRMSAmplitudeSM%d_%s", ism, histoStr[trg].Data()), Form("Bunch ADC RMS SM%d (%s)", ism, histoStr[trg].Data()), 48, 0, 48, 24, 0, 24); histosBunchRawAmplRmsRC[ism]->GetXaxis()->SetTitle("col"); histosBunchRawAmplRmsRC[ism]->GetYaxis()->SetTitle("row"); + histosBunchRawAmplRmsRC[ism]->SetStats(0); getObjectsManager()->startPublishing(histosBunchRawAmplRmsRC[ism]); histosBunchRawAmplMeanRC[ism] = new TProfile2D(Form("BunchRCMeanAmplitudeSM%d_%s", ism, histoStr[trg].Data()), Form("Bunch ADC mean SM%d (%s)", ism, histoStr[trg].Data()), 48, 0, 48, 24, 0, 24); histosBunchRawAmplMeanRC[ism]->GetXaxis()->SetTitle("col"); histosBunchRawAmplMeanRC[ism]->GetYaxis()->SetTitle("row"); + histosBunchRawAmplMeanRC[ism]->SetStats(0); getObjectsManager()->startPublishing(histosBunchRawAmplMeanRC[ism]); histosMaxChannelRawAmplRC[ism] = new TProfile2D(Form("ChannelRCMaxAmplitudeSM%d_%s", ism, histoStr[trg].Data()), Form("Channel ADC max SM%d (%s)", ism, histoStr[trg].Data()), 48, 0, 47, 24, 0, 23); histosMaxChannelRawAmplRC[ism]->GetXaxis()->SetTitle("col"); histosMaxChannelRawAmplRC[ism]->GetYaxis()->SetTitle("row"); + histosMaxChannelRawAmplRC[ism]->SetStats(0); getObjectsManager()->startPublishing(histosMaxChannelRawAmplRC[ism]); histosMinChannelRawAmpRC[ism] = new TProfile2D(Form("ChannelRCMinAmplitudeSM%d_%s", ism, histoStr[trg].Data()), Form("Channel ADC min SM%d (%s)", ism, histoStr[trg].Data()), 48, 0, 47, 24, 0, 23); histosMinChannelRawAmpRC[ism]->GetXaxis()->SetTitle("col"); histosMinChannelRawAmpRC[ism]->GetYaxis()->SetTitle("raw"); + histosMinChannelRawAmpRC[ism]->SetStats(0); getObjectsManager()->startPublishing(histosMinChannelRawAmpRC[ism]); } //loop SM mMaxSMRawAmplSM[triggers[trg]] = histosMaxSMAmpSM;