From afa75fc9f2bc2a110cb058cfd192434ee1ee815c Mon Sep 17 00:00:00 2001 From: fchinu Date: Tue, 13 Jan 2026 19:37:37 +0100 Subject: [PATCH 1/2] Add TF per minute output --- PWGMM/Lumi/Tasks/lumiStabilityPP.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PWGMM/Lumi/Tasks/lumiStabilityPP.cxx b/PWGMM/Lumi/Tasks/lumiStabilityPP.cxx index 3d7e1a0674c..680d50dbb88 100644 --- a/PWGMM/Lumi/Tasks/lumiStabilityPP.cxx +++ b/PWGMM/Lumi/Tasks/lumiStabilityPP.cxx @@ -31,6 +31,7 @@ #include #include +#include #include #include @@ -287,7 +288,7 @@ struct LumiStabilityPP { if (thisTFid != currentTFid) { currentTFid = thisTFid; - histNBcsVsTime[runNumber]->Fill(timeSinceSOF); + histTfPerMin[runNumber]->Fill(timeSinceSOF); } std::bitset<64> ctpInputMask(bc.inputMask()); From 5a38aa8c6e1456c1f18ae5e96835b653a6087bf5 Mon Sep 17 00:00:00 2001 From: fchinu Date: Wed, 14 Jan 2026 10:37:00 +0100 Subject: [PATCH 2/2] Add filling scheme information to lumi stability task --- PWGMM/Lumi/Tasks/lumiStabilityPP.cxx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/PWGMM/Lumi/Tasks/lumiStabilityPP.cxx b/PWGMM/Lumi/Tasks/lumiStabilityPP.cxx index 680d50dbb88..d1426c6c162 100644 --- a/PWGMM/Lumi/Tasks/lumiStabilityPP.cxx +++ b/PWGMM/Lumi/Tasks/lumiStabilityPP.cxx @@ -115,6 +115,7 @@ struct LumiStabilityPP { parameters::GRPLHCIFData* mLHCIFdata = nullptr; int runNumber{-1}; ctpRateFetcher mRateFetcher; + std::string injectionScheme; HistogramRegistry registry{"registry"}; @@ -125,6 +126,7 @@ struct LumiStabilityPP { std::map> histTfPerMin; std::map> histBcHasFT0; std::map> histBcHasFDD; + std::map> histFillingScheme; static constexpr std::string_view NBCsVsTimeHistNames[NTriggerAliases][NBCCategories] = {{"AllBCs/BC_A/nBCsVsTime", "AllBCs/BC_B/nBCsVsTime", "AllBCs/BC_C/nBCsVsTime", "AllBCs/BC_E/nBCsVsTime", "AllBCs/BC_L/nBCsVsTime", "AllBCs/BC_SL/nBCsVsTime"}, @@ -138,7 +140,7 @@ struct LumiStabilityPP { {"FT0CE/BC_A/nBCsVsBCID", "FT0CE/BC_B/nBCsVsBCID", "FT0CE/BC_C/nBCsVsBCID", "FT0CE/BC_E/nBCsVsBCID", "FT0CE/BC_L/nBCsVsBCID", "FT0CE/BC_SL/nBCsVsBCID"}, {"FDD/BC_A/nBCsVsBCID", "FDD/BC_B/nBCsVsBCID", "FDD/BC_C/nBCsVsBCID", "FDD/BC_E/nBCsVsBCID", "FDD/BC_L/nBCsVsBCID", "FDD/BC_SL/nBCsVsBCID"}}; - const AxisSpec timeAxis{1440, 0., 1440., "#bf{t-t_{SOF} (min)}"}, bcIDAxis{nBCsPerOrbit, -0.5, static_cast(nBCsPerOrbit) - 0.5, "#bf{BC ID in orbit}"}; + const AxisSpec timeAxis{2880, 0., 2880., "#bf{t-t_{SOF} (min)}"}, bcIDAxis{nBCsPerOrbit, -0.5, static_cast(nBCsPerOrbit) - 0.5, "#bf{BC ID in orbit}"}; int64_t bcSOR; int nBCsPerTF; @@ -155,6 +157,7 @@ struct LumiStabilityPP { histNBcsVsTime[runNumber] = registry.add(Form("%d/FT0Vtx_EvSel/nBCsVsTime", runNumber), "Time of TVX triggered BCs since the start of fill;;#bf{#it{N}_{BC}}", HistType::kTH1D, {timeAxis}); histNBcsVsBcId[runNumber] = registry.add(Form("%d/nBCsVsBCID", runNumber), "Time of TVX triggered BCs since the start of fill;#bf{t-t_{SOF} (min)};#bf{#it{N}_{BC}}", HistType::kTH1D, {bcIDAxis}); histTfPerMin[runNumber] = registry.add(Form("%d/TFsPerMinute", runNumber), "TFs seen in this minute (to account for failed jobs);#bf{t-t_{SOF} (min)};#bf{#it{N}_{TFs}}", HistType::kTH1D, {timeAxis}); + histFillingScheme[runNumber] = registry.add(Form("%d/FillingScheme", runNumber), "Filling Scheme;Filling Scheme;", HistType::kTH1D, {{1, 0, 1}}); histBcHasFT0[runNumber] = registry.add(Form("%d/FITQA/BCHasFT0", runNumber), "Does the BC have FT0?;BC has FT0;TVX triggered according to CTP;#bf{#it{N}_{BC}}", HistType::kTH2D, {{2, -0.5, 1.5}, {2, -0.5, 1.5}}); histBcHasFT0[runNumber]->GetYaxis()->SetBinLabel(1, "No CTP trigger"); @@ -196,6 +199,8 @@ struct LumiStabilityPP { LOG(info) << "LHCIF data fetched for run " << runNumber << " and timestamp " << timeStamp; createHistograms(); + histFillingScheme[runNumber]->Fill(mLHCIFdata->getInjectionScheme().c_str(), 0); + beamPatternA = mLHCIFdata->getBunchFilling().getBeamPattern(0); beamPatternC = mLHCIFdata->getBunchFilling().getBeamPattern(1); bcPatternA = beamPatternA & ~beamPatternC;