@@ -103,6 +103,7 @@ struct Dilepton {
103103 Configurable<int > cfgEP2Estimator_for_Mix{" cfgEP2Estimator_for_Mix" , 3 , " FT0M:0, FT0A:1, FT0C:2, BTot:3, BPos:4, BNeg:5" };
104104 Configurable<int > cfgQvecEstimator{" cfgQvecEstimator" , 0 , " FT0M:0, FT0A:1, FT0C:2, BTot:3, BPos:4, BNeg:5" };
105105 Configurable<int > cfgCentEstimator{" cfgCentEstimator" , 2 , " FT0M:0, FT0A:1, FT0C:2" };
106+ Configurable<int > cfgOccupancyEstimator{" cfgOccupancyEstimator" , 0 , " FT0C:0, Track:1" };
106107 Configurable<float > cfgCentMin{" cfgCentMin" , 0 , " min. centrality" };
107108 Configurable<float > cfgCentMax{" cfgCentMax" , 999 .f , " max. centrality" };
108109 Configurable<bool > cfgDoMix{" cfgDoMix" , true , " flag for event mixing" };
@@ -168,6 +169,7 @@ struct Dilepton {
168169 Configurable<float > cfg_min_dphi{" cfg_min_dphi" , 0.2 , " min dphi between 2 electrons (elliptic cut)" };
169170 Configurable<float > cfg_min_opang{" cfg_min_opang" , 0.0 , " min opening angle" };
170171 Configurable<float > cfg_max_opang{" cfg_max_opang" , 6.4 , " max opening angle" };
172+ Configurable<bool > cfg_require_diff_sides{" cfg_require_diff_sides" , false , " flag to require 2 tracks are from different sides." };
171173
172174 Configurable<float > cfg_min_pt_track{" cfg_min_pt_track" , 0.2 , " min pT for single track" };
173175 Configurable<float > cfg_min_eta_track{" cfg_min_eta_track" , -0.8 , " min eta for single track" };
@@ -342,6 +344,7 @@ struct Dilepton {
342344 }
343345 }
344346
347+ LOGF (info, " cfgOccupancyEstimator = %d" , cfgOccupancyEstimator.value );
345348 if (ConfOccupancyBins.value [0 ] == VARIABLE_WIDTH) {
346349 occ_bin_edges = std::vector<float >(ConfOccupancyBins.value .begin (), ConfOccupancyBins.value .end ());
347350 occ_bin_edges.erase (occ_bin_edges.begin ());
@@ -628,6 +631,7 @@ struct Dilepton {
628631 fDielectronCut .ApplyPrefilter (dielectroncuts.cfg_apply_pf );
629632 fDielectronCut .SetMindEtadPhi (dielectroncuts.cfg_apply_detadphi , dielectroncuts.cfg_min_deta , dielectroncuts.cfg_min_dphi );
630633 fDielectronCut .SetPairOpAng (dielectroncuts.cfg_min_opang , dielectroncuts.cfg_max_opang );
634+ fDielectronCut .SetRequireDifferentSides (dielectroncuts.cfg_require_diff_sides );
631635
632636 // for track
633637 fDielectronCut .SetTrackPtRange (dielectroncuts.cfg_min_pt_track , 1e+10f );
@@ -836,8 +840,8 @@ struct Dilepton {
836840
837841 if (cfgAnalysisType == static_cast <int >(o2::aod::pwgem::dilepton::utils::pairutil::DileptonAnalysisType::kQC )) {
838842 float dpt = fabs (v1.Pt () - v2.Pt ());
839- float deta = v1.Pt () > v2.Pt () ? v1.Eta () - v2.Eta () : v2.Eta () - v1.Eta ();
840- float dphi = v1.Pt () > v2.Pt () ? v1.Phi () - v2.Phi () : v2.Phi () - v1.Phi ();
843+ float deta = t1. sign () * v1.Pt () > t2. sign () * v2.Pt () ? v1.Eta () - v2.Eta () : v2.Eta () - v1.Eta ();
844+ float dphi = t1. sign () * v1.Pt () > t2. sign () * v2.Pt () ? v1.Phi () - v2.Phi () : v2.Phi () - v1.Phi ();
841845 o2::math_utils::bringToPMPi (dphi);
842846 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);
843847 float opAng = o2::aod::pwgem::dilepton::utils::pairutil::getOpeningAngle (t1.px (), t1.py (), t1.pz (), t2.px (), t2.py (), t2.pz ());
@@ -1198,7 +1202,15 @@ struct Dilepton {
11981202 epbin = static_cast <int >(ep_bin_edges.size ()) - 2 ;
11991203 }
12001204
1201- int occbin = lower_bound (occ_bin_edges.begin (), occ_bin_edges.end (), collision.trackOccupancyInTimeRange ()) - occ_bin_edges.begin () - 1 ;
1205+ int occbin = -1 ;
1206+ if (cfgOccupancyEstimator == 0 ) {
1207+ occbin = lower_bound (occ_bin_edges.begin (), occ_bin_edges.end (), collision.ft0cOccupancyInTimeRange ()) - occ_bin_edges.begin () - 1 ;
1208+ } else if (cfgOccupancyEstimator == 1 ) {
1209+ occbin = lower_bound (occ_bin_edges.begin (), occ_bin_edges.end (), collision.trackOccupancyInTimeRange ()) - occ_bin_edges.begin () - 1 ;
1210+ } else {
1211+ occbin = lower_bound (occ_bin_edges.begin (), occ_bin_edges.end (), collision.ft0cOccupancyInTimeRange ()) - occ_bin_edges.begin () - 1 ;
1212+ }
1213+
12021214 if (occbin < 0 ) {
12031215 occbin = 0 ;
12041216 } else if (static_cast <int >(occ_bin_edges.size ()) - 2 < occbin) {
0 commit comments