16#ifndef ROOT7_RHistConcurrentFill
17#define ROOT7_RHistConcurrentFill
25namespace Experimental {
27template <
class HIST,
int SIZE>
28class RHistConcurrentFillManager;
36template <
class HIST,
int SIZE>
50 void FillN(
const std::span<const CoordArray_t> xN,
const std::span<const Weight_t> weightN)
58 static constexpr int GetNDim() {
return HIST::GetNDim(); }
76template <
class HIST,
int SIZE = 1024>
95 void FillN(
const std::span<const CoordArray_t> xN,
const std::span<const Weight_t> weightN)
97 std::lock_guard<std::mutex> lockGuard(
fFillMutex);
98 fHist.FillN(xN, weightN);
102 void FillN(
const std::span<const CoordArray_t> xN)
104 std::lock_guard<std::mutex> lockGuard(
fFillMutex);
std::span< const Weight_t > GetWeights() const
void Fill(const CoordArray_t &x, Weight_t weight=1.)
std::span< const CoordArray_t > GetCoords() const
Manages the synchronization of calls to FillN().
typename HIST::CoordArray_t CoordArray_t
void FillN(const std::span< const CoordArray_t > xN, const std::span< const Weight_t > weightN)
Thread-specific HIST::FillN().
RHistConcurrentFillManager(HIST &hist)
typename HIST::Weight_t Weight_t
void FillN(const std::span< const CoordArray_t > xN)
Thread-specific HIST::FillN().
RHistConcurrentFiller< HIST, SIZE > MakeFiller()
Buffers a thread's Fill calls and submits them to the RHistConcurrentFillManager.
void FillN(const std::span< const CoordArray_t > xN, const std::span< const Weight_t > weightN)
Thread-specific HIST::FillN().
static constexpr int GetNDim()
void FillN(const std::span< const CoordArray_t > xN)
Thread-specific HIST::FillN().
typename HIST::CoordArray_t CoordArray_t
RHistConcurrentFiller(RHistConcurrentFillManager< HIST, SIZE > &manager)
RHistConcurrentFillManager< HIST, SIZE > & fManager
typename HIST::Weight_t Weight_t
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...