Skip to content

Commit 32fe032

Browse files
committed
PWGJE: Reverting to MCD->MCP matching for inclusive jets
1 parent 93e4fbf commit 32fe032

File tree

1 file changed

+64
-79
lines changed

1 file changed

+64
-79
lines changed

PWGJE/Tasks/jetHadronRecoil.cxx

Lines changed: 64 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ using namespace o2::framework::expressions;
5252

5353
struct JetHadronRecoil {
5454

55+
using JetParticlesWithOriginal = soa::Join<aod::JetParticles, aod::JMcParticlePIs>;
56+
57+
Preslice<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>> perColJetMC = aod::jet::mcCollisionId;
58+
5559
std::vector<fastjet::PseudoJet> jetConstituents;
5660
std::vector<fastjet::PseudoJet> jetReclustered;
5761
JetFinder jetReclusterer;
@@ -617,9 +621,11 @@ struct JetHadronRecoil {
617621
}
618622

619623
template <typename T, typename U, typename X, typename Y>
620-
void fillMatchedHistograms(T const&, U const& jetsTag, X const& tracks, Y const& particles, float weight = 1.0, float rho = 0.0, float pTHat = 999.0)
624+
void fillMatchedHistograms(T const& jetsBase, U const& jetsTag, X const& tracks, Y const& particles, float weight = 1.0, float rho = 0.0, float pTHat = 999.0, auto collisionID = 0)
621625
{
622-
for (const auto& jetTag : jetsTag) {
626+
const auto jetsTagColl = jetsTag.sliceBy(perColJetMC, collisionID);
627+
628+
for (const auto& jetTag : jetsTagColl) {
623629

624630
if (jetTag.pt() > pTHatMaxMCP * pTHat) {
625631
if (outlierRejectEvent) {
@@ -630,19 +636,30 @@ struct JetHadronRecoil {
630636
}
631637

632638
registry.fill(HIST("hPtTruth1D"), jetTag.pt(), weight);
639+
}
633640

634-
double dR = getWTAaxisDifference(jetTag, particles);
635-
if (jetTag.has_matchedJetGeo()) {
636-
for (const auto& jetBase : jetTag.template matchedJetGeo_as<std::decay_t<T>>()) {
637-
if (jetBase.pt() > pTHatMaxMCD * pTHat) {
641+
for (const auto& jetBase : jetsBase) {
642+
643+
if (jetBase.pt() > pTHatMaxMCD * pTHat) {
644+
if (outlierRejectEvent) {
645+
return;
646+
} else {
647+
continue;
648+
}
649+
}
650+
651+
double dR = getWTAaxisDifference(jetBase, tracks);
652+
if (jetBase.has_matchedJetGeo()) {
653+
for (const auto& jetTag : jetBase.template matchedJetGeo_as<std::decay_t<U>>()) {
654+
if (jetTag.pt() > pTHatMaxMCP * pTHat) {
638655
if (outlierRejectEvent) {
639656
return;
640657
} else {
641658
continue;
642659
}
643660
}
644661

645-
double dRp = getWTAaxisDifference(jetBase, tracks);
662+
double dRp = getWTAaxisDifference(jetTag, particles);
646663

647664
registry.fill(HIST("hPtMatched"), jetBase.pt() - (rho * jetBase.area()), jetTag.pt(), weight);
648665
registry.fill(HIST("hPhiMatched"), jetBase.phi(), jetTag.phi(), weight);
@@ -944,131 +961,99 @@ struct JetHadronRecoil {
944961
}
945962
PROCESS_SWITCH(JetHadronRecoil, processMCPOnTheFlyWeighted, "process MC particle level for on-the-fly simulations with event weights", false);
946963

947-
void processJetsMCPMCDMatched(aod::JetMcCollisions::iterator const& mccollision,
948-
soa::SmallGroups<aod::JetCollisionsMCD> const& collisions,
964+
void processJetsMCPMCDMatched(soa::Filtered<soa::Join<aod::JetCollisions, aod::JMcCollisionLbs>>::iterator const& collision,
965+
aod::JMcCollisions const&,
949966
soa::Filtered<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets>> const& mcdjets,
950-
soa::Filtered<aod::JetParticles> const& particles,
951967
soa::Filtered<aod::JetTracksMCD> const& tracks,
952-
soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>> const& mcpjets)
968+
soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>> const& mcpjets,
969+
JetParticlesWithOriginal const& particles)
953970
{
954-
if (std::abs(mccollision.posZ()) > vertexZCut) {
971+
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits, skipMBGapEvents, applyRCTSelections)) {
955972
return;
956973
}
957-
if (!jetderiveddatautilities::selectMcCollision(mccollision, skipMBGapEvents, applyRCTSelections)) {
974+
if (!collision.has_mcCollision()) {
958975
return;
959976
}
960-
if (mccollision.ptHard() < pTHatMinEvent) {
977+
if (collision.mcCollision().ptHard() < pTHatMinEvent) {
961978
return;
962979
}
963-
if (collisions.size() < 1) {
980+
if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) {
964981
return;
965982
}
966-
for (auto const& collision : collisions) {
967-
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) {
968-
return;
969-
}
970-
if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) {
971-
return;
972-
}
973-
}
974-
registry.fill(HIST("hZvtxSelected"), mccollision.posZ());
975-
fillMatchedHistograms(mcdjets, mcpjets, tracks, particles);
983+
registry.fill(HIST("hZvtxSelected"), collision.posZ());
984+
fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, 1.0, 0.0, collision.mcCollision().ptHard(), collision.mcCollisionId());
976985
}
977986
PROCESS_SWITCH(JetHadronRecoil, processJetsMCPMCDMatched, "process MC matched (inc jets)", false);
978987

979-
void processJetsMCPMCDMatchedWithRhoSubtraction(soa::Join<aod::JetMcCollisions, aod::BkgChargedRhos>::iterator const& mccollision,
980-
soa::SmallGroups<aod::JetCollisionsMCD> const& collisions,
988+
void processJetsMCPMCDMatchedWithRhoSubtraction(soa::Filtered<soa::Join<aod::JetCollisions, aod::JMcCollisionLbs, aod::BkgChargedRhos>>::iterator const& collision,
989+
aod::JMcCollisions const&,
981990
soa::Filtered<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets>> const& mcdjets,
982991
soa::Filtered<aod::JetTracksMCD> const& tracks,
983-
soa::Filtered<aod::JetParticles> const& particles,
984-
soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>> const& mcpjets)
992+
soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>> const& mcpjets,
993+
JetParticlesWithOriginal const& particles)
985994
{
986-
if (std::abs(mccollision.posZ()) > vertexZCut) {
995+
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits, skipMBGapEvents, applyRCTSelections)) {
987996
return;
988997
}
989-
if (!jetderiveddatautilities::selectMcCollision(mccollision, skipMBGapEvents, applyRCTSelections)) {
998+
if (!collision.has_mcCollision()) {
990999
return;
9911000
}
992-
if (mccollision.ptHard() < pTHatMinEvent) {
1001+
if (collision.mcCollision().ptHard() < pTHatMinEvent) {
9931002
return;
9941003
}
995-
if (collisions.size() < 1) {
1004+
if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) {
9961005
return;
9971006
}
998-
for (auto const& collision : collisions) {
999-
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) {
1000-
return;
1001-
}
1002-
if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) {
1003-
return;
1004-
}
1005-
}
1006-
registry.fill(HIST("hZvtxSelected"), mccollision.posZ());
1007-
fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, 1.0, 0.0, mccollision.ptHard());
1007+
registry.fill(HIST("hZvtxSelected"), collision.posZ());
1008+
fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, 1.0, collision.rho(), collision.mcCollision().ptHard(), collision.mcCollisionId());
10081009
}
10091010
PROCESS_SWITCH(JetHadronRecoil, processJetsMCPMCDMatchedWithRhoSubtraction, "process MC matched (inc jets) with rho subtraction", false);
10101011

1011-
void processJetsMCPMCDMatchedWeighted(aod::JetMcCollisions::iterator const& mccollision,
1012-
soa::SmallGroups<aod::JetCollisionsMCD> const& collisions,
1012+
void processJetsMCPMCDMatchedWeighted(soa::Filtered<soa::Join<aod::JetCollisions, aod::JMcCollisionLbs>>::iterator const& collision,
1013+
aod::JMcCollisions const&,
10131014
soa::Filtered<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets>> const& mcdjets,
10141015
soa::Filtered<aod::JetTracksMCD> const& tracks,
1015-
soa::Filtered<aod::JetParticles> const& particles,
1016-
soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>> const& mcpjets)
1016+
soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>> const& mcpjets,
1017+
JetParticlesWithOriginal const& particles)
10171018
{
1018-
if (std::abs(mccollision.posZ()) > vertexZCut) {
1019+
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits, skipMBGapEvents, applyRCTSelections)) {
10191020
return;
10201021
}
1021-
if (!jetderiveddatautilities::selectMcCollision(mccollision, skipMBGapEvents, applyRCTSelections)) {
1022+
if (!collision.has_mcCollision()) {
10221023
return;
10231024
}
1024-
if (mccollision.ptHard() < pTHatMinEvent) {
1025+
if (collision.mcCollision().ptHard() < pTHatMinEvent) {
10251026
return;
10261027
}
1027-
if (collisions.size() < 1) {
1028+
if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) {
10281029
return;
10291030
}
1030-
for (auto const& collision : collisions) {
1031-
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) {
1032-
return;
1033-
}
1034-
if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) {
1035-
return;
1036-
}
1037-
}
1038-
registry.fill(HIST("hZvtxSelected"), mccollision.posZ(), mccollision.weight());
1039-
fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, mccollision.weight(), 0.0, mccollision.ptHard());
1031+
registry.fill(HIST("hZvtxSelected"), collision.posZ());
1032+
fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, collision.mcCollision().weight(), 0.0, collision.mcCollision().ptHard(), collision.mcCollisionId());
10401033
}
10411034
PROCESS_SWITCH(JetHadronRecoil, processJetsMCPMCDMatchedWeighted, "process MC matched with event weights (inc jets)", false);
10421035

1043-
void processJetsMCPMCDMatchedWeightedWithRhoSubtraction(soa::Join<aod::JetMcCollisions, aod::BkgChargedRhos>::iterator const& mccollision,
1044-
soa::SmallGroups<aod::JetCollisionsMCD> const& collisions,
1036+
void processJetsMCPMCDMatchedWeightedWithRhoSubtraction(soa::Filtered<soa::Join<aod::JetCollisions, aod::JMcCollisionLbs, aod::BkgChargedRhos>>::iterator const& collision,
1037+
aod::JMcCollisions const&,
10451038
soa::Filtered<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets>> const& mcdjets,
10461039
soa::Filtered<aod::JetTracksMCD> const& tracks,
1047-
soa::Filtered<aod::JetParticles> const& particles,
1048-
soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>> const& mcpjets)
1040+
soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>> const& mcpjets,
1041+
JetParticlesWithOriginal const& particles)
10491042
{
1050-
if (std::abs(mccollision.posZ()) > vertexZCut) {
1043+
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits, skipMBGapEvents, applyRCTSelections)) {
10511044
return;
10521045
}
1053-
if (!jetderiveddatautilities::selectMcCollision(mccollision, skipMBGapEvents, applyRCTSelections)) {
1046+
if (!collision.has_mcCollision()) {
10541047
return;
10551048
}
1056-
if (mccollision.ptHard() < pTHatMinEvent) {
1049+
if (collision.mcCollision().ptHard() < pTHatMinEvent) {
10571050
return;
10581051
}
1059-
if (collisions.size() < 1) {
1052+
if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) {
10601053
return;
10611054
}
1062-
for (auto const& collision : collisions) {
1063-
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) {
1064-
return;
1065-
}
1066-
if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) {
1067-
return;
1068-
}
1069-
}
1070-
registry.fill(HIST("hZvtxSelected"), mccollision.posZ(), mccollision.weight());
1071-
fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, mccollision.weight(), mccollision.rho(), mccollision.ptHard());
1055+
registry.fill(HIST("hZvtxSelected"), collision.posZ());
1056+
fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, collision.mcCollision().weight(), collision.rho(), collision.mcCollision().ptHard(), collision.mcCollisionId());
10721057
}
10731058
PROCESS_SWITCH(JetHadronRecoil, processJetsMCPMCDMatchedWeightedWithRhoSubtraction, "process MC matched with event weights (inc jets) and rho subtraction", false);
10741059

0 commit comments

Comments
 (0)