@@ -282,6 +282,7 @@ struct BjetTaggingGnn {
282282 registry.add (" h_trackphi" , " " , {HistType::kTH1F , {{100 , 0.0 , 2.0 * M_PI, " #it{#phi}" }}}, callSumw2);
283283 registry.add (" h_dcaXY" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2);
284284 registry.add (" h_dcaZ" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }}}, callSumw2);
285+ registry.add (" h3_dca_pt" , " " , {HistType::kTH3F , {{1000 , 0 ., 100 ., " #it{p}_{T} (GeV/#it{c})" }, {200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }, {200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2);
285286 }
286287
287288 if (doprocessMCDTracks) {
@@ -308,6 +309,15 @@ struct BjetTaggingGnn {
308309 registry.add (" h_dcaZ_coll_mismatched" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }}}, callSumw2);
309310 registry.add (" h_dcaZ_npp" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }}}, callSumw2);
310311 registry.add (" h_dcaZ_npp_mismatched" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }}}, callSumw2);
312+ registry.add (" h3_dca_pt_coll_fake" , " " , {HistType::kTH3F , {{1000 , 0 ., 100 ., " #it{p}_{T} (GeV/#it{c})" }, {200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }, {200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2);
313+ registry.add (" h3_dca_pt_fake" , " " , {HistType::kTH3F , {{1000 , 0 ., 100 ., " #it{p}_{T} (GeV/#it{c})" }, {200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }, {200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2);
314+ registry.add (" h3_dca_pt_coll_matched" , " " , {HistType::kTH3F , {{1000 , 0 ., 100 ., " #it{p}_{T} (GeV/#it{c})" }, {200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }, {200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2);
315+ registry.add (" h3_dca_pt_coll_matched_b" , " " , {HistType::kTH3F , {{1000 , 0 ., 100 ., " #it{p}_{T} (GeV/#it{c})" }, {200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }, {200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2);
316+ registry.add (" h3_dca_pt_coll_matched_c" , " " , {HistType::kTH3F , {{1000 , 0 ., 100 ., " #it{p}_{T} (GeV/#it{c})" }, {200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }, {200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2);
317+ registry.add (" h3_dca_pt_coll_matched_lf" , " " , {HistType::kTH3F , {{1000 , 0 ., 100 ., " #it{p}_{T} (GeV/#it{c})" }, {200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }, {200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2);
318+ registry.add (" h3_dca_pt_coll_mismatched" , " " , {HistType::kTH3F , {{1000 , 0 ., 100 ., " #it{p}_{T} (GeV/#it{c})" }, {200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }, {200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2);
319+ registry.add (" h3_dca_pt_npp" , " " , {HistType::kTH3F , {{1000 , 0 ., 100 ., " #it{p}_{T} (GeV/#it{c})" }, {200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }, {200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2);
320+ registry.add (" h3_dca_pt_npp_mismatched" , " " , {HistType::kTH3F , {{1000 , 0 ., 100 ., " #it{p}_{T} (GeV/#it{c})" }, {200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }, {200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2);
311321 }
312322
313323 if (doprocessDataJetsSel || doprocessMCDJetsSel) {
@@ -466,9 +476,7 @@ struct BjetTaggingGnn {
466476 using AnalysisCollisionsMCD = soa::Join<aod::JetCollisionsMCD, aod::JCollisionPIs, aod::JCollisionOutliers>;
467477 using FilteredCollisionsMCD = soa::Filtered<AnalysisCollisionsMCD>;
468478
469- Filter mccollisionFilter = nabs(aod::jmccollision::posZ) < vertexZCut;
470479 using AnalysisCollisionsMCP = soa::Join<aod::JetMcCollisions, aod::JMcCollisionPIs, aod::JMcCollisionOutliers>;
471- using FilteredCollisionsMCP = soa::Filtered<AnalysisCollisionsMCP>;
472480 using MCPJets = soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets, aod::ChargedMCParticleLevelJetFlavourDef>;
473481 using FilteredMCPJets = soa::Filtered<MCPJets>;
474482
@@ -841,12 +849,15 @@ struct BjetTaggingGnn {
841849 if (track.pt () >= trackPtMin) {
842850 registry.fill (HIST (" h_dcaXY" ), std::fabs (track.dcaXY ()));
843851 registry.fill (HIST (" h_dcaZ" ), std::fabs (track.dcaZ ()));
852+ registry.fill (HIST (" h3_dca_pt" ), track.pt (), std::fabs (track.dcaZ ()), std::fabs (track.dcaXY ()));
844853 }
845854 }
846855 }
847856 PROCESS_SWITCH (BjetTaggingGnn, processDataTracks, " track information in Data" , false );
848857
849- void processMCDJets (FilteredCollisionsMCD::iterator const & collision, FilteredMCDJets const & MCDjets, FilteredTracksMCD const & allTracks, FilteredMCPJets const & /* MCPjets*/ , aod::JetParticles const & /* mcParticles*/ , FilteredCollisionsMCP const & /* mcCollisions*/ )
858+ Preslice<FilteredMCPJets> mcpjetsPerMCPCollision = aod::jet::mcCollisionId;
859+
860+ void processMCDJets (FilteredCollisionsMCD::iterator const & collision, FilteredMCDJets const & MCDjets, FilteredTracksMCD const & allTracks, FilteredMCPJets const & MCPjets, aod::JetParticles const & /* mcParticles*/ , AnalysisCollisionsMCP const & /* mcCollisions*/ )
850861 {
851862 if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits)) {
852863 return ;
@@ -855,7 +866,8 @@ struct BjetTaggingGnn {
855866 if (collision.isOutlier ()) {
856867 return ;
857868 }
858- if (collision.has_mcCollision () && collision.template mcCollision_as <FilteredCollisionsMCP>().isOutlier ()) {
869+ bool matchedMcColl = collision.has_mcCollision ();
870+ if (matchedMcColl && collision.template mcCollision_as <AnalysisCollisionsMCP>().isOutlier ()) {
859871 return ;
860872 }
861873 // Uses only collisionId % trainingDatasetRaioParam != 0 for evaluation dataset
@@ -864,7 +876,6 @@ struct BjetTaggingGnn {
864876 }
865877
866878 float weightEvt = useEventWeight ? collision.weight () : 1 .f ;
867- bool matchedMcColl = collision.has_mcCollision () && std::fabs (collision.template mcCollision_as <FilteredCollisionsMCP>().posZ ()) < vertexZCut;
868879
869880 registry.fill (HIST (" h_event_counter" ), 0.0 , weightEvt);
870881
@@ -881,6 +892,10 @@ struct BjetTaggingGnn {
881892 continue ;
882893 }
883894 for (const auto & mcpjet : analysisJet.template matchedJetGeo_as <FilteredMCPJets>()) {
895+ // matchedJetGeo_as is not Filtered.
896+ if (mcpjet.pt () < jetPtMin || mcpjet.pt () >= jetPtMax || mcpjet.eta () >= jetEtaMax - mcpjet.r () / 100 .f || mcpjet.eta () <= jetEtaMin + mcpjet.r () / 100 .f ) {
897+ continue ;
898+ }
884899 registry.fill (HIST (" h2_Response_DetjetpT_PartjetpT" ), analysisJet.pt (), mcpjet.pt (), weightEvt);
885900 registry.fill (HIST (" h_jetpT_matched" ), analysisJet.pt (), weightEvt);
886901 registry.fill (HIST (" h_jetpT_particle_matched" ), mcpjet.pt (), weightEvt);
@@ -895,16 +910,36 @@ struct BjetTaggingGnn {
895910 }
896911 }
897912 }
913+
914+ if (!matchedMcColl) {
915+ return ;
916+ }
917+
918+ // Fill histograms for jets matched to the analysis event selection
919+ auto mcpjetspermcpcollision = MCPjets.sliceBy (mcpjetsPerMCPCollision, collision.mcCollisionId ());
920+ for (const auto & mcpjet : mcpjetspermcpcollision) {
921+ registry.fill (HIST (" h_jetpT_particle" ), mcpjet.pt (), weightEvt);
922+
923+ int8_t jetFlavor = mcpjet.origin ();
924+
925+ if (jetFlavor == JetTaggingSpecies::beauty) {
926+ registry.fill (HIST (" h_jetpT_particle_b" ), mcpjet.pt (), weightEvt);
927+ } else if (jetFlavor == JetTaggingSpecies::charm) {
928+ registry.fill (HIST (" h_jetpT_particle_c" ), mcpjet.pt (), weightEvt);
929+ } else {
930+ registry.fill (HIST (" h_jetpT_particle_lf" ), mcpjet.pt (), weightEvt);
931+ }
932+ }
898933 }
899934 PROCESS_SWITCH (BjetTaggingGnn, processMCDJets, " jet information in MC" , false );
900935
901- void processMCDJetsSel (AnalysisCollisionsMCD::iterator const & collision, FilteredMCDJets const & MCDjets, FilteredTracksMCD const & /* allTracks*/ , FilteredMCPJets const & /* MCPjets*/ , FilteredCollisionsMCP const & /* mcCollisions*/ )
936+ void processMCDJetsSel (AnalysisCollisionsMCD::iterator const & collision, FilteredMCDJets const & MCDjets, FilteredTracksMCD const & /* allTracks*/ , FilteredMCPJets const & /* MCPjets*/ , AnalysisCollisionsMCP const & /* mcCollisions*/ )
902937 {
903938 // Reject outlier MC collisions
904939 if (collision.isOutlier ()) {
905940 return ;
906941 }
907- if (collision.has_mcCollision () && collision.template mcCollision_as <FilteredCollisionsMCP >().isOutlier ()) {
942+ if (collision.has_mcCollision () && collision.template mcCollision_as <AnalysisCollisionsMCP >().isOutlier ()) {
908943 return ;
909944 }
910945
@@ -941,7 +976,6 @@ struct BjetTaggingGnn {
941976 PROCESS_SWITCH (BjetTaggingGnn, processMCDJetsSel, " jet information in MC (event selection)" , false );
942977
943978 PresliceUnsorted<AnalysisCollisionsMCD> collisionsPerMCPCollision = aod::jmccollisionlb::mcCollisionId;
944- Preslice<FilteredMCPJets> mcpjetsPerMCPCollision = aod::jet::mcCollisionId;
945979
946980 void processMCPJets (AnalysisCollisionsMCP const & mcCollisions, FilteredMCPJets const & mcpjets, AnalysisCollisionsMCD const & collisions, aod::JetParticles const & mcParticles)
947981 {
@@ -950,8 +984,13 @@ struct BjetTaggingGnn {
950984 if (mcCollision.isOutlier ()) {
951985 continue ;
952986 }
953- float weightEvt = useEventWeight ? mcCollision.weight () : 1 .f ;
954987 auto matchedCollisions = collisions.sliceBy (collisionsPerMCPCollision, mcCollision.mcCollisionId ());
988+ if (matchedCollisions.size () >= 1 ) {
989+ if (matchedCollisions.begin ().isOutlier ()) {
990+ continue ;
991+ }
992+ }
993+ float weightEvt = useEventWeight ? mcCollision.weight () : 1 .f ;
955994
956995 EvtSelFlag evtselCode = EvtSelFlag::INEL;
957996 registry.fill (HIST (" hMcCollCounter" ), static_cast <int >(EvtSel::INEL), weightEvt); // INEL
@@ -1014,17 +1053,6 @@ struct BjetTaggingGnn {
10141053
10151054 auto mcpjetspermcpcollision = mcpjets.sliceBy (mcpjetsPerMCPCollision, mcCollision.mcCollisionId ());
10161055 for (const auto & mcpjet : mcpjetspermcpcollision) {
1017- bool jetIncluded = false ;
1018- for (const auto & jetR : jetRadiiValues) {
1019- if (mcpjet.r () == static_cast <int >(jetR * 100 )) {
1020- jetIncluded = true ;
1021- break ;
1022- }
1023- }
1024-
1025- if (!jetIncluded) {
1026- continue ;
1027- }
10281056
10291057 int8_t jetFlavor = mcpjet.origin ();
10301058
@@ -1064,27 +1092,14 @@ struct BjetTaggingGnn {
10641092 registry.fill (HIST (" h_jetpT_particle_c_sel8_zvtx" ), mcpjet.pt (), hasAll (evtselCode, EvtSelFlag::Sel8Zvtx) ? weightEvt : 0.0 );
10651093 registry.fill (HIST (" h_jetpT_particle_c_inelgt0" ), mcpjet.pt (), hasAll (evtselCode, EvtSelFlag::INELgt0) ? weightEvt : 0.0 );
10661094 }
1067-
1068- // Fill histograms for jets matched to the analysis event selection
1069- if (isMatchedToAnalysisSelection) {
1070- registry.fill (HIST (" h_jetpT_particle" ), mcpjet.pt (), weightEvt);
1071-
1072- if (jetFlavor == JetTaggingSpecies::beauty) {
1073- registry.fill (HIST (" h_jetpT_particle_b" ), mcpjet.pt (), weightEvt);
1074- } else if (jetFlavor == JetTaggingSpecies::charm) {
1075- registry.fill (HIST (" h_jetpT_particle_c" ), mcpjet.pt (), weightEvt);
1076- } else {
1077- registry.fill (HIST (" h_jetpT_particle_lf" ), mcpjet.pt (), weightEvt);
1078- }
1079- }
10801095 }
10811096 }
10821097 }
10831098 PROCESS_SWITCH (BjetTaggingGnn, processMCPJets, " mc collision information" , false );
10841099
10851100 Preslice<aod::JetParticles> mcparticlesPerMCPCollision = aod::jmcparticle::mcCollisionId;
10861101
1087- void processMCDTracks (FilteredCollisionsMCD::iterator const & collision, AnalysisTracksMCD const & tracks, FilteredCollisionsMCP const & /* mcCollisions*/ , aod::JetParticles const & allParticles)
1102+ void processMCDTracks (FilteredCollisionsMCD::iterator const & collision, AnalysisTracksMCD const & tracks, AnalysisCollisionsMCP const & /* mcCollisions*/ , aod::JetParticles const & allParticles)
10881103 {
10891104 if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits)) {
10901105 return ;
@@ -1093,7 +1108,8 @@ struct BjetTaggingGnn {
10931108 if (collision.isOutlier ()) {
10941109 return ;
10951110 }
1096- if (collision.has_mcCollision () && collision.template mcCollision_as <FilteredCollisionsMCP>().isOutlier ()) {
1111+ bool matchedMcColl = collision.has_mcCollision ();
1112+ if (matchedMcColl && collision.template mcCollision_as <AnalysisCollisionsMCP>().isOutlier ()) {
10971113 return ;
10981114 }
10991115 // Uses only collisionId % trainingDatasetRaioParam != 0 for evaluation dataset
@@ -1102,7 +1118,6 @@ struct BjetTaggingGnn {
11021118 }
11031119
11041120 float weightEvt = useEventWeight ? collision.weight () : 1 .f ;
1105- bool matchedMcColl = collision.has_mcCollision () && std::fabs (collision.template mcCollision_as <FilteredCollisionsMCP>().posZ ()) < vertexZCut;
11061121
11071122 for (const auto & track : tracks) {
11081123 if (!jetderiveddatautilities::selectTrack (track, trackSelectionBits) || track.eta () <= trackEtaMin || track.eta () >= trackEtaMax) {
@@ -1114,19 +1129,22 @@ struct BjetTaggingGnn {
11141129 if (track.pt () >= trackPtMin) {
11151130 registry.fill (HIST (" h_dcaXY" ), std::fabs (track.dcaXY ()), weightEvt);
11161131 registry.fill (HIST (" h_dcaZ" ), std::fabs (track.dcaZ ()), weightEvt);
1132+ registry.fill (HIST (" h3_dca_pt" ), track.pt (), std::fabs (track.dcaZ ()), std::fabs (track.dcaXY ()), weightEvt);
11171133 }
11181134
11191135 if (!matchedMcColl) {
11201136 if (track.pt () >= trackPtMin) {
11211137 registry.fill (HIST (" h_dcaXY_coll_fake" ), std::fabs (track.dcaXY ()), weightEvt);
11221138 registry.fill (HIST (" h_dcaZ_coll_fake" ), std::fabs (track.dcaZ ()), weightEvt);
1139+ registry.fill (HIST (" h3_dca_pt_coll_fake" ), track.pt (), std::fabs (track.dcaZ ()), std::fabs (track.dcaXY ()), weightEvt);
11231140 }
11241141 continue ;
11251142 }
11261143 if (!track.has_mcParticle ()) {
11271144 if (track.pt () >= trackPtMin) {
11281145 registry.fill (HIST (" h_dcaXY_fake" ), std::fabs (track.dcaXY ()), weightEvt);
11291146 registry.fill (HIST (" h_dcaZ_fake" ), std::fabs (track.dcaZ ()), weightEvt);
1147+ registry.fill (HIST (" h3_dca_pt_fake" ), track.pt (), std::fabs (track.dcaZ ()), std::fabs (track.dcaXY ()), weightEvt);
11301148 }
11311149 continue ;
11321150 }
@@ -1142,28 +1160,35 @@ struct BjetTaggingGnn {
11421160 if (particle.mcCollisionId () == collision.mcCollisionId ()) {
11431161 registry.fill (HIST (" h_dcaXY_coll_matched" ), std::fabs (track.dcaXY ()), weightEvt); // Matched to particle from the same MC collision
11441162 registry.fill (HIST (" h_dcaZ_coll_matched" ), std::fabs (track.dcaZ ()), weightEvt);
1163+ registry.fill (HIST (" h3_dca_pt_coll_matched" ), track.pt (), std::fabs (track.dcaZ ()), std::fabs (track.dcaXY ()), weightEvt);
11451164 int origin = RecoDecay::getParticleOrigin (allParticles, particle, false );
11461165 if (origin == RecoDecay::OriginType::NonPrompt) {
11471166 registry.fill (HIST (" h_dcaXY_coll_matched_b" ), std::fabs (track.dcaXY ()), weightEvt);
11481167 registry.fill (HIST (" h_dcaZ_coll_matched_b" ), std::fabs (track.dcaZ ()), weightEvt);
1168+ registry.fill (HIST (" h3_dca_pt_coll_matched_b" ), track.pt (), std::fabs (track.dcaZ ()), std::fabs (track.dcaXY ()), weightEvt);
11491169 } else if (origin == RecoDecay::OriginType::Prompt) {
11501170 registry.fill (HIST (" h_dcaXY_coll_matched_c" ), std::fabs (track.dcaXY ()), weightEvt);
11511171 registry.fill (HIST (" h_dcaZ_coll_matched_c" ), std::fabs (track.dcaZ ()), weightEvt);
1172+ registry.fill (HIST (" h3_dca_pt_coll_matched_c" ), track.pt (), std::fabs (track.dcaZ ()), std::fabs (track.dcaXY ()), weightEvt);
11521173 } else {
11531174 registry.fill (HIST (" h_dcaXY_coll_matched_lf" ), std::fabs (track.dcaXY ()), weightEvt);
11541175 registry.fill (HIST (" h_dcaZ_coll_matched_lf" ), std::fabs (track.dcaZ ()), weightEvt);
1176+ registry.fill (HIST (" h3_dca_pt_coll_matched_lf" ), track.pt (), std::fabs (track.dcaZ ()), std::fabs (track.dcaXY ()), weightEvt);
11551177 }
11561178 } else {
11571179 registry.fill (HIST (" h_dcaXY_coll_mismatched" ), std::fabs (track.dcaXY ()), weightEvt); // Matched to particle from a different MC collision
11581180 registry.fill (HIST (" h_dcaZ_coll_mismatched" ), std::fabs (track.dcaZ ()), weightEvt);
1181+ registry.fill (HIST (" h3_dca_pt_coll_mismatched" ), track.pt (), std::fabs (track.dcaZ ()), std::fabs (track.dcaXY ()), weightEvt);
11591182 }
11601183 } else {
11611184 if (particle.mcCollisionId () == collision.mcCollisionId ()) {
11621185 registry.fill (HIST (" h_dcaXY_npp" ), std::fabs (track.dcaXY ()), weightEvt);
11631186 registry.fill (HIST (" h_dcaZ_npp" ), std::fabs (track.dcaZ ()), weightEvt);
1187+ registry.fill (HIST (" h3_dca_pt_npp" ), track.pt (), std::fabs (track.dcaZ ()), std::fabs (track.dcaXY ()), weightEvt);
11641188 } else {
11651189 registry.fill (HIST (" h_dcaXY_npp_mismatched" ), std::fabs (track.dcaXY ()), weightEvt);
11661190 registry.fill (HIST (" h_dcaZ_npp_mismatched" ), std::fabs (track.dcaZ ()), weightEvt);
1191+ registry.fill (HIST (" h3_dca_pt_npp_mismatched" ), track.pt (), std::fabs (track.dcaZ ()), std::fabs (track.dcaXY ()), weightEvt);
11671192 }
11681193 }
11691194 }
0 commit comments