I want to save a RooDataSet within a RooWorkspace, but I get the error:
Error in <TBufferFile::WriteByteCount>: bytecount too large (more than 1073741822)
When I try to read the dataset (myWS->data("dataWithSWeights")), I get
Error in <TBufferFile::CheckByteCount>: object of class TObjArray read too many bytes: 1459806972 instead of 386065148
TBufferFile::CheckByteCount:0: RuntimeWarning: TObjArray::Streamer() not in sync with data on file <path/to/file> fix Streamer()
Error in <TBufferFile::CheckByteCount>: Byte count probably corrupted around buffer position 420057209:
-2069560387 for a possible maximum of 1039758320
TBufferFile::CheckObject:0: RuntimeWarning: reference to object of unavailable class TObject, offset=420057211 pointer will be 0
Error in <TExMap::Remove>: key 122962529 not found at 196982
TBufferFile::CheckObject:0: RuntimeWarning: reference to object of unavailable class TList, offset=122962529 pointer will be 0
etc.
Here is the code I use to create and save the dataset:
The data size for any single entity, which you try to save to / retrieve from a TFile buffer / basket, is limited to 1GB minus 2 bytes (i.e. 1073741822 bytes).
I am not sure that the dataset (I mean the tree) is the culprit. The tree should split the data into baskets, which should be small enough.
What’s inside the dataset? Just a couple of data columns? How many events?
This is exactly what I needed, specifically the weights. Thanks for the info. Unfortunately, RooFit stores the weights separately from the data columns. For this reason, it can’t write out the weights when they are more than 1 Gb.
Just for future reference:
ROOT 6.18.02 and 6.20.00 won’t have this limitation, at least for the tree data storage. It can be tested with the master version of ROOT or with the nightlies: https://root.cern/nightlies