@@ -126,6 +126,9 @@ struct RecoilJets {
126126 Configurable<float > recoilRegion{" recoilRegion" , 0.6 ,
127127 " Width of recoil acceptance" };
128128
129+ Configurable<float > maxJetConstituentPt{" maxJetConstituentPt" , 100 .,
130+ " Remove jets with constituent above this pt cut" };
131+
129132 // List of configurable parameters for histograms
130133 Configurable<uint16_t > histJetPt{" histJetPt" , 100 ,
131134 " Maximum value of jet pT shown in histograms" };
@@ -416,9 +419,9 @@ struct RecoilJets {
416419 spectra.add (" hScaleMultFT0C" , " Scaled mult. signal from FTOC" , kTH1F ,
417420 {{200 , 0.0 , 20 .}});
418421 spectra.add (" hScaleMultFT0M" , " Scaled total mult. signal from FT0A & FTOC" , kTH1F ,
419- {{200 , 0.0 , 20 .}});
422+ {{2000 , 0.0 , 20 .}});
420423 spectra.add (" hScaleMultFT0M_v2" , " Scaled total mult. signal from FT0A & FTOC" , kTH1F ,
421- {{200 , 0.0 , 20 .}});
424+ {{2000 , 0.0 , 20 .}});
422425
423426 spectra.add (" hMultZNA" , " Mult. signal from ZDC A-side" , kTH1F ,
424427 {{500 , 0.0 , 10000 .}});
@@ -505,6 +508,10 @@ struct RecoilJets {
505508 }
506509
507510 for (const auto & jet : jets) {
511+ // skip jets which have a constituent with pT above specified cut
512+ if (isJetWithHighPtConstituent (jet, tracks))
513+ continue ;
514+
508515 spectra.fill (HIST (" hJetPtEtaPhiRhoArea" ), jet.pt (), jet.eta (), jet.phi (),
509516 collision.rho (), jet.area (), weight);
510517
@@ -674,13 +681,13 @@ struct RecoilJets {
674681 for (const auto & jetBase : jetsBase) {
675682 bool bIsBaseJetRecoil =
676683 get<1 >(isRecoilJet (jetBase, phiTTSig)) && bIsThereTTSig;
677- dataForUnfolding (jetBase, jetsTag, bIsBaseJetRecoil, weight);
684+ dataForUnfolding (jetBase, jetsTag, bIsBaseJetRecoil, tracks, weight);
678685 }
679686 }
680687
681688 template <typename Collision>
682689 void fillMultiplicityHistograms (Collision const & collision,
683- float weight = 1.0 )
690+ float weight = 1 .)
684691 {
685692
686693 spectra.fill (HIST (" hMultFT0A" ), collision.multFT0A (), weight);
@@ -830,12 +837,11 @@ struct RecoilJets {
830837 PROCESS_SWITCH (RecoilJets, processJetsMatched,
831838 " process matching of MC jets (no weight)" , false );
832839
833- void
834- processJetsMatchedWeighted (FilteredCollDetLevelGetWeight const & collision,
835- aod::JetMcCollisions const &,
836- FilteredTracks const & tracks,
837- FilteredMatchedJetsDetLevel const & mcdjets,
838- FilteredMatchedJetsPartLevel const & mcpjets)
840+ void processJetsMatchedWeighted (FilteredCollDetLevelGetWeight const & collision,
841+ aod::JetMcCollisions const &,
842+ FilteredTracks const & tracks,
843+ FilteredMatchedJetsDetLevel const & mcdjets,
844+ FilteredMatchedJetsPartLevel const & mcpjets)
839845 {
840846 if (skipEvent (collision) || skipMBGapEvent (collision))
841847 return ;
@@ -903,9 +909,22 @@ struct RecoilJets {
903909 return 10 . / (std::pow (weight, 1.0 / pTHatExponent));
904910 }
905911
906- template <typename PartJet, typename DetJet>
912+ template <typename Jet, typename Tracks>
913+ bool isJetWithHighPtConstituent (Jet const & jet, Tracks const &)
914+ {
915+ bool bIsJetWithHighPtConstituent = false ;
916+ for (const auto & jetConstituent : jet.template tracks_as <Tracks>()) {
917+ if (jetConstituent.pt () > maxJetConstituentPt) {
918+ bIsJetWithHighPtConstituent = true ;
919+ break ;
920+ }
921+ }
922+ return bIsJetWithHighPtConstituent;
923+ }
924+
925+ template <typename PartJet, typename DetJet, typename TracksTable>
907926 void dataForUnfolding (PartJet const & partJet, DetJet const & detJets,
908- bool bIsBaseJetRecoil, float weight = 1.0 )
927+ bool bIsBaseJetRecoil, TracksTable const & tracks, float weight = 1 .)
909928 {
910929
911930 bool bIsThereMatchedJet = partJet.has_matchedJetGeo ();
@@ -915,24 +934,35 @@ struct RecoilJets {
915934 partJet.template matchedJetGeo_as <std::decay_t <DetJet>>();
916935
917936 for (const auto & jetMatched : jetsMatched) {
918- spectra.fill (HIST (" hNumberMatchedJetsPerOneBaseJet" ),
919- jetsMatched.size (), jetMatched.pt (), weight);
920- spectra.fill (HIST (" hJetPt_DetLevel_vs_PartLevel" ), jetMatched.pt (),
921- partJet.pt (), weight);
922- spectra.fill (HIST (" hJetPt_resolution" ),
923- (partJet.pt () - jetMatched.pt ()) / partJet.pt (),
924- partJet.pt (), weight);
925- spectra.fill (HIST (" hJetPhi_resolution" ),
926- partJet.phi () - jetMatched.phi (), partJet.pt (), weight);
927-
928- if (bIsBaseJetRecoil) {
929- spectra.fill (HIST (" hJetPt_DetLevel_vs_PartLevel_RecoilJets" ),
930- jetMatched.pt (), partJet.pt (), weight);
931- spectra.fill (HIST (" hJetPt_resolution_RecoilJets" ),
937+
938+ // skip matches where detector level jets have a constituent with pT above specified cut
939+ bool skipMatchedDetJet = isJetWithHighPtConstituent (jetMatched, tracks);
940+
941+ if (skipMatchedDetJet) {
942+ // Miss jets
943+ spectra.fill (HIST (" hMissedJets_pT" ), partJet.pt (), weight);
944+ if (bIsBaseJetRecoil)
945+ spectra.fill (HIST (" hMissedJets_pT_RecoilJets" ), partJet.pt (), weight);
946+ } else {
947+ spectra.fill (HIST (" hNumberMatchedJetsPerOneBaseJet" ),
948+ jetsMatched.size (), jetMatched.pt (), weight);
949+ spectra.fill (HIST (" hJetPt_DetLevel_vs_PartLevel" ), jetMatched.pt (),
950+ partJet.pt (), weight);
951+ spectra.fill (HIST (" hJetPt_resolution" ),
932952 (partJet.pt () - jetMatched.pt ()) / partJet.pt (),
933953 partJet.pt (), weight);
934- spectra.fill (HIST (" hJetPhi_resolution_RecoilJets " ),
954+ spectra.fill (HIST (" hJetPhi_resolution " ),
935955 partJet.phi () - jetMatched.phi (), partJet.pt (), weight);
956+
957+ if (bIsBaseJetRecoil) {
958+ spectra.fill (HIST (" hJetPt_DetLevel_vs_PartLevel_RecoilJets" ),
959+ jetMatched.pt (), partJet.pt (), weight);
960+ spectra.fill (HIST (" hJetPt_resolution_RecoilJets" ),
961+ (partJet.pt () - jetMatched.pt ()) / partJet.pt (),
962+ partJet.pt (), weight);
963+ spectra.fill (HIST (" hJetPhi_resolution_RecoilJets" ),
964+ partJet.phi () - jetMatched.phi (), partJet.pt (), weight);
965+ }
936966 }
937967 }
938968 } else {
@@ -944,6 +974,9 @@ struct RecoilJets {
944974
945975 // Fake jets
946976 for (const auto & detJet : detJets) {
977+ if (isJetWithHighPtConstituent (detJet, tracks))
978+ continue ;
979+
947980 bIsThereMatchedJet = detJet.has_matchedJetGeo ();
948981 if (!bIsThereMatchedJet) {
949982 spectra.fill (HIST (" hFakeJets_pT" ), detJet.pt (), weight);
0 commit comments