3 from __future__
import print_function
4 from builtins
import range
10 cppyy.gbl.cool.IDatabase
16 endpos = self.pos + size
19 buf = self.startingAddress()
20 buf.SetSize(self.size())
21 return buf[beginpos:endpos]
24 getattr(gbl,
"coral::Blob").read = blob_read
28 packopt=dict([[1,
'B'],[2,
'H'],[4,
'f'],[8,
'd']])
31 ival=struct.unpack(packopt[nbyte], b[0:nbyte])
33 print(
'bConvert: Unrecognized pack option')
41 packopt=dict([[1,
'B'],[2,
'H'],[4,
'f'],[8,
'd']])
44 fmt =
'%d%s' % (nval, packopt[nbyte])
45 ival=struct.unpack(fmt, b[0:nval*nbyte])
47 print(
'bConvertList: Unrecognized pack option')
55 if blob.size() == 0:
return
57 blobCopy = blob.read()
58 mask = (1 <<
int(bgrp))
62 if ivallist[i] & mask:
86 if blob.size() == 0:
return
88 blobCopy = blob.read()
91 mask[id] = (1 <<
int(id))
97 if ivallist[i] & mask[id]:
105 bloblength = blob.size()
107 if bloblength == 3564:
118 blobCopy = blob.read()
121 for i
in range(3564):
127 if (val & 0x03) == 0x03:
130 print(
'unpackRun2BCIDMask found:')
131 print(
' Beam1:', beam1)
132 print(
' Beam2:', beam2)
133 print(
' Coll: ', coll)
135 return beam1,beam2,coll
143 blobCopy = blob.read()
173 return beam1,beam2,coll
188 if not (len(bcidVec)==len(lvec)):
189 print(
'unpackBCIDValues - length mismatch: len(bcidVec)=', len(bcidVec),
'len(lvec)=', len(lvec))
193 for i
in range(len(bcidVec)):
195 bLumi.append(lvec[i]*normValue/
pow(100,bss))
197 bLumi.append(lvec[i])
216 blobCopy = blob.read()
219 b = blobCopy[blobCounter:blobCounter+1]
227 b = blobCopy[blobCounter:blobCounter+2]
233 blobCounter += 2*vlen
246 print(
'storage mode 3 not implemented in unpackBunches')
249 bcidVec=[i
for i
in range(3564)]
252 print(
'Unknown storage mode ',smod)
256 valueVec =
bConvertList(blobCopy[blobCounter:], bss, vlen)
263 return bss,bcidVec,valueVec
265 except RuntimeError
as e:
273 liveVec = array.array(
'f', 3564*[0.])
275 if priority ==
'high':
276 blob = trigPayload[
'HighPriority']
277 elif priority ==
'low':
278 blob = trigPayload[
'LowPriority']
280 print(
'unpackLiveFraction - unknown priority requested %s',
str(priority))
283 bloblength = blob.size()
287 if bloblength < 3*3564:
289 print(
'unpackLiveFraction found blob length %d!' % bloblength)
292 blobCopy = blob.read()
296 turnCounter = trigPayload[
'TurnCounter']
297 if not turnCounter > 0:
304 for i
in range(3564):
306 busyCounter = byte[3*i] | (byte[3*i+1] << 8) | (byte[3*i+2] << 16)
316 liveFrac = 1 -
float(busyCounter) / turnCounter
318 liveVec[i] = liveFrac