-
Notifications
You must be signed in to change notification settings - Fork 60
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add RVec
s to root dictionaries
#750
base: master
Are you sure you want to change the base?
Conversation
I think we should also try to understand what is actually necessary from the ROOT perspective, and which parts might get auto-generated there. |
In case of key4hep/EDM4hep#416 it's in the error message Error in <TTree::Branch>: The class requested (ROOT::VecOps::RVec<podio::ObjectID>)
for the branch "_BCalRecoParticle_clusters" is an instance of an stl collection
and does not have a compiled CollectionProxy.
Please generate the dictionary for this collection (ROOT::VecOps::RVec<podio::ObjectID>)
to avoid to write corrupted data. The LinkDef for dictionary with |
Thanks! I think we still would want to figure out why it currently works for e.g. |
Well, I guess someone is adding them to some dictionary somewhere for us. For instance here in FCCAnalyses: |
yup, after removing fccanalyses from the
|
That would explain things indeed. In that case, we could consider putting https://key4hep.web.cern.ch/podio/storage_details.html#storage-details-of-files-produced-by-podio |
I do not understand where things would break. Can you elaborate? However, I would say that adding additional support for RDataFrame to podio out of the blue is contradicting the rest of its philosophy a bit. There is not really any reason to directly support the RVecs here. Maybe the cleanest short-term solution is to just put the RVec support into the fccanalyses dict, but in a complete and less manual way? And then also document this and point to it from edm4hep? |
Currently nowhere. But if there is a change in, e.g. EDM4hep that requires schema evolution (that cannot be handled by ROOT), things will break for users, because they will no longer be able to read their data via RDataFrame (aka via I tend to agree here, that we should discuss a bit more whether we want this option. That might be a different discussion for podio and EDM4hep, as simply putting support into podio for generating this might be OK, but then EDM4hep might need some sort of policy or at least a statement about the stability of going to the file directly. |
Isn't this already the case? |
As long as you can open files without podio readers, yes
I agree we should definitely discuss this since it currently basically improve support for unsupported feature. So I would vote no 😇 I guess this should be a part of a bigger discussion on analysis. Because @Zehvogel why would you even try to abuse |
BEGINRELEASENOTES
ROOT::VecOps::RVec
to podio dictionary and dictionary for better integration withRDataFrame
.ENDRELEASENOTES
Podio's dictionary and generated datamodels' dictionaries include definitions of
std::vector
of objects. For better interoperability withRDataFrame
definitions withROOT::VecOps::RVec
should be added (see key4hep/EDM4hep#416).Here I propose to add
ROOT::VecOps::RVec
for eachstd::vector
in aselection.xml
. I'm not sure if the same treatment should apply to definitions like<class name="std::vector<std::tuple<int, std::string, bool, unsigned int>>"/>
and<class name="std::vector<std::vector<std::string>>"/>
that are in podio'sselection.xml
.-Wno-effc++
is added to silence the errors coming fromROOT/RVec.hxx
.Weffc++
is currently in theCMAKE_CXX_FLAGS
Closes key4hep/EDM4hep#416
@Zehvogel