Hi Emily,
A short example showing how to loop on all the files of a chain.
Note that a TChain was not designed as a collection of files,
rather as a virtual Tree combining the same tree name in
different files.
However, it would be simple to provide an iterator to loop
directly on all the files. I will add it to TChain.
void loopchain(TChain *ch) {
TIter nextfile(ch->GetListOfFiles());
TChainElement *elem;
while ((elem = (TChainElement*)nextfile())) {
TFile *f = new TFile(elem->GetTitle(),"update");
TH2D *num = (TH2D*)f->Get("h810");
TH2D *den = (TH2D*)f->Get("h811");
num->Divide(den);
num->Write(); // write result to the file or something
else
delete f;
}
}
Rene Brun
On Mon, 14 Jan 2002, Emily Nurse wrote:
> Hello,
> Sorry if this is a simple question.......
> I am trying to divide two histograms, each one comes from a TChain made up
> of .root files. I realse the histograms have to be renamed before they can
> be divided but the suggested way of doing this is using:
>
> TFile *f = new TFile("myfile.root");
>
> f->ls();
> TH2D h810;1 Hist title
> TH2D h811;1 Hist title
>
> h810->Draw(); // this works
> h811->Draw(); // this works
>
> TH2D *num = (TH2D*)f->Get("h810");
> TH2D *den = (TH2D*)f->Get("h811");
>
> num->Divide(den); // this works!
>
> how-ever I have more than one file so what would I need to put in place of
> f in this example?
> Thanks
> Emily.
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:38 MET