Skip to content

Commit 251f0d0

Browse files
author
Sahil Upadhyaya
committed
Adding processMCGenWithGrouping for 1st generation 2-prong MC Signal
1 parent bf7205c commit 251f0d0

File tree

1 file changed

+46
-1
lines changed

1 file changed

+46
-1
lines changed

PWGDQ/Tasks/dqEfficiency_withAssoc.cxx

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1386,7 +1386,7 @@ struct AnalysisSameEventPairing {
13861386
if (context.mOptions.get<bool>("processDummy")) {
13871387
return;
13881388
}
1389-
bool isMCGen = context.mOptions.get<bool>("processMCGen");
1389+
bool isMCGen = context.mOptions.get<bool>("processMCGen") || context.mOptions.get<bool>("processMCGenWithGrouping");
13901390
VarManager::SetDefaultVarNames();
13911391

13921392
fEnableBarrelHistos = context.mOptions.get<bool>("processAllSkimmed") || context.mOptions.get<bool>("processBarrelOnlySkimmed") || context.mOptions.get<bool>("processBarrelOnlyWithCollSkimmed");
@@ -2318,6 +2318,50 @@ struct AnalysisSameEventPairing {
23182318
} // end loop over reconstructed events
23192319
}
23202320

2321+
void processMCGenWithGrouping(soa::Filtered<MyEventsVtxCovSelected> const& events,
2322+
ReducedMCEvents const& /*mcEvents*/, ReducedMCTracks const& mcTracks)
2323+
{
2324+
uint32_t mcDecision = 0;
2325+
int isig = 0;
2326+
for (auto& event : events) {
2327+
if (!event.isEventSelected_bit(0)) {
2328+
continue;
2329+
}
2330+
if (!event.has_reducedMCevent()) {
2331+
continue;
2332+
}
2333+
2334+
if (fHasTwoProngGenMCsignals) {
2335+
auto groupedMCTracks = mcTracks.sliceBy(perReducedMcEvent, event.reducedMCeventId());
2336+
groupedMCTracks.bindInternalIndicesTo(&mcTracks);
2337+
for (auto& [t1, t2] : combinations(groupedMCTracks, groupedMCTracks))
2338+
{
2339+
auto t1_raw = groupedMCTracks.rawIteratorAt(t1.globalIndex());
2340+
auto t2_raw = groupedMCTracks.rawIteratorAt(t2.globalIndex());
2341+
if (t1_raw.reducedMCeventId() == t2_raw.reducedMCeventId()) {
2342+
mcDecision = 0;
2343+
isig = 0;
2344+
for (auto& sig : fGenMCSignals) {
2345+
if (sig->GetNProngs() != 2) { // NOTE: 2-prong signals required here
2346+
continue;
2347+
}
2348+
if (sig->CheckSignal(true, t1_raw, t2_raw)) {
2349+
mcDecision |= (static_cast<uint32_t>(1) << isig);
2350+
VarManager::FillPairMC<VarManager::kDecayToMuMu>(t1, t2); // NOTE: This feature will only work for muons
2351+
fHistMan->FillHistClass(Form("MCTruthGenPairSel_%s", sig->GetName()), VarManager::fgValues);
2352+
if (useMiniTree.fConfigMiniTree) {
2353+
// WARNING! To be checked
2354+
dileptonMiniTreeGen(mcDecision, -999, t1.pt(), t1.eta(), t1.phi(), t2.pt(), t2.eta(), t2.phi());
2355+
}
2356+
}
2357+
isig++;
2358+
}
2359+
}
2360+
}
2361+
} // end loop over reconstructed events
2362+
}
2363+
}
2364+
23212365
void processDummy(MyEvents&)
23222366
{
23232367
// do nothing
@@ -2328,6 +2372,7 @@ struct AnalysisSameEventPairing {
23282372
PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlyWithCollSkimmed, "Run barrel only pairing, with skimmed tracks and with collision information", false);
23292373
PROCESS_SWITCH(AnalysisSameEventPairing, processMuonOnlySkimmed, "Run muon only pairing, with skimmed tracks", false);
23302374
PROCESS_SWITCH(AnalysisSameEventPairing, processMCGen, "Loop over MC particle stack and fill generator level histograms", false);
2375+
PROCESS_SWITCH(AnalysisSameEventPairing, processMCGenWithGrouping, "Loop over MC particle stack (grouped MCTracks) and fill generator level histograms", false);
23312376
PROCESS_SWITCH(AnalysisSameEventPairing, processDummy, "Dummy function, enabled only if none of the others are enabled", true);
23322377
};
23332378

0 commit comments

Comments
 (0)