[d2n-analysis-talk] ROOT question: writing data from one file to another

Diana Parno dseymour at andrew.cmu.edu
Tue Mar 2 12:07:13 EST 2010


Hi Brad,

Thanks very much -- this worked perfectly. FYI, it appears that the 
histograms are in fact autoloaded in the "new" file (test.root, as below), 
so you can simply do h10->Draw() without a preceding TH1F *h = 
(TH1F*)f.Get("h10") step once you open that file.

Diana

On Mon, 1 Mar 2010, Brad Sawatzky wrote:

> Hi Diana,
>
> My naive approach would be to:
>  - Create output root file
>      TFile *hfile_test = new TFile("test.root","new");
>  - Open main root file
>      TFile *hfile = new TFile("runXXXX.root");
>  - generate my histos from the runXXX.root
>      TH1F *h10 = new TH1F("h10","foobar",nbins,xlow,xhi);
>      T->Project("h10", "BB.foo[0]",....);
>      h10->Draw();
>  - cd() to the test root file and save them:
>    hfile_test.cd();
>      h10->Write();
>  - cd() back to the main root file and continue work
>      hfile.cd();
>      ...
>
>  - Note that you will probably have to close (or flush) hfile_test to
>    get consistent results (although a clean quit of the analyzer/root
>    should do a close for you).
>      hfile_test->Close();
>
>  - If you reopen test.root you may have to do this to access the saved
>    histogram(s):
>      TFile f("test.root");
>      TH1F *h = (TH1F*)f.Get("h10");
>      h->Draw();
>    I really don't know though...  Maybe it will 'autoload' the histos
>    for you so you can access them without the extra step.  TBrowser
>    might help here too...
>
> -- Brad
>
> On Mon, 01 Mar 2010, Diana Parno wrote:
>
>> Hello all,
>>
>> I have a fairly straightforward ROOT question that I thought I'd bring the
>> experts here.
>>
>> Let's say I'm in a situation where I've got some data structures in a
>> ROOT file (test1.root) -- trees, histograms, whatever. I want to
>> manipulate this data, maybe make a new histogram or two, and write a
>> couple of histograms to a different ROOT file (test2.root). What's the
>> best way to do this?
>>
>> In my experience, as soon as I open test2.root, test1.root and all its
>> data structures go out of scope. If I have a histogram drawn on a pad,
>> then it stays in scope long enough to write it to the second file, but
>> this is somewhat unwieldy, easy to mess up, and hard to do if I want
>> to manipulate lots of files via a script. There's got to be a better
>> way to do this! Does anyone know the secret?
>>
>> Thanks,
>> Diana
> -- 
> Brad Sawatzky, PhD <brads at jlab.org>  -<>-  Jefferson Lab / Hall C / C111
>  Ph: 757-269-5947 -<>- Pager: 757-584-5947 -<>- Fax: 757-269-7848
> The most exciting phrase to hear in science, the one that heralds new
>  discoveries, is not "Eureka!" but "That's funny..."   -- Isaac Asimov
> _______________________________________________
> d2n-analysis-talk mailing list
> d2n-analysis-talk at jlab.org
> https://mailman.jlab.org/mailman/listinfo/d2n-analysis-talk
>
>


More information about the d2n-analysis-talk mailing list