Fill histogram in parallel with a multithreaded approach using TThreadExecutor and TExecutor::MapReduce.
Author: Danilo Piparo.
This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Monday, March 31, 2025 at 04:21 PM.
const UInt_t poolSize = 4U;
TH1::AddDirectory(false);
ROOT::TThreadExecutor pool(poolSize);
auto fillRandomHisto = [](int seed = 0) {
TRandom3 rndm(seed);
auto h = new TH1F("myHist", "Filled in parallel", 128, -8, 8);
for (auto i : ROOT::TSeqI(1000000)) {
h->Fill(rndm.Gaus(0, 1));
}
return h;
};
auto seeds = ROOT::TSeqI(23);
ROOT::ExecutorUtils::ReduceObjects<TH1F *> redfunc;
auto sumRandomHisto = pool.MapReduce(fillRandomHisto, seeds, redfunc);
auto c = new TCanvas();
sumRandomHisto->Draw();
return 0;
Draw all canvases
gROOT->GetListOfCanvases()->Draw()