A TChain object is a list of Root files containing the same tree. As an example, assume we have 3 Root files called file1.root, file2.root, file3.root. Each file contains one tree called "T". We can create a chain with the following statements:
TChain chain("T"); chain.Add("file1.root"); chain.Add("file2.root"); chain.Add("file3.root");The class TChain is derived from the class tree. For example, to generate an histogram corresponding to the attribute "x" in tree "T" by processing sequentially the 3 files of this chain, we can do:
chain.Draw("x");The following statements are a slight variation of the example shown in How to Read a Tree. They illustrate how to set the address of the object to be read and how to loop on all events of all files of the chain.
{ gROOT->Reset(); // Create the chain as above TChain chain("T"); chain.Add("file1.root"); chain.Add("file2.root"); chain.Add("file3.root"); // Create an histogram TH1F *hnseg = new TH1F("hnseg","Number of segments for selected tracks",5000,0,5000); // Specify address where to read the event object // In the program writing the files, the event was stored in a branch called "event" Event *event = new Event(); //object must be created before setting the branch address chain.SetBranchAddress("event", &event); // Start main loop on all events // In case you want to read only a few branches, use TChain::SetBranchStatus // to activate/deactivate a branch. Int_t nevent = chain.GetEntries(); for (Int_t i=0;i<nevent;i++) { chain.GetEvent(i); //read complete accepted event in memory hnseg->Fill(event->GetNseg()); //Fill histogram with number of segments } // Draw the histogram hnseg->Draw(); }