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         m_core->Clean();                
00035         m_RFile->cd();
00036 
00037         Int_t nb = 0,nbytes = 0;
00038         nb = m_RTree->GetEvent((Int_t) eventNumber());
00039         nbytes += nb;
00040 
00041         IOfileVI::readEvent();
00042 }
00043 //#######################
00044 template<class rCore> void rTreeBase<rCore>::writeEvent()
00045 //#######################
00046 {
00047   
00048         if (m_RTree == 0) return;       
00049         if (!isOpen()) return;
00050         if (getMode() != IOBase::WRITE) return;
00051 
00052         m_RFile->cd();
00053         m_RTree->Fill();
00054 
00055         m_core->Clean();
00056         m_core->Create();
00057         IOfileVI::writeEvent();
00058 }
00059 
00060 //########################
00061 template<class rCore> void rTreeBase<rCore>::clear()
00062 //########################
00063 {
00064         if (m_RTree !=0) delete m_RTree;
00065 
00066         m_RTree = 0;
00067 
00068     bufsize = 64000;
00069     split = 1;          // split objects into sub branches
00070 
00071         rTFileBase::clear();
00072 }
00073 
00074 
00075 

Generated at Thu Jun 22 16:53:26 2000 for Centella Framework by doxygen 1.1.3 written by Dimitri van Heesch, © 1997-2000