Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
d03ed6e
Header for correlated bkgs
Marcellocosti May 23, 2025
8c93137
[WIP] D+ matching
Marcellocosti May 24, 2025
004acaa
[WIP] Match correlated bkgs
Marcellocosti May 27, 2025
ab9677f
[WIP] Generated matching
Marcellocosti May 28, 2025
3d9adfe
Fix gen matching
Marcellocosti May 29, 2025
cb1072e
Moved functions to creator for 3 prong
Marcellocosti May 29, 2025
aef3aa3
Move functions to creators
Marcellocosti May 30, 2025
6c31f04
Tested dev for 2prong decays
Marcellocosti May 30, 2025
29cd8b3
revert unwanted changes
Marcellocosti May 30, 2025
795f547
Remove changes
Marcellocosti May 30, 2025
803a34a
Fix Dstar matching and add other channels
Marcellocosti Jun 2, 2025
a43049a
Restore reco decay
Marcellocosti Jun 2, 2025
0e44745
[WIP] Digest new MC matching
Marcellocosti Jun 7, 2025
fa82106
Improve code clarity
Marcellocosti Jun 8, 2025
7a470ef
Remove unused variables
Marcellocosti Jun 9, 2025
b30536c
Delete debug prints for 2prong code
Marcellocosti Jun 9, 2025
407af31
Correct bitmap matching in D0 tree creator
Marcellocosti Jun 9, 2025
efbddc9
Restore matching in D0 tree
Marcellocosti Jun 9, 2025
7e66dec
Add break statements in 3prong matching
Marcellocosti Jun 10, 2025
8334ba9
Deleted debug prints
Marcellocosti Jun 10, 2025
1f27e11
Implement Mattia comment
Marcellocosti Jun 10, 2025
11452d7
Fix linter errors
Marcellocosti Jun 10, 2025
24b72df
Please consider the following formatting changes
alibuild Jun 10, 2025
1010e47
Remove const qualifier
Marcellocosti Jun 10, 2025
73dcb0b
New header for matching functions
Marcellocosti Jun 11, 2025
5ffc6a5
Implement Mattia and Vit comments
Marcellocosti Jun 11, 2025
4a20659
Please consider the following formatting changes
alibuild Jun 11, 2025
d57cc0e
Implement Mattia and Vit comments
Marcellocosti Jun 12, 2025
5c5cdb7
Use old flag scheme for 2prongs
Marcellocosti Jun 12, 2025
a4a37c1
Please consider the following formatting changes
alibuild Jun 12, 2025
9d73810
Implement Vit Comments
Marcellocosti Jun 13, 2025
5139e4f
Mark functions in header as inline
Marcellocosti Jun 17, 2025
fc47508
Rename variables and adjust map ordering
Marcellocosti Jun 17, 2025
ddc75d2
Factorize function to change Pi0 sign for antiparticles
Marcellocosti Jun 17, 2025
e49fa7a
Please consider the following formatting changes
alibuild Jun 17, 2025
7f2da75
Merge pull request #20 from alibuild/alibot-cleanup-11418
Marcellocosti Jun 17, 2025
9d7709b
Re-trigger tests
Marcellocosti Jun 17, 2025
0caac17
Please consider the following formatting changes
alibuild Jun 17, 2025
621c8da
Merge pull request #21 from alibuild/alibot-cleanup-11418
Marcellocosti Jun 17, 2025
179c214
Generalize pdg switcher + suppress linter warnings
Marcellocosti Jun 17, 2025
1383ced
Please consider the following formatting changes
alibuild Jun 17, 2025
278d244
Merge pull request #22 from alibuild/alibot-cleanup-11418
Marcellocosti Jun 17, 2025
702fa95
Fix o2-linter: disable comments
Marcellocosti Jun 17, 2025
e16bb08
Please consider the following formatting changes
alibuild Jun 17, 2025
33dfdf4
Merge pull request #23 from alibuild/alibot-cleanup-11418
Marcellocosti Jun 17, 2025
3ec1a01
Fix to Dstar matching in reco candidates
Marcellocosti Jun 18, 2025
cc948d4
Please consider the following formatting changes
alibuild Jun 18, 2025
b1ae2de
Merge pull request #24 from alibuild/alibot-cleanup-11418
Marcellocosti Jun 18, 2025
5628bab
Implement Vit comments
Marcellocosti Jun 18, 2025
b585e19
Rename configurable
Marcellocosti Jun 18, 2025
f2c4140
Remove unnecessary templetization
Marcellocosti Jun 18, 2025
3cd7c39
Allow for corr bkg matching in candidateCreatorMcGen
Marcellocosti Jun 18, 2025
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
18 changes: 17 additions & 1 deletion PWGHF/Core/DecayChannels.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,13 @@ enum DecayChannelMain : int8_t {
DsToPiPiPi, // π+ π− π+
DsToPiPiPiPi0, // π+ π− π+ π0
// D*+
DstarToPiKPi, // π+ K− π+ (from [(D0 → π+ K−) π+])
DstarToPiKPi, // π+ K− π+ (from [(D0 → π+ K−) π+])
DstarToPiKPiPi0, // π+ K− π+ π0
DstarToPiKPiPi0Pi0, // π+ K− π+ π0 π0
DstarToPiKK, // π+ K− K+
DstarToPiKKPi0, // π+ K− K+ π0
DstarToPiPiPi, // π+ π− π+
DstarToPiPiPiPi0, // π+ π− π+ π0
// Λc+
LcToPKPi, // p K− π+
LcToPKPiPi0, // p K− π+ π0
Expand Down Expand Up @@ -102,6 +108,16 @@ enum DecayChannelResonant : int8_t {
DsToF2_1270Pi, // f2(1270) π+
DsToF0_1370K, // f0(1370) K+
DsToEtaPi, // η π+
// D*+
DstarToD0ToRhoplusPi, // ρ+ π−
DstarToD0ToRhoplusK, // ρ+ K−
DstarToD0ToKstar0Pi0, // anti-K*0 π0
DstarToD0ToKstarPi, // K*− π+
DstarToDplusToPhiPi, // φ π+
DstarToDplusToKstar0K, // anti-K*0 K+
DstarToDplusToKstar1430_0K, // anti-K*0(1430) K+
DstarToDplusToRho0Pi, // ρ0 π+
DstarToDplusToF2_1270Pi, // f2(1270) π+
// Λc+
LcToPKstar0, // p K*0(892)
LcToDeltaplusplusK, // Δ++ K−
Expand Down
5 changes: 5 additions & 0 deletions PWGHF/DataModel/CandidateReconstructionTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -641,6 +641,9 @@ DECLARE_SOA_COLUMN(FlagMcMatchRec, flagMcMatchRec, int8_t); //! reconstruction l
DECLARE_SOA_COLUMN(FlagMcMatchGen, flagMcMatchGen, int8_t); //! generator level
DECLARE_SOA_COLUMN(OriginMcRec, originMcRec, int8_t); //! particle origin, reconstruction level
DECLARE_SOA_COLUMN(OriginMcGen, originMcGen, int8_t); //! particle origin, generator level
DECLARE_SOA_COLUMN(FlagMcDecayChanRec, flagMcDecayChanRec, int8_t); //! resonant decay channel flag, reconstruction level
DECLARE_SOA_COLUMN(FlagMcDecayChanGen, flagMcDecayChanGen, int8_t); //! resonant decay channel flag, reconstruction level

// KF related properties
DECLARE_SOA_COLUMN(KfGeoMassD0, kfGeoMassD0, float); //! mass of the D0 candidate from the KFParticle geometric fit
DECLARE_SOA_COLUMN(KfGeoMassD0bar, kfGeoMassD0bar, float); //! mass of the D0bar candidate from the KFParticle geometric fit
Expand Down Expand Up @@ -754,6 +757,7 @@ DECLARE_SOA_TABLE(HfCand2ProngKF, "AOD", "HFCAND2PKF",
DECLARE_SOA_TABLE(HfCand2ProngMcRec, "AOD", "HFCAND2PMCREC", //!
hf_cand_2prong::FlagMcMatchRec,
hf_cand_2prong::OriginMcRec,
hf_cand_2prong::FlagMcDecayChanRec,
hf_cand::PtBhadMotherPart,
hf_cand::PdgBhadMotherPart,
hf_cand::NTracksDecayed,
Expand All @@ -763,6 +767,7 @@ DECLARE_SOA_TABLE(HfCand2ProngMcRec, "AOD", "HFCAND2PMCREC", //!
DECLARE_SOA_TABLE(HfCand2ProngMcGen, "AOD", "HFCAND2PMCGEN", //!
hf_cand_2prong::FlagMcMatchGen,
hf_cand_2prong::OriginMcGen,
hf_cand_2prong::FlagMcDecayChanGen,
hf_cand::IdxBhadMotherPart);

// cascade decay candidate table
Expand Down
177 changes: 122 additions & 55 deletions PWGHF/TableProducer/candidateCreator2Prong.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -20,45 +20,48 @@
#define HomogeneousField // o2-linter: disable=name/macro (required by KFParticle)
#endif

#include <memory>
#include <string>
#include <vector>

#include <KFParticleBase.h>
#include <KFParticle.h>
#include <KFPTrack.h>
#include <KFPVertex.h>
#include <KFVertex.h>
#include "PWGHF/Core/CentralityEstimation.h"
#include "PWGHF/Core/DecayChannels.h"
#include "PWGHF/Core/SelectorCuts.h"
#include "PWGHF/DataModel/CandidateReconstructionTables.h"
#include "PWGHF/Utils/utilsBfieldCCDB.h"
#include "PWGHF/Utils/utilsEvSelHf.h"
#include "PWGHF/Utils/utilsMcGen.h"
#include "PWGHF/Utils/utilsMcMatching.h"
#include "PWGHF/Utils/utilsPid.h"
#include "PWGHF/Utils/utilsTrkCandHf.h"
#include "PWGLF/DataModel/mcCentrality.h"

#include <TPDGCode.h>
#include "Common/Core/trackUtilities.h"
#include "Tools/KFparticle/KFUtilities.h"

#include "CommonConstants/PhysicsConstants.h"
#include "DCAFitter/DCAFitterN.h"
#include "Framework/AnalysisTask.h"
#include "Framework/HistogramRegistry.h"
#include "Framework/runDataProcessing.h"
#include "Framework/RunningWorkflowInfo.h"
#include "Framework/runDataProcessing.h"
#include "ReconstructionDataFormats/DCA.h"

#include "Common/Core/trackUtilities.h"
#include "Tools/KFparticle/KFUtilities.h"
#include <TPDGCode.h>

#include "PWGLF/DataModel/mcCentrality.h"
#include <KFPTrack.h>
#include <KFPVertex.h>
#include <KFParticle.h>
#include <KFParticleBase.h>
#include <KFVertex.h>

#include "PWGHF/Core/CentralityEstimation.h"
#include "PWGHF/Core/SelectorCuts.h"
#include "PWGHF/DataModel/CandidateReconstructionTables.h"
#include "PWGHF/Utils/utilsBfieldCCDB.h"
#include "PWGHF/Utils/utilsEvSelHf.h"
#include "PWGHF/Utils/utilsMcGen.h"
#include "PWGHF/Utils/utilsPid.h"
#include "PWGHF/Utils/utilsTrkCandHf.h"
#include <memory>
#include <string>
#include <vector>

using namespace o2;
using namespace o2::analysis;
using namespace o2::hf_evsel;
using namespace o2::hf_trkcandsel;
using namespace o2::aod::hf_cand_2prong;
using namespace o2::hf_decay;
using namespace o2::hf_decay::hf_cand_2prong;
using namespace o2::hf_centrality;
using namespace o2::hf_occupancy;
using namespace o2::constants::physics;
Expand Down Expand Up @@ -691,6 +694,7 @@
Configurable<bool> rejectBackground{"rejectBackground", true, "Reject particles from background events"};
Configurable<bool> matchKinkedDecayTopology{"matchKinkedDecayTopology", false, "Match also candidates with tracks that decay with kinked topology"};
Configurable<bool> matchInteractionsWithMaterial{"matchInteractionsWithMaterial", false, "Match also candidates with tracks that interact with material"};
Configurable<bool> matchCorrelatedBackgrounds{"matchCorrelatedBackgrounds", false, "Match correlated background candidates"};

HfEventSelectionMc hfEvSelMc; // mc event selection and monitoring

Expand Down Expand Up @@ -738,15 +742,18 @@
int indexRec = -1;
int8_t sign = 0;
int8_t flag = 0;
int8_t channel = 0;
int8_t origin = 0;
int8_t nKinkedTracks = 0;
int8_t nInteractionsWithMaterial = 0;
constexpr std::size_t NDaughtersResonant{2u};

// Match reconstructed candidates.
// Spawned table can be used directly
for (const auto& candidate : *rowCandidateProng2) {
flag = 0;
origin = 0;
channel = 0;
auto arrayDaughters = std::array{candidate.prong0_as<aod::TracksWMc>(), candidate.prong1_as<aod::TracksWMc>()};

// Check whether the particle is from background events. If so, reject it.
Expand All @@ -762,47 +769,107 @@
}
}
if (fromBkg) {
rowMcMatchRec(flag, origin, -1.f, 0, 0, 0);
rowMcMatchRec(flag, origin, channel, -1.f, 0, 0, 0);
continue;
}
}
std::vector<int> idxBhadMothers{};

// D0(bar) → π± K∓
if (matchKinkedDecayTopology && matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, false, true, true>(mcParticles, arrayDaughters, Pdg::kD0, std::array{+kPiPlus, -kKPlus}, true, &sign, 1, &nKinkedTracks, &nInteractionsWithMaterial);
} else if (matchKinkedDecayTopology && !matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, false, true, false>(mcParticles, arrayDaughters, Pdg::kD0, std::array{+kPiPlus, -kKPlus}, true, &sign, 1, &nKinkedTracks);
} else if (!matchKinkedDecayTopology && matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, false, false, true>(mcParticles, arrayDaughters, Pdg::kD0, std::array{+kPiPlus, -kKPlus}, true, &sign, 1, nullptr, &nInteractionsWithMaterial);
} else {
indexRec = RecoDecay::getMatchedMCRec(mcParticles, arrayDaughters, Pdg::kD0, std::array{+kPiPlus, -kKPlus}, true, &sign);
}
if (indexRec > -1) {
flag = sign * (1 << DecayType::D0ToPiK);
}
if (matchCorrelatedBackgrounds) {
indexRec = -1; // Index of the matched reconstructed candidate
constexpr int FinalStateDepth = 2;
constexpr int ResoDepth = 1;

// D0(bar) → π+ K−, π+ K− π0, π+ π−, π+ π− π0, K+ K−
for (const auto& [chn, finalState] : hf_cand_2prong::daughtersD0Main) {
std::array<int, 2> finalStateParts2Prong = std::array{finalState[0], finalState[1]};
if (finalState.size() == 3) { // o2-linter: disable=magic-number (Partly Reco 3-prong decays)

Check failure on line 786 in PWGHF/TableProducer/candidateCreator2Prong.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
if (matchKinkedDecayTopology && matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, true, true, true>(mcParticles, arrayDaughters, Pdg::kD0, finalStateParts2Prong, true, &sign, FinalStateDepth, &nKinkedTracks, &nInteractionsWithMaterial);
} else if (matchKinkedDecayTopology && !matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, true, true, false>(mcParticles, arrayDaughters, Pdg::kD0, finalStateParts2Prong, true, &sign, FinalStateDepth, &nKinkedTracks);
} else if (!matchKinkedDecayTopology && matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, true, false, true>(mcParticles, arrayDaughters, Pdg::kD0, finalStateParts2Prong, true, &sign, FinalStateDepth, nullptr, &nInteractionsWithMaterial);
} else {
indexRec = RecoDecay::getMatchedMCRec<false, false, true, false, false>(mcParticles, arrayDaughters, Pdg::kD0, finalStateParts2Prong, true, &sign, FinalStateDepth);
}

// J/ψ → e+ e−
if (flag == 0) {
if (matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, false, false, true>(mcParticles, arrayDaughters, Pdg::kJPsi, std::array{+kElectron, -kElectron}, true, &sign, 1, nullptr, &nInteractionsWithMaterial);
if (indexRec > -1) {
auto motherParticle = mcParticles.rawIteratorAt(indexRec);
std::array<int, 3> finalStateParts2ProngAll = std::array{finalState[0], finalState[1], finalState[2]};
changeFinalStatePdgSign(motherParticle.pdgCode(), +kPi0, finalStateParts2ProngAll);
if (!RecoDecay::isMatchedMCGen(mcParticles, motherParticle, Pdg::kD0, finalStateParts2ProngAll, true, &sign, FinalStateDepth)) {
indexRec = -1; // Reset indexRec if the generated decay does not match the reconstructed one does not match the reconstructed one
}
}
} else if (finalState.size() == 2) { // o2-linter: disable=magic-number (Fully Reco 2-prong decays)

Check failure on line 805 in PWGHF/TableProducer/candidateCreator2Prong.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
if (matchKinkedDecayTopology && matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, false, true, true>(mcParticles, arrayDaughters, Pdg::kD0, finalStateParts2Prong, true, &sign, FinalStateDepth, &nKinkedTracks, &nInteractionsWithMaterial);
} else if (matchKinkedDecayTopology && !matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, false, true, false>(mcParticles, arrayDaughters, Pdg::kD0, finalStateParts2Prong, true, &sign, FinalStateDepth, &nKinkedTracks);
} else if (!matchKinkedDecayTopology && matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, false, false, true>(mcParticles, arrayDaughters, Pdg::kD0, finalStateParts2Prong, true, &sign, FinalStateDepth, nullptr, &nInteractionsWithMaterial);
} else {
indexRec = RecoDecay::getMatchedMCRec<false, false, false, false, false>(mcParticles, arrayDaughters, Pdg::kD0, finalStateParts2Prong, true, &sign, FinalStateDepth);
}
} else {
LOG(fatal) << "Final state size not supported: " << finalState.size();
continue;
}
if (indexRec > -1) {
flag = sign * (1 << chn);

// Flag the resonant decay channel
std::vector<int> arrResoDaughIndex = {};
RecoDecay::getDaughters(mcParticles.rawIteratorAt(indexRec), &arrResoDaughIndex, std::array{0}, ResoDepth);
std::array<int, NDaughtersResonant> arrPDGDaugh = {};
if (arrResoDaughIndex.size() == NDaughtersResonant) {
for (auto iProng = 0u; iProng < arrResoDaughIndex.size(); ++iProng) {
auto daughI = mcParticles.rawIteratorAt(arrResoDaughIndex[iProng]);
arrPDGDaugh[iProng] = daughI.pdgCode();
}
channel = flagResonantDecay(Pdg::kD0, arrPDGDaugh);
}
break;
}
}
} else {
// D0(bar) → π± K∓
if (matchKinkedDecayTopology && matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, false, true, true>(mcParticles, arrayDaughters, Pdg::kD0, std::array{+kPiPlus, -kKPlus}, true, &sign, 1, &nKinkedTracks, &nInteractionsWithMaterial);
} else if (matchKinkedDecayTopology && !matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, false, true, false>(mcParticles, arrayDaughters, Pdg::kD0, std::array{+kPiPlus, -kKPlus}, true, &sign, 1, &nKinkedTracks);
} else if (!matchKinkedDecayTopology && matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, false, false, true>(mcParticles, arrayDaughters, Pdg::kD0, std::array{+kPiPlus, -kKPlus}, true, &sign, 1, nullptr, &nInteractionsWithMaterial);
} else {
indexRec = RecoDecay::getMatchedMCRec(mcParticles, arrayDaughters, Pdg::kJPsi, std::array{+kElectron, -kElectron}, true);
indexRec = RecoDecay::getMatchedMCRec(mcParticles, arrayDaughters, Pdg::kD0, std::array{+kPiPlus, -kKPlus}, true, &sign);
}
if (indexRec > -1) {
flag = 1 << DecayType::JpsiToEE;
flag = sign * (1 << DecayType::D0ToPiK);
}
}

// J/ψ → μ+ μ−
if (flag == 0) {
if (matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, false, false, true>(mcParticles, arrayDaughters, Pdg::kJPsi, std::array{+kMuonPlus, -kMuonPlus}, true, &sign, 1, nullptr, &nInteractionsWithMaterial);
} else {
indexRec = RecoDecay::getMatchedMCRec(mcParticles, arrayDaughters, Pdg::kJPsi, std::array{+kMuonPlus, -kMuonPlus}, true);
// J/ψ → e+ e−
if (flag == 0) {
if (matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, false, false, true>(mcParticles, arrayDaughters, Pdg::kJPsi, std::array{+kElectron, -kElectron}, true, &sign, 1, nullptr, &nInteractionsWithMaterial);
} else {
indexRec = RecoDecay::getMatchedMCRec(mcParticles, arrayDaughters, Pdg::kJPsi, std::array{+kElectron, -kElectron}, true);
}
if (indexRec > -1) {
flag = 1 << DecayType::JpsiToEE;
}
}
if (indexRec > -1) {
flag = 1 << DecayType::JpsiToMuMu;

// J/ψ → μ+ μ−
if (flag == 0) {
if (matchInteractionsWithMaterial) {
indexRec = RecoDecay::getMatchedMCRec<false, false, false, false, true>(mcParticles, arrayDaughters, Pdg::kJPsi, std::array{+kMuonPlus, -kMuonPlus}, true, &sign, 1, nullptr, &nInteractionsWithMaterial);
} else {
indexRec = RecoDecay::getMatchedMCRec(mcParticles, arrayDaughters, Pdg::kJPsi, std::array{+kMuonPlus, -kMuonPlus}, true);
}
if (indexRec > -1) {
flag = 1 << DecayType::JpsiToMuMu;
}
}
}

Expand All @@ -813,9 +880,9 @@
}
if (origin == RecoDecay::OriginType::NonPrompt) {
auto bHadMother = mcParticles.rawIteratorAt(idxBhadMothers[0]);
rowMcMatchRec(flag, origin, bHadMother.pt(), bHadMother.pdgCode(), nKinkedTracks, nInteractionsWithMaterial);
rowMcMatchRec(flag, origin, channel, bHadMother.pt(), bHadMother.pdgCode(), nKinkedTracks, nInteractionsWithMaterial);
} else {
rowMcMatchRec(flag, origin, -1.f, 0, nKinkedTracks, nInteractionsWithMaterial);
rowMcMatchRec(flag, origin, channel, -1.f, 0, nKinkedTracks, nInteractionsWithMaterial);
}
}

Expand All @@ -842,11 +909,11 @@
if (rejectionMask != 0) {
// at least one event selection not satisfied --> reject all particles from this collision
for (unsigned int i = 0; i < mcParticlesPerMcColl.size(); ++i) {
rowMcMatchGen(0, 0, -1);
rowMcMatchGen(0, 0, 0, -1);
}
continue;
}
hf_mc_gen::fillMcMatchGen2Prong(mcParticles, mcParticlesPerMcColl, rowMcMatchGen, rejectBackground);
hf_mc_gen::fillMcMatchGen2Prong(mcParticles, mcParticlesPerMcColl, rowMcMatchGen, rejectBackground, matchCorrelatedBackgrounds);
}
}

Expand Down
Loading
Loading