EDM4hep Discussion
Zoom
EDM4hep Live Notes
==================
Date: Mar 04, 2025
Indico: https://indico.cern.ch/event/1521596/
Connected: Tao, Juan, Andre, Sanghyun, Juraj, Thomas, Aurora, Jacopo, Mateusz, Frank
Apologies:
## Introduction and General Points
* CHEP proceedings submitted
### 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
* Make `podio::ObjectID` and user facing handles usable in `unordered_{map,set}` [#733](https://github.com/AIDASoft/podio/pull/733), [#738](https://github.com/AIDASoft/podio/pull/738)
* Fix bug in templated setter for links [#736](https://github.com/AIDASoft/podio/pull/736)
* Make collections satisfy `forward_iterator` and beyond [#720](https://github.com/AIDASoft/podio/pull/720).
* Also close [#273](https://github.com/AIDASoft/podio/pull/273)
* Smaller fixes
* Remove cmake warnings about c++17 deprecation [#741](https://github.com/AIDASoft/podio/pull/741)
* Fix roundtrip test failure without SIO [#742](https://github.com/AIDASoft/podio/pull/742)
* Bump patch version to signify development version [#739](https://github.com/AIDASoft/podio/pull/739)
### [WIP] Store the collection information in a struct instead of a tuple
* https://github.com/AIDASoft/podio/pull/711
* Makes `TTree` version store information as `struct` instead of `std::tuple`
* RNTuple version already stores info without `std::tuple`, **but in different format**
* [ ] Harmonize formats
### Revisiting writing iterators
* https://github.com/AIDASoft/podio/issues/281
* Defining overloads of operators for r-values could be used to improve situation
* Could delete it / make it a compilation error when used for assignment
* Could overload it "properly" such that r-value does the assignment
* R-value overloads would behave differently than l-value overloads
* Very confusing behavior also to handles, because there is a spooky action at a distance (see issue for more detailed explanation)
* **Make it hard compilation error to try to assign to dereferenced iterator**
* Pure improvement on the current situation where things compile but don't work
## EDM4hep
* https://github.com/key4hep/EDM4hep/pulls
* https://github.com/key4hep/EDM4hep/issues
* https://github.com/orgs/key4hep/projects/5
### Detailed simulation of secondaries
* How to store more detailed information about which process created a particle or contribution?
* In *tracking volume* detailed information can be configured via ddsim steering
* Not sure if also possible in calorimeter (file sizes would explode)
* Can enable more detailed tracking by using *simulation status* bits in MCParticle (DD4hep EDM) that are currently unused
### Merged PRs
* Documentation updates
* Make dedicated markdown documentation pages more easily reachable in doxygen [#403](https://github.com/key4hep/EDM4hep/pull/403)
* Clarify the documentation of the Cluster direction members [#406](https://github.com/key4hep/EDM4hep/pull/406)
### [WiP] Replace the spin by a helicity property for the MCParticle
* https://github.com/key4hep/EDM4hep/pull/404
* Debugging special schema evolution that ideally stores `spin.z` into `helicty`
* [x] Do we want / need this? -> Yes, at least would be worthwile to see if schema evolution can deal with this
* Quite a few existing LCIO files with `spin`, but could be absorved in the LCIO to EDM4hep converter
* [ ] Are there existing EDM4hep files with this?
* [ ] Need to check where this breaks downstream
* `9` as default value for "unset", why?
* Historically what some generators have been using
### add python bindings for PIDHandler
* https://github.com/key4hep/EDM4hep/pull/397
* Some details still to be clarified(?)
* Lifetimes with `std::optional` (and others) are not behaving intuitively on the python side (with cppyy)
* Could add throwing overloads for wrappers because there is better support for that. But naming could become confusing because we have `get_optional` in other cases and would need a different name here for the throwing version.
* Many use cases dictated by podio usage of `optional` (e.g. parametes).
* [ ] Potentially need to discuss / decide on how our interfaces should look like in general
### Use pre-built hooks in pre-commit
* https://github.com/key4hep/EDM4hep/pull/402
* Streamlines setup
* "Looks like other repositories"
* clang-tidy not easily packaged (no issue for EDM4hep, but other packages use it)
* [ ] Can pre-commit use a different config file than `.pre-commit-config.yaml`
## Converter & MarlinWrapper
* `convertAll` ignored after changes for `IOSvc` compatibility [#219](https://github.com/key4hep/k4MarlinWrapper/issues/219)
* Turns out to be due to minor issue of MarlinWrapper not considering collections that have been added via `Gaudi::Algorithm` and `DataHandle` to the TES
* PR with fix [#225](https://github.com/key4hep/k4MarlinWrapper/pull/225)
* CellID encoding string missing in conversion from LCIO -> EDM4hep
* Standalone: https://github.com/key4hep/k4EDM4hep2LcioConv/issues/114
* MarlinWrapper: https://github.com/key4hep/key4hep-tutorials/pull/21
* `MetaDataHandle` read access behaving differently between `PodioDataSvc` and `IOSvc`?
## AoB
## Next meeting:
* Mar 18, 09:00 CET (Thomas on vacation)