EDM4hep Discussion
Zoom
EDM4hep Live Notes
==================
Date: Sep 16, 2025
Indico: https://indico.cern.ch/event/1579611/
Connected: Juan, Tao, Thomas, Mateusz
Apologies: Andre
### Upcoming workshops / conferences
https://github.com/orgs/key4hep/projects/4/views/1
## Progress and discussion
## Podio
* https://github.com/AIDASoft/podio/pulls
* https://github.com/AIDASoft/podio/issues
* https://github.com/orgs/AIDASoft/projects/2/views/1
### Merged PRs
#### Schema evolution / code generation
- **Refactor the way schema evolution tests are done [#817](https://github.com/AIDASoft/podio/pull/817)**
- Add a memory limit to schema evolution tests [#836](https://github.com/AIDASoft/podio/pull/836)
- Remove an unnecessary datatype from the test datamodel [#815](https://github.com/AIDASoft/podio/pull/815)
- Reuse existing member function for building includes [#819](https://github.com/AIDASoft/podio/pull/819)
- Fix code generation to make one-to-one relations within a type possible [#821](https://github.com/AIDASoft/podio/pull/821)
- Fix a wrong member name that was missed in #797 [#816](https://github.com/AIDASoft/podio/pull/816)
- Do not construct the full path up-front [#831](https://github.com/AIDASoft/podio/pull/831)
#### Pythonizations
- **add subscript pythonization to podio collections [#824](https://github.com/AIDASoft/podio/pull/824)**
- **replace Python callback with C++ callback for subscript pythonization [#810](https://github.com/AIDASoft/podio/pull/810)**
- Delete an extra Python3_INCLUDE_DIRS [#840](https://github.com/AIDASoft/podio/pull/840)
- Add the Python headers to the system includes to avoid warnings [#839](https://github.com/AIDASoft/podio/pull/839)
- Fix typo causing error in non-const overload of `LinkCollection::at(size_t)` [#826](https://github.com/AIDASoft/podio/pull/826)
#### Convenience features
- Add types with all the collection types of a datamodel in datamodel.h [#832](https://github.com/AIDASoft/podio/pull/832)
- Add an `UserDataCollectionList` with the supported types and a test [#829](https://github.com/AIDASoft/podio/pull/829)
#### Cleanup / Upkeep
- Randomize the test order to detect hidden dependencies [#843](https://github.com/AIDASoft/podio/pull/843)
- Move some includes where they are used and add const [#837](https://github.com/AIDASoft/podio/pull/837)
- Add fixtures for tests that read and write files [#834](https://github.com/AIDASoft/podio/pull/834)
- Remove unnecessary argument from cmake function [#835](https://github.com/AIDASoft/podio/pull/835)
- Add string representations for better logging to generator utils [#830](https://github.com/AIDASoft/podio/pull/830)
- Update the sanitizer workflows to use newer compilers [#823](https://github.com/AIDASoft/podio/pull/823)
- Update LCG stacks to have root with c++23 available [#822](https://github.com/AIDASoft/podio/pull/822)
- run cppcheck pre-commit hook only for c++ files [#820](https://github.com/AIDASoft/podio/pull/820)
### Schema evolution
* Refactored testing in podio related to schema evolution quite extensively
* Several PRs in flight, need to clean them up and figure out the actually necessary changes
* https://github.com/AIDASoft/podio/pull/803
* https://github.com/AIDASoft/podio/pull/828
* Goal: support at least the evolution of the kind necessary for the `spin` -> `helicity` evolution for MCParticle
* Technically should be possible with ROOTs I/O rules, but bug in TTree implementation
* https://github.com/root-project/root/issues/19650
* https://root-forum.cern.ch/t/manual-schema-evolution-with-i-o-rules-and-branches-containing-vector-t/64026
* Currently working on:
* Version the Data PODs **except for the current version** to trigger ROOTs automatic schema evolution. Seems to work, except for the ROOT bugs
* Make it possible to read multiple old schemas
* **Requires a change of the grammar that is used in the *evolution files***.
* https://github.com/AIDASoft/podio/pull/845
* [ ] Is this a problem?
### Make sure to not consume all available memory on garbage data
* https://github.com/AIDASoft/podio/pull/842
* Discovered in testing, where it can be mitigated [#836](https://github.com/AIDASoft/podio/pull/836)
* Looks very much like a hot-fix that might be rather brittle
* Need to play some tricks already to not make the optimizer remove everything
* [ ] Try to make a reproducer and see if this is a ROOT issue
* [ ] Verify this crashes with debug builds (of podio) of Key4hep stack
* Can we try to store some "parity" information, e.g. the actual collection size to check whether what we read is correct?
* Might break with `size() == 0`, i.e. empty collections
* Not yet happened in the wild, only occured in testing so far, but once schema evolution is in place people might stumble over this
* Solve later?
* Can we catch this earlier?
* E.g. check information from ROOT file to see if things match
* No clear decision yet how to best handle this
* [ ] Confirm that RNTuple is not affected
## EDM4hep
* https://github.com/key4hep/EDM4hep/pulls
* https://github.com/key4hep/EDM4hep/issues
* https://github.com/orgs/key4hep/projects/5
### Merged PRs
- Replace the spin by a helicity property for the MCParticle [#404](https://github.com/key4hep/EDM4hep/pull/404)
- write UserDataCollection in example edm4hep file [#444](https://github.com/key4hep/EDM4hep/pull/444)
- fix `edm4hep2json` not recognizing generator metadata types [#442](https://github.com/key4hep/EDM4hep/pull/442)
### Rework the generator related information structs
* https://github.com/key4hep/EDM4hep/pull/446
* https://github.com/key4hep/EDM4hep/issues/409
* Remove `GeneratorPdfInfo` / partially merge it into `GeneratorEventParameters`
* **Existing files with these datatypes will break**
* [ ] Has anyone used these outside of k4GeneratorsConfig?
* [ ] Verify that we can indeed store all the necessary information int his class
* Keep in mind that we also have file and event level parameters to store more things
### Documentation for subtle issues wrt LCIO
* https://github.com/key4hep/EDM4hep/pull/447
* [ ] Any complaints / comments?
### Use edm4hep.h in edm4hep2json to avoid hardcoding the types
* https://github.com/key4hep/EDM4hep/pull/443
* [ ] New podio tag
## Converter & MarlinWrapper
## AoB
## Next meeting:
* Sep 30, 09:00