@@ -198,6 +198,15 @@ struct JetTaggerHFQA {
198198 registry.add (" h3_part_jet_pt_flavour_const_hadron_part_flavour_dist_hadron" , " " , {HistType::kTH3F , {{axisJetPt}, {axisJetFlavour}, {axisJetFlavour}}});
199199 registry.add (" h3_part_jet_pt_flavour_const_quark_part_flavour_dist_quark" , " " , {HistType::kTH3F , {{axisJetPt}, {axisJetFlavour}, {axisJetFlavour}}});
200200 }
201+ if (doprocessResponseMatrix || doprocessResponseMatrixWeighted) {
202+ registry.add (" h2_jet_pt_flavour" , " " , {HistType::kTH2F , {{axisJetPt}, {axisJetFlavour}}});
203+ registry.add (" h2_jet_eta_flavour" , " " , {HistType::kTH2F , {{axisEta}, {axisJetFlavour}}});
204+ registry.add (" h2_jet_phi_flavour" , " " , {HistType::kTH2F , {{axisPhi}, {axisJetFlavour}}});
205+ registry.add (" h2_jet_pt_part_flavour" , " " , {HistType::kTH2F , {{axisJetPt}, {axisJetFlavour}}});
206+ registry.add (" h2_jet_eta_part_flavour" , " " , {HistType::kTH2F , {{axisEta}, {axisJetFlavour}}});
207+ registry.add (" h2_jet_phi_part_flavour" , " " , {HistType::kTH2F , {{axisPhi}, {axisJetFlavour}}});
208+ registry.add (" h3_jet_pt_jet_pt_part_matchedgeo_flavour" , " " , {HistType::kTH3F , {{axisMCDJetPt}, {axisMCPJetPt}, {axisJetFlavour}}});
209+ }
201210 if (doprocessIPsData) {
202211 registry.add (" h_jet_pt" , " " , {HistType::kTH1F , {{axisJetPt}}});
203212 registry.add (" h_jet_eta" , " " , {HistType::kTH1F , {{axisEta}}});
@@ -944,13 +953,13 @@ struct JetTaggerHFQA {
944953 if (jet.pt () > pTHatMaxMCD * pTHat) {
945954 return ;
946955 }
947- if (jet.template secondaryVertices_as <U>().size () < 1 )
948- return ;
949956 if (!doprocessIPsData && !doprocessJPData && !doprocessSV3ProngData) {
950957 registry.fill (HIST (" h_jet_pt" ), jet.pt (), eventWeight);
951958 registry.fill (HIST (" h_jet_eta" ), jet.eta (), eventWeight);
952959 registry.fill (HIST (" h_jet_phi" ), jet.phi (), eventWeight);
953960 }
961+ if (jet.template secondaryVertices_as <U>().size () < 1 )
962+ return ;
954963 if (fillGeneralSVQA) {
955964 registry.fill (HIST (" h_2prong_nprongs" ), jet.template secondaryVertices_as <U>().size ());
956965 for (const auto & prong : jet.template secondaryVertices_as <U>()) {
@@ -999,13 +1008,13 @@ struct JetTaggerHFQA {
9991008 if (jet.pt () > pTHatMaxMCD * pTHat) {
10001009 return ;
10011010 }
1002- if (jet.template secondaryVertices_as <U>().size () < 1 )
1003- return ;
10041011 if (!doprocessIPsData && !doprocessJPData && !doprocessSV2ProngData) {
10051012 registry.fill (HIST (" h_jet_pt" ), jet.pt (), eventWeight);
10061013 registry.fill (HIST (" h_jet_eta" ), jet.eta (), eventWeight);
10071014 registry.fill (HIST (" h_jet_phi" ), jet.phi (), eventWeight);
10081015 }
1016+ if (jet.template secondaryVertices_as <U>().size () < 1 )
1017+ return ;
10091018 if (fillGeneralSVQA) {
10101019 registry.fill (HIST (" h_3prong_nprongs" ), jet.template secondaryVertices_as <U>().size ());
10111020 for (const auto & prong : jet.template secondaryVertices_as <U>()) {
@@ -1098,13 +1107,13 @@ struct JetTaggerHFQA {
10981107 return ;
10991108 }
11001109 auto origin = mcdjet.origin ();
1101- if (mcdjet.template secondaryVertices_as <U>().size () < 1 )
1102- return ;
11031110 if (!((doprocessIPsMCD || doprocessIPsMCDWeighted || doprocessIPsMCPMCDMatched || doprocessIPsMCPMCDMatchedWeighted) && (doprocessJPMCD || doprocessJPMCDWeighted || doprocessJPMCPMCDMatched || doprocessJPMCPMCDMatchedWeighted) && (doprocessSV3ProngMCD || doprocessSV3ProngMCDWeighted || doprocessSV3ProngMCPMCDMatched || doprocessSV3ProngMCPMCDMatchedWeighted))) {
11041111 registry.fill (HIST (" h2_jet_pt_flavour" ), mcdjet.pt (), origin, eventWeight);
11051112 registry.fill (HIST (" h2_jet_eta_flavour" ), mcdjet.eta (), origin, eventWeight);
11061113 registry.fill (HIST (" h2_jet_phi_flavour" ), mcdjet.phi (), origin, eventWeight);
11071114 }
1115+ if (mcdjet.template secondaryVertices_as <U>().size () < 1 )
1116+ return ;
11081117 if (fillGeneralSVQA) {
11091118 registry.fill (HIST (" h2_2prong_nprongs_flavour" ), mcdjet.template secondaryVertices_as <U>().size (), origin, eventWeight);
11101119 for (const auto & prong : mcdjet.template secondaryVertices_as <U>()) {
@@ -1154,13 +1163,13 @@ struct JetTaggerHFQA {
11541163 return ;
11551164 }
11561165 auto origin = mcdjet.origin ();
1157- if (mcdjet.template secondaryVertices_as <U>().size () < 1 )
1158- return ;
11591166 if (!((doprocessIPsMCD || doprocessIPsMCDWeighted || doprocessIPsMCPMCDMatched || doprocessIPsMCPMCDMatchedWeighted) && (doprocessJPMCD || doprocessJPMCDWeighted || doprocessJPMCPMCDMatched || doprocessJPMCPMCDMatchedWeighted) && (doprocessSV2ProngMCD || doprocessSV2ProngMCDWeighted || doprocessSV2ProngMCPMCDMatched || doprocessSV2ProngMCPMCDMatchedWeighted))) {
11601167 registry.fill (HIST (" h2_jet_pt_flavour" ), mcdjet.pt (), origin, eventWeight);
11611168 registry.fill (HIST (" h2_jet_eta_flavour" ), mcdjet.eta (), origin, eventWeight);
11621169 registry.fill (HIST (" h2_jet_phi_flavour" ), mcdjet.phi (), origin, eventWeight);
11631170 }
1171+ if (mcdjet.template secondaryVertices_as <U>().size () < 1 )
1172+ return ;
11641173 if (fillGeneralSVQA) {
11651174 registry.fill (HIST (" h2_3prong_nprongs_flavour" ), mcdjet.template secondaryVertices_as <U>().size (), origin);
11661175 for (const auto & prong : mcdjet.template secondaryVertices_as <U>()) {
@@ -1385,6 +1394,107 @@ struct JetTaggerHFQA {
13851394 }
13861395 PROCESS_SWITCH (JetTaggerHFQA, processValFlavourDefMCP, " to check the validation of jet-flavour definition when compared to distance for mcp jets" , false );
13871396
1397+ void processResponseMatrix (soa::Filtered<soa::Join<aod::JCollisions, aod::JCollisionPIs, aod::JMcCollisionLbs>>::iterator const & collision, soa::Join<JetTableMCD, TagTableMCD, JetTableMCDMCP> const & mcdjets, soa::Join<JetTableMCP, JetTableMCPMCD> const & mcpjets, aod::JetParticles const & particles, soa::Filtered<aod::JetCollisionsMCD> const & collisions)
1398+ {
1399+ if (collision.trackOccupancyInTimeRange () < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange ()) {
1400+ return ;
1401+ }
1402+ for (auto const & mcdjet : mcdjets) {
1403+ auto const particlesPerColl = particles.sliceBy (particlesPerCollision, collision.mcCollisionId ());
1404+ if (!jetfindingutilities::isInEtaAcceptance (mcdjet, jetEtaCuts->at (0 ), jetEtaCuts->at (1 ), trackCuts->at (2 ), trackCuts->at (3 ))) {
1405+ continue ;
1406+ }
1407+ if (!isAcceptedJet<aod::JetTracks>(mcdjet)) {
1408+ continue ;
1409+ }
1410+ auto jetflavour = mcdjet.origin ();
1411+ registry.fill (HIST (" h2_jet_pt_flavour" ), mcdjet.pt (), jetflavour);
1412+ registry.fill (HIST (" h2_jet_eta_flavour" ), mcdjet.eta (), jetflavour);
1413+ registry.fill (HIST (" h2_jet_phi_flavour" ), mcdjet.phi (), jetflavour);
1414+ if (!mcdjet.has_matchedJetGeo ())
1415+ continue ;
1416+ for (auto const & mcpjet : mcdjet.template matchedJetGeo_as <soa::Join<JetTableMCP, JetTableMCPMCD>>()) {
1417+ registry.fill (HIST (" h3_jet_pt_jet_pt_part_matchedgeo_flavour" ), mcdjet.pt (), mcpjet.pt (), mcdjet.origin ());
1418+ }
1419+ }
1420+ for (auto const & mcpjet : mcpjets) {
1421+ if (!jetfindingutilities::isInEtaAcceptance (mcpjet, jetEtaCuts->at (0 ), jetEtaCuts->at (1 ), trackCuts->at (2 ), trackCuts->at (3 ))) {
1422+ continue ;
1423+ }
1424+ if (!isAcceptedJet<aod::JetParticles>(mcpjet)) {
1425+ continue ;
1426+ }
1427+ auto jetflavour = mcpjet.origin ();
1428+ if (checkMcCollisionIsMatched) {
1429+ auto collisionspermcpjet = collisions.sliceBy (collisionsPerMCPCollision, mcpjet.mcCollisionId ());
1430+ if (collisionspermcpjet.size () >= 1 && jetderiveddatautilities::selectCollision (collisionspermcpjet.begin (), eventSelectionBits)) {
1431+ registry.fill (HIST (" h2_jet_pt_part_flavour" ), mcpjet.pt (), jetflavour);
1432+ registry.fill (HIST (" h2_jet_eta_part_flavour" ), mcpjet.eta (), jetflavour);
1433+ registry.fill (HIST (" h2_jet_phi_part_flavour" ), mcpjet.phi (), jetflavour);
1434+ }
1435+ } else {
1436+ registry.fill (HIST (" h2_jet_pt_part_flavour" ), mcpjet.pt (), jetflavour);
1437+ registry.fill (HIST (" h2_jet_eta_part_flavour" ), mcpjet.eta (), jetflavour);
1438+ registry.fill (HIST (" h2_jet_phi_part_flavour" ), mcpjet.phi (), jetflavour);
1439+ }
1440+ }
1441+ }
1442+ PROCESS_SWITCH (JetTaggerHFQA, processResponseMatrix, " create response matrix with flavour" , false );
1443+
1444+ void processResponseMatrixWeighted (soa::Filtered<soa::Join<aod::JCollisions, aod::JCollisionPIs, aod::JMcCollisionLbs>>::iterator const & collision, soa::Join<JetTableMCD, TagTableMCD, JetTableMCDMCP, weightMCD> const & mcdjets, soa::Join<JetTableMCP, JetTableMCPMCD, weightMCP> const & mcpjets, aod::JetParticles const & particles, soa::Filtered<aod::JetCollisionsMCD> const & collisions)
1445+ {
1446+ if (collision.trackOccupancyInTimeRange () < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange ()) {
1447+ return ;
1448+ }
1449+ for (auto const & mcdjet : mcdjets) {
1450+ auto const particlesPerColl = particles.sliceBy (particlesPerCollision, collision.mcCollisionId ());
1451+ if (!jetfindingutilities::isInEtaAcceptance (mcdjet, jetEtaCuts->at (0 ), jetEtaCuts->at (1 ), trackCuts->at (2 ), trackCuts->at (3 ))) {
1452+ continue ;
1453+ }
1454+ if (!isAcceptedJet<aod::JetTracks>(mcdjet)) {
1455+ continue ;
1456+ }
1457+ float pTHat = 10 . / (std::pow (mcdjet.eventWeight (), 1.0 / pTHatExponent));
1458+ if (mcdjet.pt () > pTHatMaxMCD * pTHat) {
1459+ continue ;
1460+ }
1461+ auto jetflavour = mcdjet.origin ();
1462+ registry.fill (HIST (" h2_jet_pt_flavour" ), mcdjet.pt (), jetflavour);
1463+ registry.fill (HIST (" h2_jet_eta_flavour" ), mcdjet.eta (), jetflavour);
1464+ registry.fill (HIST (" h2_jet_phi_flavour" ), mcdjet.phi (), jetflavour);
1465+ if (!mcdjet.has_matchedJetGeo ())
1466+ continue ;
1467+ for (auto const & mcpjet : mcdjet.template matchedJetGeo_as <soa::Join<JetTableMCP, JetTableMCPMCD>>()) {
1468+ if (mcpjet.pt () > pTHatMaxMCP * pTHat) {
1469+ continue ;
1470+ }
1471+ registry.fill (HIST (" h3_jet_pt_jet_pt_part_matchedgeo_flavour" ), mcdjet.pt (), mcpjet.pt (), mcdjet.origin (), mcdjet.eventWeight ());
1472+ }
1473+ }
1474+ for (auto const & mcpjet : mcpjets) {
1475+ if (!jetfindingutilities::isInEtaAcceptance (mcpjet, jetEtaCuts->at (0 ), jetEtaCuts->at (1 ), trackCuts->at (2 ), trackCuts->at (3 ))) {
1476+ continue ;
1477+ }
1478+ if (!isAcceptedJet<aod::JetParticles>(mcpjet)) {
1479+ continue ;
1480+ }
1481+ auto jetflavour = mcpjet.origin ();
1482+ if (checkMcCollisionIsMatched) {
1483+ auto collisionspermcpjet = collisions.sliceBy (collisionsPerMCPCollision, mcpjet.mcCollisionId ());
1484+ if (collisionspermcpjet.size () >= 1 && jetderiveddatautilities::selectCollision (collisionspermcpjet.begin (), eventSelectionBits)) {
1485+ registry.fill (HIST (" h2_jet_pt_part_flavour" ), mcpjet.pt (), jetflavour, mcpjet.eventWeight ());
1486+ registry.fill (HIST (" h2_jet_eta_part_flavour" ), mcpjet.eta (), jetflavour, mcpjet.eventWeight ());
1487+ registry.fill (HIST (" h2_jet_phi_part_flavour" ), mcpjet.phi (), jetflavour, mcpjet.eventWeight ());
1488+ }
1489+ } else {
1490+ registry.fill (HIST (" h2_jet_pt_part_flavour" ), mcpjet.pt (), jetflavour, mcpjet.eventWeight ());
1491+ registry.fill (HIST (" h2_jet_eta_part_flavour" ), mcpjet.eta (), jetflavour, mcpjet.eventWeight ());
1492+ registry.fill (HIST (" h2_jet_phi_part_flavour" ), mcpjet.phi (), jetflavour, mcpjet.eventWeight ());
1493+ }
1494+ }
1495+ }
1496+ PROCESS_SWITCH (JetTaggerHFQA, processResponseMatrixWeighted, " create response matrix with flavour weighted" , false );
1497+
13881498 void processIPsData (soa::Filtered<aod::JetCollisions>::iterator const & collision, soa::Join<JetTableData, TagTableData> const & jets, JetTagTracksData const & tracks)
13891499 {
13901500 if (collision.trackOccupancyInTimeRange () < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange ()) {
0 commit comments