diff --git a/PWGEM/Dilepton/Core/SingleTrackQC.h b/PWGEM/Dilepton/Core/SingleTrackQC.h index 6348dadd57d..c6f34ad38d6 100644 --- a/PWGEM/Dilepton/Core/SingleTrackQC.h +++ b/PWGEM/Dilepton/Core/SingleTrackQC.h @@ -309,7 +309,7 @@ struct SingleTrackQC { // fRegistry.add("Track/positive/hTOFNsigmaKa", "TOF n sigma ka;p_{pv} (GeV/c);n #sigma_{K}^{TOF}", o2::framework::HistType::kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false); // fRegistry.add("Track/positive/hTOFNsigmaPr", "TOF n sigma pr;p_{pv} (GeV/c);n #sigma_{p}^{TOF}", o2::framework::HistType::kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false); - fRegistry.add("Track/positive/hPIDForTracking", "PID for trackng", o2::framework::HistType::kTH1F, {{9, -0.5, 8.5}}, false); // see numbering in O2/DataFormats/Reconstruction/include/ReconstructionDataFormats/PID.h + fRegistry.add("Track/positive/hPIDForTracking", "PID for tracking", o2::framework::HistType::kTH1F, {{9, -0.5, 8.5}}, false); // see numbering in O2/DataFormats/Reconstruction/include/ReconstructionDataFormats/PID.h fRegistry.add("Track/positive/hProbElBDT", "probability to be e from BDT;p_{in} (GeV/c);BDT score;", o2::framework::HistType::kTH2F, {{1000, 0, 10}, {100, 0, 1}}, false); fRegistry.add("Track/positive/hMeanClusterSizeITS", "mean cluster size ITS;p_{pv} (GeV/c); on ITS #times cos(#lambda);", o2::framework::HistType::kTH2F, {{1000, 0.f, 10.f}, {150, 0, 15}}, false); fRegistry.add("Track/positive/hMeanClusterSizeITSib", "mean cluster size ITS inner barrel;p_{pv} (GeV/c); on ITS #times cos(#lambda);", o2::framework::HistType::kTH2F, {{1000, 0.f, 10.f}, {150, 0, 15}}, false); diff --git a/PWGEM/Dilepton/Core/SingleTrackQCMC.h b/PWGEM/Dilepton/Core/SingleTrackQCMC.h index 2fa7b26029d..e6701d41e67 100644 --- a/PWGEM/Dilepton/Core/SingleTrackQCMC.h +++ b/PWGEM/Dilepton/Core/SingleTrackQCMC.h @@ -319,7 +319,7 @@ struct SingleTrackQCMC { fRegistry.add("Track/PromptLF/positive/hDeltaPin", "p_{in} vs. p_{pv};p_{in} (GeV/c);(p_{pv} - p_{in})/p_{in}", o2::framework::HistType::kTH2F, {{1000, 0, 10}, {200, -1, +1}}, false); fRegistry.add("Track/PromptLF/positive/hChi2TOF", "TOF Chi2;p_{pv} (GeV/c);TOF #chi^{2}", o2::framework::HistType::kTH2F, {{1000, 0, 10}, {100, 0, 10}}, false); fRegistry.add("Track/PromptLF/positive/hITSClusterMap", "ITS cluster map", o2::framework::HistType::kTH1F, {{128, -0.5, 127.5}}, false); - fRegistry.add("Track/PromptLF/positive/hPIDForTracking", "PID for trackng", o2::framework::HistType::kTH1F, {{9, -0.5, 8.5}}, false); // see numbering in O2/DataFormats/Reconstruction/include/ReconstructionDataFormats/PID.h + fRegistry.add("Track/PromptLF/positive/hPIDForTracking", "PID for tracking", o2::framework::HistType::kTH1F, {{9, -0.5, 8.5}}, false); // see numbering in O2/DataFormats/Reconstruction/include/ReconstructionDataFormats/PID.h fRegistry.add("Track/PromptLF/positive/hPtGen_DeltaPtOverPtGen", "electron p_{T} resolution;p_{T}^{gen} (GeV/c);(p_{T}^{rec} - p_{T}^{gen})/p_{T}^{gen}", o2::framework::HistType::kTH2F, {{200, 0, 10}, {200, -1.0f, 1.0f}}, true); fRegistry.add("Track/PromptLF/positive/hPtGen_DeltaEta", "electron #eta resolution;p_{T}^{gen} (GeV/c);#eta^{rec} - #eta^{gen}", o2::framework::HistType::kTH2F, {{200, 0, 10}, {100, -0.05f, 0.05f}}, true); fRegistry.add("Track/PromptLF/positive/hPtGen_DeltaPhi", "electron #varphi resolution;p_{T}^{gen} (GeV/c);#varphi^{rec} - #varphi^{gen} (rad.)", o2::framework::HistType::kTH2F, {{200, 0, 10}, {100, -0.05f, 0.05f}}, true); diff --git a/PWGEM/Dilepton/TableProducer/skimmerPrimaryElectronSV.cxx b/PWGEM/Dilepton/TableProducer/skimmerPrimaryElectronSV.cxx index c1285af6166..29e2c715ac1 100644 --- a/PWGEM/Dilepton/TableProducer/skimmerPrimaryElectronSV.cxx +++ b/PWGEM/Dilepton/TableProducer/skimmerPrimaryElectronSV.cxx @@ -39,8 +39,6 @@ #include #include -// #include // IWYU pragma: keep (do not replace with Math/Vector4Dfwd.h) - #include #include #include @@ -53,7 +51,7 @@ struct skimmerPrimaryElectronSV { using MyCollisions = o2::soa::Join; using MyCollisionsWithSWT = o2::soa::Join; - using MyTracks = o2::soa::Join; using MyTrack = MyTracks::iterator; @@ -79,7 +77,7 @@ struct skimmerPrimaryElectronSV { o2::framework::Service mTOFResponse; o2::framework::SliceCache cache; - o2::framework::Preslice perCol_track = o2::aod::track::collisionId; + o2::framework::Preslice perCol_track = o2::aod::track::collisionId; o2::framework::Preslice trackIndicesPerCollision = o2::aod::track_association::collisionId; // o2::framework::Preslice perCol_v0 = o2::aod::v0data::collisionId; // o2::framework::Preslice perCol_casc = o2::aod::cascdata::collisionId; diff --git a/PWGEM/Dilepton/Tasks/createTTP.cxx b/PWGEM/Dilepton/Tasks/createTTP.cxx index 868ab4197d2..c3a20eed2bb 100644 --- a/PWGEM/Dilepton/Tasks/createTTP.cxx +++ b/PWGEM/Dilepton/Tasks/createTTP.cxx @@ -85,7 +85,7 @@ struct createTTP { ConfigurableAxis ConfPtBins{"ConfPtBins", {VARIABLE_WIDTH, 0.00, 0.10, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0, 5.5, 6.0, 7.5, 7.0, 7.5, 8.0, 9.0, 10.0, 15, 20}, "pT bins for output histograms"}; Configurable cfgNbinsEta{"cfgNbinsEta", 20, "number of eta bins for output histograms"}; Configurable cfgNbinsPhi{"cfgNbinsPhi", 36, "number of phi bins for output histograms"}; - ConfigurableAxis ConfDCABins{"ConfDCABins", {200, -1000, +1000}, "DCA bins for output histograms"}; + ConfigurableAxis ConfDCABins{"ConfDCABins", {2000, -1000, +1000}, "DCA bins for output histograms"}; ConfigurableAxis ConfDCASigmaBins{"ConfDCASigmaBins", {200, -10, +10}, "DCA in sigma bins for output histograms"}; o2::framework::ConfigurableAxis ConfMllBins{"ConfMllBins", {400, 0, 4}, "mll bins for output histograms"}; diff --git a/PWGEM/Dilepton/Tasks/taggingHFE.cxx b/PWGEM/Dilepton/Tasks/taggingHFE.cxx index ed7f717c397..085d61d4e7e 100644 --- a/PWGEM/Dilepton/Tasks/taggingHFE.cxx +++ b/PWGEM/Dilepton/Tasks/taggingHFE.cxx @@ -1730,7 +1730,7 @@ struct taggingHFE { continue; } - auto eKpair = o2::aod::pwgem::dilepton::utils::makePairLeptonTrack(fitter_eK, collision, pos, kaon, o2::track::PID::Electron, kaon.pidForTracking()); + auto eKpair = o2::aod::pwgem::dilepton::utils::makePairLeptonTrack(fitter_eK, collision, pos, kaon, o2::track::PID::Electron, kaon.pidForTracking(), o2::constants::physics::MassElectron); if (!eKpair.isOK) { continue; } @@ -1790,7 +1790,7 @@ struct taggingHFE { continue; } - auto eKpair = o2::aod::pwgem::dilepton::utils::makePairLeptonTrack(fitter_eK, collision, pos, kaon, o2::track::PID::Electron, kaon.pidForTracking()); + auto eKpair = o2::aod::pwgem::dilepton::utils::makePairLeptonTrack(fitter_eK, collision, pos, kaon, o2::track::PID::Electron, kaon.pidForTracking(), o2::constants::physics::MassElectron); if (!eKpair.isOK) { continue; } @@ -1857,7 +1857,7 @@ struct taggingHFE { o2::dataformats::DCA impactParameterV0; o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackV0, 2.f, matCorr, &impactParameterV0); // trackV0 is TrackParCov object - auto eV0pair = o2::aod::pwgem::dilepton::utils::makePairLeptonV0(fitter_eV0, collision, pos, v0, o2::track::PID::Electron, o2::track::PID::K0); + auto eV0pair = o2::aod::pwgem::dilepton::utils::makePairLeptonV0(fitter_eV0, collision, pos, v0, o2::track::PID::Electron, o2::track::PID::K0, o2::constants::physics::MassElectron); if (!eV0pair.isOK) { continue; @@ -1934,7 +1934,7 @@ struct taggingHFE { o2::dataformats::DCA impactParameterV0; o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackV0, 2.f, matCorr, &impactParameterV0); // trackV0 is TrackParCov object - auto eV0pair = o2::aod::pwgem::dilepton::utils::makePairLeptonV0(fitter_eV0, collision, pos, v0, o2::track::PID::Electron, o2::track::PID::Lambda); + auto eV0pair = o2::aod::pwgem::dilepton::utils::makePairLeptonV0(fitter_eV0, collision, pos, v0, o2::track::PID::Electron, o2::track::PID::Lambda, o2::constants::physics::MassElectron); if (!eV0pair.isOK) { continue; @@ -1994,7 +1994,7 @@ struct taggingHFE { o2::dataformats::DCA impactParameterCasc; o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackCasc, 2.f, matCorr, &impactParameterCasc); // trackCasc is TrackParCov object - auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(fitter_eCascade, collision, pos, cascade, o2::track::PID::Electron, o2::track::PID::XiMinus); + auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(fitter_eCascade, collision, pos, cascade, o2::track::PID::Electron, o2::track::PID::XiMinus, o2::constants::physics::MassElectron); if (!eCpair.isOK) { continue; @@ -2060,7 +2060,7 @@ struct taggingHFE { o2::dataformats::DCA impactParameterCasc; o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackCasc, 2.f, matCorr, &impactParameterCasc); // trackCasc is TrackParCov object - auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(fitter_eCascade, collision, pos, cascade, o2::track::PID::Electron, o2::track::PID::OmegaMinus); + auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(fitter_eCascade, collision, pos, cascade, o2::track::PID::Electron, o2::track::PID::OmegaMinus, o2::constants::physics::MassElectron); if (!eCpair.isOK) { continue; @@ -2154,7 +2154,7 @@ struct taggingHFE { continue; } - auto eKpair = o2::aod::pwgem::dilepton::utils::makePairLeptonTrack(fitter_eK, collision, ele, kaon, o2::track::PID::Electron, kaon.pidForTracking()); + auto eKpair = o2::aod::pwgem::dilepton::utils::makePairLeptonTrack(fitter_eK, collision, ele, kaon, o2::track::PID::Electron, kaon.pidForTracking(), o2::constants::physics::MassElectron); if (!eKpair.isOK) { continue; } @@ -2215,7 +2215,7 @@ struct taggingHFE { continue; } - auto eKpair = o2::aod::pwgem::dilepton::utils::makePairLeptonTrack(fitter_eK, collision, ele, kaon, o2::track::PID::Electron, kaon.pidForTracking()); + auto eKpair = o2::aod::pwgem::dilepton::utils::makePairLeptonTrack(fitter_eK, collision, ele, kaon, o2::track::PID::Electron, kaon.pidForTracking(), o2::constants::physics::MassElectron); if (!eKpair.isOK) { continue; } @@ -2282,7 +2282,7 @@ struct taggingHFE { o2::dataformats::DCA impactParameterV0; o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackV0, 2.f, matCorr, &impactParameterV0); // trackV0 is TrackParCov object - auto eV0pair = o2::aod::pwgem::dilepton::utils::makePairLeptonV0(fitter_eV0, collision, ele, v0, o2::track::PID::Electron, o2::track::PID::K0); + auto eV0pair = o2::aod::pwgem::dilepton::utils::makePairLeptonV0(fitter_eV0, collision, ele, v0, o2::track::PID::Electron, o2::track::PID::K0, o2::constants::physics::MassElectron); if (!eV0pair.isOK) { continue; @@ -2358,7 +2358,7 @@ struct taggingHFE { o2::dataformats::DCA impactParameterV0; o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackV0, 2.f, matCorr, &impactParameterV0); // trackV0 is TrackParCov object - auto eV0pair = o2::aod::pwgem::dilepton::utils::makePairLeptonV0(fitter_eV0, collision, ele, v0, o2::track::PID::Electron, o2::track::PID::Lambda); + auto eV0pair = o2::aod::pwgem::dilepton::utils::makePairLeptonV0(fitter_eV0, collision, ele, v0, o2::track::PID::Electron, o2::track::PID::Lambda, o2::constants::physics::MassElectron); if (!eV0pair.isOK) { continue; @@ -2418,7 +2418,7 @@ struct taggingHFE { o2::dataformats::DCA impactParameterCasc; o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackCasc, 2.f, matCorr, &impactParameterCasc); // trackCasc is TrackParCov object - auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(fitter_eCascade, collision, ele, cascade, o2::track::PID::Electron, o2::track::PID::XiMinus); + auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(fitter_eCascade, collision, ele, cascade, o2::track::PID::Electron, o2::track::PID::XiMinus, o2::constants::physics::MassElectron); if (!eCpair.isOK) { continue; @@ -2484,7 +2484,7 @@ struct taggingHFE { o2::dataformats::DCA impactParameterCasc; o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackCasc, 2.f, matCorr, &impactParameterCasc); // trackCasc is TrackParCov object - auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(fitter_eCascade, collision, ele, cascade, o2::track::PID::Electron, o2::track::PID::OmegaMinus); + auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(fitter_eCascade, collision, ele, cascade, o2::track::PID::Electron, o2::track::PID::OmegaMinus, o2::constants::physics::MassElectron); if (!eCpair.isOK) { continue; diff --git a/PWGEM/Dilepton/Utils/ElectronModule.h b/PWGEM/Dilepton/Utils/ElectronModule.h index 08693a93b80..fddcd6fe56c 100644 --- a/PWGEM/Dilepton/Utils/ElectronModule.h +++ b/PWGEM/Dilepton/Utils/ElectronModule.h @@ -118,6 +118,7 @@ struct electronCut : o2::framework::ConfigurableGroup { o2::framework::Configurable minNelectron{"minNelectron", 0, "min number of electron candidates per collision"}; o2::framework::Configurable includeITSsa{"includeITSsa", false, "Flag to include ITSsa tracks only for MC. switch ON only if needed."}; o2::framework::Configurable useTOFNSigmaDeltaBC{"useTOFNSigmaDeltaBC", false, "Flag to shift delta BC for TOF n sigma (only with TTCA)"}; + o2::framework::Configurable useElectronHypothesis{"useElectronHypothesis", true, "force to use trackParCov.setPID(o2::track::PID::Electron)"}; o2::framework::Configurable dcaType{"dcaType", 0, "type of DCA cut. 0:3D, 1:XY, 2:Z, else:3D"}; o2::framework::Configurable max_dca_in_sigma{"max_dca_in_sigma", 1e+10, "max dca in sigma for a single track"}; @@ -696,7 +697,7 @@ class ElectronModule o2::dataformats::DCA mDcaInfoCov; mDcaInfoCov.set(999, 999, 999, 999, 999); auto trackParCov = getTrackParCov(track); - trackParCov.setPID(o2::track::PID::Electron); + trackParCov.setPID(fElectronCut.useElectronHypothesis ? o2::track::PID::Electron : track.pidForTracking()); bool isPropOK = o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackParCov, 2.f, matCorr, &mDcaInfoCov); if (!isPropOK) { return; @@ -798,7 +799,7 @@ class ElectronModule o2::dataformats::DCA mDcaInfoCov; mDcaInfoCov.set(999, 999, 999, 999, 999); auto trackParCov = getTrackParCov(track); - trackParCov.setPID(o2::track::PID::Electron); + trackParCov.setPID(fElectronCut.useElectronHypothesis ? o2::track::PID::Electron : track.pidForTracking()); bool isPropOK = o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackParCov, 2.f, matCorr, &mDcaInfoCov); if (!isPropOK) { return false; @@ -880,7 +881,7 @@ class ElectronModule o2::dataformats::DCA mDcaInfoCov; mDcaInfoCov.set(999, 999, 999, 999, 999); auto trackParCov = getTrackParCov(track); - trackParCov.setPID(o2::track::PID::Electron); + trackParCov.setPID(fElectronCut.useElectronHypothesis ? o2::track::PID::Electron : track.pidForTracking()); bool isPropOK = o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackParCov, 2.f, matCorr, &mDcaInfoCov); if (!isPropOK) { return false; @@ -1422,6 +1423,30 @@ class ElectronModule if (fDoSCTwithTracks) { hadronIds.reserve(trackIdsThisCollision.size()); + for (const auto& trackId : trackIdsThisCollision) { + auto track = trackId.template track_as(); + auto trackParCov = getTrackParCov(track); + o2::dataformats::DCA mDcaInfoCov; + mDcaInfoCov.set(999, 999, 999, 999, 999); + trackParCov.setPID(track.pidForTracking()); + bool isPropOK = o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackParCov, 2.f, matCorr, &mDcaInfoCov); + if (!isPropOK) { + continue; + } + float dcaXY = mDcaInfoCov.getY(); + float dcaZ = mDcaInfoCov.getZ(); + if (isSelectedHadron(collision, track, trackParCov, dcaXY, dcaZ)) { + float tpcSignal = track.tpcSignal(); + if constexpr (isMC) { + tpcSignal = track.mcTunedTPCSignal(); + } + registry.fill(HIST("SCT/Track/hs"), trackParCov.getPt(), trackParCov.getEta(), RecoDecay::constrainAngle(trackParCov.getPhi(), 0, 1U)); + registry.fill(HIST("SCT/Track/hDCA"), dcaXY, dcaZ); + registry.fill(HIST("SCT/Track/hTPCdEdx"), track.tpcInnerParam(), tpcSignal); + registry.fill(HIST("SCT/Track/hTOFbeta"), trackParCov.getP(), fMapTOFBetaReassociated[std::make_pair(collision.globalIndex(), track.globalIndex())]); + hadronIds.emplace_back(track.globalIndex()); + } + } // end of track loop } // if (fDoSCTwithV0s) { @@ -1543,38 +1568,13 @@ class ElectronModule // } // end of cascade loop // } - for (const auto& trackId : trackIdsThisCollision) { - auto track = trackId.template track_as(); - auto trackParCov = getTrackParCov(track); - o2::dataformats::DCA mDcaInfoCov; - mDcaInfoCov.set(999, 999, 999, 999, 999); - trackParCov.setPID(track.pidForTracking()); - bool isPropOK = o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackParCov, 2.f, matCorr, &mDcaInfoCov); - if (!isPropOK) { - continue; - } - float dcaXY = mDcaInfoCov.getY(); - float dcaZ = mDcaInfoCov.getZ(); - if (isSelectedHadron(collision, track, trackParCov, dcaXY, dcaZ)) { - float tpcSignal = track.tpcSignal(); - if constexpr (isMC) { - tpcSignal = track.mcTunedTPCSignal(); - } - registry.fill(HIST("SCT/Track/hs"), trackParCov.getPt(), trackParCov.getEta(), RecoDecay::constrainAngle(trackParCov.getPhi(), 0, 1U)); - registry.fill(HIST("SCT/Track/hDCA"), dcaXY, dcaZ); - registry.fill(HIST("SCT/Track/hTPCdEdx"), track.tpcInnerParam(), tpcSignal); - registry.fill(HIST("SCT/Track/hTOFbeta"), trackParCov.getP(), fMapTOFBetaReassociated[std::make_pair(collision.globalIndex(), track.globalIndex())]); - hadronIds.emplace_back(track.globalIndex()); - } - } // end of track loop - auto range_electrons = multiMapTracksPerCollision.equal_range(collision.globalIndex()); for (auto it = range_electrons.first; it != range_electrons.second; it++) { auto electron = tracks.rawIteratorAt(it->second); o2::dataformats::DCA mDcaInfoCov; mDcaInfoCov.set(999, 999, 999, 999, 999); auto trackParCov = getTrackParCov(electron); - trackParCov.setPID(o2::track::PID::Electron); + trackParCov.setPID(fElectronCut.useElectronHypothesis ? o2::track::PID::Electron : electron.pidForTracking()); bool isPropOK = o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackParCov, 2.f, matCorr, &mDcaInfoCov); if (!isPropOK) { continue; @@ -1596,7 +1596,7 @@ class ElectronModule } auto trackParCov2 = getTrackParCov(looseElectron); - trackParCov2.setPID(o2::track::PID::Electron); + trackParCov2.setPID(fElectronCut.useElectronHypothesis ? o2::track::PID::Electron : looseElectron.pidForTracking()); bool isPropOK = o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackParCov2, 2.f, matCorr, &mDcaInfoCov); if (!isPropOK) { continue; @@ -1655,7 +1655,7 @@ class ElectronModule hadronParCov.setPID(hadron.pidForTracking()); o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, hadronParCov, 2.f, matCorr, &mDcaInfoCov); - auto eTpair = o2::aod::pwgem::dilepton::utils::makePairLeptonTrack(dfeT, collision, electron, hadron, o2::track::PID::Electron, hadron.pidForTracking()); + auto eTpair = o2::aod::pwgem::dilepton::utils::makePairLeptonTrack(dfeT, collision, electron, hadron, fElectronCut.useElectronHypothesis ? o2::track::PID::Electron : electron.pidForTracking(), hadron.pidForTracking(), o2::constants::physics::MassElectron); registry.fill(HIST("SCT/eT/hDecayLength"), eTpair.lxy, eTpair.lz); registry.fill(HIST("SCT/eT/hCosPA"), eTpair.cospa); registry.fill(HIST("SCT/eT/hDCA2legs"), eTpair.dca2legs); @@ -1707,7 +1707,7 @@ class ElectronModule // o2::dataformats::DCA impactParameterV0; // o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, v0ParCov, 2.f, matCorr, &impactParameterV0); // v0ParCov is TrackParCov object - // auto eV0pair = o2::aod::pwgem::dilepton::utils::makePairLeptonV0(dfeV0, collision, electron, v0, o2::track::PID::Electron, o2::track::PID::K0); + // auto eV0pair = o2::aod::pwgem::dilepton::utils::makePairLeptonV0(dfeV0, collision, electron, v0, fElectronCut.useElectronHypothesis ? o2::track::PID::Electron : electron.pidForTracking(), o2::track::PID::K0, o2::constants::physics::MassElectron); // registry.fill(HIST("SCT/eV0/hDecayLength"), eV0pair.lxy, eV0pair.lz); // registry.fill(HIST("SCT/eV0/hCosPA"), eV0pair.cospa); // registry.fill(HIST("SCT/eV0/hDCA2legs"), eV0pair.dca2legs); @@ -1758,7 +1758,7 @@ class ElectronModule // o2::dataformats::DCA impactParameterV0; // o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, v0ParCov, 2.f, matCorr, &impactParameterV0); // v0ParCov is TrackParCov object - // auto eV0pair = o2::aod::pwgem::dilepton::utils::makePairLeptonV0(dfeV0, collision, electron, v0, o2::track::PID::Electron, o2::track::PID::Lambda); + // auto eV0pair = o2::aod::pwgem::dilepton::utils::makePairLeptonV0(dfeV0, collision, electron, v0, fElectronCut.useElectronHypothesis ? o2::track::PID::Electron : electron.pidForTracking(), o2::track::PID::Lambda, o2::constants::physics::MassElectron); // registry.fill(HIST("SCT/eV0/hDecayLength"), eV0pair.lxy, eV0pair.lz); // registry.fill(HIST("SCT/eV0/hCosPA"), eV0pair.cospa); // registry.fill(HIST("SCT/eV0/hDCA2legs"), eV0pair.dca2legs); @@ -1809,7 +1809,7 @@ class ElectronModule // o2::dataformats::DCA impactParameterCasc; // o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, cascadeParCov, 2.f, matCorr, &impactParameterCasc); // cascadeParCov is TrackParCov object - // auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(dfeC, collision, electron, cascade, o2::track::PID::Electron, o2::track::PID::XiMinus); + // auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(dfeC, collision, electron, cascade, fElectronCut.useElectronHypothesis ? o2::track::PID::Electron : electron.pidForTracking(), o2::track::PID::XiMinus, o2::constants::physics::MassElectron); // registry.fill(HIST("SCT/eC/hDecayLength"), eCpair.lxy, eCpair.lz); // registry.fill(HIST("SCT/eC/hCosPA"), eCpair.cospa); // registry.fill(HIST("SCT/eC/hDCA2legs"), eCpair.dca2legs); @@ -1860,7 +1860,7 @@ class ElectronModule // o2::dataformats::DCA impactParameterCasc; // o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, cascadeParCov, 2.f, matCorr, &impactParameterCasc); // cascadeParCov is TrackParCov object - // auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(dfeC, collision, electron, cascade, o2::track::PID::Electron, o2::track::PID::OmegaMinus); + // auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(dfeC, collision, electron, cascade, fElectronCut.useElectronHypothesis ? o2::track::PID::Electron : electron.pidForTracking(), o2::track::PID::OmegaMinus, o2::constants::physics::MassElectron); // registry.fill(HIST("SCT/eC/hDecayLength"), eCpair.lxy, eCpair.lz); // registry.fill(HIST("SCT/eC/hCosPA"), eCpair.cospa); // registry.fill(HIST("SCT/eC/hDCA2legs"), eCpair.dca2legs); @@ -1911,7 +1911,7 @@ class ElectronModule // o2::dataformats::DCA impactParameterV0; // o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, v0ParCov, 2.f, matCorr, &impactParameterV0); // v0ParCov is TrackParCov object - // auto eV0pair = o2::aod::pwgem::dilepton::utils::makePairLeptonV0(dfeV0, collision, electron, v0, o2::track::PID::Electron, o2::track::PID::Lambda); + // auto eV0pair = o2::aod::pwgem::dilepton::utils::makePairLeptonV0(dfeV0, collision, electron, v0, fElectronCut.useElectronHypothesis ? o2::track::PID::Electron : electron.pidForTracking(), o2::track::PID::Lambda, o2::constants::physics::MassElectron); // registry.fill(HIST("SCT/eV0/hDecayLength"), eV0pair.lxy, eV0pair.lz); // registry.fill(HIST("SCT/eV0/hCosPA"), eV0pair.cospa); // registry.fill(HIST("SCT/eV0/hDCA2legs"), eV0pair.dca2legs); @@ -1962,7 +1962,7 @@ class ElectronModule // o2::dataformats::DCA impactParameterCasc; // o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, cascadeParCov, 2.f, matCorr, &impactParameterCasc); // cascadeParCov is TrackParCov object - // auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(dfeC, collision, electron, cascade, o2::track::PID::Electron, o2::track::PID::XiMinus); + // auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(dfeC, collision, electron, cascade, fElectronCut.useElectronHypothesis ? o2::track::PID::Electron : electron.pidForTracking(), o2::track::PID::XiMinus, o2::constants::physics::MassElectron); // registry.fill(HIST("SCT/eC/hDecayLength"), eCpair.lxy, eCpair.lz); // registry.fill(HIST("SCT/eC/hCosPA"), eCpair.cospa); // registry.fill(HIST("SCT/eC/hDCA2legs"), eCpair.dca2legs); @@ -2013,7 +2013,7 @@ class ElectronModule // o2::dataformats::DCA impactParameterCasc; // o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, cascadeParCov, 2.f, matCorr, &impactParameterCasc); // cascadeParCov is TrackParCov object - // auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(dfeC, collision, electron, cascade, o2::track::PID::Electron, o2::track::PID::OmegaMinus); + // auto eCpair = o2::aod::pwgem::dilepton::utils::makePairLeptonCascade(dfeC, collision, electron, cascade, fElectronCut.useElectronHypothesis ? o2::track::PID::Electron : electron.pidForTracking(), o2::track::PID::OmegaMinus, o2::constants::physics::MassElectron); // registry.fill(HIST("SCT/eC/hDecayLength"), eCpair.lxy, eCpair.lz); // registry.fill(HIST("SCT/eC/hCosPA"), eCpair.cospa); // registry.fill(HIST("SCT/eC/hDCA2legs"), eCpair.dca2legs); diff --git a/PWGEM/Dilepton/Utils/SemiCharmTag.h b/PWGEM/Dilepton/Utils/SemiCharmTag.h index c38df4337af..45aea6cced8 100644 --- a/PWGEM/Dilepton/Utils/SemiCharmTag.h +++ b/PWGEM/Dilepton/Utils/SemiCharmTag.h @@ -73,7 +73,7 @@ struct LHPair { // struct to store electron-hadron pair information }; template -LHPair makePairLeptonTrack(TFitter& fitter, TCollision const& collision, TLepton const& lepton, TTrack const& track, o2::track::PID::ID leptonId, o2::track::PID::ID strHadId) +LHPair makePairLeptonTrack(TFitter& fitter, TCollision const& collision, TLepton const& lepton, TTrack const& track, const o2::track::PID::ID leptonId, const o2::track::PID::ID strHadId, const float massLepton) { LHPair pair; auto leptonParCov = getTrackParCov(lepton); @@ -159,17 +159,7 @@ LHPair makePairLeptonTrack(TFitter& fitter, TCollision const& collision, TLepton // LOGF(info, "fitter.getBz() = %f, dcaLH.getY() = %f, dcaLH.getZ() = %f", fitter.getBz(), dcaLH.getY(), dcaLH.getZ()); - ROOT::Math::PxPyPzMVector v1(pvec0[0], pvec0[1], pvec0[2], o2::constants::physics::MassElectron); - if (leptonId == o2::track::PID::Electron) { - v1.SetM(o2::constants::physics::MassElectron); - } else if (leptonId == o2::track::PID::Muon) { - v1.SetM(o2::constants::physics::MassMuon); - } else { - LOGF(info, "leptonId supports only Electron or Muon."); - pair.isOK = false; - return pair; - } - + ROOT::Math::PxPyPzMVector v1(pvec0[0], pvec0[1], pvec0[2], massLepton); ROOT::Math::PxPyPzMVector v2(pvec1[0], pvec1[1], pvec1[2], o2::constants::physics::MassKaonCharged); ROOT::Math::PxPyPzMVector v12 = v1 + v2; pair.mass = v12.M(); @@ -182,7 +172,7 @@ LHPair makePairLeptonTrack(TFitter& fitter, TCollision const& collision, TLepton } template -LHPair makePairLeptonV0(TFitter& fitter, TCollision const& collision, TLepton const& lepton, TV0 const& v0, o2::track::PID::ID leptonId, o2::track::PID::ID strHadId) +LHPair makePairLeptonV0(TFitter& fitter, TCollision const& collision, TLepton const& lepton, TV0 const& v0, o2::track::PID::ID leptonId, o2::track::PID::ID strHadId, const float massLepton) { LHPair pair; auto leptonParCov = getTrackParCov(lepton); @@ -276,17 +266,7 @@ LHPair makePairLeptonV0(TFitter& fitter, TCollision const& collision, TLepton co // pair.impParCZY = dcaLH.getSigmaYZ(); // pair.impParCZZ = dcaLH.getSigmaZ2(); - ROOT::Math::PxPyPzMVector v1(pvec0[0], pvec0[1], pvec0[2], o2::constants::physics::MassElectron); - if (leptonId == o2::track::PID::Electron) { - v1.SetM(o2::constants::physics::MassElectron); - } else if (leptonId == o2::track::PID::Muon) { - v1.SetM(o2::constants::physics::MassMuon); - } else { - LOGF(info, "leptonId supports only Electron or Muon."); - pair.isOK = false; - return pair; - } - + ROOT::Math::PxPyPzMVector v1(pvec0[0], pvec0[1], pvec0[2], massLepton); ROOT::Math::PxPyPzMVector v2(pvec1[0], pvec1[1], pvec1[2], o2::constants::physics::MassLambda); if (strHadId == o2::track::PID::Lambda) { v2.SetM(o2::constants::physics::MassLambda); @@ -310,7 +290,7 @@ LHPair makePairLeptonV0(TFitter& fitter, TCollision const& collision, TLepton co } template -LHPair makePairLeptonCascade(TFitter& fitter, TCollision const& collision, TLepton const& lepton, TCascade const& cascade, o2::track::PID::ID leptonId, o2::track::PID::ID strHadId) +LHPair makePairLeptonCascade(TFitter& fitter, TCollision const& collision, TLepton const& lepton, TCascade const& cascade, o2::track::PID::ID leptonId, o2::track::PID::ID strHadId, const float massLepton) { LHPair pair; auto leptonParCov = getTrackParCov(lepton); @@ -408,17 +388,7 @@ LHPair makePairLeptonCascade(TFitter& fitter, TCollision const& collision, TLept // pair.impParCZY = dcaLH.getSigmaYZ(); // pair.impParCZZ = dcaLH.getSigmaZ2(); - ROOT::Math::PxPyPzMVector v1(pvec0[0], pvec0[1], pvec0[2], o2::constants::physics::MassElectron); - if (leptonId == o2::track::PID::Electron) { - v1.SetM(o2::constants::physics::MassElectron); - } else if (leptonId == o2::track::PID::Muon) { - v1.SetM(o2::constants::physics::MassMuon); - } else { - LOGF(info, "leptonId supports only Electron or Muon."); - pair.isOK = false; - return pair; - } - + ROOT::Math::PxPyPzMVector v1(pvec0[0], pvec0[1], pvec0[2], massLepton); ROOT::Math::PxPyPzMVector v2(pvec1[0], pvec1[1], pvec1[2], o2::constants::physics::MassXiMinus); if (strHadId == o2::track::PID::XiMinus) { v2.SetM(o2::constants::physics::MassXiMinus);