Comments (5)
Thanks for this report. There are several considerations at play here
- This could be an issue with older ROOT versions. We no longer generate the
vector<XYZData>
selection rule, because we found that it was no longer necessary. It is easily possible that we just changed ROOT versions and ROOT now does this for us automatically. Maybe you can quickly try with a newer ROOT version to see if that already solves the problem? - It looks like you want to treat the
SimTrackerHit
as a whole in your analysis from the example you provided. May I ask the question on why you don't want to use the "full" interface of the generated EDM in this case? You would effectively have to replace the manual opening of the file with simply using the appropriatepodio
reader (most likelyROOTFrameReader
), and the loop would have to change slightly, but you could simply drop all the handling of branches, etc., because podio does that for you. - If really want such a simple analysis, something that should work without any dictionary is to go to the "sub-branch level", and directly setting branch addresses on the members of the
SimTrackerHitData
branches. This mechanism is used by e.g.RDataFrame
oruproot
.
from podio.
@tmadlener the missing dictionaries for vector is also the reason why the tool to convert TTree files into RNTuple files failed. So, if it is not too much work I would vote to adding these dictionaries.
from podio.
@peremato sorry, this took a bit longer to get around to again. I have the feeling we are potentially running into another (mac only?) root issue here. I can use the podio-ttree-to-rntuple
tool without issues on Ubuntu locally on EDM4hep files. In principle it doesn't cost us much (or anything really) to generate the vectors for the dictionaries as well (#554). However, I am not sure at this point what the expected behavior of ROOT is. I will try to investigate.
from podio.
Sorry Thomas. I am not referring to this tool polio-ttree-to-rntuple
. I am referring to the script provided by Jakob to convert any TTree to RNTuple.
import ROOT
ROOT.TFile.Open("rntuple.root", 'RECREATE') # optional, clear output
inputFile = ROOT.TFile.Open("ttree.root")
for treeName in ['T1', 'T2', 'T3']:
tree = file.Get(treeName)
importer = ROOT.Experimental.RNTupleImporter.Create(tree, "rntuple.root")
importer.Import()
from podio.
Ah, my bad. I can reproduce the failure on my end with that. Let me just point out one thing (which probably doesn't concern you too much): The TTree based file format stores some map<K, V>
like things directly into branches. This is currently not supported by RNTuple, so there we actually split them into a vector<K>
and a vector<V>
and rebuild the map on reading.
from podio.
Related Issues (20)
- discussion: Possibility of differing in-memory and on-file datatypes HOT 1
- Add tests for JSON output
- Trivial return types of generated get methods should be by value instead of const reference
- Switch to black for formatting python sources HOT 1
- how to retrieve the cell ID encoding from the metadata in the output ROOT file HOT 2
- RNTuple interface changed in ROOT HOT 1
- collection push_back and value_type incompatible with some std iterator adaptors HOT 1
- Inconsistent reference access for Mutable types
- Schema evolution script does not flag some evolutions as impossible
- Frame serialization/deserialization HOT 12
- Automatically ship collection level metadata
- GenericParameters should not return a default constructed / empty value if key is not present HOT 4
- Warnings when generating ROOT dictionaries HOT 1
- GenericParameters should be stored the same way for TTree and RNTuple backends HOT 6
- Leak in SIO Frame reading
- Document the cmake functionality HOT 4
- Use types of heterogeneous origins in interfaces HOT 3
- Document more advanced cmake usage
- Make it possible to store more version information of generated EDMs
- OneToOne relations are not preserved on `clone()` since v01-00 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from podio.