41 LogFunc evalLog = [](
const std::string&) {};
43 if (mTimeFrame->hasMCinformation() && mVertParams[0].useTruthSeeding) {
49 mTraits->updateVertexingParameters(mVertParams, tfGPUpar);
51 auto handleException = [&](
const auto& err) {
52 LOGP(error,
"Encountered critical error in step {}, stopping further processing of this TF: {}", StateNames[mCurState], err.what());
53 if (!mVertParams[0].DropTFUponFailure) {
56 LOGP(error,
"Dropping this TF!");
57 mTimeFrame->resetTracklets();
61 float timeTracklet{0.f}, timeSelection{0.f}, timeVertexing{0.f}, timeInit{0.f};
63 for (
int iteration = 0; iteration < std::min(mVertParams[0].nIterations, (
int)mVertParams.size()); ++iteration) {
64 mMemoryPool->setMaxMemory(mVertParams[iteration].MaxMemory);
65 unsigned int nTracklets01{0}, nTracklets12{0};
66 logger(fmt::format(
"=== ITS {} Seeding vertexer iteration {} summary:", mTraits->getName(), iteration));
67 trkPars.
PhiBins = mTraits->getVertexingParameters()[0].PhiBins;
68 trkPars.
ZBins = mTraits->getVertexingParameters()[0].ZBins;
69 auto timeInitIteration = evaluateTask(&
Vertexer::initialiseVertexer, StateNames[mCurState = Init], iteration, evalLog, trkPars, iteration);
70 auto timeTrackletIteration = evaluateTask(&
Vertexer::findTracklets, StateNames[mCurState = Trackleting], iteration, evalLog, iteration);
71 nTracklets01 = mTimeFrame->getTotalTrackletsTF(0);
72 nTracklets12 = mTimeFrame->getTotalTrackletsTF(1);
73 auto timeSelectionIteration = evaluateTask(&
Vertexer::validateTracklets, StateNames[mCurState = Validating], iteration, evalLog, iteration);
74 auto timeVertexingIteration = evaluateTask(&
Vertexer::findVertices, StateNames[mCurState = Finding], iteration, evalLog, iteration);
75 printEpilog(logger, nTracklets01, nTracklets12, mTimeFrame->getNLinesTotal(), mTimeFrame->getTotVertIteration()[iteration], timeInitIteration, timeTrackletIteration, timeSelectionIteration, timeVertexingIteration);
76 timeInit += timeInitIteration;
77 timeTracklet += timeTrackletIteration;
78 timeSelection += timeSelectionIteration;
79 timeVertexing += timeVertexingIteration;
83 }
catch (
const std::bad_alloc& err) {
86 LOGP(fatal,
"Uncaught exception!");
89 return timeInit + timeTracklet + timeSelection + timeVertexing;
101 const unsigned int trackletN01,
const unsigned int trackletN12,
102 const unsigned selectedN,
const unsigned int vertexN,
const float initT,
103 const float trackletT,
const float selecT,
const float vertexT)
105 logger(fmt::format(
" - {} Vertexer: found {} | {} tracklets in: {} ms", mTraits->getName(), trackletN01, trackletN12, trackletT));
106 logger(fmt::format(
" - {} Vertexer: selected {} tracklets in: {} ms", mTraits->getName(), selectedN, selecT));
107 logger(fmt::format(
" - {} Vertexer: found {} vertices in: {} ms", mTraits->getName(), vertexN, vertexT));
108 if (mVertParams[0].PrintMemory) {
109 mTimeFrame->printArtefactsMemory();
110 mMemoryPool->print();
void printEpilog(LogFunc &logger, const unsigned int trackletN01, const unsigned int trackletN12, const unsigned selectedN, const unsigned int vertexN, const float initT, const float trackletT, const float selecT, const float vertexT)