Skip to main content

EDM4hep Discussion

Europe/Zurich
Zoom

Zoom

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

Date: July 8, 2025
Indico: https://indico.cern.ch/event/1567048/

Connected: Leonhard, Andre, Juan, Tao, Thomas

Apologies: 


### 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_GENERATE_DICTIONARY a thin wrapper around REFLEX_GENERATE_DICTIONARY [#807](https://github.com/AIDASoft/podio/pull/807)
* Allow calling finish() multiple times, with no effect after the first [#798](https://github.com/AIDASoft/podio/pull/786)
* Introduce a FrameData concept [#786](https://github.com/AIDASoft/podio/pull/786)
* Change the default setting of the generic writer to RNTuple when `PODIO_DEFAULT_WRITE_RNTUPLE` is set [#784](https://github.com/AIDASoft/podio/pull/784)
* Smaller fixes for CI and minor issues
    * Add ROOT_INCLUDE_PATH from the environment to the tests [#788](https://github.com/AIDASoft/podio/pull/788)
    * Workaround the Julia isues that we observe in CI [#791](https://github.com/AIDASoft/podio/pull/791)
    * Use python packages from the Key4hep stack in the pre-commit workflow [#789](https://github.com/AIDASoft/podio/pull/789)
    * Switch back to docker runtime for CI [#802](https://github.com/AIDASoft/podio/pull/802)
    * Fix deprecation warning by updating hook version [#804](https://github.com/AIDASoft/podio/pull/804)
    * Add missing override to the destructor of UserDataCollection and LinkCollectionImpl [#785](https://github.com/AIDASoft/podio/pull/785)
    
### Schema evolution
* Probably need to revisit this with some non-trivial time investment
* Not all advertised features working yet
* Current working model doesn't seem to allow to properly "intercept" ROOT changes before we would even be able to do manual schema evolution
* Several PRs & issues related:
    * https://github.com/AIDASoft/podio/issues/800 (reproducer: https://github.com/AIDASoft/podio/pull/801)
    * https://github.com/AIDASoft/podio/issues/795 (fixed by: https://github.com/AIDASoft/podio/pull/799)
    * https://github.com/AIDASoft/podio/issues/796
    * https://github.com/AIDASoft/podio/pull/797
    * https://github.com/AIDASoft/podio/pull/803

### Make [] return an immutable object in Python
* https://github.com/AIDASoft/podio/issues/794
* https://github.com/AIDASoft/podio/pull/806
* Pythonizations only half a solution, because you can access collections without loading the pythonizations via e.g. `import edm4hep`
    * Implementation in C++ throws `std::out_of_bounds` instead of `IndexError`
    * Raising `IndexError` from c++ doesn't work on LCG stacks and Key4hep release. No clear reason why
    * Not working == not raising the error at all(!) but gives you an empty object
* No change in behavior, because previously pythonizations were loaded always when writing files
* Probably not possible to have pythonizations automatically loaded (e.g. by providing them centrally in podio). Would always need an explicit `import podio` ...
    
 
### Add a workaround for avoiding opening every library in LD_LIBRARY_PATH (part 2)
* https://github.com/AIDASoft/podio/pull/808
* Apparently different behaviors when running locally, vs. when running against CVMFS(? at least when using LCG or Key4hep releases)
* [ ] Implement test for this. Needs `strace` in CI images

### Simplify constructors by using member initializers
* https://github.com/AIDASoft/podio/pull/808
* [ ] Clarify if `std::make_unique<std::mutex>` works now for `nvcc`

### Lack of collection ownership in Python allows reusing collections from an existing frame
* https://github.com/AIDASoft/podio/issues/805
* [ ] Check in C++ for consistency even though not necessary or put it into the python bindings that we already have?
* Could make it possible to discover whether a collection has been moved from with the new flag that we would need for this

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

* Add a `stepLength` member to `CaloHitContribution` [#432](https://github.com/key4hep/EDM4hep/issues/432)


### [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
        * It seemingly can't (see above)
    * 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
* **Main question: wait for podio schema evolution to be able to do this and delay EDM4hep 1.0 or do this now and fix schema evolution later?**


## Converter & MarlinWrapper


## AoB

* Iterating over collection in python gives you a mutable object instead of an immutable one.
    * `clone` doesn't work correctly on mutable objects -> relations are not OK in python on cloned objects  (fixed for mutable here: https://github.com/AIDASoft/podio/pull/583)
    * [ ] Juan will open issue with more details
    

* Thomas on leave until Aug 11

## Next meeting:
* Pick up after summer (planning for Aug 19, TBC)

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