diff --git a/algo/ca/qa/CaQa.cxx b/algo/ca/qa/CaQa.cxx index 8d081862c78d399aca6ec01d0dda38e432517185..b921d16813e9bae3f93e871810e3ea04c4272400 100644 --- a/algo/ca/qa/CaQa.cxx +++ b/algo/ca/qa/CaQa.cxx @@ -216,6 +216,11 @@ void Qa::Init() auto sTitl = "First vs. last station index;ID^{last}_{station};ID^{first}_{station}"; fphTrkFstLstSta = MakeObj<H2D>(sName, sTitl, nBins, xMin, xMax, nBins, xMin, xMax); } + { + auto sName = format("{}_track_origin", GetTaskName()); + auto sTitl = "Track origin;x [cm];y [cm]"; + fphTrkOriginXY = MakeObj<H2D>(sName, sTitl, kOriginB, kOriginL, kOriginU, kOriginB, kOriginL, kOriginU); + } fphTrkNofHits = MakeObj<H1D>("n_hits", "Number of hits;N_{hit}", nBins, xMin, xMax); } @@ -231,7 +236,7 @@ void Qa::Init() auto titl = format("{} hit occupancy in different stations in XY plane", setNm); auto canv = CanvasConfig(name, titl); for (int iSt = 0; iSt < nSt; ++iSt) { - auto pad = PadConfig(); + auto pad = PadConfig(false, false, false, false, true); pad.RegisterHistogram(fvphHitOccupXY[iSt][hitSet], "colz"); canv.AddPadConfig(pad); } @@ -294,6 +299,11 @@ void Qa::Init() pad.RegisterHistogram(fphTrkFstLstSta, "colz"); canv.AddPadConfig(pad); } + { + auto pad = PadConfig(true, true, false, false, false); + pad.RegisterHistogram(fphTrkOriginXY, "colz"); + canv.AddPadConfig(pad); + } AddCanvasConfig(canv); } } @@ -371,6 +381,7 @@ void Qa::Exec() // Other distributions fphTrkFstLstSta->Fill(fpInputData->GetHit(iLstHit).Station(), fpInputData->GetHit(iFstHit).Station()); fphTrkNofHits->Fill(nHits); + fphTrkOriginXY->Fill(track.fParPV.X(), track.fParPV.Y()); trkFirstHit += nHits; } } diff --git a/algo/ca/qa/CaQa.h b/algo/ca/qa/CaQa.h index 1c42b60562f19c5adf5274c045971fe9bda330bf..ae3658a64971a9d98609d61b5ae28e3d61ab185d 100644 --- a/algo/ca/qa/CaQa.h +++ b/algo/ca/qa/CaQa.h @@ -117,6 +117,9 @@ namespace cbm::algo::ca static constexpr int knTrkParPoints = 2; ///< Number of track points to build par distributions static constexpr int knStaMax = 16; ///< Max number of stations (histogram binning) static constexpr bool kDebug = false; ///< Additional histograms + static constexpr int kOriginB = 100; ///< Track X(Y) at origin: n bins + static constexpr double kOriginL = -10.; ///< Track X(Y) at origin: lower bound [cm] + static constexpr double kOriginU = +10.; ///< Track X(Y) at origin: upper bound [cm] double fMinHitTime = std::numeric_limits<double>::max(); double fMaxHitTime = std::numeric_limits<double>::lowest(); @@ -145,6 +148,7 @@ namespace cbm::algo::ca std::array<qa::H1D*, knTrkParPoints> fvphTrkChi2Ndf = {{0}}; ///< hist: chi2/NDF at first/last hit std::array<qa::H2D*, knTrkParPoints> fvphTrkPhiTheta = {{0}}; ///< hist: theta vs. phi at first/last hit + qa::H2D* fphTrkOriginXY = nullptr; ///< hist: origin of tracks in x-y plane [cm] qa::H2D* fphTrkFstLstSta = nullptr; ///< hist: fst vs lst station index qa::H1D* fphTrkNofHits = nullptr; ///< hist: number of hits in track }; diff --git a/algo/kfp/KfpV0Finder.cxx b/algo/kfp/KfpV0Finder.cxx index c95965bc847347caccc52b1bcf23a0eaeda8fd92..820078945d3ffd25eb18256e3077899c35d47432 100644 --- a/algo/kfp/KfpV0Finder.cxx +++ b/algo/kfp/KfpV0Finder.cxx @@ -80,7 +80,7 @@ void V0Finder::AssignPid(ParticleInfo& particleInfo) // primary //particleInfo.fPdg = fPrimaryAssignedPdg; particleInfo.fPdg = kUndefPdg; - fEventMonitor.IncrementCounter(ECounter::TracksWoPid); + fEventMonitor.IncrementCounter(ECounter::PrimaryDca); } } diff --git a/algo/kfp/KfpV0FinderMonitor.h b/algo/kfp/KfpV0FinderMonitor.h index d60d5b135478e2e6d379a26b69e8755d9b2bd96b..3f3b68ef6af1b548eb85cbb8c771caac3a93f51e 100644 --- a/algo/kfp/KfpV0FinderMonitor.h +++ b/algo/kfp/KfpV0FinderMonitor.h @@ -28,6 +28,7 @@ namespace cbm::algo::kfp TracksWUnphysicalBeta, ///< Tracks with beta > 1 PionsDca, ///< Number of raw pion-candidates ProtonsDca, ///< Number of raw proton-candidates + PrimaryDca, ///< Number of raw proton-candidates Pions, ///< Number of pion-candidates Protons, ///< Number of proton-candidates EventsTotal, ///< Total number of events @@ -76,6 +77,7 @@ namespace cbm::algo::kfp SetCounterName(ECounter::TracksWUnphysicalBeta, "tracks w/ beta > 1"); SetCounterName(ECounter::PionsDca, "raw pion candidates"); SetCounterName(ECounter::ProtonsDca, "raw proton candidates"); + SetCounterName(ECounter::PrimaryDca, "number of primary particles"); SetCounterName(ECounter::Pions, "pion candidates"); SetCounterName(ECounter::Protons, "proton candidates"); SetCounterName(ECounter::EventsTotal, "all events"); diff --git a/algo/kfp/KfpV0FinderQa.cxx b/algo/kfp/KfpV0FinderQa.cxx index ffc903e2a2dcc2c12efa06b4bda11db6db29ffb9..703f067f93cf0b2a81c440817a55d9feac6fe7ea 100644 --- a/algo/kfp/KfpV0FinderQa.cxx +++ b/algo/kfp/KfpV0FinderQa.cxx @@ -57,7 +57,8 @@ void V0FinderQa::Exec(const RecoResults& recoEvent, const V0Finder& v0Finder) const auto& particleInfo{v0Finder.GetParticleInfo()[iTrk]}; const auto& trkParFst{(v0Finder.GetTrackAssignedParams()[iTrk]).first}; bool bPdgDefined = (particleInfo.fPdg != V0Finder::kUndefPdg); - fvphDcaAll->Fill(bPdgDefined ? particleInfo.fDca : -999); + // All particles with defined DCA (primaries + secondary pions and protons) + fvphDcaAll->Fill(std::isnan(particleInfo.fDca) ? -999 : particleInfo.fDca); fvphBetaAll->Fill(particleInfo.fBeta); if (bPdgDefined) { if (particleInfo.fPdg == -211) { @@ -75,15 +76,15 @@ void V0FinderQa::Exec(const RecoResults& recoEvent, const V0Finder& v0Finder) for (uint32_t iTrk = 0; iTrk < tracks.size(); ++iTrk) { const auto& particleInfo{v0Finder.GetParticleInfo()[iTrk]}; bool bPdgDefined = (particleInfo.fPdg != V0Finder::kUndefPdg); - fvphDcaAll->Fill(bPdgDefined ? particleInfo.fDca : -999); - fvphBetaAll->Fill(-999); + fvphDcaAll->Fill(std::isnan(particleInfo.fDca) ? -999 : particleInfo.fDca); + fvphBetaAll->Fill(-9999); if (bPdgDefined) { if (particleInfo.fPdg == -211) { - fvphBetaPion->Fill(-999); - fvphMomPion->Fill(-999); + fvphBetaPion->Fill(-9999); + fvphMomPion->Fill(-9999); } else if (particleInfo.fPdg == 2212) { - fvphBetaProton->Fill(-999); + fvphBetaProton->Fill(-9999); } } } diff --git a/algo/qa/hitfind/TofHitfindQaParameters.cxx b/algo/qa/hitfind/TofHitfindQaParameters.cxx index 95251731a1d02cc2295b220acbc797d872c847fe..3cb2f35b8cef672094e082cf4de445612f65f44b 100644 --- a/algo/qa/hitfind/TofHitfindQaParameters.cxx +++ b/algo/qa/hitfind/TofHitfindQaParameters.cxx @@ -29,10 +29,10 @@ HitfindQaParameters::HitfindQaParameters(const HitfindSetup& hitSetup) auto& rpcPar = rpcs.emplace_back(); rpcPar.address = address; rpcPar.chAddresses.resize(rpc.chanPar.size()); - L_(info) << "RPC: " << CbmTofAddress::ToString(address); + L_(debug) << "RPC: " << CbmTofAddress::ToString(address); for (int iCh = 0; iCh < rpcPar.chAddresses.size(); ++iCh) { rpcPar.chAddresses[iCh] = rpc.chanPar[iCh].address; - L_(info) << "----> ch: " << CbmTofAddress::ToString(rpcPar.chAddresses[iCh]); + L_(debug) << "----> ch: " << CbmTofAddress::ToString(rpcPar.chAddresses[iCh]); } iUniqueRpcId++; } diff --git a/algo/qa/trigger/V0TriggerQa.h b/algo/qa/trigger/V0TriggerQa.h index 6f1aa13dc6e4ee8b27a483954ae87c5f602bf7ed..fff885f86fea36430e70ac8a51446c3577833035 100644 --- a/algo/qa/trigger/V0TriggerQa.h +++ b/algo/qa/trigger/V0TriggerQa.h @@ -56,9 +56,9 @@ namespace cbm::algo::evbuild static constexpr int kPairZVertexB{120}; ///< Track pair z vertex: n bins static constexpr double kPairZVertexL{-60.}; ///< Track pair z vertex: lower bound [cm] static constexpr double kPairZVertexU{+60.}; ///< Track pair z vertex: upper bound [cm] - static constexpr int kPairDcaB{100}; ///< Track pair DCA: n bins - static constexpr double kPairDcaL{-2.}; ///< Track pair DCA: lower bound [cm] - static constexpr double kPairDcaU{+2.}; ///< Track pair DCA: upper bound [cm] + static constexpr int kPairDcaB{300}; ///< Track pair DCA: n bins + static constexpr double kPairDcaL{-0.5}; ///< Track pair DCA: lower bound [cm] + static constexpr double kPairDcaU{+5.5}; ///< Track pair DCA: upper bound [cm] //* Histograms qa::H1D* fphPairDeltaT{nullptr}; ///< Track pair delta T diff --git a/algo/trigger/V0Trigger.cxx b/algo/trigger/V0Trigger.cxx index 49cd41825828f4f85903837007c6381ad834212b..e3ff8ef9f50a58fda75b569cc974952e0bc61001 100644 --- a/algo/trigger/V0Trigger.cxx +++ b/algo/trigger/V0Trigger.cxx @@ -34,7 +34,7 @@ namespace cbm::algo::evbuild float time2 = trackIter2->fParPV.GetTime(); if (fpQa->IsActive()) { - fpQa->fphPairDeltaT->Fill(time1 - time2); + fpQa->fphPairDeltaT->Fill(time2 - time1); } if (time2 < time1) { diff --git a/external/InstallParameter.cmake b/external/InstallParameter.cmake index 342e3354127cff382ff76c2f03eed4f74f0297a9..67356a801e1a6bc37ddc8b5da7a3b9a7c0f54501 100644 --- a/external/InstallParameter.cmake +++ b/external/InstallParameter.cmake @@ -1,5 +1,5 @@ -set(PARAMETER_VERSION 125dc2b53e6123739a19deabd9465e4fe568a5dc) # 2025/02/24 -set(PARAMETER_SRC_URL "https://git.cbm.gsi.de/CbmSoft/cbmroot_parameter.git") +set(PARAMETER_VERSION 4d23b9bfddd5e61fd347ba2090fc215ea72b5f32) # 2025/02/24 +set(PARAMETER_SRC_URL "https://git.cbm.gsi.de/s.zharko/cbmroot_parameter.git") download_project_if_needed(PROJECT Parameter_source GIT_REPOSITORY ${PARAMETER_SRC_URL}