@@ -655,29 +655,20 @@ struct JetHadronRecoil {
655655 }
656656
657657 template <typename T, typename U, typename X, typename Y>
658- void fillRecoilJetMatchedHistograms (T const & jetsBase , U const &, X const & tracks, Y const & particles, float weight = 1.0 , float rho = 0.0 , float pTHat = 999.0 )
658+ void fillRecoilJetMatchedHistograms (T const &, U const & jetsTag , X const & tracks, Y const & particles, float weight = 1.0 , float rho = 0.0 , float pTHat = 999.0 )
659659 {
660660 std::vector<double > phiTTAr;
661- std::vector<double > phiTTArPart;
662661 double phiTT = 0 ;
663- double phiTTPart = 0 ;
664662 int nTT = 0 ;
665663
666- for (const auto & track : tracks) {
667- if (!track.has_mcParticle ()) {
668- continue ;
669- }
670- if (!jetderiveddatautilities::selectTrack (track, trackSelection)) {
671- continue ;
672- }
673- if (track.pt () > pTHatTrackMaxMCD * pTHat) {
664+ for (const auto & particle : particles) {
665+ if (particle.pt () > pTHatTrackMaxMCP * pTHat) {
674666 if (outlierRejectEvent) {
675667 return ;
676668 } else {
677669 continue ;
678670 }
679671 }
680- auto particle = track.template mcParticle_as <Y>();
681672 auto pdgParticle = pdg->GetParticle (particle.pdgCode ());
682673 if (!pdgParticle) {
683674 continue ;
@@ -687,44 +678,42 @@ struct JetHadronRecoil {
687678 }
688679 if (particle.pt () < ptTTsigMax && particle.pt () > ptTTsigMin) {
689680 nTT++;
690- phiTTAr.push_back (track.phi ());
691- phiTTArPart.push_back (particle.phi ());
681+ phiTTAr.push_back (particle.phi ());
692682 }
693683 }
694684
695685 if (nTT > 0 ) {
696686 int trigNumber = rand->Integer (nTT);
697687 phiTT = phiTTAr[trigNumber];
698- phiTTPart = phiTTArPart[trigNumber];
699688 } else {
700689 return ;
701690 }
702691
703- for (const auto & jetBase : jetsBase ) {
692+ for (const auto & jetTag : jetsTag ) {
704693
705- if (jetBase .pt () > pTHatMaxMCD * pTHat) {
694+ if (jetTag .pt () > pTHatMaxMCP * pTHat) {
706695 if (outlierRejectEvent) {
707696 return ;
708697 } else {
709698 continue ;
710699 }
711700 }
712701
713- float dphi = RecoDecay::constrainAngle (jetBase .phi () - phiTT);
714- double dR = getWTAaxisDifference (jetBase, tracks );
702+ float dphip = RecoDecay::constrainAngle (jetTag .phi () - phiTT);
703+ double dRp = getWTAaxisDifference (jetTag, particles );
715704
716- if (jetBase .has_matchedJetGeo ()) {
717- for (const auto & jetTag : jetBase .template matchedJetGeo_as <std::decay_t <U >>()) {
718- if (jetTag .pt () > pTHatMaxMCP * pTHat) {
705+ if (jetTag .has_matchedJetGeo ()) {
706+ for (const auto & jetBase : jetTag .template matchedJetGeo_as <std::decay_t <T >>()) {
707+ if (jetBase .pt () > pTHatMaxMCD * pTHat) {
719708 if (outlierRejectEvent) {
720709 return ;
721710 } else {
722711 continue ;
723712 }
724713 }
725714
726- float dphip = RecoDecay::constrainAngle (jetTag .phi () - phiTTPart );
727- double dRp = getWTAaxisDifference (jetTag, particles );
715+ float dphi = RecoDecay::constrainAngle (jetBase .phi () - phiTT );
716+ double dR = getWTAaxisDifference (jetBase, tracks );
728717 registry.fill (HIST (" hPhiMatched" ), dphi, dphip, weight);
729718 registry.fill (HIST (" hPhiMatched2d" ), jetTag.phi (), jetTag.pt (), weight);
730719 registry.fill (HIST (" hPhiResolution" ), jetTag.pt (), dphip - dphi, weight);
@@ -872,39 +861,63 @@ struct JetHadronRecoil {
872861 }
873862 PROCESS_SWITCH (JetHadronRecoil, processMCDWeightedWithRhoSubtraction, " process MC detector level with event weights and rho subtraction" , false );
874863
875- void processMCP (aod::JetMcCollision const & collision,
864+ void processMCP (aod::JetMcCollision const & mccollision,
865+ soa::SmallGroups<aod::JetCollisionsMCD> const & collisions,
876866 soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents>> const & jets,
877867 soa::Filtered<aod::JetParticles> const & particles)
878868 {
879- if (std::abs (collision .posZ ()) > vertexZCut) {
869+ if (std::abs (mccollision .posZ ()) > vertexZCut) {
880870 return ;
881871 }
882- if (skipMBGapEvents && collision .subGeneratorId () == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap) {
872+ if (skipMBGapEvents && mccollision .subGeneratorId () == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap) {
883873 return ;
884874 }
885- if (collision .ptHard () < pTHatMinEvent) {
875+ if (mccollision .ptHard () < pTHatMinEvent) {
886876 return ;
887877 }
888- registry.fill (HIST (" hZvtxSelected" ), collision.posZ ());
889- fillMCPHistograms (jets, particles, 1.0 , collision.ptHard ());
878+ if (collisions.size () < 1 ) {
879+ return ;
880+ }
881+ for (auto const & collision : collisions) {
882+ if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits)) {
883+ return ;
884+ }
885+ if (!jetderiveddatautilities::selectTrigger (collision, triggerMaskBits)) {
886+ return ;
887+ }
888+ }
889+ registry.fill (HIST (" hZvtxSelected" ), mccollision.posZ ());
890+ fillMCPHistograms (jets, particles, 1.0 , mccollision.ptHard ());
890891 }
891892 PROCESS_SWITCH (JetHadronRecoil, processMCP, " process MC particle level" , false );
892893
893- void processMCPWeighted (aod::JetMcCollision const & collision,
894+ void processMCPWeighted (aod::JetMcCollision const & mccollision,
895+ soa::SmallGroups<aod::JetCollisionsMCD> const & collisions,
894896 soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents>> const & jets,
895897 soa::Filtered<aod::JetParticles> const & particles)
896898 {
897- if (std::abs (collision .posZ ()) > vertexZCut) {
899+ if (std::abs (mccollision .posZ ()) > vertexZCut) {
898900 return ;
899901 }
900- if (skipMBGapEvents && collision .subGeneratorId () == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap) {
902+ if (skipMBGapEvents && mccollision .subGeneratorId () == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap) {
901903 return ;
902904 }
903- if (collision .ptHard () < pTHatMinEvent) {
905+ if (mccollision .ptHard () < pTHatMinEvent) {
904906 return ;
905907 }
906- registry.fill (HIST (" hZvtxSelected" ), collision.posZ (), collision.weight ());
907- fillMCPHistograms (jets, particles, collision.weight (), collision.ptHard ());
908+ if (collisions.size () < 1 ) {
909+ return ;
910+ }
911+ for (auto const & collision : collisions) {
912+ if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits)) {
913+ return ;
914+ }
915+ if (!jetderiveddatautilities::selectTrigger (collision, triggerMaskBits)) {
916+ return ;
917+ }
918+ }
919+ registry.fill (HIST (" hZvtxSelected" ), mccollision.posZ (), mccollision.weight ());
920+ fillMCPHistograms (jets, particles, mccollision.weight (), mccollision.ptHard ());
908921 }
909922 PROCESS_SWITCH (JetHadronRecoil, processMCPWeighted, " process MC particle level with event weights" , false );
910923
@@ -1004,75 +1017,99 @@ struct JetHadronRecoil {
10041017 }
10051018 PROCESS_SWITCH (JetHadronRecoil, processJetsMCPMCDMatchedWeightedWithRhoSubtraction, " process MC matched with event weights (inc jets) and rho subtraction" , false );
10061019
1007- void processRecoilJetsMCPMCDMatched (soa::Filtered<soa::Join<aod::JetCollisionsMCD, aod::JMcCollisionLbs>>::iterator const & collision,
1020+ void processRecoilJetsMCPMCDMatched (aod::JetMcCollisions::iterator const & mccollision,
1021+ soa::SmallGroups<aod::JetCollisionsMCD> const & collisions,
10081022 soa::Filtered<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets>> const & mcdjets,
1009- soa::Filtered<aod::JetTracksMCD> const & tracks,
10101023 soa::Filtered<aod::JetParticles> const & particles,
1011- aod::JetMcCollisions const &,
1024+ soa::Filtered< aod::JetTracksMCD> const & tracks ,
10121025 soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>> const & mcpjets)
10131026 {
1014- if (! jetderiveddatautilities::selectCollision (collision, eventSelectionBits) ) {
1027+ if (std::abs (mccollision. posZ ()) > vertexZCut ) {
10151028 return ;
10161029 }
1017- if (! jetderiveddatautilities::selectTrigger (collision, triggerMaskBits) ) {
1030+ if (skipMBGapEvents && mccollision. subGeneratorId () == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap ) {
10181031 return ;
10191032 }
1020- if (!collision. has_mcCollision () ) {
1033+ if (mccollision. ptHard () < pTHatMinEvent ) {
10211034 return ;
10221035 }
1023- if (collision. mcCollision (). ptHard () < pTHatMinEvent ) {
1036+ if (collisions. size () < 1 ) {
10241037 return ;
10251038 }
1026- registry.fill (HIST (" hZvtxSelected" ), collision.posZ ());
1027- fillRecoilJetMatchedHistograms (mcdjets, mcpjets, tracks, particles, 1.0 , 0.0 , collision.mcCollision ().ptHard ());
1039+ for (auto const & collision : collisions) {
1040+ if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits)) {
1041+ return ;
1042+ }
1043+ if (!jetderiveddatautilities::selectTrigger (collision, triggerMaskBits)) {
1044+ return ;
1045+ }
1046+ }
1047+ registry.fill (HIST (" hZvtxSelected" ), mccollision.posZ (), mccollision.weight ());
1048+ fillRecoilJetMatchedHistograms (mcdjets, mcpjets, tracks, particles, 1.0 , 0.0 , mccollision.ptHard ());
10281049 }
10291050 PROCESS_SWITCH (JetHadronRecoil, processRecoilJetsMCPMCDMatched, " process MC matched (recoil jets)" , false );
10301051
1031- void processRecoilJetsMCPMCDMatchedWeighted (soa::Filtered<soa::Join<aod::JetCollisionsMCD, aod::JMcCollisionLbs>>::iterator const & collision,
1052+ void processRecoilJetsMCPMCDMatchedWeighted (aod::JetMcCollisions::iterator const & mccollision,
1053+ soa::SmallGroups<aod::JetCollisionsMCD> const & collisions,
10321054 soa::Filtered<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets>> const & mcdjets,
10331055 soa::Filtered<aod::JetTracksMCD> const & tracks,
10341056 soa::Filtered<aod::JetParticles> const & particles,
1035- aod::JetMcCollisions const &,
10361057 soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>> const & mcpjets)
10371058 {
1038- if (! jetderiveddatautilities::selectCollision (collision, eventSelectionBits) ) {
1059+ if (std::abs (mccollision. posZ ()) > vertexZCut ) {
10391060 return ;
10401061 }
1041- if (! jetderiveddatautilities::selectTrigger (collision, triggerMaskBits) ) {
1062+ if (skipMBGapEvents && mccollision. subGeneratorId () == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap ) {
10421063 return ;
10431064 }
1044- if (!collision. has_mcCollision () ) {
1065+ if (mccollision. ptHard () < pTHatMinEvent ) {
10451066 return ;
10461067 }
1047- if (collision. mcCollision (). ptHard () < pTHatMinEvent ) {
1068+ if (collisions. size () < 1 ) {
10481069 return ;
10491070 }
1050- registry.fill (HIST (" hZvtxSelected" ), collision.posZ ());
1051- fillRecoilJetMatchedHistograms (mcdjets, mcpjets, tracks, particles, collision.mcCollision ().weight (), 0.0 , collision.mcCollision ().ptHard ());
1071+ for (auto const & collision : collisions) {
1072+ if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits)) {
1073+ return ;
1074+ }
1075+ if (!jetderiveddatautilities::selectTrigger (collision, triggerMaskBits)) {
1076+ return ;
1077+ }
1078+ }
1079+ registry.fill (HIST (" hZvtxSelected" ), mccollision.posZ (), mccollision.weight ());
1080+ fillRecoilJetMatchedHistograms (mcdjets, mcpjets, tracks, particles, mccollision.weight (), 0.0 , mccollision.ptHard ());
10521081 }
10531082 PROCESS_SWITCH (JetHadronRecoil, processRecoilJetsMCPMCDMatchedWeighted, " process MC matched with event weights (recoil jets)" , false );
10541083
1055- void processRecoilJetsMCPMCDMatchedWeightedWithRhoSubtraction (soa::Filtered<soa::Join<aod::JetCollisionsMCD, aod::JMcCollisionLbs, aod::BkgChargedRhos>>::iterator const & collision,
1084+ void processRecoilJetsMCPMCDMatchedWeightedWithRhoSubtraction (soa::Join<aod::JetMcCollisions, aod::BkgChargedRhos>::iterator const & mccollision,
1085+ soa::SmallGroups<aod::JetCollisionsMCD> const & collisions,
10561086 soa::Filtered<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets>> const & mcdjets,
10571087 soa::Filtered<aod::JetTracksMCD> const & tracks,
10581088 soa::Filtered<aod::JetParticles> const & particles,
1059- aod::JetMcCollisions const &,
10601089 soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>> const & mcpjets)
10611090 {
1062- if (! jetderiveddatautilities::selectCollision (collision, eventSelectionBits) ) {
1091+ if (std::abs (mccollision. posZ ()) > vertexZCut ) {
10631092 return ;
10641093 }
1065- if (! jetderiveddatautilities::selectTrigger (collision, triggerMaskBits) ) {
1094+ if (skipMBGapEvents && mccollision. subGeneratorId () == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap ) {
10661095 return ;
10671096 }
1068- if (!collision. has_mcCollision () ) {
1097+ if (mccollision. ptHard () < pTHatMinEvent ) {
10691098 return ;
10701099 }
1071- if (collision. mcCollision (). ptHard () < pTHatMinEvent ) {
1100+ if (collisions. size () < 1 ) {
10721101 return ;
10731102 }
1074- registry.fill (HIST (" hZvtxSelected" ), collision.posZ ());
1075- fillRecoilJetMatchedHistograms (mcdjets, mcpjets, tracks, particles, collision.mcCollision ().weight (), collision.rho (), collision.mcCollision ().ptHard ());
1103+ for (auto const & collision : collisions) {
1104+ if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits)) {
1105+ return ;
1106+ }
1107+ if (!jetderiveddatautilities::selectTrigger (collision, triggerMaskBits)) {
1108+ return ;
1109+ }
1110+ }
1111+ registry.fill (HIST (" hZvtxSelected" ), mccollision.posZ (), mccollision.weight ());
1112+ fillRecoilJetMatchedHistograms (mcdjets, mcpjets, tracks, particles, mccollision.weight (), mccollision.rho (), mccollision.ptHard ());
10761113 }
10771114 PROCESS_SWITCH (JetHadronRecoil, processRecoilJetsMCPMCDMatchedWeightedWithRhoSubtraction, " process MC matched with event weights (recoil jets) and rho subtraction" , false );
10781115
0 commit comments