예제 #1
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
예제 #2
0
 def _put_th3d(self, cursor, name):
     copy_cursor = copy(cursor)
     cursor.skip(self._format_cntvers.size)
     vers = 4
     buff = self._put_th3(cursor, name) + self._put_tarray(cursor, self._valuesarray)
     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
예제 #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
예제 #4
0
 def put_th2(self, cursor, name):
     copy_cursor = copy(cursor)
     cursor.skip(self._format_cntvers.size)
     vers = 5
     buff = (self.put_th1(cursor, name) + cursor.put_fields(
         self._format_th2_1, self.fields["_fScalefactor"],
         self.fields["_fTsumwy"], self.fields["_fTsumwy2"],
         self.fields["_fTsumwxy"]))
     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
예제 #5
0
    def write(self, cursor, sink, isjagged=False):
        if isjagged:
            raise Exception("isjagged flag should be False")
        self.cursor = uproot.write.sink.cursor.Cursor(cursor.index)
        self.sink = sink

        self.update()

        cursor.skip(self._format1.size)
        cursor.write_string(sink, self.fClassName)
        cursor.write_string(sink, self.fName)
        cursor.write_string(sink, self.fTitle)
예제 #6
0
 def put_tattaxis(self, cursor, axis):
     copy_cursor = copy(cursor)
     cursor.skip(self._format_cntvers.size)
     vers = 4
     buff = (cursor.put_fields(self._format_tattaxis, axis["_fNdivisions"],
                               axis["_fAxisColor"], axis["_fLabelColor"],
                               axis["_fLabelFont"], axis["_fLabelOffset"],
                               axis["_fLabelSize"], axis["_fTickLength"],
                               axis["_fTitleOffset"], axis["_fTitleSize"],
                               axis["_fTitleColor"], axis["_fTitleFont"]))
     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
예제 #7
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
예제 #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
예제 #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
예제 #10
0
    def write(self, cursor, sink, isjagged=False):
        self.cursor = uproot.write.sink.cursor.Cursor(cursor.index)
        self.sink = sink

        self.update()

        cursor.skip(self._format1.size)
        cursor.write_string(sink, self.fClassName)
        cursor.write_string(sink, self.fName)
        cursor.write_string(sink, self.fTitle)

        basketversion = 3
        if isjagged:
            if self.old_fLast == 0:
                raise Exception("isjagged flag should be False")
            cursor.write_fields(sink, self._format_basketkey, basketversion,
                                self.fBufferSize, self.fNevBufSize,
                                self.fNevBuf, self.old_fLast)
        else:
            cursor.write_fields(sink, self._format_basketkey, basketversion,
                                self.fBufferSize, self.fNevBufSize,
                                self.fNevBuf, self.fLast)
            self.old_fLast = self.fLast
        cursor.write_data(sink, b"\x00")