Skip to content

Commit 9391c67

Browse files
ypwanggalibuild
andauthored
[PWGDQ] code development for dq-eff-direct for dilepton track track (#18176)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 4889c68 commit 9391c67

3 files changed

Lines changed: 578 additions & 30 deletions

File tree

‎PWGDQ/Core/VarManager.h‎

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6734,6 +6734,11 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l
67346734
float mlepton2 = o2::constants::physics::MassElectron;
67356735
float mtrack1 = o2::constants::physics::MassPionCharged;
67366736
float mtrack2 = o2::constants::physics::MassPionCharged;
6737+
float mMother = 3.686;
6738+
6739+
if constexpr (candidateType == kXtoJpsiPiPi) {
6740+
mMother = o2::constants::physics::MassX3872;
6741+
}
67376742

67386743
ROOT::Math::PtEtaPhiMVector v1(lepton1.pt(), lepton1.eta(), lepton1.phi(), mlepton1);
67396744
ROOT::Math::PtEtaPhiMVector v2(lepton2.pt(), lepton2.eta(), lepton2.phi(), mlepton2);
@@ -6747,26 +6752,30 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l
67476752
values[kUsedKF] = static_cast<float>(fgUsedKF);
67486753
if (!fgUsedKF) {
67496754
// create covariance matrix
6750-
std::array<float, 5> lepton1pars = {lepton1.y(), lepton1.z(), lepton1.snp(), lepton1.tgl(), lepton1.signed1Pt()};
6751-
std::array<float, 15> lepton1covs = {lepton1.cYY(), lepton1.cZY(), lepton1.cZZ(), lepton1.cSnpY(), lepton1.cSnpZ(),
6752-
lepton1.cSnpSnp(), lepton1.cTglY(), lepton1.cTglZ(), lepton1.cTglSnp(), lepton1.cTglTgl(),
6753-
lepton1.c1PtY(), lepton1.c1PtZ(), lepton1.c1PtSnp(), lepton1.c1PtTgl(), lepton1.c1Pt21Pt2()};
6754-
o2::track::TrackParCov pars1{lepton1.x(), lepton1.alpha(), lepton1pars, lepton1covs};
6755-
std::array<float, 5> lepton2pars = {lepton2.y(), lepton2.z(), lepton2.snp(), lepton2.tgl(), lepton2.signed1Pt()};
6756-
std::array<float, 15> lepton2covs = {lepton2.cYY(), lepton2.cZY(), lepton2.cZZ(), lepton2.cSnpY(), lepton2.cSnpZ(),
6757-
lepton2.cSnpSnp(), lepton2.cTglY(), lepton2.cTglZ(), lepton2.cTglSnp(), lepton2.cTglTgl(),
6758-
lepton2.c1PtY(), lepton2.c1PtZ(), lepton2.c1PtSnp(), lepton2.c1PtTgl(), lepton2.c1Pt21Pt2()};
6759-
o2::track::TrackParCov pars2{lepton2.x(), lepton2.alpha(), lepton2pars, lepton2covs};
6760-
std::array<float, 5> track1pars = {track1.y(), track1.z(), track1.snp(), track1.tgl(), track1.signed1Pt()};
6761-
std::array<float, 15> track1covs = {track1.cYY(), track1.cZY(), track1.cZZ(), track1.cSnpY(), track1.cSnpZ(),
6762-
track1.cSnpSnp(), track1.cTglY(), track1.cTglZ(), track1.cTglSnp(), track1.cTglTgl(),
6763-
track1.c1PtY(), track1.c1PtZ(), track1.c1PtSnp(), track1.c1PtTgl(), track1.c1Pt21Pt2()};
6764-
o2::track::TrackParCov pars3{track1.x(), track1.alpha(), track1pars, track1covs};
6765-
std::array<float, 5> track2pars = {track2.y(), track2.z(), track2.snp(), track2.tgl(), track2.signed1Pt()};
6766-
std::array<float, 15> track2covs = {track2.cYY(), track2.cZY(), track2.cZZ(), track2.cSnpY(), track2.cSnpZ(),
6767-
track2.cSnpSnp(), track2.cTglY(), track2.cTglZ(), track2.cTglSnp(), track2.cTglTgl(),
6768-
track2.c1PtY(), track2.c1PtZ(), track2.c1PtSnp(), track2.c1PtTgl(), track2.c1Pt21Pt2()};
6769-
o2::track::TrackParCov pars4{track2.x(), track2.alpha(), track2pars, track2covs};
6755+
o2::track::TrackParCov pars1 = getTrackParCov(lepton1);
6756+
o2::track::TrackParCov pars2 = getTrackParCov(lepton2);
6757+
o2::track::TrackParCov pars3 = getTrackParCov(track1);
6758+
o2::track::TrackParCov pars4 = getTrackParCov(track2);
6759+
// std::array<float, 5> lepton1pars = {lepton1.y(), lepton1.z(), lepton1.snp(), lepton1.tgl(), lepton1.signed1Pt()};
6760+
// std::array<float, 15> lepton1covs = {lepton1.cYY(), lepton1.cZY(), lepton1.cZZ(), lepton1.cSnpY(), lepton1.cSnpZ(),
6761+
// lepton1.cSnpSnp(), lepton1.cTglY(), lepton1.cTglZ(), lepton1.cTglSnp(), lepton1.cTglTgl(),
6762+
// lepton1.c1PtY(), lepton1.c1PtZ(), lepton1.c1PtSnp(), lepton1.c1PtTgl(), lepton1.c1Pt21Pt2()};
6763+
// o2::track::TrackParCov pars1{lepton1.x(), lepton1.alpha(), lepton1pars, lepton1covs};
6764+
// std::array<float, 5> lepton2pars = {lepton2.y(), lepton2.z(), lepton2.snp(), lepton2.tgl(), lepton2.signed1Pt()};
6765+
// std::array<float, 15> lepton2covs = {lepton2.cYY(), lepton2.cZY(), lepton2.cZZ(), lepton2.cSnpY(), lepton2.cSnpZ(),
6766+
// lepton2.cSnpSnp(), lepton2.cTglY(), lepton2.cTglZ(), lepton2.cTglSnp(), lepton2.cTglTgl(),
6767+
// lepton2.c1PtY(), lepton2.c1PtZ(), lepton2.c1PtSnp(), lepton2.c1PtTgl(), lepton2.c1Pt21Pt2()};
6768+
// o2::track::TrackParCov pars2{lepton2.x(), lepton2.alpha(), lepton2pars, lepton2covs};
6769+
// std::array<float, 5> track1pars = {track1.y(), track1.z(), track1.snp(), track1.tgl(), track1.signed1Pt()};
6770+
// std::array<float, 15> track1covs = {track1.cYY(), track1.cZY(), track1.cZZ(), track1.cSnpY(), track1.cSnpZ(),
6771+
// track1.cSnpSnp(), track1.cTglY(), track1.cTglZ(), track1.cTglSnp(), track1.cTglTgl(),
6772+
// track1.c1PtY(), track1.c1PtZ(), track1.c1PtSnp(), track1.c1PtTgl(), track1.c1Pt21Pt2()};
6773+
// o2::track::TrackParCov pars3{track1.x(), track1.alpha(), track1pars, track1covs};
6774+
// std::array<float, 5> track2pars = {track2.y(), track2.z(), track2.snp(), track2.tgl(), track2.signed1Pt()};
6775+
// std::array<float, 15> track2covs = {track2.cYY(), track2.cZY(), track2.cZZ(), track2.cSnpY(), track2.cSnpZ(),
6776+
// track2.cSnpSnp(), track2.cTglY(), track2.cTglZ(), track2.cTglSnp(), track2.cTglTgl(),
6777+
// track2.c1PtY(), track2.c1PtZ(), track2.c1PtSnp(), track2.c1PtTgl(), track2.c1Pt21Pt2()};
6778+
// o2::track::TrackParCov pars4{track2.x(), track2.alpha(), track2pars, track2covs};
67706779

67716780
procCodeDilepton = VarManager::fgFitterTwoProngBarrel.process(pars1, pars2);
67726781
// create dilepton track
@@ -6775,7 +6784,7 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l
67756784
procCodeDileptonTrackTrack = VarManager::fgFitterFourProngBarrel.process(pars1, pars2, pars3, pars4);
67766785

67776786
// fill values
6778-
if (procCodeDilepton == 0 && procCodeDileptonTrackTrack == 0) {
6787+
if (procCodeDilepton == 0 || procCodeDileptonTrackTrack == 0) {
67796788
// TODO: set the other variables to appropriate values and return
67806789
values[kVertexingLxy] = -999.;
67816790
values[kVertexingLxyz] = -999.;
@@ -6811,6 +6820,7 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l
68116820
std::sqrt((secondaryVertex[0] - collision.posX()) * (secondaryVertex[0] - collision.posX()) +
68126821
(secondaryVertex[1] - collision.posY()) * (secondaryVertex[1] - collision.posY())));
68136822

6823+
values[kVertexingChi2PCA] = fgFitterFourProngBarrel.getChi2AtPCACandidate();
68146824
values[kVertexingLxy] = (collision.posX() - secondaryVertex[0]) * (collision.posX() - secondaryVertex[0]) +
68156825
(collision.posY() - secondaryVertex[1]) * (collision.posY() - secondaryVertex[1]);
68166826
values[kVertexingLz] = (collision.posZ() - secondaryVertex[2]) * (collision.posZ() - secondaryVertex[2]);
@@ -6823,11 +6833,11 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l
68236833
values[kVertexingLxyErr] = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.));
68246834
values[kVertexingLzErr] = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, 0, theta) + getRotatedCovMatrixXX(covMatrixPCA, 0, theta));
68256835

6826-
values[kVertexingTauz] = (collision.posZ() - secondaryVertex[2]) * v1234.M() / (TMath::Abs(v1234.Pz()) * o2::constants::physics::LightSpeedCm2NS);
6827-
values[kVertexingTauxy] = values[kVertexingLxy] * v1234.M() / (v1234.Pt() * o2::constants::physics::LightSpeedCm2NS);
6836+
values[kVertexingTauz] = (collision.posZ() - secondaryVertex[2]) * mMother / (TMath::Abs(v1234.Pz()) * o2::constants::physics::LightSpeedCm2NS);
6837+
values[kVertexingTauxy] = values[kVertexingLxy] * mMother / (v1234.Pt() * o2::constants::physics::LightSpeedCm2NS);
68286838

6829-
values[kVertexingTauzErr] = values[kVertexingLzErr] * v1234.M() / (TMath::Abs(v1234.Pz()) * o2::constants::physics::LightSpeedCm2NS);
6830-
values[kVertexingTauxyErr] = values[kVertexingLxyErr] * v1234.M() / (v1234.Pt() * o2::constants::physics::LightSpeedCm2NS);
6839+
values[kVertexingTauzErr] = values[kVertexingLzErr] * mMother / (TMath::Abs(v1234.Pz()) * o2::constants::physics::LightSpeedCm2NS);
6840+
values[kVertexingTauxyErr] = values[kVertexingLxyErr] * mMother / (v1234.Pt() * o2::constants::physics::LightSpeedCm2NS);
68316841

68326842
values[kCosPointingAngle] = ((secondaryVertex[0] - collision.posX()) * v1234.Px() +
68336843
(secondaryVertex[1] - collision.posY()) * v1234.Py() +
@@ -6841,9 +6851,9 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l
68416851
values[kVertexingLxyzProjected] = ((secondaryVertex[0] - collision.posX()) * v1234.Px()) + ((secondaryVertex[1] - collision.posY()) * v1234.Py()) + ((secondaryVertex[2] - collision.posZ()) * v1234.Pz());
68426852
values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / TMath::Sqrt((v1234.Px() * v1234.Px()) + (v1234.Py() * v1234.Py()) + (v1234.Pz() * v1234.Pz()));
68436853

6844-
values[kVertexingTauzProjected] = values[kVertexingLzProjected] * v1234.M() / TMath::Abs(v1234.Pz());
6845-
values[kVertexingTauxyProjected] = values[kVertexingLxyProjected] * v1234.M() / (v1234.Pt());
6846-
values[kVertexingTauxyzProjected] = values[kVertexingLxyzProjected] * v1234.M() / (v1234.P());
6854+
values[kVertexingTauzProjected] = values[kVertexingLzProjected] * mMother / TMath::Abs(v1234.Pz());
6855+
values[kVertexingTauxyProjected] = values[kVertexingLxyProjected] * mMother / (v1234.Pt());
6856+
values[kVertexingTauxyzProjected] = values[kVertexingLxyzProjected] * mMother / (v1234.P());
68476857
} else {
68486858
KFParticle lepton1KF; // lepton1
68496859
KFParticle lepton2KF; // lepton2
@@ -6983,7 +6993,7 @@ void VarManager::FillQuadMC(T1 const& dilepton, T2 const& track1, T2 const& trac
69836993
double defaultDileptonMass = o2::constants::physics::MassJPsi;
69846994
double hadronMass1 = o2::constants::physics::MassPionCharged;
69856995
double hadronMass2 = o2::constants::physics::MassPionCharged;
6986-
if (candidateType == kXtoJpsiPiPi) {
6996+
if (candidateType == kXtoJpsiPiPi || candidateType == kPsi2StoJpsiPiPi) {
69876997
defaultDileptonMass = o2::constants::physics::MassJPsi;
69886998
hadronMass1 = o2::constants::physics::MassPionCharged;
69896999
hadronMass2 = o2::constants::physics::MassPionCharged;

‎PWGDQ/DataModel/ReducedInfoTables.h‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1198,6 +1198,8 @@ DECLARE_SOA_COLUMN(VertexingLxyProjected, vertexingLxyProjected, float); //!
11981198
DECLARE_SOA_COLUMN(VertexingLxyzProjected, vertexingLxyzProjected, float); //!
11991199
DECLARE_SOA_COLUMN(VertexingTauzProjected, vertexingTauzProjected, float); //!
12001200
DECLARE_SOA_COLUMN(VertexingTauxyProjected, vertexingTauxyProjected, float); //!
1201+
DECLARE_SOA_BITMAP_COLUMN(DileptonFilterMap, dileptonFilterMap, 32); //!
1202+
DECLARE_SOA_BITMAP_COLUMN(QuadFilterMap, quadFilterMap, 32); //!
12011203
} // namespace dileptonTrackTrackCandidate
12021204

12031205
DECLARE_SOA_TABLE(DileptonTrackTrackCandidates, "AOD", "RTDQUADPLET", //!

0 commit comments

Comments
 (0)