clonesA_Event.C

Go to the documentation of this file.
00001 // Example to write & read a Tree built with a complex class inheritance tree.
00002 // It demonstrates usage of inheritance and TClonesArrays
00003 // This is simplied / stripped extract of an event structure used within the
00004 // Marabou project (http://www.bl.physik.uni-muenchen.de/marabou/html/)
00005 //
00006 //to run this example, do:
00007 // root > .x clonesA_Event.C
00008 
00009 void clonesA_Event_w()
00010 {
00011 // protect against old ROOT versions
00012    if ( gROOT->GetVersionInt() < 30503 ) {
00013       cout << "Works only with ROOT version >= 3.05/03" << endl;
00014       return;
00015    }
00016    if ( gROOT->GetVersionDate() < 20030406 ) {
00017       cout << "Works only with ROOT CVS version after 5. 4. 2003" << endl;
00018       return;
00019    }
00020 
00021    //write a Tree
00022    TFile *hfile = new TFile("clonesA_Event.root","RECREATE","Test TClonesArray");
00023    TTree *tree  = new TTree("clonesA_Event","An example of a ROOT tree");
00024    TUsrSevtData1 *event1 = new TUsrSevtData1();
00025    TUsrSevtData2 *event2 = new TUsrSevtData2();
00026    tree->Branch("top1","TUsrSevtData1",&event1,8000,99);
00027    tree->Branch("top2","TUsrSevtData2",&event2,8000,99);
00028    for (Int_t ev = 0; ev < 10; ev++) {
00029       cout << "event " << ev << endl;
00030       event1->SetEvent(ev);
00031       event2->SetEvent(ev);
00032       tree->Fill();
00033       if (ev <3) tree->Show(ev);
00034    }
00035    tree->Write();
00036    tree->Print();
00037    delete hfile;
00038 }
00039  
00040 void clonesA_Event_r()
00041 {
00042    //read the Tree
00043    TFile * hfile = new TFile("clonesA_Event.root");
00044    TTree *tree = (TTree*)hfile->Get("clonesA_Event");
00045 
00046    TUsrSevtData1 * event1 = 0;
00047    TUsrSevtData2 * event2 = 0;
00048    tree->SetBranchAddress("top1",&event1);
00049    tree->SetBranchAddress("top2",&event2);
00050    for (Int_t ev = 0; ev < 8; ev++) {
00051       tree->Show(ev);
00052       cout << "Pileup event1: " <<  event1->GetPileup() << endl;
00053       cout << "Pileup event2: " <<  event2->GetPileup() << endl;
00054       event1->Clear();
00055       event2->Clear();
00056  //     gObjectTable->Print();          // detect possible memory leaks
00057    }
00058    delete hfile;
00059 }
00060  
00061 void clonesA_Event() {
00062    gROOT->ProcessLine(".L clonesA_Event.cxx+");  // compile shared lib
00063    clonesA_Event_w();                            // write the tree
00064    clonesA_Event_r();                            // read back the tree
00065 }

Generated on Tue Jul 5 15:45:11 2011 for ROOT_528-00b_version by  doxygen 1.5.1