ROOT
master
Reference Guide
mp001_fillHistos.C
Go to the documentation of this file.
1
/// \file
2
/// \ingroup tutorial_multicore
3
/// \notebook -nodraw
4
/// Fill histograms in parallel and write them on file.
5
/// This example expresses the parallelism of the mt001_fillHistos.C tutorial
6
/// with multiprocessing techniques.
7
///
8
/// \macro_code
9
///
10
/// \date January 2016
11
/// \author Danilo Piparo
12
13
// Total amount of numbers
14
const
UInt_t
nNumbers = 20000000U;
15
16
// The number of workers
17
const
UInt_t
nWorkers = 4U;
18
19
Int_t
mp001_fillHistos()
20
{
21
22
// We define our work item
23
auto
workItem = [](
UInt_t
workerID) {
24
// One generator, file and ntuple per worker
25
TRandom3
workerRndm(workerID);
// Change the seed
26
TFile
f
(
Form
(
"myFile_mp001_%u.root"
, workerID),
"RECREATE"
);
27
TH1F
h
(
Form
(
"myHisto_%u"
, workerID),
"The Histogram"
, 64, -4, 4);
28
for
(
UInt_t
i = 0; i < nNumbers; ++i) {
29
h
.Fill(workerRndm.Gaus());
30
}
31
h
.Write();
32
return
0;
33
};
34
35
// Create the pool of workers
36
ROOT::TProcessExecutor
workers(nWorkers);
37
38
// Fill the pool with work
39
workers.Map(workItem,
ROOT::TSeqI
(nWorkers));
40
41
return
0;
42
}
f
#define f(i)
Definition:
RSha256.hxx:104
Form
char * Form(const char *fmt,...)
Int_t
int Int_t
Definition:
RtypesCore.h:45
TRandom3
Random number generator class based on M.
Definition:
TRandom3.h:27
h
#define h(i)
Definition:
RSha256.hxx:106
UInt_t
unsigned int UInt_t
Definition:
RtypesCore.h:46
TFile
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition:
TFile.h:54
ROOT::TProcessExecutor
This class provides a simple interface to execute the same task multiple times in parallel,...
Definition:
TProcessExecutor.hxx:38
TH1F
1-D histogram with a float per channel (see TH1 documentation)}
Definition:
TH1.h:575
ROOT::TSeq
A pseudo container class which is a generator of indices.
Definition:
TSeq.hxx:66
tutorials
multicore
mp001_fillHistos.C
ROOT master - Reference Guide Generated on Thu Feb 25 2021 12:01:50 (GVA Time) using Doxygen 1.9.0