EDM4hep Discussion
Zoom
EDM4hep Live Notes
==================
Date: Feb 18, 2025
Indico: https://indico.cern.ch/event/1516684/
Connected: Aurora, Swathi, Juan, Leonhard, Thomas, Frank, Sanghyun, Jacopo, Mateusz, Andre
Apologies:
## 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
* Make it possible to only read a subset of available collections [#504](https://github.com/AIDASoft/podio/pull/504)
* Add globbings upport in `makeReader` and `CreateDataSource` [#729](https://github.com/AIDASoft/podio/pull/729)
* fix setting link with interface without specific link direction [#736](https://github.com/AIDASoft/podio/pull/736)
* Make sure to set valid collectionID for all links [#732](https://github.com/AIDASoft/podio/pull/732)
### Add `std::hash<podio::ObjectID>` specialization
* https://github.com/AIDASoft/podio/pull/733
* Make `podio::ObjectID` usable in hash maps / sets
* [ ] Properties of resulting hash OK?
* [ ] Hash full objects intead?
* Yes, please
* Also available in python? Could work automatically with cppyy (added in 2019 in standalone, but not in ROOT?)
* Maybe already works in python. To be checked
### Make collection iterators `forward_iterator` and beyond
* https://github.com/AIDASoft/podio/pull/720
* Some minor caveats apply (see PR top comment)
* [x] Ready to merge?
* Yes
### [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
## EDM4hep
* https://github.com/key4hep/EDM4hep/pulls
* https://github.com/key4hep/EDM4hep/issues
* https://github.com/orgs/key4hep/projects/5
### Merged PRs
* Use `std::swap` and add a default case for switch statement [#405](https://github.com/key4hep/EDM4hep/pull/405)
* Some c++20 cleanup
### [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
### Make it possible to skip N events when reading LCIO files
* https://github.com/key4hep/k4MarlinWrapper/pull/220
### Fix conversion bug of `TrackerHitSimTrackerHitLink`
* See https://github.com/key4hep/CLDConfig/issues/64 for origins and discussion
* Two fixes:
* Converter: Properly take into account that we have to lookup tracker hits in two maps: https://github.com/key4hep/k4EDM4hep2LcioConv/pull/112
* Make sure to pass appropriate map to the converter: https://github.com/key4hep/k4MarlinWrapper/pull/221
## AoB
### k4geo
* Original issue: Layered calorimeter data with wrong calculation
* https://github.com/key4hep/k4geo/issues/427
* Fix in geometry directly
* https://github.com/key4hep/k4geo/pull/433
* Making layered calorimeter data a plugin
* https://github.com/key4hep/k4geo/pull/432
* How to consolidate the fixes
* Plugin could be used be other calorimeters (should be written very generically)
* But there are a lot of detector drivers that would need changes to use it
* Giovannis fixes can still be absorbed in the plugin technically
* Keep plugin inputs in place? I.e. potentially repeat values in the xml
* [ ] Need to organize the order in which things are merged
## Next meeting:
* Mar 04, 09:00 CET