EDM4hep Discussion

Europe/Zurich
Zoom

Zoom

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

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

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