EDM4hep Discussion
Zoom
EDM4hep Live Notes
==================
Date: September 10, 2024
Indico: https://indico.cern.ch/event/1455240/
Connected: Andre, Birgit, Pere, Leonhard, Mateusz, Tao, Jacopo, Swathi, Juan, Thomas, Benedikt, Frank, Gerri
Apologies: Brieuc
## Introduction and General Points
### 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
* Add an RDataSource for podio files and collections ([#593](https://github.com/AIDASoft/podio/pull/593))
* Make podio build version read from file accessible from python ([#569](https://github.com/AIDASoft/podio/pull/659))
* Add two checks to not crash when a file doesn't exist or can't be opened ([#666](https://github.com/AIDASoft/podio/pull/666))
* Add pythonization for freezing class attribute and preventing creating new attributes by mistake ([#663](https://github.com/AIDASoft/podio/pull/663))
* fix importing submodules in pythonizations ([#667](https://github.com/AIDASoft/podio/pull/667))
* Cleanup / minor fixes
* Point to the documentation from the top of the README ([#661](https://github.com/AIDASoft/podio/pull/661))
* Add graphviz dependency ([#550](https://github.com/AIDASoft/podio/pull/660))
* Remove the check for different filesystem libs and fallback to Boost ([#662](https://github.com/AIDASoft/podio/pull/662), [#664](https://github.com/AIDASoft/podio/pull/664))
* CI: Make sure to build EDM4hep with c++20 ([#658](https://github.com/AIDASoft/podio/pull/658))
### Promoting subset collections to full collections
- https://github.com/AIDASoft/podio/issues/655
- https://github.com/key4hep/k4FWCore/issues/226
- Main question: Relations that point to elements of the subset collection; Where should they point after the cloning?
- Probably no general solution, especially if there are multiple clones
- Which functionality is needed to make it possible to hand roll the promotion code for specific use cases.
### Injecting datamodel versions
- Do we have to require SemVer?
- Currently yes, we store them as `podio::version::Version`
- Could store it as a `std::string` for other versioning schemes
- Decision for now: merge as is and wait until someone complains about the fact that podio defines the versioning schema for packages that use it
### Templated links between arbitrary datatypes
* [ ] https://github.com/AIDASoft/podio/pull/257
* Working on prototype integration into EDM4hep
### Make collection iterators fulfill `LegacyInputIterator` and `input_iterator` concept (wip)
* [ ] https://github.com/AIDASoft/podio/pull/626 (Draft)
* [ ] Documentation + usability upgrade for algorithms
### `podio-dump` implementation in c++ (wip)
* https://github.com/AIDASoft/podio/pull/620
* Complaints here: https://github.com/key4hep/EDM4hep/issues/312
* ~10 times faster than python implementation
* Needs `fmt`-lib for formatting (or gcc > 13 / clang > 16)
* dumping of datamodels stored in files not easy to implement in c++
- Would require to implement an in-memory conversion from JSON to YAML
- Keep that functionality in python in new tool
### Frame serialization / deserialization
* [ ] https://github.com/AIDASoft/podio/issues/565
* Not part of v1.0
* Proposal from D. Lawrence: https://github.com/AIDASoft/podio/pull/579
### Leak in SIO Frame reading
* [ ] https://github.com/AIDASoft/podio/issues/594
## EDM4hep
* https://github.com/key4hep/EDM4hep/pulls
* https://github.com/key4hep/EDM4hep/issues
* https://github.com/orgs/key4hep/projects/5
### Merged PRs
* Move to c++20 and remove vector_legacy_utils ([#343](https://github.com/key4hep/EDM4hep/pull/343))
* Remove C++17 compatibility in version header file ([#354](https://github.com/key4hep/EDM4hep/pull/354))
* Add artifacts with EDM4hep files ([#353](https://github.com/key4hep/EDM4hep/pull/353))
* Fix assignment to non-existing members in createEDM4hep.py ([#357](https://github.com/key4hep/EDM4hep/pull/357))
* CI: reowrk workflows to make them a bit easier to maintain ([#360](https://github.com/key4hep/EDM4hep/pull/360))
### Open PRs
* add loading pythonizations from podio
* https://github.com/key4hep/EDM4hep/pull/290
* Figuring out why cppyy choses "wrong" overload
* Which overload behavior do we want to keep? We can choose `at` for getting immutable objects or `operator[]` which always returns mutable ones.
* In principle getting immutable behavior for reading files would be the "right thing" to do as it makes reading safer and less error prone.
* No objections -> go with pythonization for EDM4hep
* Some measurements to still be done on how the impact is for tab completion in environments that use an LSP for completion
* [WIP] Add read tests to ensure backwards compatibility
* https://github.com/key4hep/EDM4hep/pull/358
* Similar to what we do in podio to ensure we can truly read files written with older versions
* Pre-requisite for switching out links with templated links
* Use the Key4hepConfig flag to set the standard, compiler flags and rpath magic.
* https://github.com/key4hep/EDM4hep/pull/359
* Common compiler flags throughout Key4hep
* No changes in how EDM4hep is consumed by other (CMake) packages, and very little changes in how EDM4hep is built (a few more warning are enabled)
## Converter & MarlinWrapper
* [merged] Convert `Nholes` and `subdetectorHoleNumbers` for tracks ([#95](https://github.com/key4hep/k4EDM4hep2LcioConv/pull/95))
* [merged] Add the possibility to patch ParticleID algorithms to standalone converter ([#94](https://github.com/key4hep/k4EDM4hep2LcioConv/pull/94))
* [merged] Remove deprecated functions ([#91](https://github.com/key4hep/k4EDM4hep2LcioConv/pull/91))
* [merged] Switch from association to link ([k4MarlinWrapper#200](https://github.com/key4hep/k4MarlinWrapper/pull/200))
## AoB
## Next meeting:
* Sep 24, 09:00