diff --git a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Configuration.h b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Configuration.h index d6c552935dd93..d3f7597ae314b 100644 --- a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Configuration.h +++ b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Configuration.h @@ -113,6 +113,8 @@ struct TrackingParameters { }; struct VertexingParameters { + std::string asString() const; + int nIterations = 1; // Number of vertexing passes to perform int vertPerRofThreshold = 0; // Maximum number of vertices per ROF to trigger second a round bool allowSingleContribClusters = false; @@ -145,6 +147,8 @@ struct VertexingParameters { }; struct TimeFrameGPUParameters { + std::string asString() const; + size_t tmpCUBBufferSize = 1e5; // In average in pp events there are required 4096 bytes size_t maxTrackletsPerCluster = 1e2; size_t clustersPerLayerCapacity = 2.5e5; diff --git a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Vertexer.h b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Vertexer.h index 77b21b58b967b..07d9d60243a95 100644 --- a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Vertexer.h +++ b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Vertexer.h @@ -56,6 +56,7 @@ class Vertexer void adoptTimeFrame(TimeFrame7& tf); auto& getVertParameters() const { return mTraits->getVertexingParameters(); } void setParameters(const std::vector& vertParams) { mVertParams = vertParams; } + const auto& getParameters() const noexcept { return mVertParams; } void getGlobalConfiguration(); void setMemoryPool(std::shared_ptr& pool) { mMemoryPool = pool; } diff --git a/Detectors/ITSMFT/ITS/tracking/src/Configuration.cxx b/Detectors/ITSMFT/ITS/tracking/src/Configuration.cxx index 7d348505c61d3..d1cddc1819a0b 100644 --- a/Detectors/ITSMFT/ITS/tracking/src/Configuration.cxx +++ b/Detectors/ITSMFT/ITS/tracking/src/Configuration.cxx @@ -9,10 +9,14 @@ // granted to it by virtue of its status as an Intergovernmental Organization // or submit itself to any jurisdiction. +#include +#include "ITStracking/Constants.h" + #include "ITStracking/Configuration.h" namespace o2::its { + std::string asString(TrackingMode mode) { switch (mode) { @@ -28,9 +32,15 @@ std::string asString(TrackingMode mode) return "unknown"; } +std::ostream& operator<<(std::ostream& os, TrackingMode v) +{ + os << asString(v); + return os; +} + std::string TrackingParameters::asString() const { - std::string str = fmt::format("NZb:{} NPhB:{} NROFIt:{} PerVtx:{} DropFail:{} ClSh:{} TtklMinPt:{:.2f} MinCl:{}", + std::string str = std::format("NZb:{} NPhB:{} NROFIt:{} PerVtx:{} DropFail:{} ClSh:{} TtklMinPt:{:.2f} MinCl:{}", ZBins, PhiBins, nROFsPerIterations, PerPrimaryVertexProcessing, DropTFUponFailure, ClusterSharing, TrackletMinPt, MinTrackLength); bool first = true; for (int il = NLayers; il >= MinTrackLength; il--) { @@ -40,19 +50,22 @@ std::string TrackingParameters::asString() const first = false; str += " MinPt: "; } - str += fmt::format("L{}:{:.2f} ", il, MinPt[slot]); + str += std::format("L{}:{:.2f} ", il, MinPt[slot]); } } str += " SystErrY/Z:"; for (size_t i = 0; i < SystErrorY2.size(); i++) { - str += fmt::format("{:.2e}/{:.2e} ", SystErrorY2[i], SystErrorZ2[i]); + str += std::format("{:.2e}/{:.2e} ", SystErrorY2[i], SystErrorZ2[i]); } + str += std::format(" MemLimit {:.2f} GB", double(MaxMemory) / constants::GB); return str; } -std::ostream& operator<<(std::ostream& os, TrackingMode v) +std::string VertexingParameters::asString() const { - os << asString(v); - return os; + std::string str = std::format("NZb:{} NPhB:{} DRof:{} ClsCont:{} MaxTrkltCls:{} ZCut:{} PhCut:{}", ZBins, PhiBins, deltaRof, clusterContributorsCut, maxTrackletsPerCluster, zCut, phiCut); + str += std::format(" MemLimit {:.2f} GB", double(MaxMemory) / constants::GB); + return str; } + } // namespace o2::its diff --git a/Detectors/ITSMFT/ITS/tracking/src/Tracker.cxx b/Detectors/ITSMFT/ITS/tracking/src/Tracker.cxx index e354792620436..5565026ab11cf 100644 --- a/Detectors/ITSMFT/ITS/tracking/src/Tracker.cxx +++ b/Detectors/ITSMFT/ITS/tracking/src/Tracker.cxx @@ -118,6 +118,9 @@ void Tracker::clustersToTracks(LogFunc logger, LogFunc error) total += timeExtending; logger(std::format(" - Extending Tracks: {} extended tracks using {} clusters found in {:.2f} ms", nExtendedTracks + mTimeFrame->mNExtendedTracks, nExtendedClusters + mTimeFrame->mNExtendedUsedClusters, timeExtending)); } + if (mTrkParams[iteration].PrintMemory) { + mMemoryPool->print(); + } } if (mTraits->supportsFindShortPrimaries() && mTrkParams[0].FindShortTracks) { auto nTracksB = mTimeFrame->getNumberOfTracks(); diff --git a/Detectors/ITSMFT/ITS/tracking/src/TrackingConfigParam.cxx b/Detectors/ITSMFT/ITS/tracking/src/TrackingConfigParam.cxx index 33edd140dd234..b5fbedcc89339 100644 --- a/Detectors/ITSMFT/ITS/tracking/src/TrackingConfigParam.cxx +++ b/Detectors/ITSMFT/ITS/tracking/src/TrackingConfigParam.cxx @@ -10,18 +10,7 @@ // or submit itself to any jurisdiction. #include "ITStracking/TrackingConfigParam.h" -#include "ITStracking/Configuration.h" - -namespace o2 -{ -namespace its -{ -static auto& sVertexerParamITS = o2::its::VertexerParamConfig::Instance(); -static auto& sCATrackerParamITS = o2::its::TrackerParamConfig::Instance(); -static auto& sGpuRecoParamITS = o2::its::ITSGpuTrackingParamConfig::Instance(); O2ParamImpl(o2::its::VertexerParamConfig); O2ParamImpl(o2::its::TrackerParamConfig); O2ParamImpl(o2::its::ITSGpuTrackingParamConfig); -} // namespace its -} // namespace o2 diff --git a/Detectors/ITSMFT/ITS/tracking/src/TrackingInterface.cxx b/Detectors/ITSMFT/ITS/tracking/src/TrackingInterface.cxx index 0907253e24580..4acbdaf6c758b 100644 --- a/Detectors/ITSMFT/ITS/tracking/src/TrackingInterface.cxx +++ b/Detectors/ITSMFT/ITS/tracking/src/TrackingInterface.cxx @@ -302,7 +302,7 @@ void ITSTrackingInterface::run(framework::ProcessingContext& pc) o2::its::VertexerParamConfig::Instance().nIterations > 1 ? mTimeFrame->getTotVertIteration()[1] : 0, trackROFspan.size() - mTimeFrame->getNoVertexROF(), trackROFspan.size()); - LOG(info) << fmt::format("FastMultEst: rejected {}/{} ROFs: random/mult.sel:{} (seed {}), vtx.sel:{}", cutRandomMult + cutVertexMult, trackROFspan.size(), cutRandomMult, multEst.lastRandomSeed, cutVertexMult); + LOG(info) << fmt::format(" - FastMultEst: rejected {}/{} ROFs: random/mult.sel:{} (seed {}), vtx.sel:{}", cutRandomMult + cutVertexMult, trackROFspan.size(), cutRandomMult, multEst.lastRandomSeed, cutVertexMult); } if (mOverrideBeamEstimation) { LOG(info) << fmt::format(" - Beam position set to: {}, {} from meanvertex object", mTimeFrame->getBeamX(), mTimeFrame->getBeamY()); @@ -389,6 +389,11 @@ void ITSTrackingInterface::updateTimeDependentParams(framework::ProcessingContex if (pc.services().get().inputTimesliceId == 0) { // print settings only for the 1st pipeling o2::its::VertexerParamConfig::Instance().printKeyValues(); o2::its::TrackerParamConfig::Instance().printKeyValues(); + const auto& vtxParams = mVertexer->getParameters(); + for (size_t it = 0; it < vtxParams.size(); it++) { + const auto& par = vtxParams[it]; + LOGP(info, "vtxIter#{} : {}", it, par.asString()); + } const auto& trParams = mTracker->getParameters(); for (size_t it = 0; it < trParams.size(); it++) { const auto& par = trParams[it];