@@ -181,7 +181,7 @@ struct Dilepton {
181181 Configurable<bool > cfg_require_diff_sides{" cfg_require_diff_sides" , false , " flag to require 2 tracks are from different sides." };
182182
183183 Configurable<bool > cfg_apply_cuts_from_prefilter{" cfg_apply_cuts_from_prefilter" , false , " flag to apply phiv cut inherited from prefilter" };
184- Configurable<uint16_t > cfg_prefilter_bits{" cfg_prefilter_bits" , 0 , " prefilter bits [kNone : 0, kMee : 1, kPhiV : 2, kSplitOrMergedTrack : 4] Please consider logical-OR among them." }; // see PairUtilities.h
184+ Configurable<uint16_t > cfg_prefilter_bits{" cfg_prefilter_bits" , 0 , " prefilter bits [kNone : 0, kMee : 1, kPhiV : 2, kSplitOrMergedTrackLS : 4, kSplitOrMergedTrackULS : 8 ] Please consider logical-OR among them." }; // see PairUtilities.h
185185
186186 Configurable<float > cfg_min_pt_track{" cfg_min_pt_track" , 0.2 , " min pT for single track" };
187187 Configurable<float > cfg_max_pt_track{" cfg_max_pt_track" , 1e+10 , " max pT for single track" };
@@ -534,8 +534,7 @@ struct Dilepton {
534534 fRegistry .add (" Pair/same/uls/hsDeltaP" , " difference of p between 2 tracks;|p_{T,1} - p_{T,2}|/|p_{T,1} + p_{T,2}|;#Delta#eta;#Delta#varphi (rad.);" , kTHnSparseD , {{20 , 0 , 1 }, {100 , -1 , +1 }, {180 , -M_PI, M_PI}}, true );
535535 fRegistry .add (" Pair/same/uls/hGeomDeltaZRDeltaPhi" , Form (" difference in z-r#varphi plane between 2 tracks at r = %2.1f cm;r#Delta#varphi (cm);#Deltaz (cm);" , dielectroncuts.cfg_x_to_go .value ), kTH2D , {{200 , -100 , 100 }, {80 , -20 , 20 }}, true );
536536 if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron ) {
537- 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 , 1 .0f }}, true ); // phiv is only for dielectron
538- fRegistry .add (" Pair/same/uls/hMvsPhiV_prop" , Form (" m_{ee} vs. #varphi_{V} at r = %2.1f cm;#varphi_{V} (rad.);m_{ee} (GeV/c^{2})" , dielectroncuts.cfg_x_to_go .value ), kTH2D , {{90 , 0 , M_PI}, {100 , 0 .0f , 1 .0f }}, true ); // phiv is only for dielectron
537+ 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 , 1 .0f }}, true ); // phiv is only for dielectron
539538 fRegistry .add (" Pair/same/uls/hMvsOpAng" , " m_{ee} vs. angle between 2 tracks;#omega (rad.);m_{ee} (GeV/c^{2})" , kTH2D , {{100 , 0 , 2.0 }, {20 , 0 .0f , 3.2 }}, true );
540539 fRegistry .add (" Pair/same/uls/hDCA1vsDCA2" , " DCA of leg1 vs. DCA of leg2;DCA1(#sigma);DCA2 (#sigma)" , kTH2D , {{100 , 0 , 10.0 }, {100 , 0 , 10 }}, true );
541540 }
@@ -778,9 +777,6 @@ struct Dilepton {
778777
779778 std::map<std::tuple<int , int , int >, float > map_z_prop; // map <dfId, collisionId, trackId> -> geometrical z position at propagated point
780779 std::map<std::tuple<int , int , int >, float > map_phi_prop; // map <dfId, collisionId, trackId> -> geometrical phi position at propagated point
781- std::map<std::tuple<int , int , int >, float > map_px_prop; // map <dfId, collisionId, trackId> -> px at propagated point
782- std::map<std::tuple<int , int , int >, float > map_py_prop; // map <dfId, collisionId, trackId> -> py at propagated point
783- std::map<std::tuple<int , int , int >, float > map_pz_prop; // map <dfId, collisionId, trackId> -> pz at propagated point
784780
785781 template <typename TTracks>
786782 void propagateElectron (TTracks const & tracks)
@@ -796,17 +792,8 @@ struct Dilepton {
796792 o2::math_utils::bringTo02Pi (phi);
797793 map_z_prop[std::make_tuple (ndf, track.emeventId (), track.globalIndex ())] = xyz.Z ();
798794 map_phi_prop[std::make_tuple (ndf, track.emeventId (), track.globalIndex ())] = phi;
799-
800- std::array<float , 3 > pxpypz_prop = {0 , 0 , 0 }; // px, py, pz
801- getPxPyPz (track_par_cov, pxpypz_prop);
802- map_px_prop[std::make_tuple (ndf, track.emeventId (), track.globalIndex ())] = pxpypz_prop[0 ];
803- map_py_prop[std::make_tuple (ndf, track.emeventId (), track.globalIndex ())] = pxpypz_prop[1 ];
804- map_pz_prop[std::make_tuple (ndf, track.emeventId (), track.globalIndex ())] = pxpypz_prop[2 ];
805-
806- // float r = sqrt(pow(xyz.X(),2) + pow(xyz.Y(), 2));
807- // float theta = 2.f * std::atan(std::exp(-eta));
808- // float z = r/std::tan(theta);
809- // LOGF(info, "r = %f, z = %f , xyz.Z() = %f", r, z, xyz.Z());
795+ // std::array<float, 3> pxpypz_prop = {0, 0, 0}; // px, py, pz
796+ // getPxPyPz(track_par_cov, pxpypz_prop);
810797 }
811798 }
812799
@@ -856,52 +843,20 @@ struct Dilepton {
856843 }
857844
858845 float dphi_geom = 999 .f , dz_geom = 999 .f , rdphi_geom = 999 .f ;
859- float phiv_prop = 999 .f , mee_prop = 999 .f ;
860846 if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron ) {
861847 if (!cut.template IsSelectedPair (t1, t2, d_bz)) {
862848 return false ;
863849 }
864-
865- // if (!cut.template IsSelectedPair_PrefilterULS(t1, t2, d_bz) || !cut.template IsSelectedPair_PrefilterLS(t1, t2, d_bz)) {
866- // return false;
867- // }
868-
869850 if constexpr (ev_id == 0 ) {
870851 dz_geom = t1.sign () * t1.pt () > t2.sign () * t2.pt () ? map_z_prop[std::make_tuple (ndf, t1.emeventId (), t1.globalIndex ())] - map_z_prop[std::make_tuple (ndf, t2.emeventId (), t2.globalIndex ())] : map_z_prop[std::make_tuple (ndf, t2.emeventId (), t2.globalIndex ())] - map_z_prop[std::make_tuple (ndf, t1.emeventId (), t1.globalIndex ())];
871852 dphi_geom = t1.sign () * t1.pt () > t2.sign () * t2.pt () ? map_phi_prop[std::make_tuple (ndf, t1.emeventId (), t1.globalIndex ())] - map_phi_prop[std::make_tuple (ndf, t2.emeventId (), t2.globalIndex ())] : map_phi_prop[std::make_tuple (ndf, t2.emeventId (), t2.globalIndex ())] - map_phi_prop[std::make_tuple (ndf, t1.emeventId (), t1.globalIndex ())];
872853 o2::math_utils::bringToPMPi (dphi_geom);
873854 rdphi_geom = dielectroncuts.cfg_x_to_go * dphi_geom;
874-
875- float px1 = map_px_prop[std::make_tuple (ndf, t1.emeventId (), t1.globalIndex ())];
876- float py1 = map_py_prop[std::make_tuple (ndf, t1.emeventId (), t1.globalIndex ())];
877- float pz1 = map_pz_prop[std::make_tuple (ndf, t1.emeventId (), t1.globalIndex ())];
878- float px2 = map_px_prop[std::make_tuple (ndf, t2.emeventId (), t2.globalIndex ())];
879- float py2 = map_py_prop[std::make_tuple (ndf, t2.emeventId (), t2.globalIndex ())];
880- float pz2 = map_pz_prop[std::make_tuple (ndf, t2.emeventId (), t2.globalIndex ())];
881-
882- ROOT::Math::PxPyPzMVector v1prop (px1, py1, pz1, leptonM1);
883- ROOT::Math::PxPyPzMVector v2prop (px2, py2, pz2, leptonM2);
884- ROOT::Math::PxPyPzMVector v12prop = v1prop + v2prop;
885- mee_prop = v12prop.M ();
886- phiv_prop = o2::aod::pwgem::dilepton::utils::pairutil::getPhivPair (px1, py1, pz1, px2, py2, pz2, t1.sign (), t2.sign (), d_bz);
887855 } else { // mixed event
888856 dz_geom = t1.sign () * t1.pt () > t2.sign () * t2.pt () ? map_z_prop[std::make_tuple (t1.dfId (), t1.collisionId (), t1.globalIndex ())] - map_z_prop[std::make_tuple (t2.dfId (), t2.collisionId (), t2.globalIndex ())] : map_z_prop[std::make_tuple (t2.dfId (), t2.collisionId (), t2.globalIndex ())] - map_z_prop[std::make_tuple (t1.dfId (), t1.collisionId (), t1.globalIndex ())];
889857 dphi_geom = t1.sign () * t1.pt () > t2.sign () * t2.pt () ? map_phi_prop[std::make_tuple (t1.dfId (), t1.collisionId (), t1.globalIndex ())] - map_phi_prop[std::make_tuple (t2.dfId (), t2.collisionId (), t2.globalIndex ())] : map_phi_prop[std::make_tuple (t2.dfId (), t2.collisionId (), t2.globalIndex ())] - map_phi_prop[std::make_tuple (t1.dfId (), t1.collisionId (), t1.globalIndex ())];
890858 o2::math_utils::bringToPMPi (dphi_geom);
891859 rdphi_geom = dielectroncuts.cfg_x_to_go * dphi_geom;
892-
893- float px1 = map_px_prop[std::make_tuple (t1.dfId (), t1.collisionId (), t1.globalIndex ())];
894- float py1 = map_py_prop[std::make_tuple (t1.dfId (), t1.collisionId (), t1.globalIndex ())];
895- float pz1 = map_pz_prop[std::make_tuple (t1.dfId (), t1.collisionId (), t1.globalIndex ())];
896- float px2 = map_px_prop[std::make_tuple (t2.dfId (), t2.collisionId (), t2.globalIndex ())];
897- float py2 = map_py_prop[std::make_tuple (t2.dfId (), t2.collisionId (), t2.globalIndex ())];
898- float pz2 = map_pz_prop[std::make_tuple (t2.dfId (), t2.collisionId (), t2.globalIndex ())];
899-
900- ROOT::Math::PxPyPzMVector v1prop (px1, py1, pz1, leptonM1);
901- ROOT::Math::PxPyPzMVector v2prop (px2, py2, pz2, leptonM2);
902- ROOT::Math::PxPyPzMVector v12prop = v1prop + v2prop;
903- mee_prop = v12prop.M ();
904- phiv_prop = o2::aod::pwgem::dilepton::utils::pairutil::getPhivPair (px1, py1, pz1, px2, py2, pz2, t1.sign (), t2.sign (), d_bz);
905860 }
906861 if (dielectroncuts.cfg_x_to_go > 0 .f && dielectroncuts.cfg_apply_dzrdphi_geom && std::pow (dz_geom / dielectroncuts.cfg_min_dz_geom , 2 ) + std::pow (rdphi_geom / dielectroncuts.cfg_min_rdphi_geom , 2 ) < 1 .f ) {
907862 return false ;
@@ -969,7 +924,6 @@ struct Dilepton {
969924 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" uls/hGeomDeltaZRDeltaPhi" ), rdphi_geom, dz_geom, weight);
970925 if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron ) {
971926 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" uls/hMvsPhiV" ), phiv, v12.M (), weight);
972- fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" uls/hMvsPhiV_prop" ), phiv_prop, mee_prop, weight);
973927 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" uls/hMvsOpAng" ), opAng, v12.M (), weight);
974928 }
975929 } else if (t1.sign () > 0 && t2.sign () > 0 ) { // LS++
@@ -978,7 +932,6 @@ struct Dilepton {
978932 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lspp/hGeomDeltaZRDeltaPhi" ), rdphi_geom, dz_geom, weight);
979933 if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron ) {
980934 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lspp/hMvsPhiV" ), phiv, v12.M (), weight);
981- fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lspp/hMvsPhiV_prop" ), phiv_prop, mee_prop, weight);
982935 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lspp/hMvsOpAng" ), opAng, v12.M (), weight);
983936 }
984937 } else if (t1.sign () < 0 && t2.sign () < 0 ) { // LS--
@@ -987,7 +940,6 @@ struct Dilepton {
987940 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lsmm/hGeomDeltaZRDeltaPhi" ), rdphi_geom, dz_geom, weight);
988941 if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron ) {
989942 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lsmm/hMvsPhiV" ), phiv, v12.M (), weight);
990- fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lsmm/hMvsPhiV_prop" ), phiv_prop, mee_prop, weight);
991943 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lsmm/hMvsOpAng" ), opAng, v12.M (), weight);
992944 }
993945 }
@@ -1186,7 +1138,8 @@ struct Dilepton {
11861138 Filter prefilter_electron = ifnode(dielectroncuts.cfg_apply_cuts_from_prefilter.node() && dielectroncuts.cfg_prefilter_bits.node() >= static_cast <uint16_t >(1 ),
11871139 ifnode ((dielectroncuts.cfg_prefilter_bits.node() & static_cast<uint16_t>(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kMee ))) > static_cast<uint16_t>(0 ), (o2::aod::emprimaryelectron::pfbpi0 & static_cast <uint16_t >(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kMee ))) <= static_cast<uint16_t>(0 ), true) &&
11881140 ifnode((dielectroncuts.cfg_prefilter_bits.node() & static_cast<uint16_t>(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kPhiV ))) > static_cast<uint16_t>(0 ), (o2::aod::emprimaryelectron::pfbpi0 & static_cast <uint16_t >(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kPhiV ))) <= static_cast<uint16_t>(0 ), true) &&
1189- ifnode((dielectroncuts.cfg_prefilter_bits.node() & static_cast<uint16_t>(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kSplitOrMergedTrack ))) > static_cast<uint16_t>(0 ), (o2::aod::emprimaryelectron::pfbpi0 & static_cast <uint16_t >(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kSplitOrMergedTrack ))) <= static_cast<uint16_t>(0 ), true),
1141+ ifnode((dielectroncuts.cfg_prefilter_bits.node() & static_cast<uint16_t>(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kSplitOrMergedTrackLS ))) > static_cast<uint16_t>(0 ), (o2::aod::emprimaryelectron::pfbpi0 & static_cast <uint16_t >(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kSplitOrMergedTrackLS ))) <= static_cast<uint16_t>(0 ), true) &&
1142+ ifnode((dielectroncuts.cfg_prefilter_bits.node() & static_cast<uint16_t>(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kSplitOrMergedTrackULS ))) > static_cast<uint16_t>(0 ), (o2::aod::emprimaryelectron::pfbpi0 & static_cast <uint16_t >(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kSplitOrMergedTrackULS ))) <= static_cast<uint16_t>(0 ), true),
11901143 o2::aod::emprimaryelectron::pfbpi0 >= static_cast<uint16_t>(0 ));
11911144
11921145 Partition<FilteredMyElectrons> positive_electrons = o2::aod::emprimaryelectron::sign > int8_t (0 );
@@ -1438,9 +1391,6 @@ struct Dilepton {
14381391 if (!cut.template IsSelectedPair (t1, t2, d_bz)) {
14391392 return false ;
14401393 }
1441- // if (!cut.template IsSelectedPair_PrefilterULS(t1, t2, d_bz) || !cut.template IsSelectedPair_PrefilterLS(t1, t2, d_bz)) {
1442- // return false;
1443- // }
14441394 float dz_geom = t1.sign () * t1.pt () > t2.sign () * t2.pt () ? map_z_prop[std::make_tuple (ndf, t1.emeventId (), t1.globalIndex ())] - map_z_prop[std::make_tuple (ndf, t2.emeventId (), t2.globalIndex ())] : map_z_prop[std::make_tuple (ndf, t2.emeventId (), t2.globalIndex ())] - map_z_prop[std::make_tuple (ndf, t1.emeventId (), t1.globalIndex ())];
14451395 float dphi_geom = t1.sign () * t1.pt () > t2.sign () * t2.pt () ? map_phi_prop[std::make_tuple (ndf, t1.emeventId (), t1.globalIndex ())] - map_phi_prop[std::make_tuple (ndf, t2.emeventId (), t2.globalIndex ())] : map_phi_prop[std::make_tuple (ndf, t2.emeventId (), t2.globalIndex ())] - map_phi_prop[std::make_tuple (ndf, t1.emeventId (), t1.globalIndex ())];
14461396 o2::math_utils::bringToPMPi (dphi_geom);
0 commit comments