@@ -138,8 +138,10 @@ struct Dilepton {
138138 Configurable<bool > cfgRequireNoSameBunchPileup{" cfgRequireNoSameBunchPileup" , false , " require no same bunch pileup in event cut" };
139139 Configurable<bool > cfgRequireVertexITSTPC{" cfgRequireVertexITSTPC" , false , " require Vertex ITSTPC in event cut" }; // ITS-TPC matched track contributes PV.
140140 Configurable<bool > cfgRequireGoodZvtxFT0vsPV{" cfgRequireGoodZvtxFT0vsPV" , false , " require good Zvtx between FT0 vs. PV in event cut" };
141- Configurable<int > cfgOccupancyMin{" cfgOccupancyMin" , -1 , " min. occupancy" };
142- Configurable<int > cfgOccupancyMax{" cfgOccupancyMax" , 1000000000 , " max. occupancy" };
141+ Configurable<int > cfgTrackOccupancyMin{" cfgTrackOccupancyMin" , -1 , " min. occupancy" };
142+ Configurable<int > cfgTrackOccupancyMax{" cfgTrackOccupancyMax" , 1000000000 , " max. occupancy" };
143+ Configurable<float > cfgFT0COccupancyMin{" cfgFT0COccupancyMin" , -1 , " min. FT0C occupancy" };
144+ Configurable<float > cfgFT0COccupancyMax{" cfgFT0COccupancyMax" , 1000000000 , " max. FT0C occupancy" };
143145 Configurable<bool > cfgRequireNoCollInTimeRangeStandard{" cfgRequireNoCollInTimeRangeStandard" , false , " require no collision in time range standard" };
144146 } eventcuts;
145147
@@ -498,9 +500,10 @@ struct Dilepton {
498500
499501 if (cfgAnalysisType == static_cast <int >(o2::aod::pwgem::dilepton::utils::pairutil::DileptonAnalysisType::kQC )) {
500502 fRegistry .add (" Pair/same/uls/hs" , " dilepton" , kTHnSparseD , {axis_mass, axis_pt, axis_dca}, true );
501- fRegistry .add (" Pair/same/uls/hDeltaEtaDeltaPhi" , " distance between 2 tracks in #eta-#varphi plane;#Delta#varphi (rad.);#Delta#eta" , kTH2D , {{200 , -0.5 , +0.5 }, {200 , -0.5 , 0.5 }}, true );
503+ fRegistry .add (" Pair/same/uls/hsDeltaP" , " difference of p between 2 tracks;#Deltap_{T} = |p_{T,1} - p_{T,2}| (GeV/c);#Delta#eta;#Delta#varphi (rad.);" , kTHnSparseD , {{100 , 0 , 1 }, {100 , -0.5 , +0.5 }, {100 , -0.5 , 0.5 }}, true );
504+
502505 if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron ) {
503- fRegistry .add (" Pair/same/uls/hMvsPhiV" , " m_{ee} vs. #varphi_{V};#varphi_{V} (rad.);m_{ee} (GeV/c^{2})" , kTH2D , {{90 , 0 , M_PI}, {100 , 0 .0f , 0 .1f }}, true ); // phiv is only for dielectron
506+ fRegistry .add (" Pair/same/uls/hMvsPhiV" , " m_{ee} vs. #varphi_{V};#varphi_{V} (rad.);m_{ee} (GeV/c^{2})" , kTH2D , {{90 , 0 , M_PI}, {200 , 0 .0f , 0 .2f }}, true ); // phiv is only for dielectron
504507 fRegistry .add (" Pair/same/uls/hMvsOpAng" , " m_{ee} vs. angle between 2 tracks;#omega (rad.);m_{ee} (GeV/c^{2})" , kTH2D , {{200 , 0 , 4.0 }, {100 , 0 .0f , 3.2 }}, true );
505508 }
506509 fRegistry .addClone (" Pair/same/uls/" , " Pair/same/lspp/" );
@@ -525,7 +528,6 @@ struct Dilepton {
525528 const AxisSpec axis_sp{ConfSPBins, Form (" #vec{u}_{%d,ll} #upoint #vec{Q}_{%d}^{%s}" , nmod, nmod, qvec_det_names[cfgQvecEstimator].data ())};
526529
527530 fRegistry .add (" Pair/same/uls/hs" , " dilepton" , kTHnSparseD , {axis_mass, axis_pt, axis_dca, axis_sp}, true );
528- // fRegistry.add("Pair/same/uls/hPrfUQ", Form("dilepton <#vec{u}_{%d,ll} #upoint #vec{Q}_{%d}^{%s}>", nmod, nmod, qvec_det_names[cfgQvecEstimator].data()), kTProfile3D, {axis_mass, axis_pt, axis_dca}, true);
529531 fRegistry .addClone (" Pair/same/uls/" , " Pair/same/lspp/" );
530532 fRegistry .addClone (" Pair/same/uls/" , " Pair/same/lsmm/" );
531533
@@ -598,7 +600,6 @@ struct Dilepton {
598600 fEMEventCut .SetRequireNoSameBunchPileup (eventcuts.cfgRequireNoSameBunchPileup );
599601 fEMEventCut .SetRequireVertexITSTPC (eventcuts.cfgRequireVertexITSTPC );
600602 fEMEventCut .SetRequireGoodZvtxFT0vsPV (eventcuts.cfgRequireGoodZvtxFT0vsPV );
601- fEMEventCut .SetOccupancyRange (eventcuts.cfgOccupancyMin , eventcuts.cfgOccupancyMax );
602603 fEMEventCut .SetRequireNoCollInTimeRangeStandard (eventcuts.cfgRequireNoCollInTimeRangeStandard );
603604 }
604605
@@ -813,29 +814,30 @@ struct Dilepton {
813814 }
814815
815816 if (cfgAnalysisType == static_cast <int >(o2::aod::pwgem::dilepton::utils::pairutil::DileptonAnalysisType::kQC )) {
816- float deta = v1.Eta () - v2.Eta ();
817- float dphi = v1.Phi () - v2.Phi ();
817+ float dpt = fabs (v1.Pt () - v2.Pt ());
818+ float deta = v1.Pt () > v2.Pt () ? v1.Eta () - v2.Eta () : v2.Eta () - v1.Eta ();
819+ float dphi = v1.Pt () > v2.Pt () ? v1.Phi () - v2.Phi () : v2.Phi () - v1.Phi ();
818820 o2::math_utils::bringToPMPi (dphi);
819821 float phiv = o2::aod::pwgem::dilepton::utils::pairutil::getPhivPair (t1.px (), t1.py (), t1.pz (), t2.px (), t2.py (), t2.pz (), t1.sign (), t2.sign (), d_bz);
820822 float opAng = o2::aod::pwgem::dilepton::utils::pairutil::getOpeningAngle (t1.px (), t1.py (), t1.pz (), t2.px (), t2.py (), t2.pz ());
821823
822824 if (t1.sign () * t2.sign () < 0 ) { // ULS
823825 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" uls/hs" ), v12.M (), v12.Pt (), pair_dca, weight);
824- fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" uls/hDeltaEtaDeltaPhi " ), dphi , deta, weight);
826+ fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" uls/hsDeltaP " ), dpt , deta, dphi , weight);
825827 if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron ) {
826828 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" uls/hMvsPhiV" ), phiv, v12.M (), weight);
827829 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" uls/hMvsOpAng" ), opAng, v12.M (), weight);
828830 }
829831 } else if (t1.sign () > 0 && t2.sign () > 0 ) { // LS++
830832 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lspp/hs" ), v12.M (), v12.Pt (), pair_dca, weight);
831- fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lspp/hDeltaEtaDeltaPhi " ), dphi , deta, weight);
833+ fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lspp/hsDeltaP " ), dpt , deta, dphi , weight);
832834 if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron ) {
833835 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lspp/hMvsPhiV" ), phiv, v12.M (), weight);
834836 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lspp/hMvsOpAng" ), opAng, v12.M (), weight);
835837 }
836838 } else if (t1.sign () < 0 && t2.sign () < 0 ) { // LS--
837839 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lsmm/hs" ), v12.M (), v12.Pt (), pair_dca, weight);
838- fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lsmm/hDeltaEtaDeltaPhi " ), dphi , deta, weight);
840+ fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lsmm/hsDeltaP " ), dpt , deta, dphi , weight);
839841 if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron ) {
840842 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lsmm/hMvsPhiV" ), phiv, v12.M (), weight);
841843 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lsmm/hMvsOpAng" ), opAng, v12.M (), weight);
@@ -1028,7 +1030,8 @@ struct Dilepton {
10281030
10291031 Filter collisionFilter_centrality = (cfgCentMin < o2::aod::cent::centFT0M && o2::aod::cent::centFT0M < cfgCentMax) || (cfgCentMin < o2::aod::cent::centFT0A && o2::aod::cent::centFT0A < cfgCentMax) || (cfgCentMin < o2::aod::cent::centFT0C && o2::aod::cent::centFT0C < cfgCentMax);
10301032 Filter collisionFilter_multiplicity = cfgNtracksPV08Min <= o2::aod::mult::multNTracksPV && o2::aod::mult::multNTracksPV < cfgNtracksPV08Max;
1031- Filter collisionFilter_occupancy = eventcuts.cfgOccupancyMin <= o2::aod::evsel::trackOccupancyInTimeRange && o2::aod::evsel::trackOccupancyInTimeRange < eventcuts.cfgOccupancyMax;
1033+ Filter collisionFilter_occupancy_track = eventcuts.cfgTrackOccupancyMin <= o2::aod::evsel::trackOccupancyInTimeRange && o2::aod::evsel::trackOccupancyInTimeRange < eventcuts.cfgTrackOccupancyMax;
1034+ Filter collisionFilter_occupancy_ft0c = eventcuts.cfgFT0COccupancyMin < o2::aod::evsel::ft0cOccupancyInTimeRange && o2::aod::evsel::ft0cOccupancyInTimeRange < eventcuts.cfgFT0COccupancyMax;
10321035 using FilteredMyCollisions = soa::Filtered<MyCollisions>;
10331036
10341037 SliceCache cache;
0 commit comments