@@ -166,6 +166,10 @@ struct JetTaggerHFQA {
166166 registry.add (" h_impact_parameter_xyz_significance" , " " , {HistType::kTH1F , {{axisImpactParameterXYZSignificance}}});
167167 }
168168 }
169+ if (doprocessSecondaryContamination) {
170+ registry.add (" h2_impact_parameter_xy_physical_primary_flavour" , " " , {HistType::kTH2F , {{axisImpactParameterXY}, {axisJetFlavour}}});
171+ registry.add (" h2_impact_parameter_xy_secondary_flavour" , " " , {HistType::kTH2F , {{axisImpactParameterXY}, {axisJetFlavour}}});
172+ }
169173 if (doprocessValFlavourDefMCD) {
170174 registry.add (" h2_flavour_dist_quark_flavour_dist_hadron" , " " , {HistType::kTH2F , {{axisJetFlavour}, {axisJetFlavour}}});
171175 registry.add (" h2_flavour_const_quark_flavour_const_hadron" , " " , {HistType::kTH2F , {{axisJetFlavour}, {axisJetFlavour}}});
@@ -1095,6 +1099,40 @@ struct JetTaggerHFQA {
10951099 }
10961100 PROCESS_SWITCH (JetTaggerHFQA, processTracksDca, " Fill inclusive tracks' imformation for data" , false );
10971101
1102+ void processSecondaryContamination (soa::Filtered<soa::Join<aod::JetCollisions, aod::JCollisionPIs, aod::JMcCollisionLbs>>::iterator const & collision, soa::Join<JetTableMCD, TagTableMCD, JetTableMCDMCP, weightMCD> const & mcdjets, soa::Join<JetTableMCP, JetTableMCPMCD> const & /* mcpjets*/ , JetTagTracksMCD const & tracks, aod::JetParticles const & /* particles*/ )
1103+ {
1104+ if (collision.trackOccupancyInTimeRange () < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange ()) {
1105+ return ;
1106+ }
1107+ for (auto const & mcdjet : mcdjets) {
1108+ if (!jetfindingutilities::isInEtaAcceptance (mcdjet, jetEtaMin, jetEtaMax, trackEtaMin, trackEtaMax)) {
1109+ continue ;
1110+ }
1111+ if (!isAcceptedJet<aod::JetTracks>(mcdjet)) {
1112+ continue ;
1113+ }
1114+ if (!mcdjet.has_matchedJetGeo ()) {
1115+ continue ;
1116+ }
1117+ float pTHat = 10 . / (std::pow (mcdjet.eventWeight (), 1.0 / pTHatExponent));
1118+ if (mcdjet.pt () > pTHatMaxMCD * pTHat) {
1119+ continue ;
1120+ }
1121+ int jetflavour = mcdjet.origin ();
1122+ for (auto const & track : mcdjet.template tracks_as <JetTagTracksMCD>()) {
1123+ float varImpXY = track.dcaXY () * jettaggingutilities::cmTomum;
1124+ if (!track.has_mcParticle ()) continue ;
1125+ auto mcParticle = track.mcParticle ();
1126+ if (mcParticle.isPhysicalPrimary ()) {
1127+ registry.fill (HIST (" h2_impact_parameter_xy_physical_primary_flavour" ), varImpXY, jetflavour, mcdjet.eventWeight ());
1128+ } else {
1129+ registry.fill (HIST (" h2_impact_parameter_xy_secondary_flavour" ), varImpXY, jetflavour, mcdjet.eventWeight ());
1130+ }
1131+ }
1132+ }
1133+ }
1134+ PROCESS_SWITCH (JetTaggerHFQA, processSecondaryContamination, " Fill QA comtamination of secondary-track inside jets" , false );
1135+
10981136 void processValFlavourDefMCD (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> const & /* mcpjets*/ , JetTagTracksMCD const & tracks, aod::JetParticles const & particles)
10991137 {
11001138 if (collision.trackOccupancyInTimeRange () < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange ()) {
0 commit comments