@@ -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;
0 commit comments