EDM4hep Discussion

Europe/Zurich
Zoom

Zoom

Zoom Meeting ID
98484040528
Host
Andre Sailer
Useful links
Join via phone
Zoom URL

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)

There are minutes attached to this event. Show them.
    • 09:00 09:05
      Introduction 5m
      Speakers: Andre Sailer (CERN), Frank-Dieter Gaede (Deutsches Elektronen-Synchrotron (DE)), Thomas Madlener (Deutsches Elektronen-Synchrotron (DESY))
    • 09:50 09:51
      Discussion 1m
      Speaker: Dr All