@@ -263,41 +263,48 @@ struct BjetTaggingGnn {
263263 registry.add (" h_gnnfeat_trackPhi" , " " , {HistType::kTH1F , {{200 , 0 ., 2 . * M_PI, " #it{#phi}" }}});
264264 registry.add (" h_gnnfeat_trackEta" , " " , {HistType::kTH1F , {{200 , -0.9 , 0.9 , " #it{#eta}" }}});
265265 registry.add (" h_gnnfeat_trackCharge" , " " , {HistType::kTH1F , {{3 , -1 ., 2 ., " #it{q}" }}});
266- registry.add (" h_gnnfeat_trackDCAxy" , " " , {HistType::kTH1F , {{200 , -5 ., 5 ., " DCA_#it{xy} (cm)" }}});
267- registry.add (" h_gnnfeat_trackSigmaDCAxy" , " " , {HistType::kTH1F , {{200 , 0 ., 5 ., " #it{#sigma}_{{DCA_#it{xy}} (cm)" }}});
268- registry.add (" h_gnnfeat_trackDCAz" , " " , {HistType::kTH1F , {{200 , -5 ., 5 ., " DCA_#it{z} (cm)" }}});
269- registry.add (" h_gnnfeat_trackSigmaDCAz" , " " , {HistType::kTH1F , {{200 , 0 ., 5 ., " #it{#sigma}_{{DCA_#it{z}} (cm)" }}});
266+ registry.add (" h_gnnfeat_trackDCAxy" , " " , {HistType::kTH1F , {{200 , -5 ., 5 ., " DCA_{ #it{xy} } (cm)" }}});
267+ registry.add (" h_gnnfeat_trackSigmaDCAxy" , " " , {HistType::kTH1F , {{200 , 0 ., 5 ., " #it{#sigma}_{{DCA_{ #it{xy} }} (cm)" }}});
268+ registry.add (" h_gnnfeat_trackDCAz" , " " , {HistType::kTH1F , {{200 , -5 ., 5 ., " DCA_{ #it{z} } (cm)" }}});
269+ registry.add (" h_gnnfeat_trackSigmaDCAz" , " " , {HistType::kTH1F , {{200 , 0 ., 5 ., " #it{#sigma}_{{DCA_{ #it{z} }} (cm)" }}});
270270 registry.add (" h_gnnfeat_trackITSChi2NCl" , " " , {HistType::kTH1F , {{200 , 0 ., 40 ., " ITS #it{#chi}^{2}/ndf" }}});
271271 registry.add (" h_gnnfeat_trackTPCChi2NCl" , " " , {HistType::kTH1F , {{200 , 0 ., 5 ., " TPC #it{#chi}^{2}/ndf" }}});
272272 registry.add (" h_gnnfeat_trackITSNCls" , " " , {HistType::kTH1F , {{8 , 0 ., 8 ., " ITS NCls" }}});
273273 registry.add (" h_gnnfeat_trackTPCNCls" , " " , {HistType::kTH1F , {{153 , 0 ., 153 ., " TPC NCls" }}});
274274 registry.add (" h_gnnfeat_trackTPCNCrossedRows" , " " , {HistType::kTH1F , {{153 , 0 ., 153 ., " TPC NCrossedRows" }}});
275- registry.add (" h_gnnfeat_tracksIPxy" , " " , {HistType::kTH1F , {{200 , -5 ., 5 ., " {sIP}_#it{xy}" }}});
276- registry.add (" h_gnnfeat_tracksIPz" , " " , {HistType::kTH1F , {{200 , -5 ., 5 ., " {sIP}_#it{z}" }}});
275+ registry.add (" h_gnnfeat_tracksIPxy" , " " , {HistType::kTH1F , {{200 , -5 ., 5 ., " {sIP}_{ #it{xy} }" }}});
276+ registry.add (" h_gnnfeat_tracksIPz" , " " , {HistType::kTH1F , {{200 , -5 ., 5 ., " {sIP}_{ #it{z} }" }}});
277277
278278 if (doprocessDataTracks || doprocessMCDTracks) {
279279 registry.add (" h_trackpT" , " " , {HistType::kTH1F , {axisTrackpT}}, callSumw2);
280280 registry.add (" h_tracketa" , " " , {HistType::kTH1F , {{100 , trackEtaMin, trackEtaMax, " #it{#eta}" }}}, callSumw2);
281281 registry.add (" h_trackphi" , " " , {HistType::kTH1F , {{100 , 0.0 , 2.0 * M_PI, " #it{#phi}" }}}, callSumw2);
282+ registry.add (" h_dcaXY" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2);
283+ registry.add (" h_dcaZ" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }}}, callSumw2);
282284 }
283285
284286 if (doprocessMCDTracks) {
285287 registry.add (" h2_trackpT_partpT" , " " , {HistType::kTH2F , {axisTrackpT, axisTrackpT}}, callSumw2);
286288 registry.add (" h_partpT_matched_fine" , " " , {HistType::kTH1F , {axisTrackpTFine}}, callSumw2);
287289 registry.add (" h_partpT" , " " , {HistType::kTH1F , {axisTrackpT}}, callSumw2);
288290 registry.add (" h_partpT_fine" , " " , {HistType::kTH1F , {axisTrackpTFine}}, callSumw2);
289- registry.add (" h_dcaXY_coll_matched" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_#it{xy}| (cm)" }}}, callSumw2);
290- registry.add (" h_dcaXY_coll_matched_b" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_#it{xy}| (cm)" }}}, callSumw2);
291- registry.add (" h_dcaXY_coll_matched_c" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_#it{xy}| (cm)" }}}, callSumw2);
292- registry.add (" h_dcaXY_coll_matched_lf" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_#it{xy}| (cm)" }}}, callSumw2);
293- registry.add (" h_dcaXY_coll_mismatched" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_#it{xy}| (cm)" }}}, callSumw2);
294- registry.add (" h_dcaXY_npp" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_#it{xy}| (cm)" }}}, callSumw2);
295- registry.add (" h_dcaZ_coll_matched" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_#it{z}| (cm)" }}}, callSumw2);
296- registry.add (" h_dcaZ_coll_matched_b" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_#it{z}| (cm)" }}}, callSumw2);
297- registry.add (" h_dcaZ_coll_matched_c" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_#it{z}| (cm)" }}}, callSumw2);
298- registry.add (" h_dcaZ_coll_matched_lf" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_#it{z}| (cm)" }}}, callSumw2);
299- registry.add (" h_dcaZ_coll_mismatched" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_#it{z}| (cm)" }}}, callSumw2);
300- registry.add (" h_dcaZ_npp" , " " , {HistType::kTH1F , {{200 , 0 ., 5 ., " |DCA_#it{z}| (cm)" }}}, callSumw2);
291+ // DCA cut study histograms (pT > pTMin)
292+ registry.add (" h_dcaXY_coll_fake" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2); // tracks from fake collisions
293+ registry.add (" h_dcaXY_fake" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2); // fake tracks (no matched particle)
294+ registry.add (" h_dcaXY_coll_matched" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2); // tracks from matched collisions
295+ registry.add (" h_dcaXY_coll_matched_b" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2); // tracks from matched collisions, b hadron decay
296+ registry.add (" h_dcaXY_coll_matched_c" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2); // tracks from matched collisions, c hadron decay
297+ registry.add (" h_dcaXY_coll_matched_lf" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2); // tracks from matched collisions, others
298+ registry.add (" h_dcaXY_coll_mismatched" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2); // tracks from mismatched collisions
299+ registry.add (" h_dcaXY_npp" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{xy}}| (cm)" }}}, callSumw2); // non-physical primary tracks (GenStatusCode=-1)
300+ registry.add (" h_dcaZ_coll_fake" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }}}, callSumw2);
301+ registry.add (" h_dcaZ_fake" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }}}, callSumw2);
302+ registry.add (" h_dcaZ_coll_matched" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }}}, callSumw2);
303+ registry.add (" h_dcaZ_coll_matched_b" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }}}, callSumw2);
304+ registry.add (" h_dcaZ_coll_matched_c" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }}}, callSumw2);
305+ registry.add (" h_dcaZ_coll_matched_lf" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }}}, callSumw2);
306+ registry.add (" h_dcaZ_coll_mismatched" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }}}, callSumw2);
307+ registry.add (" h_dcaZ_npp" , " " , {HistType::kTH1F , {{200 , 0 ., 4 ., " |DCA_{#it{z}}| (cm)" }}}, callSumw2);
301308 }
302309
303310 if (doprocessDataJetsSel || doprocessMCDJetsSel) {
@@ -822,6 +829,10 @@ struct BjetTaggingGnn {
822829 registry.fill (HIST (" h_trackpT" ), track.pt ());
823830 registry.fill (HIST (" h_tracketa" ), track.eta ());
824831 registry.fill (HIST (" h_trackphi" ), track.phi ());
832+ if (track.pt () >= trackPtMin) {
833+ registry.fill (HIST (" h_dcaXY" ), std::fabs (track.dcaXY ()));
834+ registry.fill (HIST (" h_dcaZ" ), std::fabs (track.dcaZ ()));
835+ }
825836 }
826837 }
827838 PROCESS_SWITCH (BjetTaggingGnn, processDataTracks, " track information in Data" , false );
@@ -1095,17 +1106,34 @@ struct BjetTaggingGnn {
10951106 registry.fill (HIST (" h_trackpT" ), track.pt (), weightEvt);
10961107 registry.fill (HIST (" h_tracketa" ), track.eta (), weightEvt);
10971108 registry.fill (HIST (" h_trackphi" ), track.phi (), weightEvt);
1109+ if (track.pt () >= trackPtMin) {
1110+ registry.fill (HIST (" h_dcaXY" ), std::fabs (track.dcaXY ()), weightEvt);
1111+ registry.fill (HIST (" h_dcaZ" ), std::fabs (track.dcaZ ()), weightEvt);
1112+ }
10981113
1099- if (!matchedMcColl || !track.has_mcParticle ()) {
1114+ if (!matchedMcColl) {
1115+ if (track.pt () >= trackPtMin) {
1116+ registry.fill (HIST (" h_dcaXY_coll_fake" ), std::fabs (track.dcaXY ()), weightEvt);
1117+ registry.fill (HIST (" h_dcaZ_coll_fake" ), std::fabs (track.dcaZ ()), weightEvt);
1118+ }
1119+ continue ;
1120+ }
1121+ if (!track.has_mcParticle ()) {
1122+ if (track.pt () >= trackPtMin) {
1123+ registry.fill (HIST (" h_dcaXY_fake" ), std::fabs (track.dcaXY ()), weightEvt);
1124+ registry.fill (HIST (" h_dcaZ_fake" ), std::fabs (track.dcaZ ()), weightEvt);
1125+ }
11001126 continue ;
11011127 }
11021128 auto particle = track.template mcParticle_as <aod::JetParticles>();
1103- if (particle.isPhysicalPrimary () ) {
1104- if (particle.eta () > trackEtaMin && particle. eta () < trackEtaMax ) {
1129+ if (particle.eta () > trackEtaMin && particle. eta () < trackEtaMax ) {
1130+ if (particle.isPhysicalPrimary () ) {
11051131 registry.fill (HIST (" h2_trackpT_partpT" ), track.pt (), particle.pt (), weightEvt);
11061132 registry.fill (HIST (" h_partpT_matched_fine" ), particle.pt (), weightEvt);
1133+ }
1134+ if (track.pt () >= trackPtMin) {
11071135 // Track association accuracy as a function of DCA
1108- if (track. pt () >= trackPtMin ) {
1136+ if (particle. isPhysicalPrimary () ) {
11091137 if (particle.mcCollisionId () == collision.mcCollisionId ()) {
11101138 registry.fill (HIST (" h_dcaXY_coll_matched" ), std::fabs (track.dcaXY ()), weightEvt); // Matched to particle from the same MC collision
11111139 registry.fill (HIST (" h_dcaZ_coll_matched" ), std::fabs (track.dcaZ ()), weightEvt);
@@ -1124,13 +1152,11 @@ struct BjetTaggingGnn {
11241152 registry.fill (HIST (" h_dcaXY_coll_mismatched" ), std::fabs (track.dcaXY ()), weightEvt); // Matched to particle from a different MC collision
11251153 registry.fill (HIST (" h_dcaZ_coll_mismatched" ), std::fabs (track.dcaZ ()), weightEvt);
11261154 }
1155+ } else {
1156+ registry.fill (HIST (" h_dcaXY_npp" ), std::fabs (track.dcaXY ()), weightEvt);
1157+ registry.fill (HIST (" h_dcaZ_npp" ), std::fabs (track.dcaZ ()), weightEvt);
11271158 }
11281159 }
1129- } else {
1130- if (particle.eta () > trackEtaMin && particle.eta () < trackEtaMax && track.pt () >= trackPtMin) {
1131- registry.fill (HIST (" h_dcaXY_npp" ), std::fabs (track.dcaXY ()), weightEvt);
1132- registry.fill (HIST (" h_dcaZ_npp" ), std::fabs (track.dcaZ ()), weightEvt);
1133- }
11341160 }
11351161 }
11361162
0 commit comments