Example #1
0
 def put_tnamed(self, cursor, name, title, hexbytes=numpy.uint32(0x03000000)):
     copy_cursor = copy(cursor)
     cursor.skip(self._format_cntvers.size)
     vers = 1
     buff = (self.put_tobject(cursor, hexbytes) +
             cursor.put_string(name) + cursor.put_string(title))
     length = len(buff) + self._format_cntvers.size
     cnt = numpy.int64(length - 4) | uproot.const.kByteCountMask
     return copy_cursor.put_fields(self._format_cntvers, cnt, vers) + buff
Example #2
0
 def put_th1(self, cursor, name):
     copy_cursor = copy(cursor)
     cursor.skip(self._format_cntvers.size)
     vers = 8
     if len(self.fields["_fBuffer"]) != 0:
         raise NotImplementedError
     buff = (
         self.put_tnamed(cursor, name, self.fTitle) +
         self.put_tattline(cursor) + self.put_tattfill(cursor) +
         self.put_tattmarker(cursor) +
         cursor.put_fields(self._format_th1_1, self.fields["_fNcells"]) +
         self.put_taxis(cursor, self.fXaxis) +
         self.put_taxis(cursor, self.fYaxis) +
         self.put_taxis(cursor, self.fZaxis) + cursor.put_fields(
             self._format_th1_2, self.fields["_fBarOffset"],
             self.fields["_fBarWidth"], self.fields["_fEntries"],
             self.fields["_fTsumw"], self.fields["_fTsumw2"],
             self.fields["_fTsumwx"], self.fields["_fTsumwx2"],
             self.fields["_fMaximum"], self.fields["_fMinimum"],
             self.fields["_fNormFactor"]) +
         self.put_tarray(cursor, self.fields["_fContour"]) +
         self.put_tarray(cursor, self.fields["_fSumw2"]) +
         cursor.put_string(self.fields["_fOption"]) +
         self.put_tlist(cursor, self.fields["_fFunctions"]) +
         cursor.put_fields(
             self._format_th1_3,
             self.fields["_fBufferSize"],
             0,  # FIXME: empty fBuffer
             self.fields["_fBinStatErrOpt"],
             self.fields["_fStatOverflows"]))
     length = len(buff) + self._format_cntvers.size
     cnt = numpy.int64(length - 4) | uproot.const.kByteCountMask
     return copy_cursor.put_fields(self._format_cntvers, cnt, vers) + buff
Example #3
0
 def _put_tobjstring(self, cursor, value, bit=0):
     copy_cursor = copy(cursor)
     cursor.skip(self._format_tobjstring.size)
     vers = 1
     buff = cursor.put_string(value)
     length = len(buff) + self._format_tobjstring.size
     cnt = numpy.int64(length - 4) | uproot.const.kByteCountMask
     return copy_cursor.put_fields(self._format_tobjstring, cnt, vers, 1, bit, numpy.uint32(0x03000000)) + buff
Example #4
0
 def _write(self, context, cursor, name, compression, key, keycursor, util):
     copy_cursor = copy(cursor)
     write_cursor = copy(cursor)
     cursor.skip(self._format.size)
     vers = 1
     buff = cursor.put_string(self.value)
     length = len(buff) + self._format.size
     cnt = numpy.int64(length - 4) | uproot.const.kByteCountMask
     givenbytes = copy_cursor.put_fields(self._format, cnt, vers, 1, 0,
                                         uproot.const.kNotDeleted) + buff
     uproot.write.compress.write(context, write_cursor, givenbytes,
                                 compression, key, keycursor)
Example #5
0
 def _put_tlist(self, cursor, values):
     copy_cursor = copy(cursor)
     cursor.skip(self._format_cntvers.size)
     vers = 5
     buff = b""
     givenbytes = (self._put_tobject(cursor) +
                   cursor.put_string(b"") +
                   cursor.put_fields(self._format_tlist1, len(values)))
     for value in values:
         buff += self.util.put_objany(cursor, (value, "TObjString"), self.keycursor)
         buff += cursor.put_fields(self._format_tlist2, 0)
         buff += b"" # cursor.bytes(source, n)
     givenbytes += buff
     length = len(givenbytes) + self._format_cntvers.size
     cnt = numpy.int64(length - 4) | uproot.const.kByteCountMask
     return copy_cursor.put_fields(self._format_cntvers, cnt, vers) + givenbytes
Example #6
0
 def write(self, cursor):
     if self.compression != None:
         self.fields["_fCompress"] = self.compression.code
     copy_cursor = copy(cursor)
     cursor.skip(self._format_cntvers.size)
     vers = 13
     buff = (self.put_tnamed(cursor, self.name, self.nametitle, hexbytes=numpy.uint32(0x03400000)) +
             self.put_tattfill(cursor))
     self.branch_compress_cursor = copy(cursor)
     buff += (cursor.put_fields(self._format_tbranch11,
                               self.fields["_fCompress"],
                               self.fields["_fBasketSize"],
                               self.fields["_fEntryOffsetLen"]))
     self._writebasket_cursor = copy(cursor)
     buff += (cursor.put_fields(self._format_tbranch12,
                                self.fields["_fWriteBasket"],
                                self.fields["_fEntryNumber"]) +
             self.put_rootiofeatures(cursor) +
             cursor.put_fields(self._format_tbranch21,
                               self.fields["_fOffset"],
                               self.fields["_fMaxBaskets"],
                               self.fields["_fSplitLevel"]))
     self._fentries_cursor = copy(cursor)
     buff += (cursor.put_fields(self._format_fentries, self.fields["_fEntries"]))
     buff += cursor.put_fields(self._format_tbranch22, self.fields["_fFirstEntry"])
     self._tbranch_size_cursor = copy(cursor)
     buff += (cursor.put_fields(self._format_branch_size,
                               self.fields["_fTotBytes"],
                               self.fields["_fZipBytes"]) +
             self.put_tobjarray(cursor, self.fields["_fBranches"], classname="TBranch") +
             self.put_tobjarray(cursor, self.fields["_fLeaves"][0], classname=self.fields["_fLeaves"][1]) +
             cursor.put_data(self.fields["_fBaskets"]))
     buff += b"\x01"
     cursor.skip(len(b"\x01"))
     self._fbasketbytes_cursor = copy(cursor)
     buff += cursor.put_array(self.fields["_fBasketBytes"])
     buff += b"\x01"
     cursor.skip(len(b"\x01"))
     self._fbasketentry_cursor = copy(cursor)
     buff += (cursor.put_array(self.fields["_fBasketEntry"]) + b"\x01")
     cursor.skip(len(b"\x01"))
     self._fbasketseek_cursor = copy(cursor)
     buff += (cursor.put_array(self.fields["_fBasketSeek"]) + cursor.put_string(self.fields["_fFileName"]))
     length = (len(buff) + self._format_cntvers.size)
     cnt = numpy.int64(length - 4) | uproot.const.kByteCountMask
     return copy_cursor.put_fields(self._format_cntvers, cnt, vers) + buff
Example #7
0
 def put_tobjarray(self, cursor, values, classname, fBits=50331648):
     copy_cursor = copy(cursor)
     cursor.skip(self._format_cntvers.size)
     buff = self._skiptobj(cursor, fBits)
     vers = 3
     try:
         size = len(values)
     except TypeError:
         size = 1
         values = [values]
     low = 0
     buff += cursor.put_string(b"") + cursor.put_fields(self._format_tobjarray1, size, low)
     for value in values:
         buff += self.util.put_objany(cursor, (value, classname), self.keycursor)
     length = len(buff) + self._format_cntvers.size
     cnt = numpy.int64(length - 4) | uproot.const.kByteCountMask
     return copy_cursor.put_fields(self._format_cntvers, cnt, vers) + buff
Example #8
0
 def put_taxis(self, cursor, axis):
     copy_cursor = copy(cursor)
     cursor.skip(self._format_cntvers.size)
     vers = 10
     buff = (
         self.put_tnamed(cursor, axis["_fName"], axis["_fTitle"]) +
         self.put_tattaxis(cursor, axis) +
         cursor.put_fields(self._format_taxis_1, axis["_fNbins"],
                           axis["_fXmin"], axis["_fXmax"]) +
         self.put_tarray(cursor, axis["_fXbins"]) + cursor.put_fields(
             self._format_taxis_2, axis["_fFirst"], axis["_fLast"],
             axis["_fBits2"], axis["_fTimeDisplay"]) +
         cursor.put_string(axis["_fTimeFormat"]) + self.util.put_objany(
             cursor, (axis["_fLabels"], "THashList"), self.keycursor) +
         self.util.put_objany(cursor,
                              (axis["_fModLabs"], "TList"), self.keycursor))
     length = len(buff) + self._format_cntvers.size
     cnt = numpy.int64(length - 4) | uproot.const.kByteCountMask
     return copy_cursor.put_fields(self._format_cntvers, cnt, vers) + buff
Example #9
0
 def write(self, cursor):
     copy_cursor = copy(cursor)
     cursor.skip(self._format_cntvers.size)
     vers = 13
     buff = (
         self.put_tnamed(cursor,
                         self.name,
                         self.nametitle,
                         hexbytes=numpy.uint32(0x03400000)) +
         self.put_tattfill(cursor) + cursor.put_fields(
             self._format_tbranch1, self.fields["_fCompress"],
             self.fields["_fBasketSize"], self.fields["_fEntryOffsetLen"],
             self.fields["_fWriteBasket"], self.fields["_fEntryNumber"]) +
         self.put_rootiofeatures(cursor) + cursor.put_fields(
             self._format_tbranch2, self.fields["_fOffset"],
             self.fields["_fMaxBaskets"], self.fields["_fSplitLevel"],
             self.fields["_fEntries"], self.fields["_fFirstEntry"],
             self.fields["_fTotBytes"], self.fields["_fZipBytes"]) +
         self.put_tobjarray(
             cursor, self.fields["_fBranches"], classname="TBranch") +
         self.put_tobjarray(cursor,
                            self.fields["_fLeaves"][0],
                            classname=self.fields["_fLeaves"][1]) +
         #self.put_tobjarray(cursor, self.fields["fBaskets"]) +
         b"@\x00\x00\x15\x00\x03\x00\x01\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
     )
     cursor.skip(
         len(b"@\x00\x00\x15\x00\x03\x00\x01\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
             ))
     buff += (b"\x01")
     cursor.skip(len(b"\x01"))
     buff += (cursor.put_array(self.fields["_fBasketBytes"]) + b"\x01")
     cursor.skip(len(b"\x01"))
     buff += (cursor.put_array(self.fields["_fBasketEntry"]) + b"\x01")
     cursor.skip(len(b"\x01"))
     buff += (cursor.put_array(self.fields["_fBasketSeek"]) +
              cursor.put_string(self.fields["_fFileName"]))
     length = len(buff) + self._format_cntvers.size
     cnt = numpy.int64(length - 4) | uproot.const.kByteCountMask
     return copy_cursor.put_fields(self._format_cntvers, cnt, vers) + buff