Hi Ken, If the structure of your ntuples is identical, you need only one class, say MyCode. Assume two files ken1.root and ken2.root, each containing TTree "T": TFile *f1 = new TFile("ken1.root"); TTree *T1 = (TTree*)f1->Get("T"); MyCode a(T1); a.Loop(); a.fChain->GetDirectory()->ls(); //will show all histograms produced //in a.Loop() TFile *f2 = new TFile("ken2.root"); TTree *T2 = (TTree*)f2->Get("T2"); MyCode b(T2); b.Loop(); b.fChain->GetDirectory()->ls(); //will show all histograms produced //in b.Loop() At the start ob MyCode::Lopp, add tyhe following statement before creating your histograms fChain->GetDirectory()->cd(); Note that you can modify MyCode.h to add members of teh type TH1F *fMyHisto1; TH2F *fMyPlot2; //etc Rene Brun On Wed, 27 Feb 2002, Ken Bloom wrote: > This is helpful...but imagine this variation: What if MyCodeA and > MyCodeB have the same set of histograms, with the same names -- in fact, all > that is different between MyCodeA and MyCodeB is that they are based on files > that have ntuples with the same structure, but different content. This is not > a crazy situation, I think; I have two data samples, I make the same set of > plots out of them, and I want to compare. But once I run do b.Loop(), all the > histograms made in a.Loop() get replaced (because they have the same names), > and I'm lost again. > > In PAW, one could have two histograms with the same number, as long as > they were in different subdirectories, e.g. //LUN1 and //LUN2. Am I allowed > to do the same sort of thing now? > > Or better still -- why should I have to have MyCodeA and MyCodeB if > they only differ by the name of the file that they are opening? Is there some > variant of the MakeClass output that I can use which would allow me to easily > change the name of the file that provides the ntuple? > > Thanks for your help -- I really expect to understand all of this > someday. Best wishes. > > Ken > > On Wed, 27 Feb 2002, Rene Brun wrote: > > > Hi Ken, > > > > Very easy. > > Assuming MyCodeA a; > > a.fChain->GetDirectory()->ls() > > > > To get one histogram from the corresponding directory, do, eg: > > TH1F *h = (TH1F*)a.fChain->GetDirectory()->Get(hist_name); > > > > Rene Brun > > > > On Wed, 27 Feb 2002, Ken Bloom wrote: > > > > > Dear ROOT, > > > > > > I have two different ROOT ntuples, in two different files. I use the > > > MakeClass method to give me a skeleton of code that allows me to create and > > > fill histograms based on the contents of the two ntuples, and I can use these > > > classes like so: > > > > > > .L MyCodeA.C > > > MyCodeA a; > > > a.Loop(); > > > .L MyCodeB.C > > > MyCodeB b; > > > b.Loop(); > > > > > > By doing this, TFile objects are being created inside a and b, but I never get > > > to see those. > > > > > > Now, I would like to compare the histograms made by a to those made by > > > b. At this point, I believe I'm in a directory that belongs to b, so I can > > > see the histograms made by b, but seeing the ones made by a is harder. I know > > > that I can see a list of those histograms via something like: > > > > > > TFile* f1 = > > > (TFile*)gROOT->GetListOfFiles()->FindObject("/path/name/of/file"); > > > f1.Print(); > > > > > > but I seem to have trouble then grabbing the histograms in said list. > > > > > > So how can I get to use both sets of histograms simultaneously? And > > > is there a way to do this without going through gROOT? I feel like I did > > > things like this in PAW, and that it was much easier! Thanks, best wishes. > > > > > > Ken > > > > > > ------------------------------------------------------------------------------ > > > Ken Bloom, Karma Adjuster Department of Physics > > > 734-763-2329 / 734-936-1817 (fax) University of Michigan > > > kenbloom@umich.edu http://www.umich.edu/~kenbloom > > > > > > > > > > ------------------------------------------------------------------------------ > Ken Bloom, Karma Adjuster Department of Physics > 734-763-2329 / 734-936-1817 (fax) University of Michigan > kenbloom@umich.edu http://www.umich.edu/~kenbloom >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:43 MET