Re: [ROOT] naive question on tree saving

From: Sylvie Dagoret-Campagne (dagoret@lpnhep.in2p3.fr)
Date: Fri Feb 28 2003 - 12:54:32 MET


On Wed, 26 Feb 2003, Rene Brun wrote:

Hello Rene

I am using ROOT  Version   3.02/03   9 November 2001 .
I send yoy a snapshot of my main pgrgram in an attached file

 Here is a summary of the problem



1) Dans ma fonction Initializ::initRoot()
=======================================

 j' ouvre le fichier d'entree et cree l'arbre de sortie

  outeventtree=new TTree("TreeEvent"," Tree for Event_ROOT objects");
  outeventtree->SetAutoSave(10000);
  outeventbranch= outeventtree->Branch("event","Event_ROOT",&event,bufsize,split);


2) Le fichier de sortie est cree dans le main ensuite
=====================================================

 outrootfile= new TFile(outrootfilename.c_str(),"RECREATE");


La boucle sur les evenements se fait ensuite dans Main.cc :


3) -la lecture de tout le fichier root en entree qui contient un Tree
===================================================================
se fait dans la fonction process(event)      
=====================================
      if(P->SD_SIM())
	{
	  sdsim->process(event); 
	}

4) a la fin du traitement l'evenement est rempli dans un arbre.
================================================================

      outeventbranch->SetAddress(&event);
      cout << "+.+.+.+.   New event "  << numevent << " +.+.+.+ " << endl;
      cout << *event;
      cout << " CPU time(sec) for simulation : " << difftime/CLOCKS_PER_SEC  << endl;
      cout << " User time for simulation : " << ctime(&difftime2)  << endl;
      event->updatewrite();  

      //      outrootfile->cd();      
      outeventtree->Fill();

      //cout << " ==> Backup the Tree : for event " << numevent << endl;


5)Voila la sortie log de mon programme a ce moment la
=====================================================


 CPU time(sec) for simulation : 215
 User time for simulation : Thu Jan  1 00:03:37 1970
 
Error in <TTree::Write>: File SH000026.root is not writable
 ************************************************************* EventHeader  min -- max == width --> mean
-22195.5527924803 -- 20760.2479705690 == 42955.8007630493 -->
-717.6524109556
-21710.8017137592 -- 51182.8862408349 == 72893.6879545941 -->
14736.0422635378
0.0000000000 -- 0.0000000000 --> 1400.0000000000
         SDSim Event #   2
         -------------------


 le fichier SH000026.root est le fichier d'entree et non celui de sortie
 L'evenement n'est pas sauvegarde dans le fichier de sortie en cours de sortie.


Je te remercie de m'aider a forcer ROOT d'ecrire dans le bon fichier.


	Sylvie






> Hi Sylvie,
> 
> I do not understand this problem. TTree::AutoSave (the function called
> by TTree::Fill) is correctly setting the directory for the output file.
> You should not set the directory yourself before calling Fill. This would slow
> down substantially the filling.
> 
> Please give me more information and a snapshot of the relevant code.
> Please mention also the version that you are using.
> 
> Rene Brun
> 
> Sylvie Dagoret-Campagne wrote:
> > 
> > Hello rootalk people,
> > 
> >  I would ask a naive question about 2 trees handling, one at input, one
> > at the output.
> >  I have a program which read a huge root tree from an input file and write
> > a huge root tree in an output file.
> > 
> >  I want to do a regular backup in an event loop.
> > 
> >  If I activate the SetAutosave() function of the output tree
> >  the Fill function of the output tree cannot save partially  the output tree
> > in output file. A error is generated because Root want to write in the
> > input file even if I do "outputfile->cd()" before calling "outputtree->Fill()".
> > 
> >  For the moment I only have the solution to do inside the event loop
> > 
> >  outputfile->cd()
> >  outputtree->Fill()
> >  outputtree->Write()
> > 
> >  This may generate a too large output file ?
> > 
> >  Could you tell me how to switch to the proper Root file.
> > 
> > Best regards !
> > 
> >                 Sylvie Dagoret-Campagne
> > 
> > 
> > --
> > ==============================================================================
> > 
> > Sylvie Dagoret-Campagne         | e-mail: dagoret@lpnhep.in2p3.fr,
> > LPNHE, Universite Paris VI-VII  | Sylvie.Dagoret-Campagne@lpnhep.in2p3.fr
> > 4, Place Jussieu Tour 33, Rdc   | Telephone (33) 01 44 27 73 30
> > 75252 PARIS CEDEX 05 - FRANCE   | Fax       (33) 01 44 27 46 38
> >                                 | Standard  (33) 01 44 27 63 13
> > 
> > My web page is at http://lpnhe-auger.in2p3.fr/Sylvie/WWW/HOME/index.html
> > ==============================================================================
> 

-- 
==============================================================================

Sylvie Dagoret-Campagne         | e-mail: dagoret@lpnhep.in2p3.fr,
LPNHE, Universite Paris VI-VII  | Sylvie.Dagoret-Campagne@lpnhep.in2p3.fr
4, Place Jussieu Tour 33, Rdc   | Telephone (33) 01 44 27 73 30
75252 PARIS CEDEX 05 - FRANCE   | Fax       (33) 01 44 27 46 38
                                | Standard  (33) 01 44 27 63 13

My web page is at http://lpnhe-auger.in2p3.fr/Sylvie/WWW/HOME/index.html
==============================================================================





This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:09 MET