# Use CBook C++ package to generate files in this format
# which can be understood by EFile Java class using the Googe's protocol
# buffer format.
# (C) S.Chekanov
from jhplot.io import *
from jhplot.io.PEventFile import *
import time
# Write data into an ntuple
f=EFile('tmp.nbu','w')
start = time.clock()
for i in range(10000):
ev = HEvent.newBuilder()
ev.setName('collision')
ev.setId(i); ev.addDa(1)
# add collection of tracks
tracks = HEvent.Group.newBuilder()
tracks.setName("tracks")
for j in range(20):
track=HEvent.Entry.newBuilder()
track.setName('pion'+str(i))
track.addDa(1); track.addDa(2)
track.addIda(1); track.addIda(2)
tracks.addEntry(track)
ev.addGroup(tracks)
# add collection of cells
cells = HEvent.Group.newBuilder()
cells.setName("cells")
for j in range(20):
cell=HEvent.Entry.newBuilder()
cell.setName('cell'+str(i))
cell.addDa(1);cell.addIda(1)
cells.addEntry(cell)
ev.addGroup(cells);
if (i%100==0):
print "Write event",i
f.write(ev) # write event
f.close()
print ' time (s)=',time.clock()-start
############ reading file ################
f=EFile('tmp.nbu')
start = time.clock()
print f.getVersion()
for i in range(1,f.size()):
ev = f.read()
if (ev.getId()%100==0):
print "Read event", ev.getId(), ev.getName()
# get groups
for j in range(ev.getGroupCount()):
g=ev.getGroup(j)
# print g.getName()
for k in range(g.getEntryCount()):
e=g.getEntry(k)
# print e.getDa(0)
f.close()
print ' time (s)=',time.clock()-start
Ads help maintain this website.