Home | News | Documentation | Download

Error when reading array from branch of TTree using RDataFrame.AsNumpy()

Hi there,

I’m trying to read a branch of a TTree into a numpy array using an RDataFrame. Here is a brief printout of the tree:

******************************************************************************
*Tree    :vdMScanData: vdMScanData                                            *
*Entries :      107 : Total =       195121996 bytes  File  Size =   84340290 *
*        :          : Tree compression factor =   2.31                       *
******************************************************************************
*Br    0 :lucBi2PMTC12_BUNCHDATA : lucBi2PMTC12_Channel/i:                   *
*         | lucBi2PMTC12_Valid/i:lucBi2PMTC12_AverageRawInstLum/F:           *
*         | lucBi2PMTC12_LuminousBunches/I                                   *
*Entries :      107 : Total  Size=       2983 bytes  File Size  =        912 *
*Baskets :        3 : Basket Size=       1074 bytes  Compression=   2.19     *
*............................................................................*
*Br    1 :lucBi2PMTC12_BCID :                                                *
*         | lucBi2PMTC12_LuminousBCIDs[lucBi2PMTC12_LuminousBunches]/I       *
*Entries :      107 : Total  Size=    1529113 bytes  File Size  =     535014 *
*Baskets :       23 : Basket Size=     537088 bytes  Compression=   2.86     *
*............................................................................*
*Br    2 :lucBi2PMTC12_BunchRawInstLum :                                     *
*         | lucBi2PMTC12_BunchRawInstLum[lucBi2PMTC12_LuminousBunches]/F     *
*Entries :      107 : Total  Size=    1529390 bytes  File Size  =     815250 *
*Baskets :       23 : Basket Size=     537088 bytes  Compression=   1.87     *
*............................................................................*

I want to read the branch lucBi2PMTC12_BunchRawInstLum, and I do so with,

>>> import ROOT
>>> df = ROOT.ROOT.RDataFrame("vdMScanData", "filename.root")
>>> df.AsNumpy(["lucBi2PMTC12_BunchRawInstLum"])

I then get the following error:

Error in <TTreeReaderValueBase::CreateProxy()>: The tree does not have a branch called lucBi2PMTC12_LuminousBunches. You could check with TTree::Print() for available branches.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/ROOT/pythonization/_rdataframe.py", line 77, in RDataFrameAsNumpy
    cpp_reference = result_ptrs[column].GetValue()
cppyy.gbl.std.runtime_error: const vector<ROOT::VecOps::RVec<float> >& ROOT::RDF::RResultPtr<vector<ROOT::VecOps::RVec<float> > >::GetValue() =>
    runtime_error: An error was encountered while processing the data. TTreeReader status code is: 6

I think the problem is that lucBi2PMTC12_BunchRawInstLum is an array of length lucBi2PMTC12_LuminousBunches, which is itself a branch, but nested under lucBi2PMTC12_BUNCHDATA. How can I read in the lucBi2PMTC12_BunchRawInstLum branch into a numpy array?

For reference, here is a Scan() of the relevant branches:

t.Scan("lucBi2PMTC12_LuminousBunches:lucBi2PMTC12_BCID:lucBi2PMTC12_BunchRawInstLum")
***********************************************************
*    Row   * Instance * lucBi2PMT * lucBi2PMT * lucBi2PMT *
***********************************************************
*        0 *        0 *      3564 *         0 * 2.958e-05 *
*        0 *        1 *      3564 *         1 * 3.254e-05 *
*        0 *        2 *      3564 *         2 * 2.366e-05 *
*        0 *        3 *      3564 *         3 * 2.366e-05 *
*        0 *        4 *      3564 *         4 * 1.183e-05 *
*        0 *        5 *      3564 *         5 * 2.514e-05 *
*        0 *        6 *      3564 *         6 * 4.141e-05 *
*        0 *        7 *      3564 *         7 * 1.775e-05 *
*        0 *        8 *      3564 *         8 * 3.846e-05 *
*        0 *        9 *      3564 *         9 * 2.810e-05 *
*        0 *       10 *      3564 *        10 * 3.993e-05 *
...

Many thanks,
Joey


ROOT Version: 6.22/00
Platform: x86_64-centos7-gcc9-opt
Compiler: GCC 9; Python 3.7.6


@swunsch can you give a hand? Thanks!

Hi!

This seems to fail on the level of TTreeReader, not nearly close to python or AsNumpy.

@pcanal is probably the best candidate to give some insight into the problem with the nested file structure.

Best
Stefan

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.