diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx index 5978d75dad7..60c4df861c2 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx @@ -184,20 +184,20 @@ DECLARE_SOA_COLUMN(AmbiguousInBunchPairs, AmbiguousJpsiPairsInBunch, bool); DECLARE_SOA_COLUMN(AmbiguousOutOfBunchPairs, AmbiguousJpsiPairsOutOfBunch, bool); DECLARE_SOA_COLUMN(Corrassoc, corrassoc, bool); // Additional columns for prompt-non-prompt JPsi separation (BDT training), identical to tableReader_withAssoc -DECLARE_SOA_COLUMN(PairFilter, pairFilter, uint32_t); //! twoTrackFilter (cut bits + ambiguity bits 28-31) -DECLARE_SOA_COLUMN(McDecision, mcDecision, uint32_t); //! MC signal bits, 0 in data -DECLARE_SOA_COLUMN(TauxyeeErr, tauxyeeErr, float); //! kVertexingTauxyErr: in ns (not cm) and with the reconstructed mass -DECLARE_SOA_COLUMN(TauzeeErr, tauzeeErr, float); //! kVertexingTauzErr: in ns (not cm) and with the reconstructed mass -DECLARE_SOA_COLUMN(LxyeeProjected, lxyeeProjected, float); //! kVertexingLxyProjected -DECLARE_SOA_COLUMN(LxyeeOverErr, lxyeeOverErr, float); //! kVertexingLxy / kVertexingLxyErr (computed in the task) -DECLARE_SOA_COLUMN(Lxyzee, lxyzee, float); //! kVertexingLxyz -DECLARE_SOA_COLUMN(LxyzeeOverErr, lxyzeeOverErr, float); //! kVertexingLxyz / kVertexingLxyzErr (computed in the task) -DECLARE_SOA_COLUMN(Chi2PCAee, chi2PCAee, float); //! kVertexingChi2PCA -DECLARE_SOA_COLUMN(CosPAee, cosPAee, float); //! kCosPointingAngle -DECLARE_SOA_COLUMN(DcaSigXY1, dcaSigXY1, float); //! leg-1 DCAxy / sqrt(cYY), computed in the task -DECLARE_SOA_COLUMN(DcaSigZ1, dcaSigZ1, float); //! leg-1 DCAz / sqrt(cZZ), computed in the task -DECLARE_SOA_COLUMN(DcaSigXY2, dcaSigXY2, float); //! leg-2 DCAxy / sqrt(cYY), computed in the task -DECLARE_SOA_COLUMN(DcaSigZ2, dcaSigZ2, float); //! leg-2 DCAz / sqrt(cZZ), computed in the task +DECLARE_SOA_COLUMN(PairFilter, pairFilter, uint32_t); //! twoTrackFilter (cut bits + ambiguity bits 28-31) +DECLARE_SOA_COLUMN(McDecision, mcDecision, uint32_t); //! MC signal bits, 0 in data +DECLARE_SOA_COLUMN(TauxyeeErr, tauxyeeErr, float); //! kVertexingTauxyErr: in ns (not cm) and with the reconstructed mass +DECLARE_SOA_COLUMN(TauzeeErr, tauzeeErr, float); //! kVertexingTauzErr: in ns (not cm) and with the reconstructed mass +DECLARE_SOA_COLUMN(LxyeeProjected, lxyeeProjected, float); //! kVertexingLxyProjected +DECLARE_SOA_COLUMN(LxyeeOverErr, lxyeeOverErr, float); //! kVertexingLxy / kVertexingLxyErr (computed in the task) +DECLARE_SOA_COLUMN(Lxyzee, lxyzee, float); //! kVertexingLxyz +DECLARE_SOA_COLUMN(LxyzeeOverErr, lxyzeeOverErr, float); //! kVertexingLxyz / kVertexingLxyzErr (computed in the task) +DECLARE_SOA_COLUMN(Chi2PCAee, chi2PCAee, float); //! kVertexingChi2PCA +DECLARE_SOA_COLUMN(CosPAee, cosPAee, float); //! kCosPointingAngle +DECLARE_SOA_COLUMN(DcaSigXY1, dcaSigXY1, float); //! leg-1 DCAxy / sqrt(cYY), computed in the task +DECLARE_SOA_COLUMN(DcaSigZ1, dcaSigZ1, float); //! leg-1 DCAz / sqrt(cZZ), computed in the task +DECLARE_SOA_COLUMN(DcaSigXY2, dcaSigXY2, float); //! leg-2 DCAxy / sqrt(cYY), computed in the task +DECLARE_SOA_COLUMN(DcaSigZ2, dcaSigZ2, float); //! leg-2 DCAz / sqrt(cZZ), computed in the task DECLARE_SOA_COLUMN(DeltaEta, deltaEta, float); DECLARE_SOA_COLUMN(DeltaPhi, deltaPhi, float); // Candidate columns efficiency calculation for prompt-non-prompt JPsi separation diff --git a/PWGDQ/Tasks/tableReader_withAssoc.h b/PWGDQ/Tasks/tableReader_withAssoc.h index f0fc0344e4b..52098843a82 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.h +++ b/PWGDQ/Tasks/tableReader_withAssoc.h @@ -180,23 +180,22 @@ DECLARE_SOA_COLUMN(PercentileFT0C, percentileFT0CJPsi2ee, float); DECLARE_SOA_COLUMN(MultiplicityNContrib, multiplicityNContribJPsi2ee, float); // Additional columns for prompt-non-prompt JPsi separation (BDT training) -DECLARE_SOA_COLUMN(PairSign, pairSign, int8_t); //! t1.sign() + t2.sign() -DECLARE_SOA_COLUMN(PairFilter, pairFilter, uint32_t); //! twoTrackFilter (cut bits + ambiguity bits 28-31) -DECLARE_SOA_COLUMN(McDecision, mcDecision, uint32_t); //! MC signal bits, 0 in data -DECLARE_SOA_COLUMN(Corrassoc, corrassoc, bool); //! correct collision association (MC only, true in data) -DECLARE_SOA_COLUMN(TauxyeeErr, tauxyeeErr, float); //! kVertexingTauxyErr: in ns (not cm) and with the reconstructed mass -DECLARE_SOA_COLUMN(TauzeeErr, tauzeeErr, float); //! kVertexingTauzErr: in ns (not cm) and with the reconstructed mass -DECLARE_SOA_COLUMN(LxyeeProjected, lxyeeProjected, float); //! kVertexingLxyProjected -DECLARE_SOA_COLUMN(LxyeeOverErr, lxyeeOverErr, float); //! kVertexingLxy / kVertexingLxyErr (computed in the task) -DECLARE_SOA_COLUMN(Lxyzee, lxyzee, float); //! kVertexingLxyz -DECLARE_SOA_COLUMN(LxyzeeOverErr, lxyzeeOverErr, float); //! kVertexingLxyz / kVertexingLxyzErr (computed in the task) -DECLARE_SOA_COLUMN(Chi2PCAee, chi2PCAee, float); //! kVertexingChi2PCA -DECLARE_SOA_COLUMN(CosPAee, cosPAee, float); //! kCosPointingAngle -DECLARE_SOA_COLUMN(DcaSigXY1, dcaSigXY1, float); //! leg-1 DCAxy / sqrt(cYY), computed in the task -DECLARE_SOA_COLUMN(DcaSigZ1, dcaSigZ1, float); //! leg-1 DCAz / sqrt(cZZ), computed in the task -DECLARE_SOA_COLUMN(DcaSigXY2, dcaSigXY2, float); //! leg-2 DCAxy / sqrt(cYY), computed in the task -DECLARE_SOA_COLUMN(DcaSigZ2, dcaSigZ2, float); //! leg-2 DCAz / sqrt(cZZ), computed in the task - +DECLARE_SOA_COLUMN(PairSign, pairSign, int8_t); //! t1.sign() + t2.sign() +DECLARE_SOA_COLUMN(PairFilter, pairFilter, uint32_t); //! twoTrackFilter (cut bits + ambiguity bits 28-31) +DECLARE_SOA_COLUMN(McDecision, mcDecision, uint32_t); //! MC signal bits, 0 in data +DECLARE_SOA_COLUMN(Corrassoc, corrassoc, bool); //! correct collision association (MC only, true in data) +DECLARE_SOA_COLUMN(TauxyeeErr, tauxyeeErr, float); //! kVertexingTauxyErr: in ns (not cm) and with the reconstructed mass +DECLARE_SOA_COLUMN(TauzeeErr, tauzeeErr, float); //! kVertexingTauzErr: in ns (not cm) and with the reconstructed mass +DECLARE_SOA_COLUMN(LxyeeProjected, lxyeeProjected, float); //! kVertexingLxyProjected +DECLARE_SOA_COLUMN(LxyeeOverErr, lxyeeOverErr, float); //! kVertexingLxy / kVertexingLxyErr (computed in the task) +DECLARE_SOA_COLUMN(Lxyzee, lxyzee, float); //! kVertexingLxyz +DECLARE_SOA_COLUMN(LxyzeeOverErr, lxyzeeOverErr, float); //! kVertexingLxyz / kVertexingLxyzErr (computed in the task) +DECLARE_SOA_COLUMN(Chi2PCAee, chi2PCAee, float); //! kVertexingChi2PCA +DECLARE_SOA_COLUMN(CosPAee, cosPAee, float); //! kCosPointingAngle +DECLARE_SOA_COLUMN(DcaSigXY1, dcaSigXY1, float); //! leg-1 DCAxy / sqrt(cYY), computed in the task +DECLARE_SOA_COLUMN(DcaSigZ1, dcaSigZ1, float); //! leg-1 DCAz / sqrt(cZZ), computed in the task +DECLARE_SOA_COLUMN(DcaSigXY2, dcaSigXY2, float); //! leg-2 DCAxy / sqrt(cYY), computed in the task +DECLARE_SOA_COLUMN(DcaSigZ2, dcaSigZ2, float); //! leg-2 DCAz / sqrt(cZZ), computed in the task // Candidate columns for JPsi/muon correlations DECLARE_SOA_COLUMN(DeltaEta, deltaEta, float); @@ -2200,7 +2199,7 @@ struct AnalysisSameEventPairing { // projected / pseudo-proper / pointing-angle variables, so they would be stale -> skip the pair const bool vertexingOK = VarManager::fgValues[VarManager::kVertexingProcCode] > 0; if (t1.sign() * t2.sign() < 0 && vertexingOK) { - + // track DCA significances (DCA w.r.t. the collision the track was stored with, as kDCAxy1/kDCAz1) auto dcaSig = [](float dca, float cov) -> float { return cov > 0.f ? dca / std::sqrt(cov) : -999.f; @@ -2209,7 +2208,7 @@ struct AnalysisSameEventPairing { const float dcaSigZ1 = dcaSig(VarManager::fgValues[VarManager::kDCAz1], t1.cZZ()); const float dcaSigXY2 = dcaSig(VarManager::fgValues[VarManager::kDCAxy2], t2.cYY()); const float dcaSigZ2 = dcaSig(VarManager::fgValues[VarManager::kDCAz2], t2.cZZ()); - + // decay-length significances: kVertexingLxyOverErr / kVertexingLxyzOverErr are only filled in the // KFParticle branch of FillPairVertexing, not with the DCAFitter used here -> compute them explicitly auto ratio = [](float num, float den) -> float { @@ -2218,19 +2217,19 @@ struct AnalysisSameEventPairing { const float lxyOverErr = ratio(VarManager::fgValues[VarManager::kVertexingLxy], VarManager::fgValues[VarManager::kVertexingLxyErr]); const float lxyzOverErr = ratio(VarManager::fgValues[VarManager::kVertexingLxyz], VarManager::fgValues[VarManager::kVertexingLxyzErr]); - PromptNonPromptSepTable(twoTrackFilter, dileptonMcDecision, - VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt], VarManager::fgValues[VarManager::kEta], VarManager::fgValues[VarManager::kRap], VarManager::fgValues[VarManager::kPhi], - VarManager::fgValues[VarManager::kVertexingTauxyProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjectedPoleJPsiMass], VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjectedPoleJPsiMassRecalculatePV], - VarManager::fgValues[VarManager::kVertexingTauxyErr], VarManager::fgValues[VarManager::kVertexingTauzErr], - VarManager::fgValues[VarManager::kVertexingLxyProjected], lxyOverErr, VarManager::fgValues[VarManager::kVertexingLxyz], lxyzOverErr, - VarManager::fgValues[VarManager::kVertexingChi2PCA], VarManager::fgValues[VarManager::kCosPointingAngle], - VarManager::fgValues[VarManager::kVtxX], VarManager::fgValues[VarManager::kVtxY], VarManager::fgValues[VarManager::kVtxZ], - t1.pt(), t1.eta(), VarManager::fgValues[VarManager::kDCAxy1], VarManager::fgValues[VarManager::kDCAz1], dcaSigXY1, dcaSigZ1, - VarManager::fgValues[VarManager::kITSclusterMap1], t1.itsChi2NCl(), - t2.pt(), t2.eta(), VarManager::fgValues[VarManager::kDCAxy2], VarManager::fgValues[VarManager::kDCAz2], dcaSigXY2, dcaSigZ2, - VarManager::fgValues[VarManager::kITSclusterMap2], t2.itsChi2NCl(), - ambiInBunch, ambiOutOfBunch, true, - VarManager::fgValues[VarManager::kMultFT0C], VarManager::fgValues[VarManager::kCentFT0C], VarManager::fgValues[VarManager::kVtxNcontribReal]); + PromptNonPromptSepTable(twoTrackFilter, dileptonMcDecision, + VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt], VarManager::fgValues[VarManager::kEta], VarManager::fgValues[VarManager::kRap], VarManager::fgValues[VarManager::kPhi], + VarManager::fgValues[VarManager::kVertexingTauxyProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjectedPoleJPsiMass], VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjectedPoleJPsiMassRecalculatePV], + VarManager::fgValues[VarManager::kVertexingTauxyErr], VarManager::fgValues[VarManager::kVertexingTauzErr], + VarManager::fgValues[VarManager::kVertexingLxyProjected], lxyOverErr, VarManager::fgValues[VarManager::kVertexingLxyz], lxyzOverErr, + VarManager::fgValues[VarManager::kVertexingChi2PCA], VarManager::fgValues[VarManager::kCosPointingAngle], + VarManager::fgValues[VarManager::kVtxX], VarManager::fgValues[VarManager::kVtxY], VarManager::fgValues[VarManager::kVtxZ], + t1.pt(), t1.eta(), VarManager::fgValues[VarManager::kDCAxy1], VarManager::fgValues[VarManager::kDCAz1], dcaSigXY1, dcaSigZ1, + VarManager::fgValues[VarManager::kITSclusterMap1], t1.itsChi2NCl(), + t2.pt(), t2.eta(), VarManager::fgValues[VarManager::kDCAxy2], VarManager::fgValues[VarManager::kDCAz2], dcaSigXY2, dcaSigZ2, + VarManager::fgValues[VarManager::kITSclusterMap2], t2.itsChi2NCl(), + ambiInBunch, ambiOutOfBunch, true, + VarManager::fgValues[VarManager::kMultFT0C], VarManager::fgValues[VarManager::kCentFT0C], VarManager::fgValues[VarManager::kVtxNcontribReal]); } } }