@@ -242,15 +242,19 @@ struct ValidationRecLevel {
242242 std::array<std::shared_ptr<TH1 >, nCharmHadrons> histDeltaPt, histDeltaPx, histDeltaPy, histDeltaPz, histDeltaSecondaryVertexX, histDeltaSecondaryVertexY, histDeltaSecondaryVertexZ, histDeltaDecayLength;
243243 std::array<std::array<std::array<std::shared_ptr<TH1 >, 3 >, 2 >, nCharmHadrons> histPtDau, histEtaDau, histImpactParameterDau;
244244 std::array<std::array<std::shared_ptr<TH1 >, 2 >, nCharmHadrons> histPtReco;
245+ std::array<std::shared_ptr<TH1 >, 2 > histOriginTracks;
245246
246247 HistogramRegistry registry{" registry" , {}};
247248 void init (o2::framework::InitContext&)
248249 {
249- auto histOriginNonAssociatedTracks = registry.add <TH1 >(" histOriginNonAssociatedTracks" , " ;origin;entries" , HistType::kTH1F , {{4 , -1.5 , 2.5 }});
250- histOriginNonAssociatedTracks->SetBinLabel (1 , " no MC particle" );
251- histOriginNonAssociatedTracks->SetBinLabel (2 , " no quark" );
252- histOriginNonAssociatedTracks->SetBinLabel (3 , " charm" );
253- histOriginNonAssociatedTracks->SetBinLabel (4 , " beauty" );
250+ auto histOriginTracks[0 ] = registry.add <TH1 >(" histOriginNonAssociatedTracks" , " ;origin;entries" , HistType::kTH1F , {{4 , -1.5 , 2.5 }});
251+ auto histOriginTracks[1 ] = registry.add <TH1 >(" histOriginAssociatedTracks" , " ;origin;entries" , HistType::kTH1F , {{4 , -1.5 , 2.5 }});
252+ for (int iHist{0 }; iHist < histOriginTracks.size (); ++iHist) {
253+ histOriginTracks[iHist]->SetBinLabel (1 , " no MC particle" );
254+ histOriginTracks[iHist]->SetBinLabel (2 , " no quark" );
255+ histOriginTracks[iHist]->SetBinLabel (3 , " charm" );
256+ histOriginTracks[iHist]->SetBinLabel (4 , " beauty" );
257+ }
254258 for (auto iHad = 0 ; iHad < nCharmHadrons; ++iHad) {
255259 histDeltaPt[iHad] = registry.add <TH1 >(Form (" histDeltaPt%s" , particleNames[iHad].data ()), Form (" Pt difference reco - MC %s; #it{p}_{T}^{reco} - #it{p}_{T}^{gen} (GeV/#it{c}); entries" , labels[iHad].data ()), HistType::kTH1F , {{2000 , -1 ., 1 .}});
256260 histDeltaPx[iHad] = registry.add <TH1 >(Form (" histDeltaPx%s" , particleNames[iHad].data ()), Form (" Px difference reco - MC %s; #it{p}_{x}^{reco} - #it{p}_{x}^{gen} (GeV/#it{c}); entries" , labels[iHad].data ()), HistType::kTH1F , {{2000 , -1 ., 1 .}});
@@ -275,17 +279,28 @@ struct ValidationRecLevel {
275279 using HfCandProng3WithMCRec = soa::Join<aod::HfCandProng3, aod::HfCandProng3MCRec>;
276280
277281 Partition<aod::McParticles> collNonAssociatedTracks = aod::track::collisionId < 0 ;
282+ Partition<aod::McParticles> collAssociatedTracks = aod::track::collisionId >= 0 ;
278283
279284 void process (HfCandProng2WithMCRec const & cand2Prongs, HfCandProng3WithMCRec const & cand3Prongs, aod::BigTracksMC const & tracks, aod::McParticles const & particlesMC)
280285 {
281- // loop over tracks
286+ // loop over tracks without collision association
282287 for (auto & track : collNonAssociatedTracks) {
283288 if (track.has_mcParticle ()) {
284289 auto particle = arrDaughters[iProng].mcParticle (); // get corresponding MC particle to check origin
285290 auto origin = RecoDecay::getCharmHadronOrigin (particlesMC, particle, true );
286- histOriginNonAssociatedTracks->Fill (origin);
291+ histOriginTracks[0 ]->Fill (origin);
292+ } else {
293+ histOriginTracks[0 ]->Fill (-1 .);
294+ }
295+ }
296+ // loop over tracks with collision association
297+ for (auto & track : collAssociatedTracks) {
298+ if (track.has_mcParticle ()) {
299+ auto particle = arrDaughters[iProng].mcParticle (); // get corresponding MC particle to check origin
300+ auto origin = RecoDecay::getCharmHadronOrigin (particlesMC, particle, true );
301+ histOriginTracks[1 ]->Fill (origin);
287302 } else {
288- histOriginNonAssociatedTracks ->Fill (-1 .);
303+ histOriginTracks[ 1 ] ->Fill (-1 .);
289304 }
290305 }
291306
0 commit comments