18 const UInt_t nNumbers = 20000000U;
21 const UInt_t nWorkers = 4U;
24 const auto workSize = nNumbers / nWorkers;
27 void fillRandom(TNtuple &ntuple, TRandom3 &rndm, UInt_t n)
29 for (
auto i : ROOT::TSeqI(n))
30 ntuple.Fill(rndm.Gaus());
33 Int_t mp101_fillNtuples()
44 TFile ofile(
"mp101_singleCore.root",
"RECREATE");
45 TNtuple randomNumbers(
"singleCore",
"Random Numbers",
"r");
46 fillRandom(randomNumbers, rndm, nNumbers);
47 randomNumbers.Write();
54 auto workItem = [](UInt_t workerID) {
56 TRandom3 workerRndm(workerID);
57 TFile ofile(Form(
"mp101_multiCore_%u.root", workerID),
"RECREATE");
58 TNtuple workerRandomNumbers(
"multiCore",
"Random Numbers",
"r");
59 fillRandom(workerRandomNumbers, workerRndm, workSize);
60 workerRandomNumbers.Write();
65 ROOT::TProcessExecutor workers(nWorkers);
68 workers.Map(workItem, ROOT::TSeqI(nWorkers));