34 LOG(fatal) <<
"nullptr passed to ITS vertexer construction.";
36 mVertParams.resize(1);
45 float timeTracklet{0.f}, timeSelection{0.f}, timeVertexing{0.f}, timeInit{0.f};
46 for (
int iteration = 0; iteration < std::min(mVertParams[0].nIterations, (
int)mVertParams.size()); ++iteration) {
47 unsigned int nTracklets01, nTracklets12;
48 logger(fmt::format(
"ITS Seeding vertexer iteration {} summary:", iteration));
61 printEpilog(logger,
false, nTracklets01, nTracklets12, mTimeFrame->
getNLinesTotal(), mTimeFrame->
getTotVertIteration()[iteration], timeInitIteration, timeTrackletIteration, timeSelectionIteration, timeVertexingIteration);
62 timeInit += timeInitIteration;
63 timeTracklet += timeTrackletIteration;
64 timeSelection += timeSelectionIteration;
65 timeVertexing += timeVertexingIteration;
68 return timeInit + timeTracklet + timeSelection + timeVertexing;
75 float timeTracklet, timeSelection, timeVertexing, timeInit;
77 for (
int iteration = 0; iteration < std::min(mVertParams[0].nIterations, (
int)mVertParams.size()); ++iteration) {
78 unsigned int nTracklets01, nTracklets12;
79 logger(fmt::format(
"ITS Hybrid seeding vertexer iteration {} summary:", iteration));
93 printEpilog(logger,
true, nTracklets01, nTracklets12, mTimeFrame->
getNLinesTotal(), mTimeFrame->
getTotVertIteration()[iteration], timeInitIteration, timeTrackletIteration, timeSelectionIteration, timeVertexingIteration);
94 timeInit += timeInitIteration;
95 timeTracklet += timeTrackletIteration;
96 timeSelection += timeSelectionIteration;
97 timeVertexing += timeVertexingIteration;
100 return timeInit + timeTracklet + timeSelection + timeVertexing;
110 mVertParams[0].nIterations = vc.nIterations;
111 mVertParams[0].deltaRof = vc.deltaRof;
112 mVertParams[0].allowSingleContribClusters = vc.allowSingleContribClusters;
113 mVertParams[0].zCut = vc.zCut;
114 mVertParams[0].phiCut = vc.phiCut;
115 mVertParams[0].pairCut = vc.pairCut;
116 mVertParams[0].clusterCut = vc.clusterCut;
117 mVertParams[0].histPairCut = vc.histPairCut;
118 mVertParams[0].tanLambdaCut = vc.tanLambdaCut;
119 mVertParams[0].lowMultBeamDistCut = vc.lowMultBeamDistCut;
120 mVertParams[0].vertNsigmaCut = vc.vertNsigmaCut;
121 mVertParams[0].vertRadiusSigma = vc.vertRadiusSigma;
122 mVertParams[0].trackletSigma = vc.trackletSigma;
123 mVertParams[0].maxZPositionAllowed = vc.maxZPositionAllowed;
124 mVertParams[0].clusterContributorsCut = vc.clusterContributorsCut;
125 mVertParams[0].maxTrackletsPerCluster = vc.maxTrackletsPerCluster;
126 mVertParams[0].phiSpan = vc.phiSpan;
127 mVertParams[0].nThreads = vc.nThreads;
128 mVertParams[0].ZBins = vc.ZBins;
129 mVertParams[0].PhiBins = vc.PhiBins;
140 const unsigned int trackletN01,
const unsigned int trackletN12,
const unsigned selectedN,
const unsigned int vertexN,
141 const float initT,
const float trackletT,
const float selecT,
const float vertexT)
143 float total = initT + trackletT + selecT + vertexT;
144 logger(fmt::format(
" - {}Vertexer: found {} | {} tracklets in: {} ms", isHybrid ?
"Hybrid " :
"", trackletN01, trackletN12, trackletT));
145 logger(fmt::format(
" - {}Vertexer: selected {} tracklets in: {} ms", isHybrid ?
"Hybrid " :
"", selectedN, selecT));
146 logger(fmt::format(
" - {}Vertexer: found {} vertices in: {} ms", isHybrid ?
"Hybrid " :
"", vertexN, vertexT));
Class to compute the primary vertex in ITS from tracklets.
static const VertexerParamConfig & Instance()
uint32_t getTotalTrackletsTF(const int iLayer)
std::vector< int > & getTotVertIteration()
int getNLinesTotal() const
virtual void adoptTimeFrame(TimeFrame *tf)
virtual void updateVertexingParameters(const std::vector< VertexingParameters > &vrtPar, const TimeFrameGPUParameters &gpuTfPar)
std::vector< VertexingParameters > & getVertexingParameters()
void findTrackletsHybrid(T &&... args)
void findTracklets(T &&... args)
void initialiseVertexer(T &&... args)
float evaluateTask(void(Vertexer::*)(T...), const char *, std::function< void(std::string s)> logger, T &&... args)
void validateTracklets(T &&... args)
void findVertices(T &&... args)
void validateTrackletsHybrid(T &&... args)
void findVerticesHybrid(T &&... args)
float clustersToVertices(std::function< void(std::string s)>=[](std::string s) { std::cout<< s<< std::endl;})
float clustersToVerticesHybrid(std::function< void(std::string s)>=[](std::string s) { std::cout<< s<< std::endl;})
void adoptTimeFrame(TimeFrame &tf)
void printEpilog(std::function< void(std::string s)> logger, bool isHybrid, 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)
Vertexer(VertexerTraits *traits)
void getGlobalConfiguration()
void initialiseVertexerHybrid(T &&... args)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::unique_ptr< GPUReconstructionTimeframe > tf
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"