From 76835e05b0c3aec41d92e6964394e093ddb2662b Mon Sep 17 00:00:00 2001 From: Lucia Anna Tarasovicova Date: Tue, 16 Jul 2024 11:09:08 +0200 Subject: [PATCH 1/2] Checking the change in nSigma instead of percentage --- Modules/CTP/include/CTP/RawDataQcTask.h | 1 + Modules/CTP/include/CTP/RawDataReaderCheck.h | 24 ++++---- Modules/CTP/src/RawDataQcTask.cxx | 26 +++++++-- Modules/CTP/src/RawDataReaderCheck.cxx | 58 +++++++++++++------- Modules/CTP/src/qc-ctp.json | 11 ++-- 5 files changed, 78 insertions(+), 42 deletions(-) diff --git a/Modules/CTP/include/CTP/RawDataQcTask.h b/Modules/CTP/include/CTP/RawDataQcTask.h index 666c107eb3..10644ad6d3 100644 --- a/Modules/CTP/include/CTP/RawDataQcTask.h +++ b/Modules/CTP/include/CTP/RawDataQcTask.h @@ -57,6 +57,7 @@ class CTPRawDataReaderTask final : public TaskInterface std::unique_ptr mHistoMTVXBC = nullptr; // histogram of BC positions to check LHC filling scheme int mRunNumber; long int mTimestamp; + TString classNames[65]; int mIndexMBclass = -1; // index for the MB ctp class, which is used as scaling for the ratios }; diff --git a/Modules/CTP/include/CTP/RawDataReaderCheck.h b/Modules/CTP/include/CTP/RawDataReaderCheck.h index 0fe59b2a77..6223ccc519 100644 --- a/Modules/CTP/include/CTP/RawDataReaderCheck.h +++ b/Modules/CTP/include/CTP/RawDataReaderCheck.h @@ -49,20 +49,22 @@ class RawDataReaderCheck : public o2::quality_control::checker::CheckInterface private: int getRunNumberFromMO(std::shared_ptr mo); int checkChange(TH1D* mHist, TH1D* mHistPrev); + int checkChangeOfRatio(TH1D* mHist, TH1D* mHistPrev, TH1D* mHistAbs); Quality setQualityResult(std::vector& vBad, std::vector& vMedium); void clearIndexVectors(); long int mTimestamp; - float mThreshold = -1; // threshold for BCs - float mThresholdRateBad; // threshold for the relative change in ctp input and class rates - float mThresholdRateMedium; // threshold for the relative change in ctp input and class rates - float mThresholdRateRatioBad; // threshold for the relative change in ctp input and class ratios - float mThresholdRateRatioMedium; // threshold for the relative change in ctp input and class ratios - bool mFlagRatio = false; // flag that a ratio plot is checked - bool mFlagInput = false; // flag that an input plot is checked - TH1D* mHistInputPrevious = nullptr; // histogram storing ctp input rates from previous cycle - TH1D* mHistClassesPrevious = nullptr; // histogram storing ctp class rates from previous cycle - TH1D* mHistInputRatioPrevious = nullptr; // histogram storing ctp input ratios to MB from previous cycle - TH1D* mHistClassRatioPrevious = nullptr; // histogram storing ctp class ratios to MB from previous cycle + float mThreshold = -1; // threshold for BCs + float mThresholdRateBad; // threshold for the relative change in ctp input and class rates + float mThresholdRateMedium; // threshold for the relative change in ctp input and class rates + float mThresholdRateRatioBad; // threshold for the relative change in ctp input and class ratios + float mThresholdRateRatioMedium; // threshold for the relative change in ctp input and class ratios + bool mFlagRatio = false; // flag that a ratio plot is checked + bool mFlagInput = false; // flag that an input plot is checked + TH1D* mHistInputPrevious = nullptr; // histogram storing ctp input rates from previous cycle + TH1D* mHistClassesPrevious = nullptr; // histogram storing ctp class rates from previous cycle + TH1D* mHistInputRatioPrevious = nullptr; // histogram storing ctp input ratios to MB from previous cycle + TH1D* mHistClassRatioPrevious = nullptr; + TH1D* mHistAbsolute = nullptr; // histogram storing ctp class ratios to MB from previous cycle std::vector mVecGoodBC; // vector of good BC positions std::vector mVecMediumBC; // vector of medium BC positions, we expect a BC at this position, but inputs are below mThreshold std::vector mVecBadBC; // vector of bad BC positions, we don't expect a BC at this position, but inputs are abow mThreshold diff --git a/Modules/CTP/src/RawDataQcTask.cxx b/Modules/CTP/src/RawDataQcTask.cxx index 370b6dc101..a81daa35a5 100644 --- a/Modules/CTP/src/RawDataQcTask.cxx +++ b/Modules/CTP/src/RawDataQcTask.cxx @@ -42,12 +42,12 @@ void CTPRawDataReaderTask::initialize(o2::framework::InitContext& /*ctx*/) int nclasses = o2::ctp::CTP_NCLASSES + 1; int norbits = o2::constants::lhc::LHCMaxBunches; mHistoInputs = std::make_unique("inputs", "Input Rates; Input ; Rate [kHz]", ninps, 0, ninps, true); - mHistoClasses = std::make_unique("classes", "Class Rates; Index; Rate [kHz]", nclasses, 0, nclasses, true); + mHistoClasses = std::make_unique("classes", "Class Rates; Class; Rate [kHz]", nclasses, 0, nclasses, true); mHistoInputs->SetStats(0); mHistoClasses->SetStats(0); mHistoMTVXBC = std::make_unique("bcMTVX", "BC position of MTVX", norbits, 0, norbits); mHistoInputRatios = std::make_unique("inputRatio", "Input Ratio to MTVX; Input; Ratio;", ninps, 0, ninps, true); - mHistoClassRatios = std::make_unique("classRatio", "Class Ratio to MB; Index; Ratio", nclasses, 0, nclasses, true); + mHistoClassRatios = std::make_unique("classRatio", "Class Ratio to MB; Class; Ratio", nclasses, 0, nclasses, true); getObjectsManager()->startPublishing(mHistoInputs.get()); getObjectsManager()->startPublishing(mHistoClasses.get()); getObjectsManager()->startPublishing(mHistoClassRatios.get()); @@ -56,6 +56,11 @@ void CTPRawDataReaderTask::initialize(o2::framework::InitContext& /*ctx*/) mDecoder.setDoLumi(1); mDecoder.setDoDigits(1); + for (size_t i = 0; i < 65; i++) { + classNames[i] = ""; + } + mHistoClassRatios.get()->GetXaxis()->CenterLabels(true); + mHistoClasses.get()->GetXaxis()->CenterLabels(true); } void CTPRawDataReaderTask::startOfActivity(const Activity& activity) @@ -99,9 +104,9 @@ void CTPRawDataReaderTask::startOfActivity(const Activity& activity) if (ok) { // get the index of the MB reference class ILOG(Info, Support) << "CTP config found, run:" << run << ENDM; - // std::vector ctpcls = CTPconfig.getCTPClasses(); std::vector ctpcls = ctpconfigdb->getCTPClasses(); for (size_t i = 0; i < ctpcls.size(); i++) { + classNames[i] = ctpcls[i].name.c_str(); if (ctpcls[i].name.find(MBclassName) != std::string::npos) { mIndexMBclass = ctpcls[i].getIndex() + 1; break; @@ -113,6 +118,19 @@ void CTPRawDataReaderTask::startOfActivity(const Activity& activity) if (mIndexMBclass == -1) { mIndexMBclass = 1; } + for (int i = 0; i < 65; i++) { + if (classNames[i] == "") { + mHistoClasses.get()->GetXaxis()->SetBinLabel(i + 1, Form("%i", i + 1)); + mHistoClassRatios.get()->GetXaxis()->SetBinLabel(i + 1, Form("%i", i + 1)); + } else { + mHistoClasses.get()->GetXaxis()->SetBinLabel(i + 1, Form("%s", classNames[i].Data())); + mHistoClassRatios.get()->GetXaxis()->SetBinLabel(i + 1, Form("%s", classNames[i].Data())); + } + } + mHistoClasses.get()->GetXaxis()->SetLabelSize(0.025); + mHistoClasses.get()->GetXaxis()->LabelsOption("v"); + mHistoClassRatios.get()->GetXaxis()->SetLabelSize(0.025); + mHistoClassRatios.get()->GetXaxis()->LabelsOption("v"); } void CTPRawDataReaderTask::startOfCycle() @@ -132,7 +150,7 @@ void CTPRawDataReaderTask::monitorData(o2::framework::ProcessingContext& ctx) o2::framework::InputRecord& inputs = ctx.inputs(); mDecoder.decodeRaw(inputs, filter, outputDigits, lumiPointsHBF1); - //reading the ctp inputs and ctp classes + // reading the ctp inputs and ctp classes std::string nameInput = "MTVX"; auto indexTvx = o2::ctp::CTPInputsConfiguration::getInputIndexFromName(nameInput); for (auto const digit : outputDigits) { diff --git a/Modules/CTP/src/RawDataReaderCheck.cxx b/Modules/CTP/src/RawDataReaderCheck.cxx index 75a12c0432..a9e600741f 100644 --- a/Modules/CTP/src/RawDataReaderCheck.cxx +++ b/Modules/CTP/src/RawDataReaderCheck.cxx @@ -23,6 +23,7 @@ // ROOT #include #include +#include #include #include #include @@ -38,27 +39,28 @@ void RawDataReaderCheck::configure() { // reading the parameters from the config.json // if not available, setting a default value - std::string param = mCustomParameters.atOrDefaultValue("thresholdRateBad", "0.15"); + // the threshold values are nSigma + std::string param = mCustomParameters.atOrDefaultValue("thresholdRateBad", "3"); mThresholdRateBad = std::stof(param); - if (mThresholdRateBad > 1 || mThresholdRateBad < 0) { - mThresholdRateBad = 0.15; + if (mThresholdRateBad > 4 || mThresholdRateBad < 0) { + mThresholdRateBad = 3; } - param = mCustomParameters.atOrDefaultValue("thresholdRateMedium", "0.1"); + param = mCustomParameters.atOrDefaultValue("thresholdRateMedium", "2"); mThresholdRateMedium = std::stof(param); - if (mThresholdRateMedium > 1 || mThresholdRateMedium < 0) { - mThresholdRateMedium = 0.1; + if (mThresholdRateMedium > 4 || mThresholdRateMedium < 0) { + mThresholdRateMedium = 2; } - param = mCustomParameters.atOrDefaultValue("thresholdRateRatioBad", "0.1"); + param = mCustomParameters.atOrDefaultValue("thresholdRateRatioBad", "3"); mThresholdRateRatioBad = std::stof(param); - if (mThresholdRateRatioBad > 1 || mThresholdRateRatioBad < 0) { - mThresholdRateRatioBad = 0.1; + if (mThresholdRateRatioBad > 4 || mThresholdRateRatioBad < 0) { + mThresholdRateRatioBad = 3; } - param = mCustomParameters.atOrDefaultValue("thresholdRateRatioMedium", "0.05"); - mThresholdRateRatioBad = std::stof(param); - if (mThresholdRateRatioMedium > 1 || mThresholdRateRatioMedium < 0) { - mThresholdRateRatioMedium = 0.05; + param = mCustomParameters.atOrDefaultValue("thresholdRateRatioMedium", "2"); + mThresholdRateRatioMedium = std::stof(param); + if (mThresholdRateRatioMedium > 4 || mThresholdRateRatioMedium < 0) { + mThresholdRateRatioMedium = 2; } } @@ -104,10 +106,11 @@ Quality RawDataReaderCheck::check(std::mapClone(); mHistInputPrevious = (TH1D*)h->Clone(); } else if (mo->getName() == "inputRatio") { if (mHistInputRatioPrevious) { - checkChange(h, mHistInputRatioPrevious); + checkChangeOfRatio(h, mHistInputRatioPrevious, mHistAbsolute); delete mHistInputRatioPrevious; result.set(setQualityResult(mVecIndexBad, mVecIndexMedium)); } @@ -118,10 +121,11 @@ Quality RawDataReaderCheck::check(std::mapClone(); mHistClassesPrevious = (TH1D*)h->Clone(); } else if (mo->getName() == "classRatio") { if (mHistClassRatioPrevious) { - checkChange(h, mHistClassRatioPrevious); + checkChangeOfRatio(h, mHistClassRatioPrevious, mHistAbsolute); delete mHistClassRatioPrevious; result.set(setQualityResult(mVecIndexBad, mVecIndexMedium)); } @@ -139,14 +143,27 @@ int RawDataReaderCheck::checkChange(TH1D* mHist, TH1D* mHistPrev) /// this function check how much the rates differ from previous cycle float thrBad = mThresholdRateBad; float thrMedium = mThresholdRateMedium; - if (mFlagRatio) { - thrBad = mThresholdRateRatioBad; - thrMedium = mThresholdRateRatioMedium; + for (size_t i = 1; i < mHist->GetXaxis()->GetNbins() + 1; i++) { // Check how many inputs/classes changed more than a threshold value + double val = mHist->GetBinContent(i); + double valPrev = mHistPrev->GetBinContent(i); + double relDiff = (valPrev != 0) ? (val - valPrev) / TMath::Sqrt(val) : 0; + if (TMath::Abs(relDiff) > thrBad) { + mVecIndexBad.push_back(i - 1); + } else if (TMath::Abs(relDiff) > thrMedium) { + mVecIndexMedium.push_back(i - 1); + } } + return 0; +} +int RawDataReaderCheck::checkChangeOfRatio(TH1D* mHist, TH1D* mHistPrev, TH1D* mHistAbs) +{ + /// this function check how much the rates differ from previous cycle + float thrBad = mThresholdRateRatioBad; + float thrMedium = mThresholdRateRatioMedium; for (size_t i = 1; i < mHist->GetXaxis()->GetNbins() + 1; i++) { // Check how many inputs/classes changed more than a threshold value double val = mHist->GetBinContent(i); double valPrev = mHistPrev->GetBinContent(i); - double relDiff = (valPrev != 0) ? (val - valPrev) / valPrev : 0; + double relDiff = (val != 0) ? (val - valPrev) / (val * TMath::Sqrt(1 / mHistAbs->GetBinContent(3) + 1 / mHistAbs->GetBinContent(i))) : 0; if (TMath::Abs(relDiff) > thrBad) { mVecIndexBad.push_back(i - 1); } else if (TMath::Abs(relDiff) > thrMedium) { @@ -242,6 +259,7 @@ void RawDataReaderCheck::beautify(std::shared_ptr mo, Quality che } h->GetXaxis()->SetLabelSize(0.045); h->GetXaxis()->LabelsOption("v"); + h->GetXaxis()->CenterLabels(true); } if (checkResult == Quality::Bad) { msg->SetTextColor(kRed); @@ -255,7 +273,7 @@ void RawDataReaderCheck::beautify(std::shared_ptr mo, Quality che if (mFlagInput) { msg = std::make_shared(0.45, 0.7 - i * 0.05, Form("Check %s %s", ctpinputs[mVecIndexBad[i]], groupName.c_str())); } else { - msg = std::make_shared(0.45, 0.7 - i * 0.05, Form("Check %s with Index: %d", groupName.c_str(), mVecIndexBad[i])); + msg = std::make_shared(0.45, 0.7 - i * 0.05, Form("Check %s %s", groupName.c_str(), h->GetXaxis()->GetBinLabel(mVecIndexBad[i] + 1))); } msg->SetTextSize(0.03); msg->SetNDC(); diff --git a/Modules/CTP/src/qc-ctp.json b/Modules/CTP/src/qc-ctp.json index 2e6ecc3a76..726838881b 100644 --- a/Modules/CTP/src/qc-ctp.json +++ b/Modules/CTP/src/qc-ctp.json @@ -61,13 +61,10 @@ "MOs": ["bcMTVX","inputs","classes","inputRatio","classRatio"] }], "checkParameters": { - "thresholdRateBad": "0.15", - "thresholdRateMedium": "0.1", - "thresholdRateRatioBad": "0.1", - "thresholdRateRatioMedium": "0.05", - "MBclassName": "CMTVX-B-NOPF", - "cycleDurationSeconds": "60", "":"Use the same value as in the task setting", - "fraction": "0.1", "":"Use the same value as in the dataSamplingPolicies setting" + "thresholdRateBad": "3", + "thresholdRateMedium": "2", + "thresholdRateRatioBad": "3", + "thresholdRateRatioMedium": "2" } } } From bf0d59d0713022ab9bb3cf43912503aafb34cfbd Mon Sep 17 00:00:00 2001 From: Lucia Anna Tarasovicova Date: Thu, 25 Jul 2024 13:09:28 +0200 Subject: [PATCH 2/2] changes requested by Piotr --- Modules/CTP/include/CTP/RawDataQcTask.h | 5 ++++- Modules/CTP/src/RawDataQcTask.cxx | 20 ++++++++++++-------- Modules/CTP/src/RawDataReaderCheck.cxx | 17 ++++++++++++----- Modules/CTP/src/qc-ctp.json | 3 ++- 4 files changed, 30 insertions(+), 15 deletions(-) diff --git a/Modules/CTP/include/CTP/RawDataQcTask.h b/Modules/CTP/include/CTP/RawDataQcTask.h index 10644ad6d3..1deb633d41 100644 --- a/Modules/CTP/include/CTP/RawDataQcTask.h +++ b/Modules/CTP/include/CTP/RawDataQcTask.h @@ -56,8 +56,11 @@ class CTPRawDataReaderTask final : public TaskInterface std::unique_ptr mHistoClassRatios = nullptr; // histogram with ctp class ratios to MB std::unique_ptr mHistoMTVXBC = nullptr; // histogram of BC positions to check LHC filling scheme int mRunNumber; + int indexTvx = -1; + static const int ninps = o2::ctp::CTP_NINPUTS + 1; + static const int nclasses = o2::ctp::CTP_NCLASSES + 1; long int mTimestamp; - TString classNames[65]; + std::string classNames[nclasses]; int mIndexMBclass = -1; // index for the MB ctp class, which is used as scaling for the ratios }; diff --git a/Modules/CTP/src/RawDataQcTask.cxx b/Modules/CTP/src/RawDataQcTask.cxx index a81daa35a5..a79fbfbffd 100644 --- a/Modules/CTP/src/RawDataQcTask.cxx +++ b/Modules/CTP/src/RawDataQcTask.cxx @@ -38,8 +38,6 @@ CTPRawDataReaderTask::~CTPRawDataReaderTask() void CTPRawDataReaderTask::initialize(o2::framework::InitContext& /*ctx*/) { ILOG(Debug, Devel) << "initialize CTPRawDataReaderTask" << ENDM; // QcInfoLogger is used. FairMQ logs will go to there as well. - int ninps = o2::ctp::CTP_NINPUTS + 1; - int nclasses = o2::ctp::CTP_NCLASSES + 1; int norbits = o2::constants::lhc::LHCMaxBunches; mHistoInputs = std::make_unique("inputs", "Input Rates; Input ; Rate [kHz]", ninps, 0, ninps, true); mHistoClasses = std::make_unique("classes", "Class Rates; Class; Rate [kHz]", nclasses, 0, nclasses, true); @@ -56,7 +54,7 @@ void CTPRawDataReaderTask::initialize(o2::framework::InitContext& /*ctx*/) mDecoder.setDoLumi(1); mDecoder.setDoDigits(1); - for (size_t i = 0; i < 65; i++) { + for (size_t i = 0; i < nclasses; i++) { classNames[i] = ""; } mHistoClassRatios.get()->GetXaxis()->CenterLabels(true); @@ -118,13 +116,21 @@ void CTPRawDataReaderTask::startOfActivity(const Activity& activity) if (mIndexMBclass == -1) { mIndexMBclass = 1; } - for (int i = 0; i < 65; i++) { + std::string nameInput = mCustomParameters["MBinputName"]; + if (nameInput.empty()) { + nameInput = "MTVX"; + } + indexTvx = o2::ctp::CTPInputsConfiguration::getInputIndexFromName(nameInput); + if (indexTvx == -1) { + indexTvx = 3; // 3 is the MTVX index + } + for (int i = 0; i < nclasses; i++) { if (classNames[i] == "") { mHistoClasses.get()->GetXaxis()->SetBinLabel(i + 1, Form("%i", i + 1)); mHistoClassRatios.get()->GetXaxis()->SetBinLabel(i + 1, Form("%i", i + 1)); } else { - mHistoClasses.get()->GetXaxis()->SetBinLabel(i + 1, Form("%s", classNames[i].Data())); - mHistoClassRatios.get()->GetXaxis()->SetBinLabel(i + 1, Form("%s", classNames[i].Data())); + mHistoClasses.get()->GetXaxis()->SetBinLabel(i + 1, Form("%s", classNames[i].c_str())); + mHistoClassRatios.get()->GetXaxis()->SetBinLabel(i + 1, Form("%s", classNames[i].c_str())); } } mHistoClasses.get()->GetXaxis()->SetLabelSize(0.025); @@ -151,8 +157,6 @@ void CTPRawDataReaderTask::monitorData(o2::framework::ProcessingContext& ctx) mDecoder.decodeRaw(inputs, filter, outputDigits, lumiPointsHBF1); // reading the ctp inputs and ctp classes - std::string nameInput = "MTVX"; - auto indexTvx = o2::ctp::CTPInputsConfiguration::getInputIndexFromName(nameInput); for (auto const digit : outputDigits) { uint16_t bcid = digit.intRecord.bc; if (digit.CTPInputMask.count()) { diff --git a/Modules/CTP/src/RawDataReaderCheck.cxx b/Modules/CTP/src/RawDataReaderCheck.cxx index a9e600741f..404cef071e 100644 --- a/Modules/CTP/src/RawDataReaderCheck.cxx +++ b/Modules/CTP/src/RawDataReaderCheck.cxx @@ -146,7 +146,7 @@ int RawDataReaderCheck::checkChange(TH1D* mHist, TH1D* mHistPrev) for (size_t i = 1; i < mHist->GetXaxis()->GetNbins() + 1; i++) { // Check how many inputs/classes changed more than a threshold value double val = mHist->GetBinContent(i); double valPrev = mHistPrev->GetBinContent(i); - double relDiff = (valPrev != 0) ? (val - valPrev) / TMath::Sqrt(val) : 0; + double relDiff = (valPrev != 0 || val != 0) ? (val - valPrev) / TMath::Sqrt(val) : 0; if (TMath::Abs(relDiff) > thrBad) { mVecIndexBad.push_back(i - 1); } else if (TMath::Abs(relDiff) > thrMedium) { @@ -160,10 +160,17 @@ int RawDataReaderCheck::checkChangeOfRatio(TH1D* mHist, TH1D* mHistPrev, TH1D* m /// this function check how much the rates differ from previous cycle float thrBad = mThresholdRateRatioBad; float thrMedium = mThresholdRateRatioMedium; + int binMB; + for (int i = 1; i < mHist->GetXaxis()->GetNbins() + 1; i++) { + if (mHist->GetBinContent(i) == mHistPrev->GetBinContent(i) && mHist->GetBinContent(i) == 1) { + binMB = i; + break; + } + } for (size_t i = 1; i < mHist->GetXaxis()->GetNbins() + 1; i++) { // Check how many inputs/classes changed more than a threshold value double val = mHist->GetBinContent(i); double valPrev = mHistPrev->GetBinContent(i); - double relDiff = (val != 0) ? (val - valPrev) / (val * TMath::Sqrt(1 / mHistAbs->GetBinContent(3) + 1 / mHistAbs->GetBinContent(i))) : 0; + double relDiff = (val != 0 || mHistAbs->GetBinContent(i) != 0) ? (val - valPrev) / (val * TMath::Sqrt(1 / mHistAbs->GetBinContent(binMB) + 1 / mHistAbs->GetBinContent(i))) : 0; if (TMath::Abs(relDiff) > thrBad) { mVecIndexBad.push_back(i - 1); } else if (TMath::Abs(relDiff) > thrMedium) { @@ -265,15 +272,15 @@ void RawDataReaderCheck::beautify(std::shared_ptr mo, Quality che msg->SetTextColor(kRed); msg->SetNDC(); h->GetListOfFunctions()->Add(msg->Clone()); - msg = std::make_shared(0.45, 0.75, Form("Number of %s with big %s rate change: %lu", groupName.c_str(), relativeness.c_str(), mVecIndexBad.size())); + msg = std::make_shared(0.45, 0.70, Form("Number of %s with big %s rate change: %lu", groupName.c_str(), relativeness.c_str(), mVecIndexBad.size())); msg->SetTextSize(0.03); msg->SetNDC(); h->GetListOfFunctions()->Add(msg->Clone()); for (size_t i = 0; i < mVecIndexBad.size(); i++) { if (mFlagInput) { - msg = std::make_shared(0.45, 0.7 - i * 0.05, Form("Check %s %s", ctpinputs[mVecIndexBad[i]], groupName.c_str())); + msg = std::make_shared(0.45, 0.65 - i * 0.05, Form("Check %s %s", ctpinputs[mVecIndexBad[i]], groupName.c_str())); } else { - msg = std::make_shared(0.45, 0.7 - i * 0.05, Form("Check %s %s", groupName.c_str(), h->GetXaxis()->GetBinLabel(mVecIndexBad[i] + 1))); + msg = std::make_shared(0.45, 0.65 - i * 0.05, Form("Check %s %s", groupName.c_str(), h->GetXaxis()->GetBinLabel(mVecIndexBad[i] + 1))); } msg->SetTextSize(0.03); msg->SetNDC(); diff --git a/Modules/CTP/src/qc-ctp.json b/Modules/CTP/src/qc-ctp.json index 726838881b..f42c66a68c 100644 --- a/Modules/CTP/src/qc-ctp.json +++ b/Modules/CTP/src/qc-ctp.json @@ -44,7 +44,8 @@ }, "taskParameters": { "ccdbName": "https://alice-ccdb.cern.ch", - "MBclassName" : "CMTVX-B-NOPF" + "MBclassName" : "CMTVX-B-NOPF", + "MBinputName" : "MTVX" }, "location": "remote" }