Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

rTreeBase.cpp

Go to the documentation of this file.
00001 #include "Event/rTreeBase.h"
00002 
00003 #include "TFile.h"
00004 #include "TTree.h"
00005 
00006 //#############################################
00007 template<class rCore> void rTreeBase<rCore>::open()
00008 //##############################################
00009 {
00010         rTFileBase::open();
00011         if (!isOpen()) return;
00012 
00013         m_core->Create();
00014         getFile()->cd();
00015 
00016         if (getMode() == IOBase::READ) {
00017                 m_RTree = (TTree*) gDirectory->Get("T");
00018                 m_RTree->SetBranchAddress(className(),&m_core);
00019                 setNumEvents(m_RTree->GetEntries());
00020         } else if (getMode() == IOBase::WRITE) {
00021             m_RTree = new TTree("T", "TreeBase");
00022                 TBranch* branch = m_RTree->Branch(className(),className(),&m_core, bufsize, split);
00023         }
00024 }
00025 //#######################
00026 template<class rCore> void rTreeBase<rCore>::readEvent()
00027 //#######################
00028 {
00029 
00030         if (m_RTree == 0) return;
00031         if (!isOpen()) return;
00032         if (getMode() != IOBase::READ) return;
00033         
00034         IOfileVI::readEvent();
00035         
00036         m_core->Clean();                
00037         m_RFile->cd();
00038 
00039         Int_t nb = 0,nbytes = 0;
00040         nb = m_RTree->GetEvent((Int_t) eventNumber());
00041         nbytes += nb;
00042 
00043         
00044 }
00045 //#######################
00046 template<class rCore> void rTreeBase<rCore>::writeEvent()
00047 //#######################
00048 {
00049   
00050         if (m_RTree == 0) return;       
00051         if (!isOpen()) return;
00052         if (getMode() != IOBase::WRITE) return;
00053         
00054         IOfileVI::writeEvent();
00055         
00056         m_RFile->cd();
00057         m_RTree->Fill();
00058 
00059         m_core->Clean();
00060         m_core->Create();
00061         
00062 }
00063 
00064 //########################
00065 template<class rCore> void rTreeBase<rCore>::clear()
00066 //########################
00067 {
00068         if (m_RTree !=0) delete m_RTree;
00069 
00070         m_RTree = 0;
00071 
00072     bufsize = 64000;
00073     split = 1;          // split objects into sub branches
00074 
00075         rTFileBase::clear();
00076 }
00077 
00078 
00079 

Generated at Fri Aug 18 12:57:38 2000 for centella framework by doxygen 1.1.3 written by Dimitri van Heesch, © 1997-2000