Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 54 additions & 38 deletions PWGMM/Lumi/Tasks/lumiStabilityPP.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ struct LumiStabilityPP {
std::array<std::array<std::map<int, std::shared_ptr<TH1>>, NBCCategories>, NTriggerAliases> histBcVsTime;
std::array<std::array<std::map<int, std::shared_ptr<TH1>>, NBCCategories>, NTriggerAliases> histBcVsBcId;
std::array<std::array<std::map<int, std::shared_ptr<TH1>>, NBCCategories>, NTriggerAliases> histMu;
std::array<std::array<std::map<int, std::shared_ptr<TH2>>, NBCCategories>, NTriggerAliases> histMuPerBcId;
std::map<int, std::shared_ptr<TH1>> histNBcsVsTime;
std::map<int, std::shared_ptr<TH1>> histNBcsVsBcId;
std::map<int, std::shared_ptr<TH1>> histTfPerMin;
Expand Down Expand Up @@ -190,6 +191,7 @@ struct LumiStabilityPP {
histBcVsTime[iTrigger][iBCCategory][runNumber] = registry.add<TH1>(Form("%d/%s", runNumber, std::string(NBCsVsTimeHistNames[iTrigger][iBCCategory]).c_str()), "Time of triggered BCs since the start of fill;#bf{t-t_{SOF} (min)};#bf{#it{N}_{BC}}", HistType::kTH1D, {timeAxis});
histBcVsBcId[iTrigger][iBCCategory][runNumber] = registry.add<TH1>(Form("%d/%s", runNumber, std::string(NBCsVsBCIDHistNames[iTrigger][iBCCategory]).c_str()), "BC ID of triggered BCs;#bf{BC ID in orbit};#bf{#it{N}_{BC}}", HistType::kTH1D, {bcIDAxis});
histMu[iTrigger][iBCCategory][runNumber] = registry.add<TH1>(Form("%d/%s", runNumber, std::string(MuHistNames[iTrigger][iBCCategory]).c_str()), "pile-up #mu of different triggers;#mu;counts", HistType::kTH1D, {{1000, 0., 0.2}});
histMuPerBcId[iTrigger][iBCCategory][runNumber] = registry.add<TH2>(Form("%d/%sVsBcId", runNumber, std::string(MuHistNames[iTrigger][iBCCategory]).c_str()), "pile-up #mu of different triggers per BCId;#mu;counts", HistType::kTH2D, {{bcIDAxis}, {1000, 0., 0.2}});
}
}
}
Expand Down Expand Up @@ -296,10 +298,16 @@ struct LumiStabilityPP {
aod::FDDs const&)
{
int64_t globalBCIdOfLastBCWithActivityFDD{0}, globalBCIdOfLastBCWithActivityFT0{0}, globalBCLastInspectedBC{-1};
int nBCs[NBCCategories];
std::fill(&nBCs[0], &nBCs[0] + static_cast<int>(NBCCategories), 0); // Initialize to 0
std::vector<std::array<int, NBCCategories>> nBCsPerBcId;
nBCsPerBcId.resize(nBCsPerOrbit);
std::fill(&nBCsPerBcId[0][0], &nBCsPerBcId[0][0] + (static_cast<int>(nBCsPerOrbit) * static_cast<int>(NBCCategories)), 0); // Initialize to 0
std::vector<std::array<std::array<int, NBCCategories>, NTriggerAliases>> nTriggersPerBcId;
nTriggersPerBcId.resize(nBCsPerOrbit);
std::fill(&nTriggersPerBcId[0][0][0], &nTriggersPerBcId[0][0][0] + (static_cast<int>(nBCsPerOrbit) * static_cast<int>(NTriggerAliases) * static_cast<int>(NBCCategories)), 0); // Initialize to 0

int nTriggersPerDf[NTriggerAliases][NBCCategories];
std::fill(&nTriggersPerDf[0][0], &nTriggersPerDf[0][0] + (static_cast<int>(NTriggerAliases) * static_cast<int>(NBCCategories)), 0); // Initialize to 0

double rate{-1.};
for (const auto& bc : bcs) {

Expand Down Expand Up @@ -363,25 +371,25 @@ struct LumiStabilityPP {
for (int64_t iGlobalBC{globalBCStart}; iGlobalBC <= globalBC; ++iGlobalBC) { // we count all BCs in between one and another stored in the AO2Ds
int iLocalBC = iGlobalBC % nBCsPerOrbit;
if (bcPatternA[iLocalBC]) {
nBCs[BCA]++;
nBCsPerBcId[iLocalBC][BCA]++;
}
if (bcPatternB[iLocalBC]) {
nBCs[BCB]++;
nBCsPerBcId[iLocalBC][BCB]++;
if (iGlobalBC - globalBCIdOfLastBCWithActivityFDD < numEmptyBCsBeforeLeadingBC) {
nBCs[BCSLFDD]++;
nBCsPerBcId[iLocalBC][BCSLFDD]++;
}
if (iGlobalBC - globalBCIdOfLastBCWithActivityFT0 < numEmptyBCsBeforeLeadingBC) {
nBCs[BCSLFT0]++;
nBCsPerBcId[iLocalBC][BCSLFT0]++;
}
}
if (bcPatternC[iLocalBC]) {
nBCs[BCC]++;
nBCsPerBcId[iLocalBC][BCC]++;
}
if (bcPatternE[iLocalBC]) {
nBCs[BCE]++;
nBCsPerBcId[iLocalBC][BCE]++;
}
if (bcPatternL[iLocalBC]) {
nBCs[BCL]++;
nBCsPerBcId[iLocalBC][BCL]++;
}
}

Expand All @@ -403,67 +411,67 @@ struct LumiStabilityPP {
if (doTypeBC->get(0u, iBCCategory)) {
if (iTrigger == AllBCs) {
if (iBCCategory == BCA && bcPatternA[localBC])
fillHistograms<AllBCs, BCA>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<AllBCs, BCA>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCB && bcPatternB[localBC])
fillHistograms<AllBCs, BCB>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<AllBCs, BCB>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCC && bcPatternC[localBC])
fillHistograms<AllBCs, BCC>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<AllBCs, BCC>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCE && bcPatternE[localBC])
fillHistograms<AllBCs, BCE>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<AllBCs, BCE>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCL && bcPatternL[localBC])
fillHistograms<AllBCs, BCL>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<AllBCs, BCL>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCSLFDD && isSuperLeadingBcFDD)
fillHistograms<AllBCs, BCSLFDD>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<AllBCs, BCSLFDD>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCSLFT0 && isSuperLeadingBcFT0)
fillHistograms<AllBCs, BCSLFT0>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<AllBCs, BCSLFT0>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
}
if (iTrigger == FT0Vtx && ctpInputMask.test(2)) {
if (iBCCategory == BCA && bcPatternA[localBC])
fillHistograms<FT0Vtx, BCA>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FT0Vtx, BCA>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCB && bcPatternB[localBC])
fillHistograms<FT0Vtx, BCB>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FT0Vtx, BCB>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCC && bcPatternC[localBC])
fillHistograms<FT0Vtx, BCC>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FT0Vtx, BCC>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCE && bcPatternE[localBC])
fillHistograms<FT0Vtx, BCE>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FT0Vtx, BCE>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCL && bcPatternL[localBC])
fillHistograms<FT0Vtx, BCL>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FT0Vtx, BCL>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCSLFDD && isSuperLeadingBcFDD)
fillHistograms<FT0Vtx, BCSLFDD>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FT0Vtx, BCSLFDD>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCSLFT0 && isSuperLeadingBcFT0)
fillHistograms<FT0Vtx, BCSLFT0>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FT0Vtx, BCSLFT0>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
}
if (iTrigger == FT0CE && ctpInputMask.test(4)) {
if (iBCCategory == BCA && bcPatternA[localBC])
fillHistograms<FT0CE, BCA>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FT0CE, BCA>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCB && bcPatternB[localBC])
fillHistograms<FT0CE, BCB>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FT0CE, BCB>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCC && bcPatternC[localBC])
fillHistograms<FT0CE, BCC>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FT0CE, BCC>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCE && bcPatternE[localBC])
fillHistograms<FT0CE, BCE>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FT0CE, BCE>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCL && bcPatternL[localBC])
fillHistograms<FT0CE, BCL>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FT0CE, BCL>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCSLFDD && isSuperLeadingBcFDD)
fillHistograms<FT0CE, BCSLFDD>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FT0CE, BCSLFDD>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCSLFT0 && isSuperLeadingBcFT0)
fillHistograms<FT0CE, BCSLFT0>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FT0CE, BCSLFT0>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
}
if (iTrigger == FDD && ctpInputMaskFDD.test(15)) {
if (iBCCategory == BCA && bcPatternA[localBC])
fillHistograms<FDD, BCA>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FDD, BCA>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCB && bcPatternB[localBC])
fillHistograms<FDD, BCB>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FDD, BCB>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCC && bcPatternC[localBC])
fillHistograms<FDD, BCC>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FDD, BCC>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCE && bcPatternE[localBC])
fillHistograms<FDD, BCE>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FDD, BCE>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCL && bcPatternL[localBC])
fillHistograms<FDD, BCL>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FDD, BCL>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCSLFDD && isSuperLeadingBcFDD)
fillHistograms<FDD, BCSLFDD>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FDD, BCSLFDD>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
if (iBCCategory == BCSLFT0 && isSuperLeadingBcFT0)
fillHistograms<FDD, BCSLFT0>(timeSinceSOF, localBC, nTriggersPerDf[iTrigger][iBCCategory]);
fillHistograms<FDD, BCSLFT0>(timeSinceSOF, localBC, nTriggersPerBcId[localBC][iTrigger][iBCCategory]);
}
}
}
Expand All @@ -479,7 +487,15 @@ struct LumiStabilityPP {
for (int iTrigger{0}; iTrigger < NTriggerAliases; ++iTrigger) {
for (int iBCCategory{0}; iBCCategory < NBCCategories; ++iBCCategory) {
if (doTypeBC->get(0u, iBCCategory)) {
float mu = getMu(nTriggersPerDf[iTrigger][iBCCategory], nBCs[iBCCategory]);
int nTotBCs{0};
int nTotTriggers{0};
for (int iBcId{0}; iBcId<nBCsPerOrbit; ++iBcId) {
float muPerBcId = getMu(nTriggersPerBcId[iBcId][iTrigger][iBCCategory], nBCsPerBcId[iBcId][iBCCategory]);
histMuPerBcId[iTrigger][iBCCategory][runNumber]->Fill(iBcId, muPerBcId);
nTotBCs += nBCsPerBcId[iBcId][iBCCategory];
nTotTriggers += nTriggersPerBcId[iBcId][iTrigger][iBCCategory];
}
float mu = getMu(nTotTriggers, nTotBCs);
histMu[iTrigger][iBCCategory][runNumber]->Fill(mu);
}
}
Expand Down
Loading