Presentation is loading. Please wait.

Presentation is loading. Please wait.

用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题

Similar presentations


Presentation on theme: "用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题"— Presentation transcript:

1 用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
Chi WANG Yifeng WEI Liu DONG

2 描述问题 以前的TClonesArray的方式读出的数据都没问题 单纯的event class读取数据有问题
(刘栋 用以前的DmpEvtHeader读数据时发现的) 现在都不用TClonesArray的方式读写数据,读数据有问题 2019/2/23

3 描述问题 Input root文件是simulation 的MC truth 读取bgo的信息 fEvtMCBgo是空指针被赋值
运行时break 2019/2/23

4 分析 DmpDataBuffer中会自动获取input的root 文件,并拿到指定的Tree,返回需要绑定的指针 2019/2/23

5 尝试 逸丰尝试不通过DmpDataBuffer,自己手动读取branch 读取正常 2019/2/23

6 分析 本质差别 2019/2/23

7 证明 Break 成功 2019/2/23

8 分析 DmpEvtMCBgo必须要创建对象再关联 DmpEvtMCPrimaryParticle可以直接使用空指针关联
DmpDataBuffer中都不会为event class创建对象,而是使用的TObject的空指针关联 为什么有的event class可以使用空指针而有的不行? 2019/2/23

9 DmpEvtMCBgo和DmpEvtMCPrimaryParticle的主要区别
2019/2/23

10 之前刘栋发现问题时 使用的event class
2019/2/23

11 结论 数据成员是简单类型(int,short等)的event class 可以用空指针去关联branch;如果含有复杂类型(vector或map),不能用空指针关联,必须要用户创建一个对象去关联 2019/2/23

12 解决方案 用户手动创建需要读取的event class的对象 将event class的指针交给DmpDataBuffer
DmpDataBuffer::ReadObject函数内部利用传入的指针关联到Branch Note: 用户创建的event class对象因为已经交给了DmpDataBuffer管理,所以用户不能再delete这个对象 2019/2/23

13 实现与使用 实现请具体参考DmpDataBuffer::ReadObject() 使用 例: 2019/2/23

14 Thank you 2019/2/23


Download ppt "用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题"

Similar presentations


Ads by Google