From 9ce971a29a32c21a3c026de51e396cdf50a631a1 Mon Sep 17 00:00:00 2001 From: Jseo Date: Wed, 5 Nov 2025 17:00:33 +0100 Subject: [PATCH 1/6] Add varialbes to dielectronAll table and mixing libaray --- PWGDQ/Core/MixingLibrary.cxx | 4 ++++ PWGDQ/Core/VarManager.h | 27 ++++++++++++++++++++++++++ PWGDQ/DataModel/ReducedInfoTables.h | 10 ++++++++-- PWGDQ/Tasks/dqEfficiency.cxx | 3 ++- PWGDQ/Tasks/dqEfficiency_withAssoc.cxx | 3 ++- PWGDQ/Tasks/tableReader.cxx | 3 ++- PWGDQ/Tasks/tableReader_withAssoc.cxx | 3 ++- 7 files changed, 47 insertions(+), 6 deletions(-) diff --git a/PWGDQ/Core/MixingLibrary.cxx b/PWGDQ/Core/MixingLibrary.cxx index 9cb2eb9029d..edc604b5451 100644 --- a/PWGDQ/Core/MixingLibrary.cxx +++ b/PWGDQ/Core/MixingLibrary.cxx @@ -108,6 +108,10 @@ void o2::aod::dqmixing::SetUpMixing(MixingHandler* mh, const char* mixingVarible std::vector fOccLimsHashing = {0.0f, 250.0f, 500.0f, 750.0f, 1000.0f, 1500.0f, 2000.0f, 3000.0f, 4500.0f, 6000.0f, 8000.0f, 10000.0f, 50000.0f}; mh->AddMixingVariable(VarManager::kTrackOccupancyInTimeRange, fOccLimsHashing.size(), fOccLimsHashing); } + if (!nameStr.compare("Occupancy4")) { + std::vector fOccLimsHashing = {0.0f, 50.0f, 100.0f, 500.0f, 1000.0f, 1500.0f, 2000.0f, 2500.0f, 3000.0f, 3500.0f, 4000.0f, 4500.0f, 5000.0f, 50000.0f}; + mh->AddMixingVariable(VarManager::kTrackOccupancyInTimeRange, fOccLimsHashing.size(), fOccLimsHashing); + } if (!nameStr.compare("Psi2A1")) { std::vector fPsi2A = {-TMath::Pi() / 2., 0.0f, TMath::Pi() / 2.}; mh->AddMixingVariable(VarManager::kPsi2A, fPsi2A.size(), fPsi2A); diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index 3bbde1dd281..01f993092ce 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -3249,6 +3249,9 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) m2 = o2::constants::physics::MassMuon; } + values[kCharge] = t1.sign() + t2.sign(); + values[kCharge1] = t1.sign(); + values[kCharge2] = t2.sign(); ROOT::Math::PtEtaPhiMVector v1(t1.pt(), t1.eta(), t1.phi(), m1); ROOT::Math::PtEtaPhiMVector v2(t2.pt(), t2.eta(), t2.phi(), m2); ROOT::Math::PtEtaPhiMVector v12 = v1 + v2; @@ -3258,6 +3261,9 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) // values[kPhi] = v12.Phi(); values[kPhi] = v12.Phi() > 0 ? v12.Phi() : v12.Phi() + 2. * M_PI; values[kRap] = -v12.Rapidity(); + double Ptot1 = TMath::Sqrt(v1.Px() * v1.Px() + v1.Py() * v1.Py() + v1.Pz() * v1.Pz()); + double Ptot2 = TMath::Sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); + values[kDeltaPtotTracks] = Ptot1 - Ptot2; if (fgUsedVars[kDeltaPhiPair2]) { double phipair2ME = v1.Phi() - v2.Phi(); @@ -3274,6 +3280,27 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) values[kDeltaEtaPair2] = v1.Eta() - v2.Eta(); } + if (fgUsedVars[kPsiPair]) { + values[kDeltaPhiPair] = (t1.sign() * fgMagField > 0.) ? (v1.Phi() - v2.Phi()) : (v2.Phi() - v1.Phi()); + double xipair = TMath::ACos((v1.Px() * v2.Px() + v1.Py() * v2.Py() + v1.Pz() * v2.Pz()) / v1.P() / v2.P()); + values[kPsiPair] = (t1.sign() * fgMagField > 0.) ? TMath::ASin((v1.Theta() - v2.Theta()) / xipair) : TMath::ASin((v2.Theta() - v1.Theta()) / xipair); + } + + if (fgUsedVars[kOpeningAngle]) { + double scalar = v1.Px() * v2.Px() + v1.Py() * v2.Py() + v1.Pz() * v2.Pz(); + double Ptot12 = Ptot1 * Ptot2; + if (Ptot12 <= 0) { + values[kOpeningAngle] = 0.; + } else { + double arg = scalar / Ptot12; + if (arg > 1.) + arg = 1.; + if (arg < -1) + arg = -1; + values[kOpeningAngle] = TMath::ACos(arg); + } + } + // polarization parameters bool useHE = fgUsedVars[kCosThetaHE] || fgUsedVars[kPhiHE]; // helicity frame bool useCS = fgUsedVars[kCosThetaCS] || fgUsedVars[kPhiCS]; // Collins-Soper frame diff --git a/PWGDQ/DataModel/ReducedInfoTables.h b/PWGDQ/DataModel/ReducedInfoTables.h index 8fc3931d97b..bca1a2861e1 100644 --- a/PWGDQ/DataModel/ReducedInfoTables.h +++ b/PWGDQ/DataModel/ReducedInfoTables.h @@ -747,6 +747,10 @@ DECLARE_SOA_COLUMN(PairDCAxyz, pairDCAxyz, float); DECLARE_SOA_COLUMN(PairDCAxy, pairDCAxy, float); //! Pair DCAxy to PV from KFParticle DECLARE_SOA_COLUMN(DeviationPairKF, deviationPairKF, float); //! Pair chi2 deviation to PV from KFParticle DECLARE_SOA_COLUMN(DeviationxyPairKF, deviationxyPairKF, float); //! Pair chi2 deviation to PV in XY from KFParticle +DECLARE_SOA_COLUMN(TauzCov, tauzCov, float); //! Longitudinal pseudo-proper time of lepton pair from covariance matrix +DECLARE_SOA_COLUMN(TauxyCov, tauxyCov, float); //! Transverse pseudo-proper time of lepton pair from covariance matrix +DECLARE_SOA_COLUMN(LzCov, lzCov, float); //! Longitudinal projection of decay length from covariance matrix +DECLARE_SOA_COLUMN(LxyCov, lxyCov, float); //! Transverse projection of decay length from covariance matrix // DECLARE_SOA_INDEX_COLUMN(ReducedMuon, reducedmuon2); //! DECLARE_SOA_COLUMN(CosThetaHE, costhetaHE, float); //! Cosine in the helicity frame DECLARE_SOA_COLUMN(PhiHE, phiHe, float); //! Phi in the helicity frame @@ -843,8 +847,10 @@ DECLARE_SOA_TABLE_STAGED(DielectronsAll, "RTDIELECTRONALL", //! reducedpair::DeviationPairKF, reducedpair::DeviationxyPairKF, reducedpair::MassKFGeoTop, reducedpair::Chi2OverNDFKFGeoTop, reducedpair::Tauz, reducedpair::Tauxy, - reducedpair::Lz, - reducedpair::Lxy); + reducedpair::Lz, reducedpair::Lxy, + reducedpair::TauzCov, reducedpair::TauxyCov, + reducedpair::LzCov, reducedpair::LxyCov, + reducedpair::Chi2pca, reducedpair::CosPointingAngle); DECLARE_SOA_TABLE(DimuonsAll, "AOD", "RTDIMUONALL", //! collision::PosX, collision::PosY, collision::PosZ, collision::NumContrib, diff --git a/PWGDQ/Tasks/dqEfficiency.cxx b/PWGDQ/Tasks/dqEfficiency.cxx index 3f97216f52d..092acae35bc 100644 --- a/PWGDQ/Tasks/dqEfficiency.cxx +++ b/PWGDQ/Tasks/dqEfficiency.cxx @@ -832,7 +832,8 @@ struct AnalysisSameEventPairing { VarManager::fgValues[VarManager::kKFPairDeviationFromPV], VarManager::fgValues[VarManager::kKFPairDeviationxyFromPV], VarManager::fgValues[VarManager::kKFMassGeoTop], VarManager::fgValues[VarManager::kKFChi2OverNDFGeoTop], VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjected], - VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected]); + VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected], + VarManager::fgValues[VarManager::kVertexingLz], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingTauz], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingChi2PCA], VarManager::fgValues[VarManager::kCosPointingAngle]); } } } diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx index 5e01a01cda0..085e30db0ca 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx @@ -1865,7 +1865,8 @@ struct AnalysisSameEventPairing { VarManager::fgValues[VarManager::kKFPairDeviationFromPV], VarManager::fgValues[VarManager::kKFPairDeviationxyFromPV], VarManager::fgValues[VarManager::kKFMassGeoTop], VarManager::fgValues[VarManager::kKFChi2OverNDFGeoTop], VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjected], - VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected]); + VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected], + VarManager::fgValues[VarManager::kVertexingLz], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingTauz], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingChi2PCA], VarManager::fgValues[VarManager::kCosPointingAngle]); } } } diff --git a/PWGDQ/Tasks/tableReader.cxx b/PWGDQ/Tasks/tableReader.cxx index 2b35db2611c..39219cdf427 100644 --- a/PWGDQ/Tasks/tableReader.cxx +++ b/PWGDQ/Tasks/tableReader.cxx @@ -1501,7 +1501,8 @@ struct AnalysisSameEventPairing { VarManager::fgValues[VarManager::kKFTrack0DeviationFromPV], VarManager::fgValues[VarManager::kKFTrack1DeviationFromPV], VarManager::fgValues[VarManager::kKFTrack0DeviationxyFromPV], VarManager::fgValues[VarManager::kKFTrack1DeviationxyFromPV], VarManager::fgValues[VarManager::kKFMass], VarManager::fgValues[VarManager::kKFChi2OverNDFGeo], VarManager::fgValues[VarManager::kVertexingLxyz], VarManager::fgValues[VarManager::kVertexingLxyzOverErr], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingLxyOverErr], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingTauxyErr], VarManager::fgValues[VarManager::kKFCosPA], VarManager::fgValues[VarManager::kKFJpsiDCAxyz], VarManager::fgValues[VarManager::kKFJpsiDCAxy], VarManager::fgValues[VarManager::kKFPairDeviationFromPV], VarManager::fgValues[VarManager::kKFPairDeviationxyFromPV], - VarManager::fgValues[VarManager::kKFMassGeoTop], VarManager::fgValues[VarManager::kKFChi2OverNDFGeoTop], VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjected], VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected]); + VarManager::fgValues[VarManager::kKFMassGeoTop], VarManager::fgValues[VarManager::kKFChi2OverNDFGeoTop], VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjected], VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected], + VarManager::fgValues[VarManager::kVertexingLz], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingTauz], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingChi2PCA], VarManager::fgValues[VarManager::kCosPointingAngle]); } } if constexpr (TPairType == pairTypeMuMu) { diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index 5423591e7d9..a63b4c76246 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1828,7 +1828,8 @@ struct AnalysisSameEventPairing { VarManager::fgValues[VarManager::kKFMass], VarManager::fgValues[VarManager::kKFChi2OverNDFGeo], VarManager::fgValues[VarManager::kVertexingLxyz], VarManager::fgValues[VarManager::kVertexingLxyzOverErr], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingLxyOverErr], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingTauxyErr], VarManager::fgValues[VarManager::kKFCosPA], VarManager::fgValues[VarManager::kKFJpsiDCAxyz], VarManager::fgValues[VarManager::kKFJpsiDCAxy], VarManager::fgValues[VarManager::kKFPairDeviationFromPV], VarManager::fgValues[VarManager::kKFPairDeviationxyFromPV], VarManager::fgValues[VarManager::kKFMassGeoTop], - VarManager::fgValues[VarManager::kKFChi2OverNDFGeoTop], VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjected], VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected]); + VarManager::fgValues[VarManager::kKFChi2OverNDFGeoTop], VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjected], VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected], + VarManager::fgValues[VarManager::kVertexingLz], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingTauz], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingChi2PCA], VarManager::fgValues[VarManager::kCosPointingAngle]); } } } From 8c964f15e56002f8f39b697362e536e1576a62b0 Mon Sep 17 00:00:00 2001 From: Jseo Date: Wed, 5 Nov 2025 17:08:40 +0100 Subject: [PATCH 2/6] clang format --- PWGDQ/Core/VarManager.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index 01f993092ce..a645e4eea75 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -1230,15 +1230,15 @@ class VarManager : public TObject static float fgMagField; static float fgzMatching; - static float fgCenterOfMassEnergy; // collision energy - static float fgMassofCollidingParticle; // mass of the colliding particle - static float fgTPCInterSectorBoundary; // TPC inter-sector border size at the TPC outer radius, in cm - static int fgITSROFbias; // ITS ROF bias (from ALPIDE parameters) - static int fgITSROFlength; // ITS ROF length (from ALPIDE parameters) - static int fgITSROFBorderMarginLow; // ITS ROF border low margin - static int fgITSROFBorderMarginHigh; // ITS ROF border high margin - static uint64_t fgSOR; // Timestamp for start of run - static uint64_t fgEOR; // Timestamp for end of run + static float fgCenterOfMassEnergy; // collision energy + static float fgMassofCollidingParticle; // mass of the colliding particle + static float fgTPCInterSectorBoundary; // TPC inter-sector border size at the TPC outer radius, in cm + static int fgITSROFbias; // ITS ROF bias (from ALPIDE parameters) + static int fgITSROFlength; // ITS ROF length (from ALPIDE parameters) + static int fgITSROFBorderMarginLow; // ITS ROF border low margin + static int fgITSROFBorderMarginHigh; // ITS ROF border high margin + static uint64_t fgSOR; // Timestamp for start of run + static uint64_t fgEOR; // Timestamp for end of run static ROOT::Math::PxPyPzEVector fgBeamA; // beam from A-side 4-momentum vector static ROOT::Math::PxPyPzEVector fgBeamC; // beam from C-side 4-momentum vector From 6565b6c3d7a0a1926be0f1bcc070fb35f7c0f776 Mon Sep 17 00:00:00 2001 From: Jseo Date: Wed, 5 Nov 2025 17:19:26 +0100 Subject: [PATCH 3/6] correct miss ordering --- PWGDQ/Tasks/dqEfficiency.cxx | 2 +- PWGDQ/Tasks/dqEfficiency_withAssoc.cxx | 2 +- PWGDQ/Tasks/tableReader.cxx | 2 +- PWGDQ/Tasks/tableReader_withAssoc.cxx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PWGDQ/Tasks/dqEfficiency.cxx b/PWGDQ/Tasks/dqEfficiency.cxx index 092acae35bc..b09f9895930 100644 --- a/PWGDQ/Tasks/dqEfficiency.cxx +++ b/PWGDQ/Tasks/dqEfficiency.cxx @@ -833,7 +833,7 @@ struct AnalysisSameEventPairing { VarManager::fgValues[VarManager::kKFMassGeoTop], VarManager::fgValues[VarManager::kKFChi2OverNDFGeoTop], VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjected], VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected], - VarManager::fgValues[VarManager::kVertexingLz], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingTauz], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingChi2PCA], VarManager::fgValues[VarManager::kCosPointingAngle]); + VarManager::fgValues[VarManager::kVertexingTauz], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingLz], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingChi2PCA], VarManager::fgValues[VarManager::kCosPointingAngle]); } } } diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx index 085e30db0ca..6ce91c10972 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx @@ -1866,7 +1866,7 @@ struct AnalysisSameEventPairing { VarManager::fgValues[VarManager::kKFMassGeoTop], VarManager::fgValues[VarManager::kKFChi2OverNDFGeoTop], VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjected], VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected], - VarManager::fgValues[VarManager::kVertexingLz], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingTauz], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingChi2PCA], VarManager::fgValues[VarManager::kCosPointingAngle]); + VarManager::fgValues[VarManager::kVertexingTauz], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingLz], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingChi2PCA], VarManager::fgValues[VarManager::kCosPointingAngle]); } } } diff --git a/PWGDQ/Tasks/tableReader.cxx b/PWGDQ/Tasks/tableReader.cxx index 39219cdf427..8ae452871e4 100644 --- a/PWGDQ/Tasks/tableReader.cxx +++ b/PWGDQ/Tasks/tableReader.cxx @@ -1502,7 +1502,7 @@ struct AnalysisSameEventPairing { VarManager::fgValues[VarManager::kKFMass], VarManager::fgValues[VarManager::kKFChi2OverNDFGeo], VarManager::fgValues[VarManager::kVertexingLxyz], VarManager::fgValues[VarManager::kVertexingLxyzOverErr], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingLxyOverErr], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingTauxyErr], VarManager::fgValues[VarManager::kKFCosPA], VarManager::fgValues[VarManager::kKFJpsiDCAxyz], VarManager::fgValues[VarManager::kKFJpsiDCAxy], VarManager::fgValues[VarManager::kKFPairDeviationFromPV], VarManager::fgValues[VarManager::kKFPairDeviationxyFromPV], VarManager::fgValues[VarManager::kKFMassGeoTop], VarManager::fgValues[VarManager::kKFChi2OverNDFGeoTop], VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjected], VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected], - VarManager::fgValues[VarManager::kVertexingLz], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingTauz], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingChi2PCA], VarManager::fgValues[VarManager::kCosPointingAngle]); + VarManager::fgValues[VarManager::kVertexingTauz], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingLz], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingChi2PCA], VarManager::fgValues[VarManager::kCosPointingAngle]); } } if constexpr (TPairType == pairTypeMuMu) { diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index a63b4c76246..9aa4091b50a 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1829,7 +1829,7 @@ struct AnalysisSameEventPairing { VarManager::fgValues[VarManager::kKFPairDeviationFromPV], VarManager::fgValues[VarManager::kKFPairDeviationxyFromPV], VarManager::fgValues[VarManager::kKFMassGeoTop], VarManager::fgValues[VarManager::kKFChi2OverNDFGeoTop], VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjected], VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected], - VarManager::fgValues[VarManager::kVertexingLz], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingTauz], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingChi2PCA], VarManager::fgValues[VarManager::kCosPointingAngle]); + VarManager::fgValues[VarManager::kVertexingTauz], VarManager::fgValues[VarManager::kVertexingTauxy], VarManager::fgValues[VarManager::kVertexingLz], VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingChi2PCA], VarManager::fgValues[VarManager::kCosPointingAngle]); } } } From 3d049e8cad9dbe7cf84aefd9ac9fb07d47298fa8 Mon Sep 17 00:00:00 2001 From: Jseo Date: Thu, 6 Nov 2025 00:11:08 +0100 Subject: [PATCH 4/6] Add variables --- PWGJE/Core/JetDQUtilities.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/PWGJE/Core/JetDQUtilities.h b/PWGJE/Core/JetDQUtilities.h index fbca70b178d..f499d1a6cfe 100644 --- a/PWGJE/Core/JetDQUtilities.h +++ b/PWGJE/Core/JetDQUtilities.h @@ -347,7 +347,10 @@ void fillDielectronCandidateTable(T const& candidate, int32_t collisionIndex, U& candidate.pairDCAxyz(), candidate.pairDCAxy(), candidate.deviationPairKF(), candidate.deviationxyPairKF(), candidate.massKFGeoTop(), candidate.chi2overndfKFGeoTop(), - candidate.tauz(), candidate.tauxy(), candidate.lz(), candidate.lxy()); + candidate.tauz(), candidate.tauxy(), candidate.lz(), candidate.lxy(), + candidate.tauzCov(), candidate.tauxyCov(), candidate.lzCov(), candidate.lxyCov(), + + candidate.chi2pca(), candidate.cosPointingAngle()); } template From 871aa512382a7f8d9483f05a19af04c84c72cb78 Mon Sep 17 00:00:00 2001 From: Jseo Date: Fri, 7 Nov 2025 21:07:43 +0100 Subject: [PATCH 5/6] Add variables to DQMLResponse and init setup --- PWGDQ/Core/DQMlResponse.h | 60 +++++++++++++++++++++++++-- PWGDQ/Tasks/tableReader.cxx | 2 +- PWGDQ/Tasks/tableReader_withAssoc.cxx | 4 +- 3 files changed, 59 insertions(+), 7 deletions(-) diff --git a/PWGDQ/Core/DQMlResponse.h b/PWGDQ/Core/DQMlResponse.h index 64bfe233cc7..0e7d0c86b8a 100644 --- a/PWGDQ/Core/DQMlResponse.h +++ b/PWGDQ/Core/DQMlResponse.h @@ -27,7 +27,7 @@ namespace o2::analysis { -enum class InputFeatures : uint8_t { // refer to DielectronsAll, TODO: add more features if needed +enum class InputFeatures : uint8_t { // refer to DielectronsAll kMass = 0, kPt, kEta, @@ -57,7 +57,17 @@ enum class InputFeatures : uint8_t { // refer to DielectronsAll, TODO: add more kTPCNSigmaPr2, kTOFNSigmaEl2, kTOFNSigmaPi2, - kTOFNSigmaPr2 + kTOFNSigmaPr2, + kTauz, + kTauxy, + kLz, + kLxy, + kTauzCov, + kTauxyCov, + kLzCov, + kLxyCov, + kChi2pca, + kCosPointingAngle }; static const std::map gFeatureNameMap = { @@ -90,7 +100,18 @@ static const std::map gFeatureNameMap = { {InputFeatures::kTPCNSigmaPr2, "kTPCNSigmaPr2"}, {InputFeatures::kTOFNSigmaEl2, "kTOFNSigmaEl2"}, {InputFeatures::kTOFNSigmaPi2, "kTOFNSigmaPi2"}, - {InputFeatures::kTOFNSigmaPr2, "kTOFNSigmaPr2"}}; + {InputFeatures::kTOFNSigmaPr2, "kTOFNSigmaPr2"}, + {InputFeatures::kTauz, "kTauz"}, + {InputFeatures::kTauxy, "kTauxy"}, + {InputFeatures::kLz, "kLz"}, + {InputFeatures::kLxy, "kLxy"}, + {InputFeatures::kTauzCov, "kTauzCov"}, + {InputFeatures::kTauxyCov, "kTauxyCov"}, + {InputFeatures::kLzCov, "kLzCov"}, + {InputFeatures::kLxyCov, "kLxyCov"}, + {InputFeatures::kChi2pca, "kChi2pca"}, + {InputFeatures::kCosPointingAngle, "kCosPointingAngle"} +}; template class DQMlResponse : public MlResponse @@ -185,6 +206,26 @@ class DQMlResponse : public MlResponse dqInputFeatures.push_back(t2.tofNSigmaPi()); } else if (name == "kTOFNSigmaPr2") { dqInputFeatures.push_back(t2.tofNSigmaPr()); + } else if (name == "kTauz") { + dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kVertexingTauzProjected"]]); + } else if (name == "kTauxy") { + dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kVertexingTauxyProjected"]]); + } else if (name == "kLz") { + dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kVertexingLzProjected"]]); + } else if (name == "kLxy") { + dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kVertexingLxyProjected"]]); + } else if (name == "kTauzCov") { + dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kVertexingTauz"]]); + } else if (name == "kTauxyCov") { + dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kVertexingTauxy"]]); + } else if (name == "kLzCov") { + dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kVertexingLz"]]); + } else if (name == "kLxyCov") { + dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kVertexingLxy"]]); + } else if (name == "kChi2pca") { + dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kVertexingChi2PCA"]]); + } else if (name == "kCosPointingAngle") { + dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kCosPointingAngle"]]); } else { LOG(fatal) << "Missing accessor for feature: " << name; } @@ -230,7 +271,18 @@ class DQMlResponse : public MlResponse {"kTPCNSigmaPr2", static_cast(InputFeatures::kTPCNSigmaPr2)}, {"kTOFNSigmaEl2", static_cast(InputFeatures::kTOFNSigmaEl2)}, {"kTOFNSigmaPi2", static_cast(InputFeatures::kTOFNSigmaPi2)}, - {"kTOFNSigmaPr2", static_cast(InputFeatures::kTOFNSigmaPr2)}}; + {"kTOFNSigmaPr2", static_cast(InputFeatures::kTOFNSigmaPr2)}, + {"kTauz", static_cast(InputFeatures::kTauz)}, + {"kTauxy", static_cast(InputFeatures::kTauxy)}, + {"kLz", static_cast(InputFeatures::kLz)}, + {"kLxy", static_cast(InputFeatures::kLxy)}, + {"kTauzCov", static_cast(InputFeatures::kTauzCov)}, + {"kTauxyCov", static_cast(InputFeatures::kTauxyCov)}, + {"kLzCov", static_cast(InputFeatures::kLzCov)}, + {"kLxyCov", static_cast(InputFeatures::kLxyCov)}, + {"kChi2pca", static_cast(InputFeatures::kChi2pca)}, + {"kCosPointingAngle", static_cast(InputFeatures::kCosPointingAngle)} + }; } }; diff --git a/PWGDQ/Tasks/tableReader.cxx b/PWGDQ/Tasks/tableReader.cxx index 8ae452871e4..b900c69c7f4 100644 --- a/PWGDQ/Tasks/tableReader.cxx +++ b/PWGDQ/Tasks/tableReader.cxx @@ -1177,7 +1177,7 @@ struct AnalysisSameEventPairing { fDQMlResponse.setModelPathsLocal(onnxFileNames); } fDQMlResponse.cacheInputFeaturesIndices(namesInputFeatures); - fDQMlResponse.init(); + fDQMlResponse.init(false, 1); } if (context.mOptions.get("processDecayToEESkimmed") || context.mOptions.get("processDecayToEESkimmedNoTwoProngFitter") || context.mOptions.get("processDecayToEESkimmedWithCov") || context.mOptions.get("processDecayToEESkimmedWithCovNoTwoProngFitter") || context.mOptions.get("processDecayToEEVertexingSkimmed") || context.mOptions.get("processVnDecayToEESkimmed") || context.mOptions.get("processDecayToEEPrefilterSkimmed") || context.mOptions.get("processDecayToEEPrefilterSkimmedNoTwoProngFitter") || context.mOptions.get("processDecayToEESkimmedWithColl") || context.mOptions.get("processDecayToEESkimmedWithCollNoTwoProngFitter") || context.mOptions.get("processDecayToPiPiSkimmed") || context.mOptions.get("processAllSkimmed")) { diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index 9aa4091b50a..e79de616072 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1396,7 +1396,7 @@ struct AnalysisSameEventPairing { fDQMlResponse.setModelPathsLocal(onnxFileNames); } fDQMlResponse.cacheInputFeaturesIndices(namesInputFeatures); - fDQMlResponse.init(); + fDQMlResponse.init(false, 1); } // get the barrel track selection cuts @@ -1811,7 +1811,7 @@ struct AnalysisSameEventPairing { continue; } - LOG(debug) << "Model index: " << modelIndex << ", pT: " << VarManager::fgValues[VarManager::kPt] << ", centrality (kCentFT0C): " << VarManager::fgValues[VarManager::kCentFT0C]; + //LOG(info) << "Model index: " << modelIndex << ", pT: " << VarManager::fgValues[VarManager::kPt] << ", centrality (kCentFT0C): " << VarManager::fgValues[VarManager::kCentFT0C]; isSelectedBDT = fDQMlResponse.isSelectedMl(dqInputFeatures, modelIndex, fOutputMlPsi2ee); VarManager::FillBdtScore(fOutputMlPsi2ee); // TODO: check if this is needed or not } From 7958ab2ac36c1f1f02d551f0331c87f9586a3064 Mon Sep 17 00:00:00 2001 From: Jseo Date: Fri, 7 Nov 2025 21:15:07 +0100 Subject: [PATCH 6/6] clang format --- PWGDQ/Core/DQMlResponse.h | 10 ++++------ PWGDQ/Tasks/tableReader_withAssoc.cxx | 2 +- PWGJE/Core/JetDQUtilities.h | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/PWGDQ/Core/DQMlResponse.h b/PWGDQ/Core/DQMlResponse.h index 0e7d0c86b8a..701d6d42313 100644 --- a/PWGDQ/Core/DQMlResponse.h +++ b/PWGDQ/Core/DQMlResponse.h @@ -110,8 +110,7 @@ static const std::map gFeatureNameMap = { {InputFeatures::kLzCov, "kLzCov"}, {InputFeatures::kLxyCov, "kLxyCov"}, {InputFeatures::kChi2pca, "kChi2pca"}, - {InputFeatures::kCosPointingAngle, "kCosPointingAngle"} -}; + {InputFeatures::kCosPointingAngle, "kCosPointingAngle"}}; template class DQMlResponse : public MlResponse @@ -223,9 +222,9 @@ class DQMlResponse : public MlResponse } else if (name == "kLxyCov") { dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kVertexingLxy"]]); } else if (name == "kChi2pca") { - dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kVertexingChi2PCA"]]); + dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kVertexingChi2PCA"]]); } else if (name == "kCosPointingAngle") { - dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kCosPointingAngle"]]); + dqInputFeatures.push_back(fg[VarManager::fgVarNamesMap["kCosPointingAngle"]]); } else { LOG(fatal) << "Missing accessor for feature: " << name; } @@ -281,8 +280,7 @@ class DQMlResponse : public MlResponse {"kLzCov", static_cast(InputFeatures::kLzCov)}, {"kLxyCov", static_cast(InputFeatures::kLxyCov)}, {"kChi2pca", static_cast(InputFeatures::kChi2pca)}, - {"kCosPointingAngle", static_cast(InputFeatures::kCosPointingAngle)} - }; + {"kCosPointingAngle", static_cast(InputFeatures::kCosPointingAngle)}}; } }; diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index e79de616072..ac060539c71 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1811,7 +1811,7 @@ struct AnalysisSameEventPairing { continue; } - //LOG(info) << "Model index: " << modelIndex << ", pT: " << VarManager::fgValues[VarManager::kPt] << ", centrality (kCentFT0C): " << VarManager::fgValues[VarManager::kCentFT0C]; + // LOG(info) << "Model index: " << modelIndex << ", pT: " << VarManager::fgValues[VarManager::kPt] << ", centrality (kCentFT0C): " << VarManager::fgValues[VarManager::kCentFT0C]; isSelectedBDT = fDQMlResponse.isSelectedMl(dqInputFeatures, modelIndex, fOutputMlPsi2ee); VarManager::FillBdtScore(fOutputMlPsi2ee); // TODO: check if this is needed or not } diff --git a/PWGJE/Core/JetDQUtilities.h b/PWGJE/Core/JetDQUtilities.h index f499d1a6cfe..409d6dfebf8 100644 --- a/PWGJE/Core/JetDQUtilities.h +++ b/PWGJE/Core/JetDQUtilities.h @@ -349,7 +349,7 @@ void fillDielectronCandidateTable(T const& candidate, int32_t collisionIndex, U& candidate.massKFGeoTop(), candidate.chi2overndfKFGeoTop(), candidate.tauz(), candidate.tauxy(), candidate.lz(), candidate.lxy(), candidate.tauzCov(), candidate.tauxyCov(), candidate.lzCov(), candidate.lxyCov(), - + candidate.chi2pca(), candidate.cosPointingAngle()); }