From 4d1963f981e1247b054226709ddb0bbede87f044 Mon Sep 17 00:00:00 2001 From: Arvind Khuntia Date: Thu, 7 Sep 2023 16:24:18 +0200 Subject: [PATCH 1/2] [FDD] Fill BC vs FEE module plots channel wise --- Modules/FIT/FDD/CMakeLists.txt | 3 +- Modules/FIT/FDD/include/FDD/DigitQcTask.h | 2 +- Modules/FIT/FDD/include/FDD/LinkDef.h | 1 + .../FDD/OutOfBunchCollFeeModulesCheck.h | 47 ++++++ Modules/FIT/FDD/include/FDD/PostProcTask.h | 6 +- Modules/FIT/FDD/src/DigitQcTask.cxx | 8 + .../FDD/src/OutOfBunchCollFeeModulesCheck.cxx | 156 ++++++++++++++++++ Modules/FIT/FDD/src/PostProcTask.cxx | 73 ++++++++ 8 files changed, 293 insertions(+), 3 deletions(-) create mode 100644 Modules/FIT/FDD/include/FDD/OutOfBunchCollFeeModulesCheck.h create mode 100644 Modules/FIT/FDD/src/OutOfBunchCollFeeModulesCheck.cxx diff --git a/Modules/FIT/FDD/CMakeLists.txt b/Modules/FIT/FDD/CMakeLists.txt index 05d2990e60..f9dfd5bffe 100644 --- a/Modules/FIT/FDD/CMakeLists.txt +++ b/Modules/FIT/FDD/CMakeLists.txt @@ -11,7 +11,7 @@ target_sources(O2QcFDD PRIVATE src/CFDEffCheck.cxx src/OutOfBunchCollCheck.cxx src/TriggersSwVsTcmCheck.cxx - ) + src/OutOfBunchCollFeeModulesCheck.cxx) target_include_directories( O2QcFDD @@ -37,6 +37,7 @@ add_root_dictionary(O2QcFDD include/FDD/CFDEffCheck.h include/FDD/OutOfBunchCollCheck.h include/FDD/TriggersSwVsTcmCheck.h + include/FDD/OutOfBunchCollFeeModulesCheck.h LINKDEF include/FDD/LinkDef.h) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/FDD diff --git a/Modules/FIT/FDD/include/FDD/DigitQcTask.h b/Modules/FIT/FDD/include/FDD/DigitQcTask.h index b3f73f2d0d..61bb97fe12 100644 --- a/Modules/FIT/FDD/include/FDD/DigitQcTask.h +++ b/Modules/FIT/FDD/include/FDD/DigitQcTask.h @@ -206,7 +206,7 @@ class DigitQcTask final : public TaskInterface std::unique_ptr mHistPmTcmAverageTimeC; std::unique_ptr mHistTriggersSw; std::unique_ptr mHistTriggersSoftwareVsTCM; - + std::unique_ptr mHistBcVsFeeForVtxTrg; // Hashed maps static const size_t mapSize = 256; const std::array, mapSize> mHashedBitBinPos; // map with bit position for 1 byte trg signal, for 1 Dim hists; diff --git a/Modules/FIT/FDD/include/FDD/LinkDef.h b/Modules/FIT/FDD/include/FDD/LinkDef.h index 83a3c4a2d9..7c36fe4199 100644 --- a/Modules/FIT/FDD/include/FDD/LinkDef.h +++ b/Modules/FIT/FDD/include/FDD/LinkDef.h @@ -11,4 +11,5 @@ #pragma link C++ class o2::quality_control_modules::fdd::CFDEffCheck + ; #pragma link C++ class o2::quality_control_modules::fdd::OutOfBunchCollCheck + ; #pragma link C++ class o2::quality_control_modules::fdd::TriggersSwVsTcmCheck + ; +#pragma link C++ class o2::quality_control_modules::fdd::OutOfBunchCollFeeModulesCheck + ; #endif diff --git a/Modules/FIT/FDD/include/FDD/OutOfBunchCollFeeModulesCheck.h b/Modules/FIT/FDD/include/FDD/OutOfBunchCollFeeModulesCheck.h new file mode 100644 index 0000000000..7f5b5f04bd --- /dev/null +++ b/Modules/FIT/FDD/include/FDD/OutOfBunchCollFeeModulesCheck.h @@ -0,0 +1,47 @@ +// Copyright 2023 CERN and copyright holders of ALICE O2. +// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders. +// All rights not expressly granted are reserved. +// +// This software is distributed under the terms of the GNU General Public +// License v3 (GPL Version 3), copied verbatim in the file "COPYING". +// +// In applying this license CERN does not waive the privileges and immunities +// granted to it by virtue of its status as an Intergovernmental Organization +// or submit itself to any jurisdiction. + +#ifndef QC_MODULE_FDD_OUTOFBUNCHCOLLFEEMODULESCHECK_H +#define QC_MODULE_FDD_OUTOFBUNCHCOLLFEEMODULESCHECK_H + +#include "QualityControl/CheckInterface.h" + +#include "FDDBase/Constants.h" +#include "CommonConstants/LHCConstants.h" + +#include + +namespace o2::quality_control_modules::fdd +{ + +class OutOfBunchCollFeeModulesCheck : public o2::quality_control::checker::CheckInterface +{ + public: + OutOfBunchCollFeeModulesCheck() = default; + ~OutOfBunchCollFeeModulesCheck() override = default; + + void configure() override; + Quality check(std::map>* moMap) override; + void beautify(std::shared_ptr mo, Quality checkResult = Quality::Null) override; + std::string getAcceptedType() override; + + ClassDefOverride(OutOfBunchCollFeeModulesCheck, 1); + + private: + float mThreshWarning; + float mThreshError; + float mFractionOutOfBunchColl = 0; + constexpr static std::size_t sBCperOrbit = o2::constants::lhc::LHCMaxBunches; +}; + +} // namespace o2::quality_control_modules::fdd + +#endif // QC_MODULE_FDD_OUTOFBUNCHCOLLFEEMODULESCHECK_H \ No newline at end of file diff --git a/Modules/FIT/FDD/include/FDD/PostProcTask.h b/Modules/FIT/FDD/include/FDD/PostProcTask.h index 567eb9954d..01e8467792 100644 --- a/Modules/FIT/FDD/include/FDD/PostProcTask.h +++ b/Modules/FIT/FDD/include/FDD/PostProcTask.h @@ -21,6 +21,7 @@ #include "QualityControl/DatabaseInterface.h" #include "CCDB/CcdbApi.h" #include "CommonConstants/LHCConstants.h" +#include "DataFormatsFDD/LookUpTable.h" #include "FDDBase/Constants.h" #include "DataFormatsFDD/ChannelData.h" @@ -88,10 +89,13 @@ class PostProcTask final : public quality_control::postprocessing::PostProcessin // if storage size matters it can be replaced with TH1 // and TH2 can be created based on it on the fly, but only TH1 would be stored std::unique_ptr mHistBcPattern; + std::unique_ptr mHistBcPatternFee; std::unique_ptr mHistBcTrgOutOfBunchColl; - + std::unique_ptr mHistBcFeeOutOfBunchCollForVtxTrg; std::map mMapTrgHistBC; + std::array mChID2PMhash; // map chID->hashed PM value + std::map mMapFEE2hash; int mLowTimeThreshold{ -192 }; int mUpTimeThreshold{ 192 }; double mLowAmpSat; diff --git a/Modules/FIT/FDD/src/DigitQcTask.cxx b/Modules/FIT/FDD/src/DigitQcTask.cxx index b7f20d3ec5..5b715d03af 100644 --- a/Modules/FIT/FDD/src/DigitQcTask.cxx +++ b/Modules/FIT/FDD/src/DigitQcTask.cxx @@ -305,9 +305,11 @@ void DigitQcTask::initialize(o2::framework::InitContext& /*ctx*/) mHistBCvsFEEmodules = std::make_unique("BCvsFEEmodules", "BC vs FEE module;BC;FEE", sBCperOrbit, 0, sBCperOrbit, mapFEE2hash.size(), 0, mapFEE2hash.size()); mHistOrbitVsFEEmodules = std::make_unique("OrbitVsFEEmodules", "Orbit vs FEE module;Orbit;FEE", sOrbitsPerTF, 0, sOrbitsPerTF, mapFEE2hash.size(), 0, mapFEE2hash.size()); + mHistBcVsFeeForVtxTrg = std::make_unique("BCvsFEEmodulesForVtxTrg", "BC vs FEE module for Vertex trigger;BC;FEE", sBCperOrbit, 0, sBCperOrbit, mapFEE2hash.size(), 0, mapFEE2hash.size()); for (const auto& entry : mapFEE2hash) { mHistBCvsFEEmodules->GetYaxis()->SetBinLabel(entry.second + 1, entry.first.c_str()); mHistOrbitVsFEEmodules->GetYaxis()->SetBinLabel(entry.second + 1, entry.first.c_str()); + mHistBcVsFeeForVtxTrg->GetYaxis()->SetBinLabel(entry.second + 1, entry.first.c_str()); } /// ak1 mHistTimeSum2Diff = std::make_unique("timeSumVsDiff", "time A/C side: sum VS diff;(TOC-TOA)/2 [ns];(TOA+TOC)/2 [ns]", 2000, -52.08, 52.08, 2000, -52.08, 52.08); // range of 52.08 ns = 4000*13.02ps = 4000 channels @@ -408,6 +410,8 @@ void DigitQcTask::initialize(o2::framework::InitContext& /*ctx*/) getObjectsManager()->setDefaultDrawOptions(mHistAmp2Ch.get(), "COLZ"); getObjectsManager()->startPublishing(mHistBCvsFEEmodules.get()); getObjectsManager()->setDefaultDrawOptions(mHistBCvsFEEmodules.get(), "COLZ"); + getObjectsManager()->startPublishing(mHistBcVsFeeForVtxTrg.get()); + getObjectsManager()->setDefaultDrawOptions(mHistBcVsFeeForVtxTrg.get(), "COLZ"); getObjectsManager()->startPublishing(mHistOrbitVsTrg.get()); getObjectsManager()->setDefaultDrawOptions(mHistOrbitVsTrg.get(), "COLZ"); getObjectsManager()->startPublishing(mHistOrbitVsFEEmodules.get()); @@ -460,6 +464,7 @@ void DigitQcTask::startOfActivity(const Activity& activity) mHistBCvsFEEmodules->Reset(); mHistOrbitVsTrg->Reset(); mHistOrbitVsFEEmodules->Reset(); + mHistBcVsFeeForVtxTrg->Reset(); mHistTriggersCorrelation->Reset(); mHistCycleDuration->Reset(); mHistCycleDurationNTF->Reset(); @@ -718,6 +723,8 @@ void DigitQcTask::monitorData(o2::framework::ProcessingContext& ctx) for (const auto& feeHash : setFEEmodules) { mHistBCvsFEEmodules->Fill(static_cast(digit.getIntRecord().bc), static_cast(feeHash)); mHistOrbitVsFEEmodules->Fill(static_cast(digit.getIntRecord().orbit % sOrbitsPerTF), static_cast(feeHash)); + if (digit.mTriggers.getVertex()) + mHistBcVsFeeForVtxTrg->Fill(static_cast(digit.getIntRecord().bc), static_cast(feeHash)); } if (isTCM && digit.mTriggers.getDataIsValid() && !digit.mTriggers.getOutputsAreBlocked()) { @@ -946,6 +953,7 @@ void DigitQcTask::reset() mHistCycleDurationRange->Reset(); mHistBCvsTrg->Reset(); mHistBCvsFEEmodules->Reset(); + mHistBcVsFeeForVtxTrg->Reset(); mHistOrbitVsTrg->Reset(); mHistOrbitVsFEEmodules->Reset(); mHistPmTcmNchA->Reset(); diff --git a/Modules/FIT/FDD/src/OutOfBunchCollFeeModulesCheck.cxx b/Modules/FIT/FDD/src/OutOfBunchCollFeeModulesCheck.cxx new file mode 100644 index 0000000000..0a531f68a1 --- /dev/null +++ b/Modules/FIT/FDD/src/OutOfBunchCollFeeModulesCheck.cxx @@ -0,0 +1,156 @@ +// Copyright 2023 CERN and copyright holders of ALICE O2. +// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders. +// All rights not expressly granted are reserved. +// +// This software is distributed under the terms of the GNU General Public +// License v3 (GPL Version 3), copied verbatim in the file "COPYING". +// +// In applying this license CERN does not waive the privileges and immunities +// granted to it by virtue of its status as an Intergovernmental Organization +// or submit itself to any jurisdiction. + +#include "FDD/OutOfBunchCollFeeModulesCheck.h" +#include "QualityControl/MonitorObject.h" +#include "QualityControl/Quality.h" +#include "QualityControl/QcInfoLogger.h" +#include "DataFormatsParameters/GRPLHCIFData.h" + +// ROOT +#include +#include +#include +#include +#include + +#include +#include +#include + +using namespace std; +using namespace o2::quality_control; + +namespace o2::quality_control_modules::fdd +{ + +void OutOfBunchCollFeeModulesCheck::configure() +{ + if (auto param = mCustomParameters.find("thresholdWarning"); param != mCustomParameters.end()) { + mThreshWarning = stof(param->second); + ILOG(Debug, Support) << "configure() : using thresholdWarning = " << mThreshWarning << ENDM; + } else { + mThreshWarning = 1e-3; + ILOG(Debug, Support) << "configure() : using default thresholdWarning = " << mThreshWarning << ENDM; + } + + if (auto param = mCustomParameters.find("thresholdError"); param != mCustomParameters.end()) { + mThreshError = stof(param->second); + ILOG(Debug, Support) << "configure() : using thresholdError = " << mThreshError << ENDM; + } else { + mThreshError = 0.1; + ILOG(Debug, Support) << "configure() : using default thresholdError = " << mThreshError << ENDM; + } + + if (mThreshError < mThreshWarning) { + ILOG(Debug, Support) << "thresholdError lower than thresholdWarning. Swaping values." << ENDM; + std::swap(mThreshError, mThreshWarning); + } +} + +Quality OutOfBunchCollFeeModulesCheck::check(std::map>* moMap) +{ + Quality result = Quality::Null; + + for (auto& [moName, mo] : *moMap) { + (void)moName; + if (mo->getName().find("OutOfBunchColl_BCvsFeeModules") != std::string::npos) { + auto* histogram = dynamic_cast(mo->getObject()); + + if (!histogram) { + ILOG(Error, Support) << "check(): MO " << mo->getName() << " not found" << ENDM; + result.addReason(FlagReasonFactory::Unknown(), "MO " + mo->getName() + " not found"); + result.set(Quality::Null); + return result; + } + + std::vector allCollPerFeeModule(mo->getMetadataMap().size() + 1, 0); + for (auto metainfo : mo->getMetadataMap()) { + int bin = 0; + float value = 0; + try { + bin = std::stoi(metainfo.first); + value = std::stof(metainfo.second); + allCollPerFeeModule[bin] = value; + } catch (const std::invalid_argument& e) { + ILOG(Warning, Support) << "Could not get value for key " << metainfo.first << ENDM; + continue; + } + } + + // Calculate out-of-bunch-coll fraction for Fee Modules + for (int binY = 1; binY <= histogram->GetNbinsY(); binY++) { + auto outOfBcCollisions = histogram->Integral(1, sBCperOrbit, binY, binY); + float fraction = 0; + if (allCollPerFeeModule[binY]) { + fraction = outOfBcCollisions / allCollPerFeeModule[binY]; + } + + if (fraction > mFractionOutOfBunchColl) { + mFractionOutOfBunchColl = fraction; + } + } + + // Check the biggest fraction of out-of-bunch-coll + if (mFractionOutOfBunchColl > mThreshError) { + result.set(Quality::Bad); + result.addReason(FlagReasonFactory::Unknown(), + Form("Fraction of out of bunch collisions (%.2e) is above \"Error\" threshold (%.2e)", + mFractionOutOfBunchColl, mThreshError)); + } else if (mFractionOutOfBunchColl > mThreshWarning) { + result.set(Quality::Medium); + result.addReason(FlagReasonFactory::Unknown(), + Form("Fraction of out of bunch collisions (%.2e) is above \"Warning\" threshold (%.2e)", + mFractionOutOfBunchColl, mThreshWarning)); + } else { + result.set(Quality::Good); + } + } + } + + return result; +} + +std::string OutOfBunchCollFeeModulesCheck::getAcceptedType() { return "TH2"; } + +void OutOfBunchCollFeeModulesCheck::beautify(std::shared_ptr mo, Quality checkResult) +{ + if (mo->getName().find("OutOfBunchColl_BCvsFeeModules") != std::string::npos) { + auto* histogram = dynamic_cast(mo->getObject()); + + if (!histogram) { + ILOG(Error, Support) << "beautify(): MO " << mo->getName() << " not found" << ENDM; + return; + } + + TPaveText* msg = new TPaveText(0.1, 0.85, 0.9, 0.9, "NDC"); + histogram->GetListOfFunctions()->Add(msg); + msg->SetName(Form("%s_msg", mo->GetName())); + msg->Clear(); + if (checkResult.isWorseThan(Quality::Good)) { + msg->AddText(checkResult.getReasons()[0].second.c_str()); + } + int color = kWhite; + if (checkResult == Quality::Good) { + color = kGreen + 1; + msg->AddText(">> Quality::Good <<"); + } else if (checkResult == Quality::Medium) { + color = kOrange - 1; + msg->AddText(">> Quality::Medium <<"); + } else if (checkResult == Quality::Bad) { + color = kRed; + msg->AddText(">> Quality::Bad <<"); + } + msg->SetFillColor(color); + } +} + +} // namespace o2::quality_control_modules::fdd \ No newline at end of file diff --git a/Modules/FIT/FDD/src/PostProcTask.cxx b/Modules/FIT/FDD/src/PostProcTask.cxx index 57b82f1e05..63295143c9 100644 --- a/Modules/FIT/FDD/src/PostProcTask.cxx +++ b/Modules/FIT/FDD/src/PostProcTask.cxx @@ -185,6 +185,46 @@ void PostProcTask::initialize(Trigger, framework::ServiceRegistryRef services) getObjectsManager()->startPublishing(pairHistBC.first->second); } } + const auto& lut = o2::fdd::SingleLUT::Instance().getVecMetadataFEE(); + auto lutSorted = lut; + std::sort(lutSorted.begin(), lutSorted.end(), [](const auto& first, const auto& second) { return first.mModuleName < second.mModuleName; }); + uint8_t binPos{ 0 }; + for (const auto& lutEntry : lutSorted) { + const auto& moduleName = lutEntry.mModuleName; + const auto& moduleType = lutEntry.mModuleType; + const auto& strChID = lutEntry.mChannelID; + const auto& pairIt = mMapFEE2hash.insert({ moduleName, binPos }); + if (pairIt.second) { + binPos++; + } + if (std::regex_match(strChID, std::regex("[[\\d]{1,3}"))) { + int chID = std::stoi(strChID); + if (chID < sNCHANNELS_PM) { + mChID2PMhash[chID] = mMapFEE2hash[moduleName]; + } else { + ILOG(Error, Support) << "Incorrect LUT entry: chID " << strChID << " | " << moduleName << ENDM; + } + } else if (moduleType != "TCM") { + ILOG(Error, Support) << "Non-TCM module w/o numerical chID: chID " << strChID << " | " << moduleName << ENDM; + } else if (moduleType == "TCM") { + uint8_t mTCMhash = mMapFEE2hash[moduleName]; + } + } + mHistBcFeeOutOfBunchCollForVtxTrg = std::make_unique("OutOfBunchColl_BCvsFeeModulesForVtxTrg", "BC vs FEE Modules for out-of-bunch collisions for Vertex trg;BC;FEE Modules", sBCperOrbit, 0, sBCperOrbit, mMapFEE2hash.size(), 0, mMapFEE2hash.size()); + mHistBcPatternFee = std::make_unique("bcPatternForFeeModules", "BC pattern", sBCperOrbit, 0, sBCperOrbit, mMapFEE2hash.size(), 0, mMapFEE2hash.size()); + for (const auto& entry : mMapFEE2hash) { + // ILOG(Warning, Support) << "============= mMapFEE2hash.second + 1: " << entry.second + 1 + // << " mMapFEE2hash.first.c_str(): " << entry.first.c_str() << ENDM; + + mHistBcPatternFee->GetYaxis()->SetBinLabel(entry.second + 1, entry.first.c_str()); + mHistBcFeeOutOfBunchCollForVtxTrg->GetYaxis()->SetBinLabel(entry.second + 1, entry.first.c_str()); + } + + getObjectsManager()->startPublishing(mHistBcFeeOutOfBunchCollForVtxTrg.get()); + getObjectsManager()->setDefaultDrawOptions(mHistBcFeeOutOfBunchCollForVtxTrg.get(), "COLZ"); + getObjectsManager()->startPublishing(mHistBcPatternFee.get()); + getObjectsManager()->setDefaultDrawOptions(mHistBcPatternFee.get(), "COLZ"); + getObjectsManager()->startPublishing(mHistTriggers.get()); getObjectsManager()->startPublishing(mHistBcPattern.get()); getObjectsManager()->setDefaultDrawOptions(mHistBcPattern.get(), "COLZ"); @@ -416,6 +456,14 @@ void PostProcTask::update(Trigger t, framework::ServiceRegistryRef) } } + // Create histogram with bc pattern for FEE modules + mHistBcPatternFee->Reset(); + for (int i = 0; i < sBCperOrbit; i++) { + for (int j = 0; j < mMapFEE2hash.size(); j++) { + mHistBcPatternFee->SetBinContent(i + 1, j + 1, bcPattern.testBC(i)); + } + } + mHistBcTrgOutOfBunchColl->Reset(); float vmax = hBcVsTrg->GetBinContent(hBcVsTrg->GetMaximumBin()); mHistBcTrgOutOfBunchColl->Add(hBcVsTrg, mHistBcPattern.get(), 1, -1 * vmax); @@ -443,6 +491,31 @@ void PostProcTask::update(Trigger t, framework::ServiceRegistryRef) projValidatedSWandHW->LabelsDeflate(); mHistTrgValidation->Divide(projOnlyHWorSW.get(), projValidatedSWandHW.get()); } + // Download histogram BCvsFEEmodulesForVtxTrg from database + auto moBcVsFeeModulesForVtxTrg = mDatabase->retrieveMO(mPathDigitQcTask, "BCvsFEEmodulesForVtxTrg", t.timestamp, t.activity); + auto hBcVsFeeModulesForVtxTrg = moBcVsFeeModulesForVtxTrg ? dynamic_cast(moBcVsFeeModulesForVtxTrg->getObject()) : nullptr; + if (!hBcVsFeeModulesForVtxTrg) { + ILOG(Error, Support) << "MO \"BCvsFEEmodulesForVtxTrg\" NOT retrieved!!!" << ENDM; + return; + } else { + mHistBcFeeOutOfBunchCollForVtxTrg->Reset(); + float vmax = hBcVsFeeModulesForVtxTrg->GetBinContent(hBcVsFeeModulesForVtxTrg->GetMaximumBin()); + mHistBcFeeOutOfBunchCollForVtxTrg->Add(hBcVsFeeModulesForVtxTrg, mHistBcPatternFee.get(), 1, -1 * vmax); + for (int i = 0; i < sBCperOrbit; i++) { + for (int j = 0; j < mMapFEE2hash.size() ; j++) { + if (mHistBcFeeOutOfBunchCollForVtxTrg->GetBinContent(i + 1, j + 1) < 0) { + mHistBcFeeOutOfBunchCollForVtxTrg->SetBinContent(i + 1, j + 1, 0); + } + } + } + // Add metadata to histogram OutOfBunchColl_BCvsFeeModulesForOrATrg + mHistBcFeeOutOfBunchCollForVtxTrg->SetEntries(mHistBcFeeOutOfBunchCollForVtxTrg->Integral(1, sBCperOrbit, 1, mMapFEE2hash.size())); + for (int iBin = 1; iBin <= mMapFEE2hash.size(); iBin++) { + const std::string metadataKey = std::to_string(iBin); + const std::string metadataValue = std::to_string(hBcVsFeeModulesForVtxTrg->Integral(1, sBCperOrbit, iBin, iBin)); + getObjectsManager()->getMonitorObject(mHistBcFeeOutOfBunchCollForVtxTrg->GetName())->addOrUpdateMetadata(metadataKey, metadataValue); + } + } } void PostProcTask::finalize(Trigger t, framework::ServiceRegistryRef) From e78e46e0a22203ab2d1c6f90f13b463c5e0de40e Mon Sep 17 00:00:00 2001 From: Arvind Khuntia Date: Thu, 7 Sep 2023 16:31:16 +0200 Subject: [PATCH 2/2] [FDD] Clang format --- Modules/FIT/FDD/src/PostProcTask.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/FIT/FDD/src/PostProcTask.cxx b/Modules/FIT/FDD/src/PostProcTask.cxx index 63295143c9..eb1afa8fee 100644 --- a/Modules/FIT/FDD/src/PostProcTask.cxx +++ b/Modules/FIT/FDD/src/PostProcTask.cxx @@ -502,7 +502,7 @@ void PostProcTask::update(Trigger t, framework::ServiceRegistryRef) float vmax = hBcVsFeeModulesForVtxTrg->GetBinContent(hBcVsFeeModulesForVtxTrg->GetMaximumBin()); mHistBcFeeOutOfBunchCollForVtxTrg->Add(hBcVsFeeModulesForVtxTrg, mHistBcPatternFee.get(), 1, -1 * vmax); for (int i = 0; i < sBCperOrbit; i++) { - for (int j = 0; j < mMapFEE2hash.size() ; j++) { + for (int j = 0; j < mMapFEE2hash.size(); j++) { if (mHistBcFeeOutOfBunchCollForVtxTrg->GetBinContent(i + 1, j + 1) < 0) { mHistBcFeeOutOfBunchCollForVtxTrg->SetBinContent(i + 1, j + 1, 0); }