Fill n-tuples in distinct workers.
This tutorial illustrates the basics of how it's possible with ROOT to offload heavy operations on multiple processes and how it's possible to write simultaneously multiple files. The operation performed in this case is the creation of random gaussian numbers.
const UInt_t nNumbers = 20000000U;
const auto workSize = nNumbers / nWorkers;
{
}
Int_t mp101_fillNtuples()
{
TFile ofile(
"mp101_singleCore.root",
"RECREATE");
TNtuple randomNumbers(
"singleCore",
"Random Numbers",
"r");
randomNumbers.Write();
ofile.Close();
auto workItem = [](
UInt_t workerID) {
TFile ofile(
Form(
"mp101_multiCore_%u.root", workerID),
"RECREATE");
TNtuple workerRandomNumbers(
"multiCore",
"Random Numbers",
"r");
fillRandom(workerRandomNumbers, workerRndm, workSize);
workerRandomNumbers.Write();
return 0;
};
return 0;
}
- Author
- Danilo Piparo
Definition in file mp101_fillNtuples.C.