Skip to content

Commit 5591daa

Browse files
authored
[PWGLF] Add doClosureTestPureMC Configurable in hStrangeCorrelation.cxx (#18008)
1 parent d217352 commit 5591daa

1 file changed

Lines changed: 69 additions & 57 deletions

File tree

‎PWGLF/Tasks/Strangeness/hStrangeCorrelation.cxx‎

Lines changed: 69 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ struct HStrangeCorrelation {
125125
Configurable<bool> doCorrelationOmegaPlus{"doCorrelationOmegaPlus", false, "do OmegaPlus correlation"};
126126
Configurable<bool> doCorrelationPion{"doCorrelationPion", false, "do Pion correlation"};
127127
Configurable<bool> doGenEventSelection{"doGenEventSelection", true, "use event selections when performing closure test for the gen events"};
128+
Configurable<bool> doClosureTestPureMC{"doClosureTestPureMC", false, "fill regular ClosureTest histograms without event or reconstructed-trigger selection, using MC vertex z and centrality 0.05; keep truth-particle selections"};
128129
Configurable<bool> selectINELgtZERO{"selectINELgtZERO", true, "select INEL>0 events"};
129130
Configurable<bool> selectINELgtONE{"selectINELgtONE", false, "select INEL>1 events (at least 2 charged particles in |eta| < 1)"};
130131
Configurable<float> zVertexCut{"zVertexCut", 10, "Cut on PV position"};
@@ -6181,71 +6182,82 @@ struct HStrangeCorrelation {
61816182

61826183
float bestCollisionCentpercentile = -1;
61836184
float bestCollisionVtxZ = 0.0f;
6184-
bool bestCollisionSel8 = false;
6185-
bool bestCollisionINELgtZERO = false;
6186-
bool bestCollisionINELgtONE = false;
6187-
bool bestCollisionNoSameBunchPileup = false;
6188-
bool bestCollisionGoodTriggerTVX = false;
6189-
bool bestCollisionGoodZvtxFT0vsPV = false;
6190-
bool isCollisionSelect = false;
6191-
int biggestNContribs = -1;
6192-
uint32_t bestCollisionTriggerPresenceMap = 0;
6185+
// Pure MC defines an inclusive generated-event reference, independent of
6186+
// reconstructed collisions and triggerPresenceMap. Particle/pair selections
6187+
// below still define the observable. PairLossK0 diagnostics above retain
6188+
// their own event selection.
6189+
if (masterConfigurations.doClosureTestPureMC) {
6190+
bestCollisionCentpercentile = 0.05f;
6191+
bestCollisionVtxZ = mcCollision.posZ();
6192+
} else {
6193+
bool bestCollisionSel8 = false;
6194+
bool bestCollisionINELgtZERO = false;
6195+
bool bestCollisionINELgtONE = false;
6196+
bool bestCollisionNoSameBunchPileup = false;
6197+
bool bestCollisionGoodTriggerTVX = false;
6198+
bool bestCollisionGoodZvtxFT0vsPV = false;
6199+
bool isCollisionSelect = false;
6200+
int biggestNContribs = -1;
6201+
uint32_t bestCollisionTriggerPresenceMap = 0;
61936202

6194-
for (auto const& recCollision : recCollisions) {
6195-
if (biggestNContribs < recCollision.numContrib()) {
6196-
biggestNContribs = recCollision.numContrib();
6197-
bestCollisionCentpercentile = masterConfigurations.doPPAnalysis ? recCollision.centFT0M() : recCollision.centFT0C();
6198-
if (masterConfigurations.applyNewMCSelection) {
6199-
isCollisionSelect = ((masterConfigurations.doPPAnalysis && isCollisionSelected(recCollision)) || (!masterConfigurations.doPPAnalysis && isCollisionSelectedPbPb(recCollision, false)));
6200-
} else {
6201-
bestCollisionSel8 = recCollision.sel8();
6203+
for (auto const& recCollision : recCollisions) {
6204+
if (biggestNContribs < recCollision.numContrib()) {
6205+
biggestNContribs = recCollision.numContrib();
6206+
bestCollisionCentpercentile = masterConfigurations.doPPAnalysis ? recCollision.centFT0M() : recCollision.centFT0C();
6207+
// Both branches fill the generated-level THns with this vertex position, so it
6208+
// is taken from the best collision regardless of which event selection is used.
62026209
bestCollisionVtxZ = recCollision.posZ();
6203-
bestCollisionINELgtZERO = recCollision.isInelGt0();
6204-
bestCollisionINELgtONE = recCollision.isInelGt1();
6205-
bestCollisionNoSameBunchPileup = recCollision.selection_bit(o2::aod::evsel::kNoSameBunchPileup);
6206-
bestCollisionGoodTriggerTVX = recCollision.selection_bit(aod::evsel::kIsTriggerTVX);
6207-
bestCollisionGoodZvtxFT0vsPV = recCollision.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV);
6208-
}
6209-
if (triggerPresenceMap.size() > 0) {
6210-
bestCollisionTriggerPresenceMap = triggerPresenceMap[recCollision.globalIndex()];
6210+
if (masterConfigurations.applyNewMCSelection) {
6211+
isCollisionSelect = ((masterConfigurations.doPPAnalysis && isCollisionSelected(recCollision)) || (!masterConfigurations.doPPAnalysis && isCollisionSelectedPbPb(recCollision, false)));
6212+
} else {
6213+
bestCollisionSel8 = recCollision.sel8();
6214+
bestCollisionINELgtZERO = recCollision.isInelGt0();
6215+
bestCollisionINELgtONE = recCollision.isInelGt1();
6216+
bestCollisionNoSameBunchPileup = recCollision.selection_bit(o2::aod::evsel::kNoSameBunchPileup);
6217+
bestCollisionGoodTriggerTVX = recCollision.selection_bit(aod::evsel::kIsTriggerTVX);
6218+
bestCollisionGoodZvtxFT0vsPV = recCollision.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV);
6219+
}
6220+
if (triggerPresenceMap.size() > 0) {
6221+
bestCollisionTriggerPresenceMap = triggerPresenceMap[recCollision.globalIndex()];
6222+
}
62116223
}
62126224
}
6213-
}
6214-
// ________________________________________________
6215-
// skip if desired trigger not found
6216-
if (triggerPresenceMap.size() > 0 && !TESTBIT(bestCollisionTriggerPresenceMap, triggerBinToSelect)) {
6217-
return;
6218-
}
6219-
6220-
if (masterConfigurations.applyNewMCSelection) {
6221-
if (!isCollisionSelect) {
6225+
// ________________________________________________
6226+
// skip if desired trigger not found
6227+
if (triggerPresenceMap.size() > 0 && !TESTBIT(bestCollisionTriggerPresenceMap, triggerBinToSelect)) {
62226228
return;
62236229
}
6224-
} else {
6225-
if (masterConfigurations.doGenEventSelection) {
6226-
if (!bestCollisionSel8) {
6227-
return;
6228-
}
6229-
if (std::abs(bestCollisionVtxZ) > masterConfigurations.zVertexCut) {
6230-
return;
6231-
}
6232-
if (!bestCollisionINELgtZERO) {
6233-
return;
6234-
}
6235-
if (masterConfigurations.selectINELgtONE && !bestCollisionINELgtONE) {
6236-
return;
6237-
}
6238-
if (masterConfigurations.rejectSameBunchPileup && !bestCollisionNoSameBunchPileup) {
6239-
return;
6240-
}
6241-
if (masterConfigurations.requireGoodTriggerTVX && !bestCollisionGoodTriggerTVX) {
6242-
return;
6243-
}
6244-
if (masterConfigurations.requireGoodZvtxFT0vsPV && !bestCollisionGoodZvtxFT0vsPV) {
6230+
6231+
if (masterConfigurations.applyNewMCSelection) {
6232+
if (!isCollisionSelect) {
62456233
return;
62466234
}
6247-
if (bestCollisionCentpercentile > axisRanges[5][1] || bestCollisionCentpercentile < axisRanges[5][0]) {
6248-
return;
6235+
} else {
6236+
if (masterConfigurations.doGenEventSelection) {
6237+
if (!bestCollisionSel8) {
6238+
return;
6239+
}
6240+
if (std::abs(bestCollisionVtxZ) > masterConfigurations.zVertexCut) {
6241+
return;
6242+
}
6243+
if (!bestCollisionINELgtZERO) {
6244+
return;
6245+
}
6246+
if (masterConfigurations.selectINELgtONE && !bestCollisionINELgtONE) {
6247+
return;
6248+
}
6249+
if (masterConfigurations.rejectSameBunchPileup && !bestCollisionNoSameBunchPileup) {
6250+
return;
6251+
}
6252+
if (masterConfigurations.requireGoodTriggerTVX && !bestCollisionGoodTriggerTVX) {
6253+
return;
6254+
}
6255+
if (masterConfigurations.requireGoodZvtxFT0vsPV && !bestCollisionGoodZvtxFT0vsPV) {
6256+
return;
6257+
}
6258+
if (bestCollisionCentpercentile > axisRanges[5][1] || bestCollisionCentpercentile < axisRanges[5][0]) {
6259+
return;
6260+
}
62496261
}
62506262
}
62516263
}

0 commit comments

Comments
 (0)