Skip to content

Commit 1c7b73f

Browse files
authored
[PWGLF] cascades in pp: add RCT selection for gen. MC (#16463)
1 parent 4a1216c commit 1c7b73f

1 file changed

Lines changed: 21 additions & 9 deletions

File tree

PWGLF/TableProducer/Strangeness/cascqaanalysis.cxx

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ struct Cascqaanalysis {
121121
Configurable<bool> isNoTimeFrameBorder{"isNoTimeFrameBorder", 1, "TF border cut"};
122122
Configurable<bool> isNoITSROFrameBorder{"isNoITSROFrameBorder", 1, "ITS ROF border cut"};
123123
Configurable<bool> applyBcBorderCutsOnGen{"applyBcBorderCutsOnGen", false, "Apply enabled BC-level TF and ITS ROF border cuts on generated-level MC collisions"};
124+
Configurable<bool> applyRCTOnGen{"applyRCTOnGen", false, "Apply enabled BC-level RCT run-condition selection on generated-level MC collisions"};
124125
Configurable<bool> isNoCollInTimeRangeNarrow{"isNoCollInTimeRangeNarrow", 1, "No collisions in +-2us window"};
125126

126127
Configurable<bool> requireRCTFlagChecker{"requireRCTFlagChecker", true, "Check event quality in run condition table"};
@@ -223,7 +224,7 @@ struct Cascqaanalysis {
223224
void init(InitContext const&)
224225
{
225226
TString hCandidateCounterLabels[4] = {"All candidates", "passed topo cuts", "has associated MC particle", "associated with Xi(Omega)"};
226-
TString hNEventsMCLabels[7] = {"All", "z vrtx", "BC TF/ITS ROF border", "INEL", "INEL>0", "INEL>1", "Associated with rec. collision"};
227+
TString hNEventsMCLabels[8] = {"All", "z vrtx", "BC TF/ITS ROF border", "RCTFlagsChecker", "INEL", "INEL>0", "INEL>1", "Associated with rec. collision"};
227228
TString hNEventsLabels[14] = {"All", "kIsTriggerTVX", "kNoTimeFrameBorder", "kNoITSROFrameBorder", "kIsVertexITSTPC", "kNoSameBunchPileup", "kIsGoodZvtxFT0vsPV", "isVertexTOFmatched", "kNoCollInTimeRangeNarrow", "z vrtx", "RCTFlagsChecker", "INEL", "INEL>0", "INEL>1"};
228229

229230
registry.add("hNEvents", "hNEvents", {HistType::kTH1D, {{14, 0.f, 14.f}}});
@@ -241,7 +242,7 @@ struct Cascqaanalysis {
241242
// Rec. lvl
242243
registry.add("fakeEvents", "fakeEvents", {HistType::kTH1F, {{1, -0.5f, 0.5f}}});
243244
// Gen. lvl
244-
registry.add("hNEventsMC", "hNEventsMC", {HistType::kTH1D, {{7, 0.0f, 7.0f}}});
245+
registry.add("hNEventsMC", "hNEventsMC", {HistType::kTH1D, {{8, 0.0f, 8.0f}}});
245246
for (int n = 1; n <= registry.get<TH1>(HIST("hNEventsMC"))->GetNbinsX(); n++) {
246247
registry.get<TH1>(HIST("hNEventsMC"))->GetXaxis()->SetBinLabel(n, hNEventsMCLabels[n - 1]);
247248
}
@@ -295,7 +296,7 @@ struct Cascqaanalysis {
295296
setEventTypeAxisLabels(registry.get<TH3>(HIST("hFT0MsignalPVContr"))->GetZaxis());
296297
}
297298

298-
rctChecker.init(cfgEvtRCTFlagCheckerLabel, cfgEvtRCTFlagCheckerZDCCheck, cfgEvtRCTFlagCheckerLimitAcceptAsBad);
299+
rctChecker.init(cfgEvtRCTFlagCheckerLabel, cfgEvtRCTFlagCheckerZDCCheck, cfgEvtRCTFlagCheckerLimitAcceptAsBad, requireRCTFlagChecker || applyRCTOnGen);
299300
if (cfgEvtRCTFlagCheckerFV0Check) {
300301
rctChecker.set(o2::aod::rctsel::kFV0Bad);
301302
}
@@ -498,6 +499,12 @@ struct Cascqaanalysis {
498499
return true;
499500
}
500501

502+
template <typename TBC>
503+
bool acceptGeneratedEventRCT(TBC const& bc)
504+
{
505+
return !applyRCTOnGen || rctChecker(bc);
506+
}
507+
501508
void processData(soa::Join<aod::Collisions, aod::EvSels,
502509
aod::PVMults, aod::FT0Mults, aod::FV0Mults,
503510
aod::CentFT0Ms, aod::CentFV0As>::iterator const& collision,
@@ -709,28 +716,33 @@ struct Cascqaanalysis {
709716
return;
710717
}
711718
registry.fill(HIST("hNEventsMC"), 1.5);
712-
if (!acceptGeneratedEventBcBorderCuts(mcCollision.bc_as<BCsWithBcSels>())) {
719+
const auto bc = mcCollision.bc_as<BCsWithBcSels>();
720+
if (!acceptGeneratedEventBcBorderCuts(bc)) {
713721
return;
714722
}
715-
registry.fill(HIST("hZCollisionGen"), mcCollision.posZ());
716723
registry.fill(HIST("hNEventsMC"), 2.5);
724+
if (!acceptGeneratedEventRCT(bc)) {
725+
return;
726+
}
727+
registry.fill(HIST("hZCollisionGen"), mcCollision.posZ());
728+
registry.fill(HIST("hNEventsMC"), 3.5);
717729

718730
// Define the type of generated MC collision
719731
EventTypeBin evType = kINEL;
720732
uint8_t flagsGen = 0;
721733
flagsGen |= o2::aod::myMCcascades::EvFlags::EvINEL;
722-
registry.fill(HIST("hNEventsMC"), 3.5);
734+
registry.fill(HIST("hNEventsMC"), 4.5);
723735
// Generated collision is INEL>0
724736
if (pwglf::isINELgtNmc(mcParticles, 0, pdgDB)) {
725737
flagsGen |= o2::aod::myMCcascades::EvFlags::EvINELgt0;
726738
evType = kINELgt0;
727-
registry.fill(HIST("hNEventsMC"), 4.5);
739+
registry.fill(HIST("hNEventsMC"), 5.5);
728740
}
729741
// Generated collision is INEL>1
730742
if (pwglf::isINELgtNmc(mcParticles, 1, pdgDB)) {
731743
flagsGen |= o2::aod::myMCcascades::EvFlags::EvINELgt1;
732744
evType = kINELgt1;
733-
registry.fill(HIST("hNEventsMC"), 5.5);
745+
registry.fill(HIST("hNEventsMC"), 6.5);
734746
}
735747

736748
registry.fill(HIST("hCentFT0M_genMC"), mcCollision.centFT0M(), evType);
@@ -805,7 +817,7 @@ struct Cascqaanalysis {
805817
uint8_t flagsAssoc = 0;
806818
if (evtReconstructedAndINEL) {
807819
flagsAssoc |= o2::aod::myMCcascades::EvFlags::EvINEL;
808-
registry.fill(HIST("hNEventsMC"), 6.5);
820+
registry.fill(HIST("hNEventsMC"), 7.5);
809821
}
810822
if (evtReconstructedAndINELgt0) {
811823
flagsAssoc |= o2::aod::myMCcascades::EvFlags::EvINELgt0;

0 commit comments

Comments
 (0)