@@ -683,35 +683,72 @@ struct JetShapeTask {
683683 }
684684 PROCESS_SWITCH (JetShapeTask, processReco, " process reconstructed simulation information" , true );
685685
686- void processSim (soa::Join<aod::McCollisions, aod::McCentFT0Ms>::iterator const & mcCollision, aod::ChargedMCParticleLevelJets const & mcpjets, aod::McParticles const & mcParticles)
686+ void processSim (soa::Join<aod::McCollisions, aod::McCentFT0Ms>::iterator const & mcCollision,
687+ aod::ChargedMCParticleLevelJets const & mcpjets,
688+ aod::McParticles const & mcParticles)
687689 {
688-
690+ if (std::abs (mcCollision.posZ ()) > vertexZCut) {
691+ return ;
692+ }
693+ // --- centrality ---
689694 float centrality = mcCollision.centFT0M ();
690695 registry.fill (HIST (" mcCentralitySim" ), centrality);
691696
692- for (const auto & mcpjet : mcpjets) {
697+ const float maxR2 = distanceMax * distanceMax;
698+
699+ // --- loop over MC particles only once ---
700+ for (const auto & mcParticle : mcParticles) {
701+
702+ // --- early cuts on particle ---
703+ if (!mcParticle.isPhysicalPrimary ()) {
704+ continue ;
705+ }
706+
707+ if (std::abs (mcParticle.y ()) > mcRapidityMax) {
708+ continue ;
709+ }
710+
711+ int absPdg = std::abs (mcParticle.pdgCode ());
712+ if (absPdg != PDG_t::kPiPlus &&
713+ absPdg != PDG_t::kKPlus &&
714+ absPdg != PDG_t::kProton ) {
715+ continue ;
716+ }
693717
694- for (const auto & mcParticle : mcParticles) {
718+ const float partPt = mcParticle.pt ();
719+ const float partEta = mcParticle.eta ();
720+ const float partPhi = mcParticle.phi ();
695721
696- float dEta = mcParticle. eta () - mcpjet. eta ();
697- float dPhi = std::abs (mcParticle. phi () - mcpjet. phi ());
722+ // --- loop over jets ---
723+ for ( const auto & mcpjet : mcpjets) {
698724
725+ // --- delta eta cut first ---
726+ float dEta = partEta - mcpjet.eta ();
727+ if (std::abs (dEta) > distanceMax) {
728+ continue ;
729+ }
730+
731+ // --- delta phi ---
732+ float dPhi = std::abs (partPhi - mcpjet.phi ());
699733 if (dPhi > o2::constants::math::PI) {
700734 dPhi = o2::constants::math::TwoPI - dPhi;
701735 }
702736
703- float deltaR = std::sqrt (dEta * dEta + dPhi * dPhi);
704- if (deltaR > distanceMax) {
737+ // --- delta R^2 ---
738+ float dR2 = dEta * dEta + dPhi * dPhi;
739+ if (dR2 > maxR2) {
705740 continue ;
706741 }
707742
708- if (mcParticle.isPhysicalPrimary () && std::fabs (mcParticle.y ()) < mcRapidityMax) {
709- if (std::abs (mcParticle.pdgCode ()) == PDG_t::kPiPlus )
710- registry.fill (HIST (" ptGeneratedPion" ), mcParticle.pt (), mcpjet.pt (), centrality);
711- if (std::abs (mcParticle.pdgCode ()) == PDG_t::kKPlus )
712- registry.fill (HIST (" ptGeneratedKaon" ), mcParticle.pt (), mcpjet.pt (), centrality);
713- if (std::abs (mcParticle.pdgCode ()) == PDG_t::kProton )
714- registry.fill (HIST (" ptGeneratedProton" ), mcParticle.pt (), mcpjet.pt (), centrality);
743+ const float jetPt = mcpjet.pt ();
744+
745+ // --- histogram fill ---
746+ if (absPdg == PDG_t::kPiPlus ) {
747+ registry.fill (HIST (" ptGeneratedPion" ), partPt, jetPt, centrality);
748+ } else if (absPdg == PDG_t::kKPlus ) {
749+ registry.fill (HIST (" ptGeneratedKaon" ), partPt, jetPt, centrality);
750+ } else {
751+ registry.fill (HIST (" ptGeneratedProton" ), partPt, jetPt, centrality);
715752 }
716753 }
717754 }
0 commit comments