00001 #include "RootRawWriter/RRawTree.h"
00002 #include <iostream>
00003 #include <cstring>
00004
00005 using namespace std;
00006
00007 RRawTree::RRawTree()
00008 : m_file(0)
00009 , m_tree(0)
00010 , m_size(0)
00011 {
00012 if( sizeof(Int32) != 4 ) {
00013 cout<<"Error: Need a 32-bits type to hold each line of raw data"<<endl;
00014 }
00015 }
00016
00017 RRawTree::~RRawTree()
00018 {
00019 }
00020
00023 int RRawTree::open(const char* filename)
00024 {
00025 m_file = TFile::Open(filename,"recreate");
00026 if (!m_file) {
00027 return 0;
00028 }
00029 if (m_file->IsZombie()) {
00030 delete m_file;
00031 m_file = 0;
00032 return 0;
00033 }
00034 m_tree = new TTree("RRawTree","Root Raw Tree");
00035
00036 m_tree->Branch("size",&m_size,"size/I");
00037 m_tree->Branch("buffer",m_buffer,"buffer[size]/I");
00038
00039 return 1;
00040 }
00041
00043 int RRawTree::fill(Int32* buffer, Int32 size)
00044 {
00045 memcpy(m_buffer, buffer, size*4);
00046 m_size=size;
00047
00048
00049 m_tree->Fill();
00050
00051 return 1;
00052 }
00053
00055 int RRawTree::close()
00056 {
00057 m_file->Write();
00058 m_file->Close();
00059
00060 return 1;
00061 }
00062
00063