Skip to content

Commit f309a19

Browse files
authored
[PWGJE] Change to loop over mccollisions for response filling (#13837)
1 parent 869e635 commit f309a19

File tree

1 file changed

+98
-61
lines changed

1 file changed

+98
-61
lines changed

PWGJE/Tasks/jetHadronRecoil.cxx

Lines changed: 98 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)