16#ifndef O2_ITS_TRACKING_VERTEXER_H_
17#define O2_ITS_TRACKING_VERTEXER_H_
57 void setParameters(std::vector<VertexingParameters>& vertParams);
63 float clustersToVertices(std::function<
void(std::string s)> = [](std::string s) { std::cout << s << std::endl; });
64 float clustersToVerticesHybrid(std::function<
void(std::string s)> = [](std::string s) { std::cout << s << std::endl; });
67 template <
typename... T>
69 template <
typename... T>
73 template <
typename... T>
75 template <
typename... T>
77 template <
typename... T>
79 template <
typename... T>
83 template <
typename... T>
85 template <
typename... T>
87 template <
typename... T>
89 template <
typename... T>
94 template <
typename... T>
96 void printEpilog(std::function<
void(std::string s)> logger,
98 const unsigned int trackletN01,
const unsigned int trackletN12,
const unsigned selectedN,
const unsigned int vertexN,
99 const float initT,
const float trackletT,
const float selecT,
const float vertexT);
102 std::uint32_t mTimeFrameCounter = 0;
107 std::vector<VertexingParameters> mVertParams;
110template <
typename... T>
113 mTraits->
initialise(std::forward<T>(args)...);
116template <
typename... T>
129 mVertParams = vertParams;
137template <
typename... T>
143template <
typename... T>
149template <
typename... T>
155template <
typename... T>
161template <
typename... T>
167template <
typename... T>
173template <
typename... T>
180 auto start = std::chrono::high_resolution_clock::now();
181 (this->*task)(std::forward<T>(args)...);
182 auto end = std::chrono::high_resolution_clock::now();
184 std::chrono::duration<double, std::milli> diff_t{
end -
start};
185 diff = diff_t.count();
187 std::stringstream sstream;
188 if (taskName ==
nullptr) {
189 sstream << diff <<
"\t";
191 sstream << std::setw(2) <<
" - " << taskName <<
" completed in: " << diff <<
" ms";
193 logger(sstream.str());
195 (this->*task)(std::forward<T>(args)...);
Class to compute the primary vertex in ITS from tracklets.
virtual void computeTrackletMatching(const int iteration=0)
virtual void computeTrackletsHybrid(const int iteration=0)
virtual void computeTracklets(const int iteration=0)
virtual void computeTrackletMatchingHybrid(const int iteration=0)
virtual void initialiseHybrid(const TrackingParameters &trackingParams, const int iteration=0)
const const float float const IndexTableUtils float const IndexTableUtils &virtual void initialise(const TrackingParameters &trackingParams, const int iteration=0)
std::vector< VertexingParameters > & getVertexingParameters()
virtual void computeVertices(const int iteration=0)
void dumpVertexerTraits()
virtual void computeVerticesHybrid(const int iteration=0)
void findTrackletsHybrid(T &&... args)
void findTracklets(T &&... args)
void initialiseVertexer(T &&... args)
void findTrivialMCTracklets()
float evaluateTask(void(Vertexer::*)(T...), const char *, std::function< void(std::string s)> logger, T &&... args)
void validateTracklets(T &&... args)
void findVertices(T &&... args)
VertexerTraits * getTraits() const
void validateTrackletsHybrid(T &&... args)
void initialiseTimeFrameHybrid(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 setParameters(std::vector< VertexingParameters > &vertParams)
Vertexer(const Vertexer &)=delete
void initialiseTimeFrame(T &&... args)
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 & operator=(const Vertexer &)=delete
std::vector< VertexingParameters > & getVertParameters() const
void getGlobalConfiguration()
std::vector< Vertex > exportVertices()
void initialiseVertexerHybrid(T &&... args)
virtual ~Vertexer()=default
GLsizei const GLchar *const * string
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
constexpr bool DoTimeBenchmarks
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Defining DataPointCompositeObject explicitly as copiable.
std::unique_ptr< GPUReconstructionTimeframe > tf