Coder Social home page Coder Social logo

Comments (5)

tmadlener avatar tmadlener commented on June 28, 2024

Thanks for this report. There are several considerations at play here

  1. 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?
  2. 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 appropriate podio reader (most likely ROOTFrameReader), 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.
  3. 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 or uproot.

from podio.

peremato avatar peremato commented on June 28, 2024

@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.

tmadlener avatar tmadlener commented on June 28, 2024

@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.

peremato avatar peremato commented on June 28, 2024

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.

tmadlener avatar tmadlener commented on June 28, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.