Re: [ROOT] How to specify the path for the histogram in the root file?

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Jun 13 2000 - 18:30:04 MEST


Hi Robert,

Robert Feuerbach wrote:
> 
> Hi Zhou,
> 
> While this doesn't answer your path question, I believe you can get
> the behaviour you want by doing the nt1->Project without first changing
> directories. You would first have to modify declare the nt1 variable.
> 
> This is what I find quite useful about ROOT -- you can declare your object
> and pass it around to different routines, not worrying about if you are in
> the same directory as the object (Ntuple in this case).
> 
> Rene, perhaps a variation on TTree::Project that takes the pointer to a
> TH1 or TH2 object would be useful?

Yes, I agree. Samething for all fitting functions.

Rene Brun
> 
> You might want to try:
> {
>   TFile* f = new TFile("data.root");
> 
>   TNtuple *nt1 = (TNtuple *)f->Get("nt1");   // Added to declare nt1
> 
>   f->mkdir("analysis");// make a subdirectory to hold the result
> 
>   f->cd("analysis"); // change to the created subdirectory
> 
>   TH1F* p1 = TH1F("h1","h1",100, 0., 120.); //create some result histograms
>   TH1F* p2 = TH1F("h2","h2",100, 0., 1000.);
>   TH1F* p3 = TH1F("h3","h3",100, 0., 10.);
> 
> //  gFile->cd(); // go back to the top directory   // Not needed
>  nt1->Project("h1","t0"); //fill the histogram in the subdirectory
> 
> }
> 
> Take care.
> /***************************************************
>  * Robert Feuerbach   feuerbac@ernest.phys.cmu.edu *
>  * CMU Physics Department           (412) 268-2772 *
>  * Pittsburgh, PA 15213        FAX: (412) 681-0648 *
>  ***************************************************/
> 
> On Mon, 12 Jun 2000, Zhou Zhang wrote:
> 
> > Hi rooters,
> >
> >   I have a root file which contains some ntuples. Now I want to write a
> > macro to do some analysis on these ntuples and put the results which are
> > also some histograms and ntuples under a created analysis subdirectory
> > which are associated with the root file. My macro is such as:
> > {
> >   TFile* f = new TFile("data.root");
> >
> >   f->mkdir("analysis");// make a subdirectory to hold the result
> >
> >   f->cd("analysis"); // change to the created subdirectory
> >
> >   TH1F* p1 = TH1F("h1","h1",100, 0., 120.); //create some result histograms
> >   TH1F* p2 = TH1F("h2","h2",100, 0., 1000.);
> >   TH1F* p3 = TH1F("h3","h3",100, 0., 10.);
> >
> >  gFile->cd(); // go back to the top directory
> >  nt1->Project("h1","t0"); //fill the histogram in the subdirectory
> >
> > }
> >
> > It failed because h1 is not in the current directory. But I don't know how
> > to specify the path for the h1. Who could tell me how to do it?
> >
> >       regards,
> >
> > zhou
> >
> >



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