EDM4hep Discussion

Europe/Zurich
Zoom

Zoom

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

EDM4hep Live Notes
==================

Date: May 27, 2025
Indico: https://indico.cern.ch/event/1552759/

Connected: Andre, Mateusz, Birgit, Brieuc, Leonhard, Juan, Tao, Thomas

Apologies: Frank


### Upcoming workshops / conferences
https://github.com/orgs/key4hep/projects/4/views/1
    
## Progress and discussion

### Brief FCC week report
* Packed agenda, only one parallel SW session. Focussed on reconstruction & geometry
    * No dedicated Key4hep talk
* Several talks mentioning Key4hep

### ParticleID conversion and ObjectIDs
* See presentations
* concern for new service: Partially by-pass Gaudi service and collection handling
    * Makes it possible to get "arbitrary" collections
    * Might break in the future if new / other ways of passing data among algorithms are added to Gaudi
    * In principle already possible now with EDM4hep (e.g. getting Tracks from ReconstructedParticle)
* How long to keep full compatibility between LCIO & EDM4hep
    * Considerable amount of person power spent so far
    * Definitely for EDM4hep v1.0
* Make service private? Is it possible?
    * Move to MarlinWrapper?
    * Need to keep the collection ID assignment in FWCore
    
## Podio
* https://github.com/AIDASoft/podio/pulls
* https://github.com/AIDASoft/podio/issues
* https://github.com/orgs/AIDASoft/projects/2/views/1
 
### Merged PRs

* Fix unity builds with SIO enabled by giving a variable different names [#781](https://github.com/AIDASoft/podio/pull/781)
* Add a workaround for avoiding opening every library in LD_LIBRARY_PATH [#775](https://github.com/AIDASoft/podio/pull/775)
* Read the collection information from structs starting with version 1.2.999 [#780](https://github.com/AIDASoft/podio/pull/780)
* Formalize common interface collections with a concept [#758](https://github.com/AIDASoft/podio/pull/758)
* Enable building the DataSource for sanitizers CI workflows [#779](https://github.com/AIDASoft/podio/pull/779)
* Clean up the ROOT readers and writers [#777](https://github.com/AIDASoft/podio/pull/777)
    
### Tag v01-03

### Intra-frame parallelism and reproducible ordering
* https://github.com/AIDASoft/podio/issues/778
* Use case(?) from EIC
* Not yet clear how to best deal with this
* Generate content based comparison operators?
* Adding a dedicated `sort` method to collections?
    * Very similar functionality could be done with constructing from sorted range

### Make it possible to get the collection for an object
* https://github.com/AIDASoft/podio/pull/782
* Sparked by the discusssion at last Key4hep meeting
* Main idea: Hide the ObjectID, but offer the actually desired functionality


## EDM4hep
* https://github.com/key4hep/EDM4hep/pulls
* https://github.com/key4hep/EDM4hep/issues
* https://github.com/orgs/key4hep/projects/5 


### Merged PRs
* Bump the required version of podio to 1.3 [#430](https://github.com/key4hep/EDM4hep/pull/430)
* update ci build badge in readme [#429](https://github.com/key4hep/EDM4hep/pull/429)

### New tag v00-99-02
* Backwards compatible to v00-99-01


### Pointer persistency in EDM4hep
* https://github.com/key4hep/EDM4hep/issues/418
* Interplay, e.g. with Pandora that expects a pointer
    * Pandora is not touching this, just using this to transport information along
    * E.g. could be `std::any` and Handle is kept alive because `std::any` is constructed by value (via new member)
* Need to have a way for EDM4hep
    * Current workarounds would require filling a temporary vector to keep pointers to handles alive
    * No really user friendly way at the moment 
* Do we need a nice way? Should only appear in few central places
    * [x] Document workaround with vector
    * [ ] Point uses to issue and make them indicate they use this
    * [ ] Decide on number of actual users whether it's worth the effort to do a "proper solution"

### [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


## Converter & MarlinWrapper

### New nuances in keeping LCIO and EDM4hep event cotent consistent
* https://github.com/key4hep/k4MarlinWrapper/issues/235
* https://github.com/key4hep/k4MarlinWrapper/pull/236
* Attaching ParticleID objects to ReconstructedParticles (EDM4hep to LCIO) uses ObjectID (mainly collection ID) for looking up names
    * Collections that are created in function algorithms do not have a collection ID assigned
        * See: https://github.com/key4hep/k4FWCore/issues/311
    * Workaround using the wrapper internal name mapping not as straight forward as initially thought
* Does assigning collection id outside of a Frame break a contract?
    * Can no longer check whether a collection belongs to a Frame.
    * ObjectIDs main purpose is persistency. Should probably considered an implementation detail
    * Insertion into the TES or the Frame is an implementation detail as well (ownership hand-off is the defining feature)
    * Algorithm behavior might depend on whether it's called standalone or within Gaudi
* Should  collection / object id be non-public?
    * Definitely need to document what are the things that can be depended on and which ones don't
    * Expose it only for infrastructure / "expert" code that actually needs it
    * What about maps going from object to collection, e.g. for filtering on range of objects from different collections. (Actual use case?)
* [x] Check if MarlinWrapper issues can be solved differently
    * **No, not really**
    * But we can hide the ObjectID
* New proposal: https://github.com/key4hep/k4FWCore/pull/312
    

## AoB
- New tags for release
    - [ ] k4geo
    - [ ] k4rectracker
    - [ ] k4reccalorimeter
    - [x] ddfastshowerml (Thomas)
    - [ ] k4marlinwrapper

## Next meeting:
* June 10, 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:10 09:30
      ParticleID conversion and collection lookup from objects 20m
      Speaker: Thomas Madlener (Deutsches Elektronen-Synchrotron (DESY))
    • 09:50 09:51
      Discussion 1m
      Speaker: Dr All