@@ -197,6 +197,13 @@ struct PhotonHBT {
197197 Configurable<bool > enableOptimizations{" enableOptimizations" , false , " Enables the ONNX extended model-optimization: sessionOptions.SetGraphOptimizationLevel(GraphOptimizationLevel::ORT_ENABLE_EXTENDED)" };
198198 } dielectroncuts;
199199
200+ struct : ConfigurableGroup {
201+ std::string prefix = " ggpaircut_group" ;
202+ Configurable<bool > applydR{" applydR" , false , " apply deta-dphi cut to avoid track splitting/merging" };
203+ Configurable<float > cfgMinDeltaEta{" cfgMinDeltaEta" , 0 .f , " min. delta-eta between 2 photons" };
204+ Configurable<float > cfgMinDeltaPhi{" cfgMinDeltaPhi" , 0 .f , " min. delta-phi between 2 photons" };
205+ } ggpaircuts;
206+
200207 ~PhotonHBT ()
201208 {
202209 delete emh1;
@@ -306,13 +313,14 @@ struct PhotonHBT {
306313 const AxisSpec axis_kt{ConfKtBins, " k_{T} (GeV/c)" };
307314
308315 const AxisSpec axis_qinv{30 , 0.0 , +0.3 , " q_{inv} (GeV/c)" };
309- const AxisSpec axis_qabs_lcms{30 , 0.0 , +0.3 , " |q |^{LCMS} (GeV/c)" };
316+ const AxisSpec axis_qabs_lcms{30 , 0.0 , +0.3 , " |#bf{q} |^{LCMS} (GeV/c)" };
310317 const AxisSpec axis_qout{60 , -0.3 , +0.3 , " q_{out} (GeV/c)" }; // qout does not change between LAB and LCMS frame
311318 const AxisSpec axis_qside{60 , -0.3 , +0.3 , " q_{side} (GeV/c)" }; // qside does not change between LAB and LCMS frame
312319 const AxisSpec axis_qlong{60 , -0.3 , +0.3 , " q_{long} (GeV/c)" };
313320
314321 fRegistry .add (" Pair/same/hs_1d" , " diphoton correlation 1D" , kTHnSparseD , {axis_kt, axis_qinv, axis_qabs_lcms}, true );
315322 fRegistry .add (" Pair/same/hs_3d" , " diphoton correlation 3D LCMS" , kTHnSparseD , {axis_kt, axis_qout, axis_qside, axis_qlong}, true );
323+ fRegistry .add (" Pair/same/hDeltaEtaDeltaPhi" , " diphoton distance in #eta-#varphi plane;#Delta#varphi (rad);#Delta#eta" , kTH2D , {{200 , -0.1 , +0.1 }, {200 , -0.1 , 0.1 }}, false );
316324 fRegistry .addClone (" Pair/same/" , " Pair/mix/" );
317325 }
318326
@@ -497,6 +505,10 @@ struct PhotonHBT {
497505 // float qabs_lcms_tmp = q12_lcms.P();
498506 // LOGF(info, "qabs_lcms = %f, qabs_lcms_tmp = %f", qabs_lcms, qabs_lcms_tmp);
499507
508+ float deta = v1.Eta () - v2.Eta ();
509+ float dphi = v1.Phi () - v2.Phi ();
510+ o2::math_utils::bringToPMPi (dphi);
511+ fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" hDeltaEtaDeltaPhi" ), dphi, deta);
500512 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" hs_1d" ), kt, qinv, qabs_lcms);
501513 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" hs_3d" ), kt, qout_lcms, qside_lcms, qlong_lcms);
502514 }
@@ -576,6 +588,12 @@ struct PhotonHBT {
576588
577589 ROOT::Math::PtEtaPhiMVector v1 (g1.pt (), g1.eta (), g1.phi (), 0 .);
578590 ROOT::Math::PtEtaPhiMVector v2 (g2.pt (), g2.eta (), g2.phi (), 0 .);
591+ float deta = v1.Eta () - v2.Eta ();
592+ float dphi = v1.Phi () - v2.Phi ();
593+ o2::math_utils::bringToPMPi (dphi);
594+ if (ggpaircuts.applydR && std::pow (deta / ggpaircuts.cfgMinDeltaEta , 2 ) + std::pow (dphi / ggpaircuts.cfgMinDeltaPhi , 2 ) < 1 .f ) {
595+ continue ;
596+ }
579597 fillPairHistogram<0 >(collision, v1, v2);
580598 ndiphoton++;
581599
@@ -651,6 +669,12 @@ struct PhotonHBT {
651669
652670 std::pair pair_tmp = std::make_pair (std::make_pair (pos1.trackId (), ele1.trackId ()), std::make_pair (pos2.trackId (), ele2.trackId ()));
653671 if (std::find (used_pairs_per_collision.begin (), used_pairs_per_collision.end (), pair_tmp) == used_pairs_per_collision.end ()) {
672+ float deta = v1_ee.Eta () - v2_ee.Eta ();
673+ float dphi = v1_ee.Phi () - v2_ee.Phi ();
674+ o2::math_utils::bringToPMPi (dphi);
675+ if (ggpaircuts.applydR && std::pow (deta / ggpaircuts.cfgMinDeltaEta , 2 ) + std::pow (dphi / ggpaircuts.cfgMinDeltaPhi , 2 ) < 1 .f ) {
676+ continue ;
677+ }
654678 fillPairHistogram<0 >(collision, v1_ee, v2_ee);
655679 used_pairs_per_collision.emplace_back (std::make_pair (pair_tmp.first , pair_tmp.second ));
656680 used_pairs_per_collision.emplace_back (std::make_pair (pair_tmp.second , pair_tmp.first ));
@@ -716,6 +740,12 @@ struct PhotonHBT {
716740 ROOT::Math::PtEtaPhiMVector v_pos2 (pos2.pt (), pos2.eta (), pos2.phi (), o2::constants::physics::MassElectron);
717741 ROOT::Math::PtEtaPhiMVector v_ele2 (ele2.pt (), ele2.eta (), ele2.phi (), o2::constants::physics::MassElectron);
718742 ROOT::Math::PtEtaPhiMVector v2_ee = v_pos2 + v_ele2;
743+ float deta = v1_gamma.Eta () - v2_ee.Eta ();
744+ float dphi = v1_gamma.Phi () - v2_ee.Phi ();
745+ o2::math_utils::bringToPMPi (dphi);
746+ if (ggpaircuts.applydR && std::pow (deta / ggpaircuts.cfgMinDeltaEta , 2 ) + std::pow (dphi / ggpaircuts.cfgMinDeltaPhi , 2 ) < 1 .f ) {
747+ continue ;
748+ }
719749 fillPairHistogram<0 >(collision, v1_gamma, v2_ee);
720750 ndiphoton++;
721751 std::pair<int , int > pair_tmp_id1 = std::make_pair (ndf, g1.globalIndex ());
@@ -762,6 +792,12 @@ struct PhotonHBT {
762792 for (auto & g2 : photons1_from_event_pool) {
763793 ROOT::Math::PtEtaPhiMVector v1 (g1.pt (), g1.eta (), g1.phi (), 0 .);
764794 ROOT::Math::PtEtaPhiMVector v2 (g2.pt (), g2.eta (), g2.phi (), 0 .);
795+ float deta = v1.Eta () - v2.Eta ();
796+ float dphi = v1.Phi () - v2.Phi ();
797+ o2::math_utils::bringToPMPi (dphi);
798+ if (ggpaircuts.applydR && std::pow (deta / ggpaircuts.cfgMinDeltaEta , 2 ) + std::pow (dphi / ggpaircuts.cfgMinDeltaPhi , 2 ) < 1 .f ) {
799+ continue ;
800+ }
765801 fillPairHistogram<1 >(collision, v1, v2);
766802 }
767803 }
@@ -782,6 +818,12 @@ struct PhotonHBT {
782818 for (auto & g2 : photons1_from_event_pool) {
783819 ROOT::Math::PtEtaPhiMVector v1 (g1.pt (), g1.eta (), g1.phi (), g1.mass ());
784820 ROOT::Math::PtEtaPhiMVector v2 (g2.pt (), g2.eta (), g2.phi (), g2.mass ());
821+ float deta = v1.Eta () - v2.Eta ();
822+ float dphi = v1.Phi () - v2.Phi ();
823+ o2::math_utils::bringToPMPi (dphi);
824+ if (ggpaircuts.applydR && std::pow (deta / ggpaircuts.cfgMinDeltaEta , 2 ) + std::pow (dphi / ggpaircuts.cfgMinDeltaPhi , 2 ) < 1 .f ) {
825+ continue ;
826+ }
785827 fillPairHistogram<1 >(collision, v1, v2);
786828 }
787829 }
@@ -802,6 +844,12 @@ struct PhotonHBT {
802844 for (auto & g2 : photons2_from_event_pool) { // dielectron
803845 ROOT::Math::PtEtaPhiMVector v1 (g1.pt (), g1.eta (), g1.phi (), 0.0 ); // keep v1 for PCM
804846 ROOT::Math::PtEtaPhiMVector v2 (g2.pt (), g2.eta (), g2.phi (), g2.mass ());
847+ float deta = v1.Eta () - v2.Eta ();
848+ float dphi = v1.Phi () - v2.Phi ();
849+ o2::math_utils::bringToPMPi (dphi);
850+ if (ggpaircuts.applydR && std::pow (deta / ggpaircuts.cfgMinDeltaEta , 2 ) + std::pow (dphi / ggpaircuts.cfgMinDeltaPhi , 2 ) < 1 .f ) {
851+ continue ;
852+ }
805853 fillPairHistogram<1 >(collision, v1, v2);
806854 }
807855 }
@@ -822,6 +870,12 @@ struct PhotonHBT {
822870 for (auto & g2 : photons1_from_event_pool) { // PCM
823871 ROOT::Math::PtEtaPhiMVector v1 (g2.pt (), g2.eta (), g2.phi (), 0.0 ); // keep v1 for PCM
824872 ROOT::Math::PtEtaPhiMVector v2 (g1.pt (), g1.eta (), g1.phi (), g1.mass ());
873+ float deta = v1.Eta () - v2.Eta ();
874+ float dphi = v1.Phi () - v2.Phi ();
875+ o2::math_utils::bringToPMPi (dphi);
876+ if (ggpaircuts.applydR && std::pow (deta / ggpaircuts.cfgMinDeltaEta , 2 ) + std::pow (dphi / ggpaircuts.cfgMinDeltaPhi , 2 ) < 1 .f ) {
877+ continue ;
878+ }
825879 fillPairHistogram<1 >(collision, v1, v2);
826880 }
827881 }
0 commit comments