From cd1a66cd1d8c030bb5ac422e9abac695fbc568f0 Mon Sep 17 00:00:00 2001 From: HANSEO PARK Date: Mon, 8 Dec 2025 15:54:06 +0900 Subject: [PATCH 1/3] seperate function of response matrix --- PWGJE/Tasks/jetTaggerHFQA.cxx | 126 +++++++++++++++++++++++++++++++--- 1 file changed, 118 insertions(+), 8 deletions(-) diff --git a/PWGJE/Tasks/jetTaggerHFQA.cxx b/PWGJE/Tasks/jetTaggerHFQA.cxx index 37ac50220e9..6f4328d4d73 100644 --- a/PWGJE/Tasks/jetTaggerHFQA.cxx +++ b/PWGJE/Tasks/jetTaggerHFQA.cxx @@ -198,6 +198,15 @@ struct JetTaggerHFQA { registry.add("h3_part_jet_pt_flavour_const_hadron_part_flavour_dist_hadron", "", {HistType::kTH3F, {{axisJetPt}, {axisJetFlavour}, {axisJetFlavour}}}); registry.add("h3_part_jet_pt_flavour_const_quark_part_flavour_dist_quark", "", {HistType::kTH3F, {{axisJetPt}, {axisJetFlavour}, {axisJetFlavour}}}); } + if (doprocessResponseMatrix || doprocessResponseMatrixWeighted) { + registry.add("h2_jet_pt_flavour", "", {HistType::kTH2F, {{axisJetPt}, {axisJetFlavour}}}); + registry.add("h2_jet_eta_flavour", "", {HistType::kTH2F, {{axisEta}, {axisJetFlavour}}}); + registry.add("h2_jet_phi_flavour", "", {HistType::kTH2F, {{axisPhi}, {axisJetFlavour}}}); + registry.add("h2_jet_pt_part_flavour", "", {HistType::kTH2F, {{axisJetPt}, {axisJetFlavour}}}); + registry.add("h2_jet_eta_part_flavour", "", {HistType::kTH2F, {{axisEta}, {axisJetFlavour}}}); + registry.add("h2_jet_phi_part_flavour", "", {HistType::kTH2F, {{axisPhi}, {axisJetFlavour}}}); + registry.add("h3_jet_pt_jet_pt_part_matchedgeo_flavour", "", {HistType::kTH3F, {{axisMCDJetPt}, {axisMCPJetPt}, {axisJetFlavour}}}); + } if (doprocessIPsData) { registry.add("h_jet_pt", "", {HistType::kTH1F, {{axisJetPt}}}); registry.add("h_jet_eta", "", {HistType::kTH1F, {{axisEta}}}); @@ -944,13 +953,13 @@ struct JetTaggerHFQA { if (jet.pt() > pTHatMaxMCD * pTHat) { return; } - if (jet.template secondaryVertices_as().size() < 1) - return; if (!doprocessIPsData && !doprocessJPData && !doprocessSV3ProngData) { registry.fill(HIST("h_jet_pt"), jet.pt(), eventWeight); registry.fill(HIST("h_jet_eta"), jet.eta(), eventWeight); registry.fill(HIST("h_jet_phi"), jet.phi(), eventWeight); } + if (jet.template secondaryVertices_as().size() < 1) + return; if (fillGeneralSVQA) { registry.fill(HIST("h_2prong_nprongs"), jet.template secondaryVertices_as().size()); for (const auto& prong : jet.template secondaryVertices_as()) { @@ -999,13 +1008,13 @@ struct JetTaggerHFQA { if (jet.pt() > pTHatMaxMCD * pTHat) { return; } - if (jet.template secondaryVertices_as().size() < 1) - return; if (!doprocessIPsData && !doprocessJPData && !doprocessSV2ProngData) { registry.fill(HIST("h_jet_pt"), jet.pt(), eventWeight); registry.fill(HIST("h_jet_eta"), jet.eta(), eventWeight); registry.fill(HIST("h_jet_phi"), jet.phi(), eventWeight); } + if (jet.template secondaryVertices_as().size() < 1) + return; if (fillGeneralSVQA) { registry.fill(HIST("h_3prong_nprongs"), jet.template secondaryVertices_as().size()); for (const auto& prong : jet.template secondaryVertices_as()) { @@ -1098,13 +1107,13 @@ struct JetTaggerHFQA { return; } auto origin = mcdjet.origin(); - if (mcdjet.template secondaryVertices_as().size() < 1) - return; if (!((doprocessIPsMCD || doprocessIPsMCDWeighted || doprocessIPsMCPMCDMatched || doprocessIPsMCPMCDMatchedWeighted) && (doprocessJPMCD || doprocessJPMCDWeighted || doprocessJPMCPMCDMatched || doprocessJPMCPMCDMatchedWeighted) && (doprocessSV3ProngMCD || doprocessSV3ProngMCDWeighted || doprocessSV3ProngMCPMCDMatched || doprocessSV3ProngMCPMCDMatchedWeighted))) { registry.fill(HIST("h2_jet_pt_flavour"), mcdjet.pt(), origin, eventWeight); registry.fill(HIST("h2_jet_eta_flavour"), mcdjet.eta(), origin, eventWeight); registry.fill(HIST("h2_jet_phi_flavour"), mcdjet.phi(), origin, eventWeight); } + if (mcdjet.template secondaryVertices_as().size() < 1) + return; if (fillGeneralSVQA) { registry.fill(HIST("h2_2prong_nprongs_flavour"), mcdjet.template secondaryVertices_as().size(), origin, eventWeight); for (const auto& prong : mcdjet.template secondaryVertices_as()) { @@ -1154,13 +1163,13 @@ struct JetTaggerHFQA { return; } auto origin = mcdjet.origin(); - if (mcdjet.template secondaryVertices_as().size() < 1) - return; if (!((doprocessIPsMCD || doprocessIPsMCDWeighted || doprocessIPsMCPMCDMatched || doprocessIPsMCPMCDMatchedWeighted) && (doprocessJPMCD || doprocessJPMCDWeighted || doprocessJPMCPMCDMatched || doprocessJPMCPMCDMatchedWeighted) && (doprocessSV2ProngMCD || doprocessSV2ProngMCDWeighted || doprocessSV2ProngMCPMCDMatched || doprocessSV2ProngMCPMCDMatchedWeighted))) { registry.fill(HIST("h2_jet_pt_flavour"), mcdjet.pt(), origin, eventWeight); registry.fill(HIST("h2_jet_eta_flavour"), mcdjet.eta(), origin, eventWeight); registry.fill(HIST("h2_jet_phi_flavour"), mcdjet.phi(), origin, eventWeight); } + if (mcdjet.template secondaryVertices_as().size() < 1) + return; if (fillGeneralSVQA) { registry.fill(HIST("h2_3prong_nprongs_flavour"), mcdjet.template secondaryVertices_as().size(), origin); for (const auto& prong : mcdjet.template secondaryVertices_as()) { @@ -1385,6 +1394,107 @@ struct JetTaggerHFQA { } PROCESS_SWITCH(JetTaggerHFQA, processValFlavourDefMCP, "to check the validation of jet-flavour definition when compared to distance for mcp jets", false); + void processResponseMatrix(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& mcpjets, aod::JetParticles const& particles, soa::Filtered const& collisions) + { + if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { + return; + } + for (auto const& mcdjet : mcdjets) { + auto const particlesPerColl = particles.sliceBy(particlesPerCollision, collision.mcCollisionId()); + if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { + continue; + } + if (!isAcceptedJet(mcdjet)) { + continue; + } + auto jetflavour = mcdjet.origin(); + registry.fill(HIST("h2_jet_pt_flavour"), mcdjet.pt(), jetflavour); + registry.fill(HIST("h2_jet_eta_flavour"), mcdjet.eta(), jetflavour); + registry.fill(HIST("h2_jet_phi_flavour"), mcdjet.phi(), jetflavour); + if (!mcdjet.has_matchedJetGeo()) + continue; + for (auto const& mcpjet : mcdjet.template matchedJetGeo_as>()) { + registry.fill(HIST("h3_jet_pt_jet_pt_part_matchedgeo_flavour"), mcdjet.pt(), mcpjet.pt(), mcdjet.origin()); + } + } + for (auto const& mcpjet : mcpjets) { + if (!jetfindingutilities::isInEtaAcceptance(mcpjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { + continue; + } + if (!isAcceptedJet(mcpjet)) { + continue; + } + auto jetflavour = mcpjet.origin(); + if (checkMcCollisionIsMatched) { + auto collisionspermcpjet = collisions.sliceBy(collisionsPerMCPCollision, mcpjet.mcCollisionId()); + if (collisionspermcpjet.size() >= 1 && jetderiveddatautilities::selectCollision(collisionspermcpjet.begin(), eventSelectionBits)) { + registry.fill(HIST("h2_jet_pt_part_flavour"), mcpjet.pt(), jetflavour); + registry.fill(HIST("h2_jet_eta_part_flavour"), mcpjet.eta(), jetflavour); + registry.fill(HIST("h2_jet_phi_part_flavour"), mcpjet.phi(), jetflavour); + } + } else { + registry.fill(HIST("h2_jet_pt_part_flavour"), mcpjet.pt(), jetflavour); + registry.fill(HIST("h2_jet_eta_part_flavour"), mcpjet.eta(), jetflavour); + registry.fill(HIST("h2_jet_phi_part_flavour"), mcpjet.phi(), jetflavour); + } + } + } + PROCESS_SWITCH(JetTaggerHFQA, processResponseMatrix, "create response matrix with flavour", false); + + void processResponseMatrixWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& mcpjets, aod::JetParticles const& particles, soa::Filtered const& collisions) + { + if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { + return; + } + for (auto const& mcdjet : mcdjets) { + auto const particlesPerColl = particles.sliceBy(particlesPerCollision, collision.mcCollisionId()); + if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { + continue; + } + if (!isAcceptedJet(mcdjet)) { + continue; + } + float pTHat = 10. / (std::pow(mcdjet.eventWeight(), 1.0 / pTHatExponent)); + if (mcdjet.pt() > pTHatMaxMCD * pTHat) { + continue; + } + auto jetflavour = mcdjet.origin(); + registry.fill(HIST("h2_jet_pt_flavour"), mcdjet.pt(), jetflavour); + registry.fill(HIST("h2_jet_eta_flavour"), mcdjet.eta(), jetflavour); + registry.fill(HIST("h2_jet_phi_flavour"), mcdjet.phi(), jetflavour); + if (!mcdjet.has_matchedJetGeo()) + continue; + for (auto const& mcpjet : mcdjet.template matchedJetGeo_as>()) { + if (mcpjet.pt() > pTHatMaxMCP * pTHat) { + continue; + } + registry.fill(HIST("h3_jet_pt_jet_pt_part_matchedgeo_flavour"), mcdjet.pt(), mcpjet.pt(), mcdjet.origin(), mcdjet.eventWeight()); + } + } + for (auto const& mcpjet : mcpjets) { + if (!jetfindingutilities::isInEtaAcceptance(mcpjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { + continue; + } + if (!isAcceptedJet(mcpjet)) { + continue; + } + auto jetflavour = mcpjet.origin(); + if (checkMcCollisionIsMatched) { + auto collisionspermcpjet = collisions.sliceBy(collisionsPerMCPCollision, mcpjet.mcCollisionId()); + if (collisionspermcpjet.size() >= 1 && jetderiveddatautilities::selectCollision(collisionspermcpjet.begin(), eventSelectionBits)) { + registry.fill(HIST("h2_jet_pt_part_flavour"), mcpjet.pt(), jetflavour, mcpjet.eventWeight()); + registry.fill(HIST("h2_jet_eta_part_flavour"), mcpjet.eta(), jetflavour, mcpjet.eventWeight()); + registry.fill(HIST("h2_jet_phi_part_flavour"), mcpjet.phi(), jetflavour, mcpjet.eventWeight()); + } + } else { + registry.fill(HIST("h2_jet_pt_part_flavour"), mcpjet.pt(), jetflavour, mcpjet.eventWeight()); + registry.fill(HIST("h2_jet_eta_part_flavour"), mcpjet.eta(), jetflavour, mcpjet.eventWeight()); + registry.fill(HIST("h2_jet_phi_part_flavour"), mcpjet.phi(), jetflavour, mcpjet.eventWeight()); + } + } + } + PROCESS_SWITCH(JetTaggerHFQA, processResponseMatrixWeighted, "create response matrix with flavour weighted", false); + void processIPsData(soa::Filtered::iterator const& collision, soa::Join const& jets, JetTagTracksData const& tracks) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { From 0b6bf88c3827aa4a58f89c7ed88c7d51416f451f Mon Sep 17 00:00:00 2001 From: HANSEO PARK Date: Tue, 9 Dec 2025 17:41:28 +0900 Subject: [PATCH 2/3] change weight parameter from collsion --- PWGJE/Tasks/jetTaggerHFQA.cxx | 241 ++++++++++++++++------------------ 1 file changed, 112 insertions(+), 129 deletions(-) diff --git a/PWGJE/Tasks/jetTaggerHFQA.cxx b/PWGJE/Tasks/jetTaggerHFQA.cxx index 6f4328d4d73..ce7a539b883 100644 --- a/PWGJE/Tasks/jetTaggerHFQA.cxx +++ b/PWGJE/Tasks/jetTaggerHFQA.cxx @@ -71,6 +71,7 @@ struct JetTaggerHFQA { Configurable pTHatMaxMCD{"pTHatMaxMCD", 999.0, "maximum fraction of hard scattering for jet acceptance in detector MC"}; Configurable pTHatMaxMCP{"pTHatMaxMCP", 999.0, "maximum fraction of hard scattering for jet acceptance in particle MC"}; Configurable pTHatExponent{"pTHatExponent", 6.0, "exponent of the event weight for the calculation of pTHat"}; + Configurable pTHatAbsoluteMin{"pTHatAbsoluteMin", -99.0, "minimum value of pTHat"}; Configurable jetAreaFractionMin{"jetAreaFractionMin", -99.0, "used to make a cut on the jet areas"}; Configurable leadingConstituentPtMin{"leadingConstituentPtMin", -99.0, "minimum pT selection on jet constituent"}; Configurable leadingConstituentPtMax{"leadingConstituentPtMax", 9999.0, "maximum pT selection on jet constituent"}; @@ -202,10 +203,12 @@ struct JetTaggerHFQA { registry.add("h2_jet_pt_flavour", "", {HistType::kTH2F, {{axisJetPt}, {axisJetFlavour}}}); registry.add("h2_jet_eta_flavour", "", {HistType::kTH2F, {{axisEta}, {axisJetFlavour}}}); registry.add("h2_jet_phi_flavour", "", {HistType::kTH2F, {{axisPhi}, {axisJetFlavour}}}); + registry.add("h3_jet_pt_jet_pt_part_matchedgeo_flavour", "", {HistType::kTH3F, {{axisMCDJetPt}, {axisMCPJetPt}, {axisJetFlavour}}}); + } + if (doprocessMCP || doprocessMCPWeighted) { registry.add("h2_jet_pt_part_flavour", "", {HistType::kTH2F, {{axisJetPt}, {axisJetFlavour}}}); registry.add("h2_jet_eta_part_flavour", "", {HistType::kTH2F, {{axisEta}, {axisJetFlavour}}}); registry.add("h2_jet_phi_part_flavour", "", {HistType::kTH2F, {{axisPhi}, {axisJetFlavour}}}); - registry.add("h3_jet_pt_jet_pt_part_matchedgeo_flavour", "", {HistType::kTH3F, {{axisMCDJetPt}, {axisMCPJetPt}, {axisJetFlavour}}}); } if (doprocessIPsData) { registry.add("h_jet_pt", "", {HistType::kTH1F, {{axisJetPt}}}); @@ -314,14 +317,7 @@ struct JetTaggerHFQA { } } } - if (doprocessIPsMCP || doprocessIPsMCPWeighted) { - registry.add("h2_jet_pt_part_flavour", "", {HistType::kTH2F, {{axisJetPt}, {axisJetFlavour}}}); - registry.add("h2_jet_eta_part_flavour", "", {HistType::kTH2F, {{axisEta}, {axisJetFlavour}}}); - registry.add("h2_jet_phi_part_flavour", "", {HistType::kTH2F, {{axisPhi}, {axisJetFlavour}}}); - } - if (doprocessIPsMCPMCDMatched || doprocessIPsMCPMCDMatchedWeighted) { - registry.add("h3_jet_pt_jet_pt_part_matchedgeo_flavour", "", {HistType::kTH3F, {{axisMCDJetPt}, {axisMCPJetPt}, {axisJetFlavour}}}); - } + if (doprocessJPData) { if (!doprocessIPsData && !doprocessSV2ProngData && !doprocessSV3ProngData) { registry.add("h_jet_pt", "", {HistType::kTH1F, {{axisJetPt}}}); @@ -491,6 +487,7 @@ struct JetTaggerHFQA { // Filter trackCuts = (aod::jtrack::pt >= trackCuts->at(0) && aod::jtrack::pt < trackCuts->at(1) && aod::jtrack::eta > trackCuts->at(2) && aod::jtrack::eta < trackCuts->at(3)); Filter eventCuts = (nabs(aod::jcollision::posZ) < vertexZCut); PresliceUnsorted> collisionsPerMCPCollision = aod::jmccollisionlb::mcCollisionId; + PresliceUnsorted> McCollisionsPerMCPCollision = aod::jmccollision::mcCollisionId; Preslice particlesPerCollision = aod::jmcparticle::mcCollisionId; using JetTagTracksData = soa::Join; @@ -885,10 +882,9 @@ struct JetTaggerHFQA { } template - void fillHistogramIPsMCP(T const& mcpjet, float eventWeight = 1.0) + void fillHistogramMCP(T const& mcpjet, float eventWeight = 1.0, float pTHat = 999.) { - float pTHat = 10. / (std::pow(eventWeight, 1.0 / pTHatExponent)); - if (mcpjet.pt() > pTHatMaxMCP * pTHat) { + if (mcpjet.pt() > pTHatMaxMCP * pTHat || pTHat < pTHatAbsoluteMin) { return; } int jetflavour = mcpjet.origin(); @@ -1316,11 +1312,14 @@ struct JetTaggerHFQA { } PROCESS_SWITCH(JetTaggerHFQA, processTracksInJetsData, "Fill QA comtamination of secondary-track inside jets for data jets", false); - void processSecondaryContaminationMCD(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, JetTagTracksMCD const& /*tracks*/, aod::JetParticles const& /*particles*/) + void processSecondaryContaminationMCD(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, JetTagTracksMCD const& /*tracks*/, aod::JetParticles const& /*particles*/) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; } + if (collision.isOutlier()) { + return; + } for (auto const& mcdjet : mcdjets) { if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { continue; @@ -1328,7 +1327,8 @@ struct JetTaggerHFQA { if (!isAcceptedJet(mcdjet)) { continue; } - float pTHat = 10. / (std::pow(mcdjet.eventWeight(), 1.0 / pTHatExponent)); + auto eventWeight = collision.mcCollision_as>().weight(); + float pTHat = 10. / (std::pow(eventWeight, 1.0 / pTHatExponent)); if (mcdjet.pt() > pTHatMaxMCD * pTHat) { continue; } @@ -1342,25 +1342,28 @@ struct JetTaggerHFQA { auto mcParticle = track.mcParticle(); totalJetPt += track.pt(); if (mcParticle.isPhysicalPrimary()) { - registry.fill(HIST("hn_jet_pt_track_pt_impact_parameter_xy_physical_primary_flavour"), mcdjet.pt(), track.pt(), varImpXY, jetflavour, mcdjet.eventWeight()); + registry.fill(HIST("hn_jet_pt_track_pt_impact_parameter_xy_physical_primary_flavour"), mcdjet.pt(), track.pt(), varImpXY, jetflavour, eventWeight); } else { - registry.fill(HIST("hn_jet_pt_track_pt_impact_parameter_xy_secondary_flavour"), mcdjet.pt(), track.pt(), varImpXY, jetflavour, mcdjet.eventWeight()); + registry.fill(HIST("hn_jet_pt_track_pt_impact_parameter_xy_secondary_flavour"), mcdjet.pt(), track.pt(), varImpXY, jetflavour, eventWeight); secondaryPt += track.pt(); } } if (totalJetPt > 0) { float fracSecondary = secondaryPt / totalJetPt; - registry.fill(HIST("h3_jet_pt_frac_secondary_pt_per_jet_flavour"), mcdjet.pt(), fracSecondary, jetflavour, mcdjet.eventWeight()); + registry.fill(HIST("h3_jet_pt_frac_secondary_pt_per_jet_flavour"), mcdjet.pt(), fracSecondary, jetflavour, eventWeight); } } } PROCESS_SWITCH(JetTaggerHFQA, processSecondaryContaminationMCD, "Fill QA comtamination of secondary-track inside jets for mcd jets", false); - void processValFlavourDefMCD(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/, JetTagTracksMCD const& tracks, aod::JetParticles const& particles) + void processValFlavourDefMCD(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/, JetTagTracksMCD const& tracks, aod::JetParticles const& particles) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; } + if (collision.isOutlier()) { + return; + } for (auto const& mcdjet : mcdjets) { auto const particlesPerColl = particles.sliceBy(particlesPerCollision, collision.mcCollisionId()); if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { @@ -1369,13 +1372,15 @@ struct JetTaggerHFQA { if (!isAcceptedJet(mcdjet)) { continue; } - fillValidationFlavourDefMCD>(mcdjet, tracks, particles, particlesPerColl, mcdjet.eventWeight()); + auto eventWeight = collision.mcCollision_as>().weight(); + fillValidationFlavourDefMCD>(mcdjet, tracks, particles, particlesPerColl, eventWeight); } } PROCESS_SWITCH(JetTaggerHFQA, processValFlavourDefMCD, "to check the validation of jet-flavour definition when compared to distance for mcd jets", false); - void processValFlavourDefMCP(soa::Join const& mcpjets, aod::JetParticles const& particles, aod::JetMcCollisions const&) + void processValFlavourDefMCP(aod::JetMcCollisions::iterator const& mcCollision, JetTableMCP const& mcpjets, aod::JetParticles const& particles) { + int eventWeight = mcCollision.weight(); for (auto const& mcpjet : mcpjets) { auto const particlesPerColl = particles.sliceBy(particlesPerCollision, mcpjet.globalIndex()); if (!jetfindingutilities::isInEtaAcceptance(mcpjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { @@ -1384,7 +1389,6 @@ struct JetTaggerHFQA { if (!isAcceptedJet(mcpjet)) { continue; } - int eventWeight = mcpjet.eventWeight(); float pTHat = 10. / (std::pow(eventWeight, 1.0 / pTHatExponent)); if (mcpjet.pt() > pTHatMaxMCD * pTHat) { return; @@ -1394,13 +1398,12 @@ struct JetTaggerHFQA { } PROCESS_SWITCH(JetTaggerHFQA, processValFlavourDefMCP, "to check the validation of jet-flavour definition when compared to distance for mcp jets", false); - void processResponseMatrix(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& mcpjets, aod::JetParticles const& particles, soa::Filtered const& collisions) + void processResponseMatrix(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; } for (auto const& mcdjet : mcdjets) { - auto const particlesPerColl = particles.sliceBy(particlesPerCollision, collision.mcCollisionId()); if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { continue; } @@ -1417,44 +1420,23 @@ struct JetTaggerHFQA { registry.fill(HIST("h3_jet_pt_jet_pt_part_matchedgeo_flavour"), mcdjet.pt(), mcpjet.pt(), mcdjet.origin()); } } - for (auto const& mcpjet : mcpjets) { - if (!jetfindingutilities::isInEtaAcceptance(mcpjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { - continue; - } - if (!isAcceptedJet(mcpjet)) { - continue; - } - auto jetflavour = mcpjet.origin(); - if (checkMcCollisionIsMatched) { - auto collisionspermcpjet = collisions.sliceBy(collisionsPerMCPCollision, mcpjet.mcCollisionId()); - if (collisionspermcpjet.size() >= 1 && jetderiveddatautilities::selectCollision(collisionspermcpjet.begin(), eventSelectionBits)) { - registry.fill(HIST("h2_jet_pt_part_flavour"), mcpjet.pt(), jetflavour); - registry.fill(HIST("h2_jet_eta_part_flavour"), mcpjet.eta(), jetflavour); - registry.fill(HIST("h2_jet_phi_part_flavour"), mcpjet.phi(), jetflavour); - } - } else { - registry.fill(HIST("h2_jet_pt_part_flavour"), mcpjet.pt(), jetflavour); - registry.fill(HIST("h2_jet_eta_part_flavour"), mcpjet.eta(), jetflavour); - registry.fill(HIST("h2_jet_phi_part_flavour"), mcpjet.phi(), jetflavour); - } - } } PROCESS_SWITCH(JetTaggerHFQA, processResponseMatrix, "create response matrix with flavour", false); - void processResponseMatrixWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& mcpjets, aod::JetParticles const& particles, soa::Filtered const& collisions) + void processResponseMatrixWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; } + auto eventWeight = collision.weight(); for (auto const& mcdjet : mcdjets) { - auto const particlesPerColl = particles.sliceBy(particlesPerCollision, collision.mcCollisionId()); if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { continue; } if (!isAcceptedJet(mcdjet)) { continue; } - float pTHat = 10. / (std::pow(mcdjet.eventWeight(), 1.0 / pTHatExponent)); + float pTHat = 10. / (std::pow(eventWeight, 1.0 / pTHatExponent)); if (mcdjet.pt() > pTHatMaxMCD * pTHat) { continue; } @@ -1468,9 +1450,14 @@ struct JetTaggerHFQA { if (mcpjet.pt() > pTHatMaxMCP * pTHat) { continue; } - registry.fill(HIST("h3_jet_pt_jet_pt_part_matchedgeo_flavour"), mcdjet.pt(), mcpjet.pt(), mcdjet.origin(), mcdjet.eventWeight()); + registry.fill(HIST("h3_jet_pt_jet_pt_part_matchedgeo_flavour"), mcdjet.pt(), mcpjet.pt(), mcdjet.origin(), eventWeight); } } + } + PROCESS_SWITCH(JetTaggerHFQA, processResponseMatrixWeighted, "create response matrix with flavour weighted", false); + + void processMCP(JetTableMCP const& mcpjets, aod::JetParticles const&, soa::Join const& mcCollisions, soa::Filtered const& collisions) + { for (auto const& mcpjet : mcpjets) { if (!jetfindingutilities::isInEtaAcceptance(mcpjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { continue; @@ -1478,22 +1465,42 @@ struct JetTaggerHFQA { if (!isAcceptedJet(mcpjet)) { continue; } - auto jetflavour = mcpjet.origin(); + auto mcCollision = mcCollisions.sliceBy(McCollisionsPerMCPCollision, mcpjet.mcCollisionId()); if (checkMcCollisionIsMatched) { auto collisionspermcpjet = collisions.sliceBy(collisionsPerMCPCollision, mcpjet.mcCollisionId()); if (collisionspermcpjet.size() >= 1 && jetderiveddatautilities::selectCollision(collisionspermcpjet.begin(), eventSelectionBits)) { - registry.fill(HIST("h2_jet_pt_part_flavour"), mcpjet.pt(), jetflavour, mcpjet.eventWeight()); - registry.fill(HIST("h2_jet_eta_part_flavour"), mcpjet.eta(), jetflavour, mcpjet.eventWeight()); - registry.fill(HIST("h2_jet_phi_part_flavour"), mcpjet.phi(), jetflavour, mcpjet.eventWeight()); + fillHistogramMCP(mcpjet, 1., mcCollision.begin().ptHard()); } } else { - registry.fill(HIST("h2_jet_pt_part_flavour"), mcpjet.pt(), jetflavour, mcpjet.eventWeight()); - registry.fill(HIST("h2_jet_eta_part_flavour"), mcpjet.eta(), jetflavour, mcpjet.eventWeight()); - registry.fill(HIST("h2_jet_phi_part_flavour"), mcpjet.phi(), jetflavour, mcpjet.eventWeight()); + fillHistogramMCP(mcpjet, 1., mcCollision.begin().ptHard()); } } } - PROCESS_SWITCH(JetTaggerHFQA, processResponseMatrixWeighted, "create response matrix with flavour weighted", false); + PROCESS_SWITCH(JetTaggerHFQA, processMCP, "Fill impact parameter imformation for mcp jets", false); + + void processMCPWeighted(JetTableMCP const& mcpjets, aod::JetParticles const&, soa::Join const& mcCollisions, soa::Filtered> const& collisions) + { + for (auto const& mcpjet : mcpjets) { + if (!jetfindingutilities::isInEtaAcceptance(mcpjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { + continue; + } + if (!isAcceptedJet(mcpjet)) { + continue; + } + auto mcCollision = mcCollisions.sliceBy(McCollisionsPerMCPCollision, mcpjet.mcCollisionId()); + if (mcCollision.size() == 1) { + if (checkMcCollisionIsMatched) { + auto collisionspermcpjet = collisions.sliceBy(collisionsPerMCPCollision, mcpjet.mcCollisionId()); + if (collisionspermcpjet.size() >= 1 && jetderiveddatautilities::selectCollision(collisionspermcpjet.begin(), eventSelectionBits) && !collisionspermcpjet.begin().isOutlier()) { + fillHistogramMCP(mcpjet, mcCollision.begin().weight(), mcCollision.begin().ptHard()); + } + } else { + fillHistogramMCP(mcpjet, mcCollision.begin().weight(), mcCollision.begin().ptHard()); + } + } + } + } + PROCESS_SWITCH(JetTaggerHFQA, processMCPWeighted, "Fill impact parameter imformation for mcp jets weighted", false); void processIPsData(soa::Filtered::iterator const& collision, soa::Join const& jets, JetTagTracksData const& tracks) { @@ -1529,7 +1536,7 @@ struct JetTaggerHFQA { } PROCESS_SWITCH(JetTaggerHFQA, processIPsMCD, "Fill impact parameter imformation for mcd jets", false); - void processIPsMCDWeighted(soa::Filtered::iterator const& collision, soa::Join const& mcdjets, JetTagTracksMCD const& tracks, aod::JetParticles const&) + void processIPsMCDWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, JetTagTracksMCD const& tracks, aod::JetParticles const&) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; @@ -1538,54 +1545,12 @@ struct JetTaggerHFQA { if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { continue; } - fillHistogramIPsMCD(mcdjet, tracks, mcdjet.eventWeight()); + fillHistogramIPsMCD(mcdjet, tracks, collision.weight()); } } PROCESS_SWITCH(JetTaggerHFQA, processIPsMCDWeighted, "Fill impact parameter imformation for mcd jets", false); - void processIPsMCP(JetTableMCP const& mcpjets, aod::JetParticles const&, aod::JetMcCollisions const&, soa::Filtered const& collisions) - { - for (auto const& mcpjet : mcpjets) { - if (!jetfindingutilities::isInEtaAcceptance(mcpjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { - continue; - } - if (!isAcceptedJet(mcpjet)) { - continue; - } - if (checkMcCollisionIsMatched) { - auto collisionspermcpjet = collisions.sliceBy(collisionsPerMCPCollision, mcpjet.mcCollisionId()); - if (collisionspermcpjet.size() >= 1 && jetderiveddatautilities::selectCollision(collisionspermcpjet.begin(), eventSelectionBits)) { - fillHistogramIPsMCP(mcpjet); - } - } else { - fillHistogramIPsMCP(mcpjet); - } - } - } - PROCESS_SWITCH(JetTaggerHFQA, processIPsMCP, "Fill impact parameter imformation for mcp jets", false); - - void processIPsMCPWeighted(soa::Join const& mcpjets, soa::Filtered const& collisions, aod::JetParticles const&) - { - for (auto const& mcpjet : mcpjets) { - if (!jetfindingutilities::isInEtaAcceptance(mcpjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { - continue; - } - if (!isAcceptedJet(mcpjet)) { - continue; - } - if (checkMcCollisionIsMatched) { - auto collisionspermcpjet = collisions.sliceBy(collisionsPerMCPCollision, mcpjet.mcCollisionId()); - if (collisionspermcpjet.size() >= 1 && jetderiveddatautilities::selectCollision(collisionspermcpjet.begin(), eventSelectionBits)) { - fillHistogramIPsMCP(mcpjet, mcpjet.eventWeight()); - } - } else { - fillHistogramIPsMCP(mcpjet, mcpjet.eventWeight()); - } - } - } - PROCESS_SWITCH(JetTaggerHFQA, processIPsMCPWeighted, "Fill impact parameter imformation for mcp jets weighted", false); - - void processIPsMCPMCDMatched(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/, JetTagTracksMCD const& tracks, aod::JetParticles const& particles) + void processIPsMCPMCDMatched(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/, JetTagTracksMCD const& tracks, aod::JetParticles const& particles) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; @@ -1600,20 +1565,20 @@ struct JetTaggerHFQA { } if (!mcdjet.has_matchedJetGeo()) continue; - for (auto const& mcpjet : mcdjet.template matchedJetGeo_as>()) { - registry.fill(HIST("h3_jet_pt_jet_pt_part_matchedgeo_flavour"), mcdjet.pt(), mcpjet.pt(), mcdjet.origin()); - } if (!doprocessIPsMCD) fillHistogramIPsMCD(mcdjet, tracks); } } PROCESS_SWITCH(JetTaggerHFQA, processIPsMCPMCDMatched, "Fill impact parameter imformation for mcp mcd matched jets", false); - void processIPsMCPMCDMatchedWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/, JetTagTracksMCD const& tracks, aod::JetParticles const& particles) + void processIPsMCPMCDMatchedWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/, JetTagTracksMCD const& tracks, aod::JetParticles const& particles) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; } + if (collision.isOutlier()) { + return; + } for (auto const& mcdjet : mcdjets) { auto const particlesPerColl = particles.sliceBy(particlesPerCollision, collision.mcCollisionId()); if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { @@ -1624,18 +1589,12 @@ struct JetTaggerHFQA { } if (!mcdjet.has_matchedJetGeo()) continue; - float pTHat = 10. / (std::pow(mcdjet.eventWeight(), 1.0 / pTHatExponent)); + float pTHat = 10. / (std::pow(collision.weight(), 1.0 / pTHatExponent)); if (mcdjet.pt() > pTHatMaxMCD * pTHat) { continue; } - for (auto const& mcpjet : mcdjet.template matchedJetGeo_as>()) { - if (mcpjet.pt() > pTHatMaxMCP * pTHat) { - continue; - } - registry.fill(HIST("h3_jet_pt_jet_pt_part_matchedgeo_flavour"), mcdjet.pt(), mcpjet.pt(), mcdjet.origin(), mcdjet.eventWeight()); - } if (!doprocessIPsMCDWeighted) - fillHistogramIPsMCD(mcdjet, tracks, mcdjet.eventWeight()); + fillHistogramIPsMCD(mcdjet, tracks, collision.weight()); } } PROCESS_SWITCH(JetTaggerHFQA, processIPsMCPMCDMatchedWeighted, "Fill impact parameter imformation for mcp mcd matched jets", false); @@ -1674,11 +1633,14 @@ struct JetTaggerHFQA { } PROCESS_SWITCH(JetTaggerHFQA, processJPMCD, "Fill jet probability imformation for mcd jets", false); - void processJPMCDWeighted(soa::Filtered::iterator const& collision, soa::Join const& mcdjets, JetTagTracksMCD const&) + void processJPMCDWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, JetTagTracksMCD const&) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; } + if (collision.isOutlier()) { + return; + } for (auto const& mcdjet : mcdjets) { if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { continue; @@ -1686,7 +1648,7 @@ struct JetTaggerHFQA { if (!isAcceptedJet(mcdjet)) { continue; } - fillHistogramJPMCD(mcdjet, mcdjet.eventWeight()); + fillHistogramJPMCD(mcdjet, collision.weight()); } } PROCESS_SWITCH(JetTaggerHFQA, processJPMCDWeighted, "Fill jet probability imformation for mcd jets", false); @@ -1711,11 +1673,14 @@ struct JetTaggerHFQA { } PROCESS_SWITCH(JetTaggerHFQA, processJPMCPMCDMatched, "Fill jet probability imformation for mcd jets", false); - void processJPMCPMCDMatchedWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/, JetTagTracksMCD const&) + void processJPMCPMCDMatchedWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/, JetTagTracksMCD const&) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; } + if (collision.isOutlier()) { + return; + } for (auto const& mcdjet : mcdjets) { if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { continue; @@ -1726,7 +1691,7 @@ struct JetTaggerHFQA { if (!mcdjet.has_matchedJetGeo()) return; if (!doprocessJPMCDWeighted) - fillHistogramJPMCD(mcdjet, mcdjet.eventWeight()); + fillHistogramJPMCD(mcdjet, collision.weight()); } } PROCESS_SWITCH(JetTaggerHFQA, processJPMCPMCDMatchedWeighted, "Fill jet probability imformation for mcd jets", false); @@ -1803,11 +1768,14 @@ struct JetTaggerHFQA { } PROCESS_SWITCH(JetTaggerHFQA, processSV2ProngMCD, "Fill 2prong imformation for mcd jets", false); - void processSV2ProngMCDWeighted(soa::Filtered::iterator const& collision, soa::Join const& mcdjets, aod::MCDSecondaryVertex2Prongs const& prongs) + void processSV2ProngMCDWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, aod::MCDSecondaryVertex2Prongs const& prongs) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; } + if (collision.isOutlier()) { + return; + } for (auto const& mcdjet : mcdjets) { if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { continue; @@ -1815,7 +1783,7 @@ struct JetTaggerHFQA { if (!isAcceptedJet(mcdjet)) { continue; } - fillHistogramSV2ProngMCD(mcdjet, prongs, mcdjet.eventWeight()); + fillHistogramSV2ProngMCD(mcdjet, prongs, collision.weight()); } } PROCESS_SWITCH(JetTaggerHFQA, processSV2ProngMCDWeighted, "Fill 2prong imformation for mcd jets", false); @@ -1841,11 +1809,14 @@ struct JetTaggerHFQA { } PROCESS_SWITCH(JetTaggerHFQA, processSV2ProngMCPMCDMatched, "Fill 2prong imformation for mcd jets", false); - void processSV2ProngMCPMCDMatchedWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/, aod::MCDSecondaryVertex2Prongs const& prongs) + void processSV2ProngMCPMCDMatchedWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/, aod::MCDSecondaryVertex2Prongs const& prongs) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; } + if (collision.isOutlier()) { + return; + } for (auto const& mcdjet : mcdjets) { if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { continue; @@ -1857,7 +1828,7 @@ struct JetTaggerHFQA { continue; } if (!doprocessSV2ProngMCDWeighted) - fillHistogramSV2ProngMCD(mcdjet, prongs, mcdjet.eventWeight()); + fillHistogramSV2ProngMCD(mcdjet, prongs, collision.weight()); } } PROCESS_SWITCH(JetTaggerHFQA, processSV2ProngMCPMCDMatchedWeighted, "Fill 2prong imformation for mcd jets", false); @@ -1879,11 +1850,14 @@ struct JetTaggerHFQA { } PROCESS_SWITCH(JetTaggerHFQA, processSV3ProngMCD, "Fill 3prong imformation for mcd jets", false); - void processSV3ProngMCDWeighted(soa::Filtered::iterator const& collision, soa::Join const& mcdjets, aod::MCDSecondaryVertex3Prongs const& prongs) + void processSV3ProngMCDWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, aod::MCDSecondaryVertex3Prongs const& prongs) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; } + if (collision.isOutlier()) { + return; + } for (auto const& mcdjet : mcdjets) { if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { continue; @@ -1891,7 +1865,7 @@ struct JetTaggerHFQA { if (!isAcceptedJet(mcdjet)) { continue; } - fillHistogramSV3ProngMCD(mcdjet, prongs, mcdjet.eventWeight()); + fillHistogramSV3ProngMCD(mcdjet, prongs, collision.weight()); } } PROCESS_SWITCH(JetTaggerHFQA, processSV3ProngMCDWeighted, "Fill 3prong imformation for mcd jets", false); @@ -1917,11 +1891,14 @@ struct JetTaggerHFQA { } PROCESS_SWITCH(JetTaggerHFQA, processSV3ProngMCPMCDMatched, "Fill 3prong imformation for mcd jets", false); - void processSV3ProngMCPMCDMatchedWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/, aod::MCDSecondaryVertex3Prongs const& prongs) + void processSV3ProngMCPMCDMatchedWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/, aod::MCDSecondaryVertex3Prongs const& prongs) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; } + if (collision.isOutlier()) { + return; + } for (auto const& mcdjet : mcdjets) { if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { continue; @@ -1933,7 +1910,7 @@ struct JetTaggerHFQA { continue; } if (!doprocessSV3ProngMCDWeighted) - fillHistogramSV3ProngMCD(mcdjet, prongs, mcdjet.eventWeight()); + fillHistogramSV3ProngMCD(mcdjet, prongs, collision.weight()); } } PROCESS_SWITCH(JetTaggerHFQA, processSV3ProngMCPMCDMatchedWeighted, "Fill 3prong imformation for mcd jets", false); @@ -1959,11 +1936,14 @@ struct JetTaggerHFQA { } PROCESS_SWITCH(JetTaggerHFQA, processSV3ProngMCDMult, "Fill 3prong imformation for mcd jets with multiplicity", false); - void processSV3ProngMCDMultWeighted(soa::Filtered::iterator const& collision, soa::Join const& mcdjets, aod::MCDSecondaryVertex3Prongs const& prongs) + void processSV3ProngMCDMultWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, aod::MCDSecondaryVertex3Prongs const& prongs) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; } + if (collision.isOutlier()) { + return; + } float multFT0A = collision.multFT0A(); float multFT0C = collision.multFT0C(); float scaledFT0M = getScaledFT0M(multFT0A, multFT0C); @@ -1975,7 +1955,7 @@ struct JetTaggerHFQA { if (!isAcceptedJet(mcdjet)) { continue; } - fillHistogramSV3ProngMCDMult(collision, mcdjet, prongs, mcdjet.eventWeight()); + fillHistogramSV3ProngMCDMult(collision, mcdjet, prongs, collision.weight()); } } PROCESS_SWITCH(JetTaggerHFQA, processSV3ProngMCDMultWeighted, "Fill 3prong imformation for mcd jets with multiplicity weighted", false); @@ -2005,11 +1985,14 @@ struct JetTaggerHFQA { } PROCESS_SWITCH(JetTaggerHFQA, processSV3ProngMCPMCDMatchedMult, "Fill 3prong imformation for mcd jets matched with multiplicity", false); - void processSV3ProngMCPMCDMatchedMultWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/, aod::MCDSecondaryVertex3Prongs const& prongs) + void processSV3ProngMCPMCDMatchedMultWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/, aod::MCDSecondaryVertex3Prongs const& prongs) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; } + if (collision.isOutlier()) { + return; + } float multFT0A = collision.multFT0A(); float multFT0C = collision.multFT0C(); float scaledFT0M = getScaledFT0M(multFT0A, multFT0C); @@ -2025,7 +2008,7 @@ struct JetTaggerHFQA { continue; } if (!doprocessSV3ProngMCDMultWeighted) - fillHistogramSV3ProngMCDMult(collision, mcdjet, prongs, mcdjet.eventWeight()); + fillHistogramSV3ProngMCDMult(collision, mcdjet, prongs, collision.weight()); } } PROCESS_SWITCH(JetTaggerHFQA, processSV3ProngMCPMCDMatchedMultWeighted, "Fill 3prong imformation for mcd jets matched with multiplicity weightd", false); From df339f4bf5cd1c2a22a68d40a7c2b01f174a45e3 Mon Sep 17 00:00:00 2001 From: HANSEO PARK Date: Tue, 9 Dec 2025 18:46:51 +0900 Subject: [PATCH 3/3] fix clang-format --- PWGJE/Tasks/jetTaggerHFQA.cxx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/PWGJE/Tasks/jetTaggerHFQA.cxx b/PWGJE/Tasks/jetTaggerHFQA.cxx index ce7a539b883..b47b81cf714 100644 --- a/PWGJE/Tasks/jetTaggerHFQA.cxx +++ b/PWGJE/Tasks/jetTaggerHFQA.cxx @@ -1423,11 +1423,14 @@ struct JetTaggerHFQA { } PROCESS_SWITCH(JetTaggerHFQA, processResponseMatrix, "create response matrix with flavour", false); - void processResponseMatrixWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/) + void processResponseMatrixWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, soa::Join const& /*mcpjets*/) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return; } + if (collision.isOutlier()) { + return; + } auto eventWeight = collision.weight(); for (auto const& mcdjet : mcdjets) { if (!jetfindingutilities::isInEtaAcceptance(mcdjet, jetEtaCuts->at(0), jetEtaCuts->at(1), trackCuts->at(2), trackCuts->at(3))) { @@ -1936,7 +1939,7 @@ struct JetTaggerHFQA { } PROCESS_SWITCH(JetTaggerHFQA, processSV3ProngMCDMult, "Fill 3prong imformation for mcd jets with multiplicity", false); - void processSV3ProngMCDMultWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, aod::MCDSecondaryVertex3Prongs const& prongs) + void processSV3ProngMCDMultWeighted(soa::Filtered>::iterator const& collision, soa::Join const& mcdjets, aod::MCDSecondaryVertex3Prongs const& prongs) { if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) { return;