swh:1:snp:af87cd67498ef4fe47c76ed3e7caffe5b61facaf
Tip revision: 37ca4d688fd51a81467c54f04626495acb965edd authored by Axel Naumann on 23 August 2018, 14:57:30 UTC
Update ROOT version files to v6.14/04.
Update ROOT version files to v6.14/04.
Tip revision: 37ca4d6
hprod.C
/// \file
/// \ingroup tutorial_net
/// Histogram producer script. This script creates a memory mapped
/// file and stores three histogram objects in it (a TH1F, a TH2F and a
/// TProfile). It then fills, in an infinite loop (so use ctrl-c to
/// stop this script), the three histogram objects with random numbers.
/// Every 10 fills the objects are updated in shared memory.
/// Use the hcons.C script to map this file and display the histograms.
///
/// \macro_code
///
/// \author Fons Rademakers
{
gROOT->Reset();
// Create a new memory mapped file. The memory mapped file can be
// opened in an other process on the same machine and the objects
// stored in it can be accessed.
TMapFile::SetMapAddress(0xb46a5000);
mfile = TMapFile::Create("hsimple.map","RECREATE", 1000000,
"Demo memory mapped file with histograms");
// Create a 1d, a 2d and a profile histogram. These objects will
// be automatically added to the current directory, i.e. mfile.
hpx = new TH1F("hpx","This is the px distribution",100,-4,4);
hpxpy = new TH2F("hpxpy","py vs px",40,-4,4,40,-4,4);
hprof = new TProfile("hprof","Profile of pz versus px",100,-4,4,0,20);
// Set a fill color for the TH1F
hpx->SetFillColor(48);
// Print status of mapped file
mfile->Print();
// Endless loop filling histograms with random numbers
Float_t px, py, pz;
int ii = 0;
while (1) {
gRandom->Rannor(px,py);
pz = px*px + py*py;
hpx->Fill(px);
hpxpy->Fill(px,py);
hprof->Fill(px,pz);
if (!(ii % 10)) {
mfile->Update(); // updates all objects in shared memory
if (!ii) mfile->ls(); // print contents of mapped file after
} // first update
ii++;
}
}