Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ class Vertexer
void adoptTimeFrame(TimeFrame7& tf);
auto& getVertParameters() const { return mTraits->getVertexingParameters(); }
void setParameters(const std::vector<VertexingParameters>& vertParams) { mVertParams = vertParams; }
const auto& getParameters() const noexcept { return mVertParams; }
void getGlobalConfiguration();
void setMemoryPool(std::shared_ptr<BoundedMemoryResource>& pool) { mMemoryPool = pool; }

Expand Down
25 changes: 19 additions & 6 deletions Detectors/ITSMFT/ITS/tracking/src/Configuration.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,14 @@
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.

#include <format>
#include "ITStracking/Constants.h"

#include "ITStracking/Configuration.h"

namespace o2::its
{

std::string asString(TrackingMode mode)
{
switch (mode) {
Expand All @@ -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--) {
Expand All @@ -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
3 changes: 3 additions & 0 deletions Detectors/ITSMFT/ITS/tracking/src/Tracker.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
11 changes: 0 additions & 11 deletions Detectors/ITSMFT/ITS/tracking/src/TrackingConfigParam.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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
7 changes: 6 additions & 1 deletion Detectors/ITSMFT/ITS/tracking/src/TrackingInterface.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand Down Expand Up @@ -389,6 +389,11 @@ void ITSTrackingInterface::updateTimeDependentParams(framework::ProcessingContex
if (pc.services().get<const o2::framework::DeviceSpec>().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];
Expand Down