@@ -103,6 +103,7 @@ struct Dilepton {
103
103
Configurable<int > cfgEP2Estimator_for_Mix{" cfgEP2Estimator_for_Mix" , 3 , " FT0M:0, FT0A:1, FT0C:2, BTot:3, BPos:4, BNeg:5" };
104
104
Configurable<int > cfgQvecEstimator{" cfgQvecEstimator" , 0 , " FT0M:0, FT0A:1, FT0C:2, BTot:3, BPos:4, BNeg:5" };
105
105
Configurable<int > cfgCentEstimator{" cfgCentEstimator" , 2 , " FT0M:0, FT0A:1, FT0C:2" };
106
+ Configurable<int > cfgOccupancyEstimator{" cfgOccupancyEstimator" , 0 , " FT0C:0, Track:1" };
106
107
Configurable<float > cfgCentMin{" cfgCentMin" , 0 , " min. centrality" };
107
108
Configurable<float > cfgCentMax{" cfgCentMax" , 999 .f , " max. centrality" };
108
109
Configurable<bool > cfgDoMix{" cfgDoMix" , true , " flag for event mixing" };
@@ -168,6 +169,7 @@ struct Dilepton {
168
169
Configurable<float > cfg_min_dphi{" cfg_min_dphi" , 0.2 , " min dphi between 2 electrons (elliptic cut)" };
169
170
Configurable<float > cfg_min_opang{" cfg_min_opang" , 0.0 , " min opening angle" };
170
171
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." };
171
173
172
174
Configurable<float > cfg_min_pt_track{" cfg_min_pt_track" , 0.2 , " min pT for single track" };
173
175
Configurable<float > cfg_min_eta_track{" cfg_min_eta_track" , -0.8 , " min eta for single track" };
@@ -342,6 +344,7 @@ struct Dilepton {
342
344
}
343
345
}
344
346
347
+ LOGF (info, " cfgOccupancyEstimator = %d" , cfgOccupancyEstimator.value );
345
348
if (ConfOccupancyBins.value [0 ] == VARIABLE_WIDTH) {
346
349
occ_bin_edges = std::vector<float >(ConfOccupancyBins.value .begin (), ConfOccupancyBins.value .end ());
347
350
occ_bin_edges.erase (occ_bin_edges.begin ());
@@ -628,6 +631,7 @@ struct Dilepton {
628
631
fDielectronCut .ApplyPrefilter (dielectroncuts.cfg_apply_pf );
629
632
fDielectronCut .SetMindEtadPhi (dielectroncuts.cfg_apply_detadphi , dielectroncuts.cfg_min_deta , dielectroncuts.cfg_min_dphi );
630
633
fDielectronCut .SetPairOpAng (dielectroncuts.cfg_min_opang , dielectroncuts.cfg_max_opang );
634
+ fDielectronCut .SetRequireDifferentSides (dielectroncuts.cfg_require_diff_sides );
631
635
632
636
// for track
633
637
fDielectronCut .SetTrackPtRange (dielectroncuts.cfg_min_pt_track , 1e+10f );
@@ -836,8 +840,8 @@ struct Dilepton {
836
840
837
841
if (cfgAnalysisType == static_cast <int >(o2::aod::pwgem::dilepton::utils::pairutil::DileptonAnalysisType::kQC )) {
838
842
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 ();
841
845
o2::math_utils::bringToPMPi (dphi);
842
846
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);
843
847
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 {
1198
1202
epbin = static_cast <int >(ep_bin_edges.size ()) - 2 ;
1199
1203
}
1200
1204
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
+
1202
1214
if (occbin < 0 ) {
1203
1215
occbin = 0 ;
1204
1216
} else if (static_cast <int >(occ_bin_edges.size ()) - 2 < occbin) {
0 commit comments