@@ -164,7 +164,6 @@ struct Dilepton {
164164 Configurable<float > cfg_max_pair_y{" cfg_max_pair_y" , +0.8 , " max pair rapidity" };
165165 Configurable<float > cfg_min_pair_dca3d{" cfg_min_pair_dca3d" , 0.0 , " min pair dca3d in sigma" };
166166 Configurable<float > cfg_max_pair_dca3d{" cfg_max_pair_dca3d" , 1e+10 , " max pair dca3d in sigma" };
167- Configurable<bool > cfg_apply_pf{" cfg_apply_pf" , false , " flag to apply phiv prefilter" };
168167 Configurable<bool > cfg_apply_phiv{" cfg_apply_phiv" , true , " flag to apply phiv cut" };
169168 Configurable<float > cfg_phiv_slope{" cfg_phiv_slope" , 0.0185 , " slope for m vs. phiv" };
170169 Configurable<float > cfg_phiv_intercept{" cfg_phiv_intercept" , -0.0280 , " intercept for m vs. phiv" };
@@ -177,8 +176,11 @@ struct Dilepton {
177176 Configurable<float > cfg_max_opang{" cfg_max_opang" , 6.4 , " max opening angle" };
178177 Configurable<bool > cfg_require_diff_sides{" cfg_require_diff_sides" , false , " flag to require 2 tracks are from different sides." };
179178
180- Configurable<bool > cfg_apply_cuts_from_prefilter{" cfg_apply_cuts_from_prefilter" , false , " flag to apply phiv cut inherited from prefilter" };
181- 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
179+ Configurable<bool > cfg_apply_cuts_from_prefilter{" cfg_apply_cuts_from_prefilter" , false , " flag to apply prefilter set when producing derived data" };
180+ Configurable<uint8_t > cfg_prefilter_bits{" cfg_prefilter_bits" , 0 , " prefilter bits [kNone : 0, kElFromPC : 1, kElFromPi0_1 : 2, kElFromPi0_2 : 4, kElFromPi0_3 : 8] Please consider logical-OR among them." }; // see PairUtilities.h
181+
182+ Configurable<bool > cfg_apply_cuts_from_prefilter_derived{" cfg_apply_cuts_from_prefilter_derived" , false , " flag to apply pair cut same as prefilter set in derived data" };
183+ Configurable<uint16_t > cfg_prefilter_bits_derived{" cfg_prefilter_bits_derived" , 0 , " prefilter bits [kNone : 0, kMee : 1, kPhiV : 2, kSplitOrMergedTrackLS : 4, kSplitOrMergedTrackULS : 8] Please consider logical-OR among them." }; // see PairUtilities.h
182184
183185 Configurable<float > cfg_min_pt_track{" cfg_min_pt_track" , 0.2 , " min pT for single track" };
184186 Configurable<float > cfg_max_pt_track{" cfg_max_pt_track" , 1e+10 , " max pT for single track" };
@@ -646,7 +648,7 @@ struct Dilepton {
646648 fDielectronCut .SetPairDCARange (dielectroncuts.cfg_min_pair_dca3d , dielectroncuts.cfg_max_pair_dca3d ); // in sigma
647649 fDielectronCut .SetMaxMeePhiVDep ([&](float phiv) { return dielectroncuts.cfg_phiv_intercept + phiv * dielectroncuts.cfg_phiv_slope ; }, dielectroncuts.cfg_min_phiv , dielectroncuts.cfg_max_phiv );
648650 fDielectronCut .ApplyPhiV (dielectroncuts.cfg_apply_phiv );
649- fDielectronCut .ApplyPrefilter (dielectroncuts.cfg_apply_pf );
651+ // fDielectronCut.ApplyPrefilter(dielectroncuts.cfg_apply_pf);
650652 fDielectronCut .SetMindEtadPhi (dielectroncuts.cfg_apply_detadphi , dielectroncuts.cfg_min_deta , dielectroncuts.cfg_min_dphi );
651653 fDielectronCut .SetPairOpAng (dielectroncuts.cfg_min_opang , dielectroncuts.cfg_max_opang );
652654 fDielectronCut .SetRequireDifferentSides (dielectroncuts.cfg_require_diff_sides );
@@ -1090,12 +1092,19 @@ struct Dilepton {
10901092 Filter trackFilter_electron = dielectroncuts.cfg_min_pt_track < o2::aod::track::pt && dielectroncuts.cfg_min_eta_track < o2::aod::track::eta && o2::aod::track::eta < dielectroncuts.cfg_max_eta_track && dielectroncuts.cfg_min_phi_track < o2::aod::track::phi && o2::aod::track::phi < dielectroncuts.cfg_max_phi_track && o2::aod::track::tpcChi2NCl < dielectroncuts.cfg_max_chi2tpc && o2::aod::track::itsChi2NCl < dielectroncuts.cfg_max_chi2its && nabs(o2::aod::track::dcaXY) < dielectroncuts.cfg_max_dcaxy && nabs(o2::aod::track::dcaZ) < dielectroncuts.cfg_max_dcaz;
10911093 Filter pidFilter_electron = (dielectroncuts.cfg_min_TPCNsigmaEl < o2::aod::pidtpc::tpcNSigmaEl && o2::aod::pidtpc::tpcNSigmaEl < dielectroncuts.cfg_max_TPCNsigmaEl) && (o2::aod::pidtpc::tpcNSigmaPi < dielectroncuts.cfg_min_TPCNsigmaPi || dielectroncuts.cfg_max_TPCNsigmaPi < o2::aod::pidtpc::tpcNSigmaPi);
10921094 Filter ttcaFilter_electron = ifnode(dielectroncuts.enableTTCA.node(), o2::aod::emprimaryelectron::isAssociatedToMPC == true || o2::aod::emprimaryelectron::isAssociatedToMPC == false , o2::aod::emprimaryelectron::isAssociatedToMPC == true );
1093- Filter prefilter_electron = ifnode(dielectroncuts.cfg_apply_cuts_from_prefilter.node() && dielectroncuts.cfg_prefilter_bits.node() >= static_cast <uint16_t >(1 ),
1094- 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) &&
1095- 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) &&
1096- 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) &&
1097- 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),
1098- o2::aod::emprimaryelectron::pfbpi0 >= static_cast<uint16_t>(0 ));
1095+ Filter prefilter_derived_electron = ifnode(dielectroncuts.cfg_apply_cuts_from_prefilter_derived.node() && dielectroncuts.cfg_prefilter_bits_derived.node() >= static_cast <uint16_t >(1 ),
1096+ ifnode ((dielectroncuts.cfg_prefilter_bits_derived.node() & static_cast<uint16_t>(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBitDerived::kMee ))) > static_cast<uint16_t>(0 ), (o2::aod::emprimaryelectron::pfbpi0 & static_cast <uint16_t >(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBitDerived::kMee ))) <= static_cast<uint16_t>(0 ), true) &&
1097+ ifnode((dielectroncuts.cfg_prefilter_bits_derived.node() & static_cast<uint16_t>(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBitDerived::kPhiV ))) > static_cast<uint16_t>(0 ), (o2::aod::emprimaryelectron::pfbpi0 & static_cast <uint16_t >(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBitDerived::kPhiV ))) <= static_cast<uint16_t>(0 ), true) &&
1098+ ifnode((dielectroncuts.cfg_prefilter_bits_derived.node() & static_cast<uint16_t>(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBitDerived::kSplitOrMergedTrackLS ))) > static_cast<uint16_t>(0 ), (o2::aod::emprimaryelectron::pfbpi0 & static_cast <uint16_t >(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBitDerived::kSplitOrMergedTrackLS ))) <= static_cast<uint16_t>(0 ), true) &&
1099+ ifnode((dielectroncuts.cfg_prefilter_bits_derived.node() & static_cast<uint16_t>(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBitDerived::kSplitOrMergedTrackULS ))) > static_cast<uint16_t>(0 ), (o2::aod::emprimaryelectron::pfbpi0 & static_cast <uint16_t >(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBitDerived::kSplitOrMergedTrackULS ))) <= static_cast<uint16_t>(0 ), true),
1100+ o2::aod::emprimaryelectron::pfbpi0 >= static_cast<uint16_t>(0 ));
1101+
1102+ Filter prefilter_electron = ifnode(dielectroncuts.cfg_apply_cuts_from_prefilter.node() && dielectroncuts.cfg_prefilter_bits.node() >= static_cast <uint8_t >(1 ),
1103+ ifnode ((dielectroncuts.cfg_prefilter_bits.node() & static_cast<uint8_t>(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kElFromPC ))) > static_cast<uint8_t>(0 ), (o2::aod::emprimaryelectron::pfb & static_cast <uint8_t >(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kElFromPC ))) <= static_cast<uint8_t>(0 ), true) &&
1104+ ifnode((dielectroncuts.cfg_prefilter_bits.node() & static_cast<uint8_t>(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kElFromPi0_1 ))) > static_cast<uint8_t>(0 ), (o2::aod::emprimaryelectron::pfb & static_cast <uint8_t >(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kElFromPi0_1 ))) <= static_cast<uint8_t>(0 ), true) &&
1105+ ifnode((dielectroncuts.cfg_prefilter_bits.node() & static_cast<uint8_t>(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kElFromPi0_2 ))) > static_cast<uint8_t>(0 ), (o2::aod::emprimaryelectron::pfb & static_cast <uint8_t >(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kElFromPi0_2 ))) <= static_cast<uint8_t>(0 ), true) &&
1106+ ifnode((dielectroncuts.cfg_prefilter_bits.node() & static_cast<uint8_t>(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kElFromPi0_3 ))) > static_cast<uint8_t>(0 ), (o2::aod::emprimaryelectron::pfb & static_cast <uint8_t >(1 << int (o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBit::kElFromPi0_3 ))) <= static_cast<uint8_t>(0 ), true),
1107+ o2::aod::emprimaryelectron::pfb >= static_cast<uint8_t>(0 ));
10991108
11001109 Partition<FilteredMyElectrons> positive_electrons = o2::aod::emprimaryelectron::sign > int8_t (0 );
11011110 Partition<FilteredMyElectrons> negative_electrons = o2::aod::emprimaryelectron::sign < int8_t (0 );
0 commit comments