Re: [ROOT] Share memory

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Fri Dec 22 2000 - 12:59:48 MET


Hi Laurent,

   see: http://root.cern.ch/root/htmldoc/TMapFile.html#TMapFile:SetMapAddress


Cheers, Fons.



Laurent Mirabito wrote:
> 
>         Hi all,
> I attach to this mail the file hprod.cxx which create a big share memory
> and put several TH1F in it. It compiles and works with ROOT 3.0 on Linux
> PC (Suse 7.0) but I cannot open the share memory in root interactively
> (segfault). Any idea?
>         Many thanks in advance for any help
>         Laurent Mirabito
>         IPN Lyon
> 
>   --------------------------------------------------------------------------------
> // @(#)root/test:$Name:  $:$Id: hsimple.cxx,v 1.2 2000/07/11 18:05:26 rdm Exp $
> // Author: Rene Brun   19/08/96
> 
> //*-*-*-*-*-*-*Simple examples with histograms created/filled and saved*-*-*-*
> //*-*          ========================================================
> //*-*
> //*-*  This program creates :
> //*-*    - a one dimensional histogram
> //*-*    - a two dimensional histogram
> //*-*    - a profile histogram
> //*-*    - an ntuple
> //*-*
> //*-*  These objects are filled with some random numbers and saved on a file.
> //*-*
> //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
> 
> int hsimple();
> 
> #ifndef __CINT__
> #include "TROOT.h"
> #include "TFile.h"
> #include "TH1.h"
> #include "TH2.h"
> #include "TProfile.h"
> #include "TMapFile.h"
> #include "TNtuple.h"
> #include "TRandom.h"
> 
> int hproducer();
> //______________________________________________________________________________
> int main()
> {
>   TROOT simple("simple","Test of histogramming and I/O");
>   return hproducer();
> }
> #endif
> 
> int hproducer()
> {
>   // Create a new ROOT binary machine independent file.
>   // Note that this file may contain any kind of ROOT objects, histograms,
>   // pictures, graphics objects, detector geometries, tracks, events, etc..
>   // This file is now becoming the current directory.
>   //  TFile hfile("hsimple.root","RECREATE","Demo ROOT file with histograms");
>   TMapFile* mfile = TMapFile::Create("hsimple.map","RECREATE", 4000000,
>                             "Demo memory mapped file with histograms");
>   // Create some histograms, a profile histogram and an ntuple
>   TH1F* hpx[100];
>   for (Int_t i=0;i<100;i++)
>     {
>       char cmd[100];
>       sprintf(cmd,"hpx%.2d",i);
>       hpx[i]   = new TH1F(cmd,"This is the px distribution",1000,-4,4);
>     }
>   TH2F *hpxpy = new TH2F("hpxpy","py vs px",40,-4,4,40,-4,4);
>   TProfile *hprof = new TProfile("hprof","Profile of pz versus px",100,-4,4,0,20);
>   mfile->Print();
> 
>   // Fill histograms randomly
>   Float_t px, py, pz;
>   Int_t ii=0;
>   while(1) {
>      gRandom->Rannor(px,py); //px and py will be two gaussian random numbers
>      pz = px*px + py*py;
>      Float_t random = gRandom->Rndm(1);
>      for (Int_t j=0;j<100;j++)
>        hpx[j]->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++;
>   }
> 
>   // Save all objects in this file
> 
>   return 0;
> }

-- 
Org:    CERN, European Laboratory for Particle Physics.
Mail:   1211 Geneve 23, Switzerland
E-Mail: Fons.Rademakers@cern.ch              Phone: +41 22 7679248
WWW:    http://root.cern.ch/~rdm/            Fax:   +41 22 7677910



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:40 MET