@@ -56,6 +56,9 @@ enum BCCategories { BCA = 0, // A side BCs (bunch-crossings that had beam on
5656 BCL = 4 , // leading BCs (bunch-crossings that did not have interacting bunches for a configurable number of preceding BCs)
5757 BCSLFDD = 5 , // super-leading BCs for FDD (bunch-crossings that had beam from both sides but did not have FDD activity for a configurable number of preceding BCs)
5858 BCSLFT0 = 6 , // super-leading BCs for FT0 (bunch-crossings that had beam from both sides but did not have FT0 activity for a configurable number of preceding BCs)
59+ BCNL = 7 , // non-leading BCs of type B (bunch-crossings that come after a BCL and are of type B)
60+ BCNSLFDD = 8 , // non-super-leading BCs for FDD of type B (bunch-crossings that had beam from both sides but are not SL for FDD activity for a configurable number of preceding BCs)
61+ BCNSLFT0 = 9 , // non-super-leading BCs for FT0 of type B (bunch-crossings that had beam from both sides but are not SL for FT0 activity for a configurable number of preceding BCs)
5962 NBCCategories };
6063} // namespace lumi
6164namespace aod
@@ -103,8 +106,8 @@ struct BuildBcFlagTable {
103106
104107struct LumiStabilityPP {
105108
106- static constexpr int defaulFlags[1 ][NBCCategories] = {{1 , 1 , 1 , 1 , 1 , 1 , 1 }};
107- Configurable<LabeledArray<int >> doTypeBC{" doTypeBC" , {defaulFlags[0 ], NBCCategories, {" BCA" , " BCB" , " BCC" , " BCE" , " BCL" , " BCSLFDD" , " BCSLFT0" }}, " Create and fill histograms for different BC types" };
109+ static constexpr int defaulFlags[1 ][NBCCategories] = {{1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 }};
110+ Configurable<LabeledArray<int >> doTypeBC{" doTypeBC" , {defaulFlags[0 ], NBCCategories, {" BCA" , " BCB" , " BCC" , " BCE" , " BCL" , " BCSLFDD" , " BCSLFT0" , " BCNL " , " BCNSLFDD " , " BCNSLFT0 " }}, " Create and fill histograms for different BC types" };
108111
109112 Configurable<int > numEmptyBCsBeforeLeadingBC{" numEmptyBCsBeforeLeadingBC" , 5 , " Number of empty BCs before a leading BC" };
110113 Configurable<int > bcShiftFDDForData2023{" bcShiftFDDForData2023" , -15 , " Number of bc to shift for FDD to be applied for 2023 data only" };
@@ -136,22 +139,22 @@ struct LumiStabilityPP {
136139 std::map<int , std::shared_ptr<TH1>> histInteractionRate;
137140
138141 static constexpr std::string_view NBCsVsTimeHistNames[NTriggerAliases][NBCCategories] =
139- {{" AllBCs/BC_A/nBCsVsTime" , " AllBCs/BC_B/nBCsVsTime" , " AllBCs/BC_C/nBCsVsTime" , " AllBCs/BC_E/nBCsVsTime" , " AllBCs/BC_L/nBCsVsTime" , " AllBCs/BC_SL_FDD/nBCsVsTime" , " AllBCs/BC_SL_FT0/nBCsVsTime" },
140- {" FT0VTx/BC_A/nBCsVsTime" , " FT0VTx/BC_B/nBCsVsTime" , " FT0VTx/BC_C/nBCsVsTime" , " FT0VTx/BC_E/nBCsVsTime" , " FT0VTx/BC_L/nBCsVsTime" , " FT0VTx/BC_SL_FDD/nBCsVsTime" , " FT0VTx/BC_SL_FT0/nBCsVsTime" },
141- {" FT0CE/BC_A/nBCsVsTime" , " FT0CE/BC_B/nBCsVsTime" , " FT0CE/BC_C/nBCsVsTime" , " FT0CE/BC_E/nBCsVsTime" , " FT0CE/BC_L/nBCsVsTime" , " FT0CE/BC_SL_FDD/nBCsVsTime" , " FT0CE/BC_SL_FT0/nBCsVsTime" },
142- {" FDD/BC_A/nBCsVsTime" , " FDD/BC_B/nBCsVsTime" , " FDD/BC_C/nBCsVsTime" , " FDD/BC_E/nBCsVsTime" , " FDD/BC_L/nBCsVsTime" , " FDD/BC_SL_FDD/nBCsVsTime" , " FDD/BC_SL_FT0/nBCsVsTime" }};
142+ {{" AllBCs/BC_A/nBCsVsTime" , " AllBCs/BC_B/nBCsVsTime" , " AllBCs/BC_C/nBCsVsTime" , " AllBCs/BC_E/nBCsVsTime" , " AllBCs/BC_L/nBCsVsTime" , " AllBCs/BC_SL_FDD/nBCsVsTime" , " AllBCs/BC_SL_FT0/nBCsVsTime" , " AllBCs/BC_NL/nBCsVsTime " , " AllBCs/BC_NSL_FT0/nBCsVsTime " , " AllBCs/BC_NSL_FDD/nBCsVsTime " },
143+ {" FT0VTx/BC_A/nBCsVsTime" , " FT0VTx/BC_B/nBCsVsTime" , " FT0VTx/BC_C/nBCsVsTime" , " FT0VTx/BC_E/nBCsVsTime" , " FT0VTx/BC_L/nBCsVsTime" , " FT0VTx/BC_SL_FDD/nBCsVsTime" , " FT0VTx/BC_SL_FT0/nBCsVsTime" , " FT0VTx/BC_NL/nBCsVsTime " , " FT0VTx/BC_NSL_FT0/nBCsVsTime " , " FT0VTx/BC_NSL_FDD/nBCsVsTime " },
144+ {" FT0CE/BC_A/nBCsVsTime" , " FT0CE/BC_B/nBCsVsTime" , " FT0CE/BC_C/nBCsVsTime" , " FT0CE/BC_E/nBCsVsTime" , " FT0CE/BC_L/nBCsVsTime" , " FT0CE/BC_SL_FDD/nBCsVsTime" , " FT0CE/BC_SL_FT0/nBCsVsTime" , " FT0CE/BC_NL/nBCsVsTime " , " FT0CE/BC_NSL_FT0/nBCsVsTime " , " FT0CE/BC_NSL_FDD/nBCsVsTime " },
145+ {" FDD/BC_A/nBCsVsTime" , " FDD/BC_B/nBCsVsTime" , " FDD/BC_C/nBCsVsTime" , " FDD/BC_E/nBCsVsTime" , " FDD/BC_L/nBCsVsTime" , " FDD/BC_SL_FDD/nBCsVsTime" , " FDD/BC_SL_FT0/nBCsVsTime" , " FDD/BC_NL/nBCsVsTime " , " FDD/BC_NSL_FT0/nBCsVsTime " , " FDD/BC_NSL_FDD/nBCsVsTime " }};
143146
144147 static constexpr std::string_view NBCsVsBCIDHistNames[NTriggerAliases][NBCCategories] =
145- {{" AllBCs/BC_A/nBCsVsBCID" , " AllBCs/BC_B/nBCsVsBCID" , " AllBCs/BC_C/nBCsVsBCID" , " AllBCs/BC_E/nBCsVsBCID" , " AllBCs/BC_L/nBCsVsBCID" , " AllBCs/BC_SL_FDD/nBCsVsBCID" , " AllBCs/BC_SL_FT0/nBCsVsBCID" },
146- {" FT0VTx/BC_A/nBCsVsBCID" , " FT0VTx/BC_B/nBCsVsBCID" , " FT0VTx/BC_C/nBCsVsBCID" , " FT0VTx/BC_E/nBCsVsBCID" , " FT0VTx/BC_L/nBCsVsBCID" , " FT0VTx/BC_SL_FDD/nBCsVsBCID" , " FT0VTx/BC_SL_FT0/nBCsVsBCID" },
147- {" FT0CE/BC_A/nBCsVsBCID" , " FT0CE/BC_B/nBCsVsBCID" , " FT0CE/BC_C/nBCsVsBCID" , " FT0CE/BC_E/nBCsVsBCID" , " FT0CE/BC_L/nBCsVsBCID" , " FT0CE/BC_SL_FDD/nBCsVsBCID" , " FT0CE/BC_SL_FT0/nBCsVsBCID" },
148- {" FDD/BC_A/nBCsVsBCID" , " FDD/BC_B/nBCsVsBCID" , " FDD/BC_C/nBCsVsBCID" , " FDD/BC_E/nBCsVsBCID" , " FDD/BC_L/nBCsVsBCID" , " FDD/BC_SL_FDD/nBCsVsBCID" , " FDD/BC_SL_FT0/nBCsVsBCID" }};
148+ {{" AllBCs/BC_A/nBCsVsBCID" , " AllBCs/BC_B/nBCsVsBCID" , " AllBCs/BC_C/nBCsVsBCID" , " AllBCs/BC_E/nBCsVsBCID" , " AllBCs/BC_L/nBCsVsBCID" , " AllBCs/BC_SL_FDD/nBCsVsBCID" , " AllBCs/BC_SL_FT0/nBCsVsBCID" , " AllBCs/BC_NL/nBCsVsBCID " , " AllBCs/BC_NSL_FT0/nBCsVsBCID " , " AllBCs/BC_NSL_FDD/nBCsVsBCID " },
149+ {" FT0VTx/BC_A/nBCsVsBCID" , " FT0VTx/BC_B/nBCsVsBCID" , " FT0VTx/BC_C/nBCsVsBCID" , " FT0VTx/BC_E/nBCsVsBCID" , " FT0VTx/BC_L/nBCsVsBCID" , " FT0VTx/BC_SL_FDD/nBCsVsBCID" , " FT0VTx/BC_SL_FT0/nBCsVsBCID" , " FT0VTx/BC_NL/nBCsVsBCID " , " FT0VTx/BC_NSL_FT0/nBCsVsBCID " , " FT0VTx/BC_NSL_FDD/nBCsVsBCID " },
150+ {" FT0CE/BC_A/nBCsVsBCID" , " FT0CE/BC_B/nBCsVsBCID" , " FT0CE/BC_C/nBCsVsBCID" , " FT0CE/BC_E/nBCsVsBCID" , " FT0CE/BC_L/nBCsVsBCID" , " FT0CE/BC_SL_FDD/nBCsVsBCID" , " FT0CE/BC_SL_FT0/nBCsVsBCID" , " FT0CE/BC_NL/nBCsVsBCID " , " FT0CE/BC_NSL_FT0/nBCsVsBCID " , " FT0CE/BC_NSL_FDD/nBCsVsBCID " },
151+ {" FDD/BC_A/nBCsVsBCID" , " FDD/BC_B/nBCsVsBCID" , " FDD/BC_C/nBCsVsBCID" , " FDD/BC_E/nBCsVsBCID" , " FDD/BC_L/nBCsVsBCID" , " FDD/BC_SL_FDD/nBCsVsBCID" , " FDD/BC_SL_FT0/nBCsVsBCID" , " FDD/BC_NL/nBCsVsBCID " , " FDD/BC_NSL_FT0/nBCsVsBCID " , " FDD/BC_NSL_FDD/nBCsVsBCID " }};
149152
150153 static constexpr std::string_view MuHistNames[NTriggerAliases][NBCCategories] =
151- {{" AllBCs/BC_A/Mu" , " AllBCs/BC_B/Mu" , " AllBCs/BC_C/Mu" , " AllBCs/BC_E/Mu" , " AllBCs/BC_L/Mu" , " AllBCs/BC_SL_FDD/Mu" , " AllBCs/BC_SL_FT0/Mu" },
152- {" FT0VTx/BC_A/Mu" , " FT0VTx/BC_B/Mu" , " FT0VTx/BC_C/Mu" , " FT0VTx/BC_E/Mu" , " FT0VTx/BC_L/Mu" , " FT0VTx/BC_SL_FDD/Mu" , " FT0VTx/BC_SL_FT0/Mu" },
153- {" FT0CE/BC_A/Mu" , " FT0CE/BC_B/Mu" , " FT0CE/BC_C/Mu" , " FT0CE/BC_E/Mu" , " FT0CE/BC_L/Mu" , " FT0CE/BC_SL_FDD/Mu" , " FT0CE/BC_SL_FT0/Mu" },
154- {" FDD/BC_A/Mu" , " FDD/BC_B/Mu" , " FDD/BC_C/Mu" , " FDD/BC_E/Mu" , " FDD/BC_L/Mu" , " FDD/BC_SL_FDD/Mu" , " FDD/BC_SL_FT0/Mu" }};
154+ {{" AllBCs/BC_A/Mu" , " AllBCs/BC_B/Mu" , " AllBCs/BC_C/Mu" , " AllBCs/BC_E/Mu" , " AllBCs/BC_L/Mu" , " AllBCs/BC_SL_FDD/Mu" , " AllBCs/BC_SL_FT0/Mu" , " AllBCs/BC_NL/Mu " , " AllBCs/BC_NSL_FT0/Mu " , " AllBCs/BC_NSL_FDD/Mu " },
155+ {" FT0VTx/BC_A/Mu" , " FT0VTx/BC_B/Mu" , " FT0VTx/BC_C/Mu" , " FT0VTx/BC_E/Mu" , " FT0VTx/BC_L/Mu" , " FT0VTx/BC_SL_FDD/Mu" , " FT0VTx/BC_SL_FT0/Mu" , " FT0VTx/BC_NL/Mu " , " FT0VTx/BC_NSL_FT0/Mu " , " FT0VTx/BC_NSL_FDD/Mu " },
156+ {" FT0CE/BC_A/Mu" , " FT0CE/BC_B/Mu" , " FT0CE/BC_C/Mu" , " FT0CE/BC_E/Mu" , " FT0CE/BC_L/Mu" , " FT0CE/BC_SL_FDD/Mu" , " FT0CE/BC_SL_FT0/Mu" , " FT0CE/BC_NL/Mu " , " FT0CE/BC_NSL_FT0/Mu " , " FT0CE/BC_NSL_FDD/Mu " },
157+ {" FDD/BC_A/Mu" , " FDD/BC_B/Mu" , " FDD/BC_C/Mu" , " FDD/BC_E/Mu" , " FDD/BC_L/Mu" , " FDD/BC_SL_FDD/Mu" , " FDD/BC_SL_FT0/Mu" , " FDD/BC_NL/Mu " , " FDD/BC_NSL_FT0/Mu " , " FDD/BC_NSL_FDD/Mu " }};
155158
156159 const AxisSpec timeAxis{2880 , 0 ., 2880 ., " #bf{t-t_{SOF} (min)}" }, bcIDAxis{nBCsPerOrbit, -0.5 , static_cast <float >(nBCsPerOrbit) - 0.5 , " #bf{BC ID in orbit}" };
157160
@@ -377,9 +380,16 @@ struct LumiStabilityPP {
377380 nBCsPerBcId[iLocalBC][BCB]++;
378381 if (iGlobalBC - globalBCIdOfLastBCWithActivityFDD > numEmptyBCsBeforeLeadingBC) {
379382 nBCsPerBcId[iLocalBC][BCSLFDD]++;
383+ } else {
384+ nBCsPerBcId[iLocalBC][BCNSLFDD]++;
380385 }
381386 if (iGlobalBC - globalBCIdOfLastBCWithActivityFT0 > numEmptyBCsBeforeLeadingBC) {
382387 nBCsPerBcId[iLocalBC][BCSLFT0]++;
388+ } else {
389+ nBCsPerBcId[iLocalBC][BCNSLFT0]++;
390+ }
391+ if (!bcPatternL[iLocalBC]) {
392+ nBCsPerBcId[iLocalBC][BCNL]++;
383393 }
384394 }
385395 if (bcPatternC[iLocalBC]) {
@@ -424,6 +434,12 @@ struct LumiStabilityPP {
424434 fillHistograms<AllBCs, BCSLFDD>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
425435 if (iBCCategory == BCSLFT0 && isSuperLeadingBcFT0)
426436 fillHistograms<AllBCs, BCSLFT0>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
437+ if (iBCCategory == BCNL && !bcPatternL[localBC] && bcPatternB[localBC])
438+ fillHistograms<AllBCs, BCNL>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
439+ if (iBCCategory == BCNSLFDD && !isSuperLeadingBcFDD && bcPatternB[localBC])
440+ fillHistograms<AllBCs, BCNSLFDD>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
441+ if (iBCCategory == BCNSLFT0 && !isSuperLeadingBcFT0 && bcPatternB[localBC])
442+ fillHistograms<AllBCs, BCNSLFT0>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
427443 }
428444 if (iTrigger == FT0Vtx && ctpInputMask.test (2 )) {
429445 if (iBCCategory == BCA && bcPatternA[localBC])
@@ -440,6 +456,12 @@ struct LumiStabilityPP {
440456 fillHistograms<FT0Vtx, BCSLFDD>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
441457 if (iBCCategory == BCSLFT0 && isSuperLeadingBcFT0)
442458 fillHistograms<FT0Vtx, BCSLFT0>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
459+ if (iBCCategory == BCNL && !bcPatternL[localBC] && bcPatternB[localBC])
460+ fillHistograms<FT0Vtx, BCNL>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
461+ if (iBCCategory == BCNSLFDD && !isSuperLeadingBcFDD && bcPatternB[localBC])
462+ fillHistograms<FT0Vtx, BCNSLFDD>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
463+ if (iBCCategory == BCNSLFT0 && !isSuperLeadingBcFT0 && bcPatternB[localBC])
464+ fillHistograms<FT0Vtx, BCNSLFT0>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
443465 }
444466 if (iTrigger == FT0CE && ctpInputMask.test (4 )) {
445467 if (iBCCategory == BCA && bcPatternA[localBC])
@@ -456,6 +478,12 @@ struct LumiStabilityPP {
456478 fillHistograms<FT0CE, BCSLFDD>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
457479 if (iBCCategory == BCSLFT0 && isSuperLeadingBcFT0)
458480 fillHistograms<FT0CE, BCSLFT0>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
481+ if (iBCCategory == BCNL && !bcPatternL[localBC] && bcPatternB[localBC])
482+ fillHistograms<FT0CE, BCNL>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
483+ if (iBCCategory == BCNSLFDD && !isSuperLeadingBcFDD && bcPatternB[localBC])
484+ fillHistograms<FT0CE, BCNSLFDD>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
485+ if (iBCCategory == BCNSLFT0 && !isSuperLeadingBcFT0 && bcPatternB[localBC])
486+ fillHistograms<FT0CE, BCNSLFT0>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
459487 }
460488 if (iTrigger == FDD && ctpInputMaskFDD.test (15 )) {
461489 if (iBCCategory == BCA && bcPatternA[localBC])
@@ -472,6 +500,12 @@ struct LumiStabilityPP {
472500 fillHistograms<FDD, BCSLFDD>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
473501 if (iBCCategory == BCSLFT0 && isSuperLeadingBcFT0)
474502 fillHistograms<FDD, BCSLFT0>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
503+ if (iBCCategory == BCNL && !bcPatternL[localBC] && bcPatternB[localBC])
504+ fillHistograms<FDD, BCNL>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
505+ if (iBCCategory == BCNSLFDD && !isSuperLeadingBcFDD && bcPatternB[localBC])
506+ fillHistograms<FDD, BCNSLFDD>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
507+ if (iBCCategory == BCNSLFT0 && !isSuperLeadingBcFT0 && bcPatternB[localBC])
508+ fillHistograms<FDD, BCNSLFT0>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
475509 }
476510 }
477511 }
0 commit comments