EDM4hep Discussion

→ Europe/Zurich
Zoom

Zoom

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

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

Date: September 10, 2024
Indico: https://indico.cern.ch/event/1455240/

Connected: Andre, Birgit, Pere, Leonhard, Mateusz, Tao, Jacopo, Swathi, Juan, Thomas, Benedikt, Frank, Gerri

Apologies: Brieuc

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

* Add an RDataSource for podio files and collections ([#593](https://github.com/AIDASoft/podio/pull/593))
* Make podio build version read from file accessible from python ([#569](https://github.com/AIDASoft/podio/pull/659))
* Add two checks to not crash when a file doesn't exist or can't be opened ([#666](https://github.com/AIDASoft/podio/pull/666))
* Add pythonization for freezing class attribute and preventing creating new attributes by mistake ([#663](https://github.com/AIDASoft/podio/pull/663))
* fix importing submodules in pythonizations ([#667](https://github.com/AIDASoft/podio/pull/667))
* Cleanup / minor fixes
    * Point to the documentation from the top of the README ([#661](https://github.com/AIDASoft/podio/pull/661))
    * Add graphviz dependency ([#550](https://github.com/AIDASoft/podio/pull/660))
    * Remove the check for different filesystem libs and fallback to Boost ([#662](https://github.com/AIDASoft/podio/pull/662), [#664](https://github.com/AIDASoft/podio/pull/664))
    * CI: Make sure to build EDM4hep with c++20 ([#658](https://github.com/AIDASoft/podio/pull/658))

### Promoting subset collections to full collections
- https://github.com/AIDASoft/podio/issues/655
- https://github.com/key4hep/k4FWCore/issues/226
- Main question: Relations that point to elements of the subset collection; Where should they point after the cloning?
    - Probably no general solution, especially if there are multiple clones
- Which functionality is needed to make it possible to hand roll the promotion code for specific use cases.
    
### Injecting datamodel versions
- Do we have to require SemVer? 
    - Currently yes, we store them as `podio::version::Version`
    - Could store it as a `std::string` for other versioning schemes
    - Decision for now: merge as is and wait until someone complains about the fact that podio defines the versioning schema for packages that use it

### Templated links between arbitrary datatypes
* [ ] https://github.com/AIDASoft/podio/pull/257
* Working on prototype integration into EDM4hep

### Make collection iterators fulfill `LegacyInputIterator` and `input_iterator` concept (wip)
* [ ] https://github.com/AIDASoft/podio/pull/626 (Draft)
    * [ ] Documentation + usability upgrade for algorithms

### `podio-dump` implementation in c++ (wip)
* https://github.com/AIDASoft/podio/pull/620
* Complaints here: https://github.com/key4hep/EDM4hep/issues/312
* ~10 times faster than python implementation
* Needs `fmt`-lib for formatting (or gcc > 13 / clang > 16)
* dumping of datamodels stored in files not easy to implement in c++
     - Would require to implement an in-memory conversion from JSON to YAML
     - Keep that functionality in python in new tool
        
### Frame serialization / deserialization
* [ ] https://github.com/AIDASoft/podio/issues/565
* Not part of v1.0
* Proposal from D. Lawrence: https://github.com/AIDASoft/podio/pull/579

### Leak in SIO Frame reading
* [ ] https://github.com/AIDASoft/podio/issues/594

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

### Merged PRs

* Move to c++20 and remove vector_legacy_utils ([#343](https://github.com/key4hep/EDM4hep/pull/343))
* Remove C++17 compatibility in version header file ([#354](https://github.com/key4hep/EDM4hep/pull/354))
* Add artifacts with EDM4hep files ([#353](https://github.com/key4hep/EDM4hep/pull/353))
* Fix assignment to non-existing members in createEDM4hep.py ([#357](https://github.com/key4hep/EDM4hep/pull/357))
* CI: reowrk workflows to make them a bit easier to maintain ([#360](https://github.com/key4hep/EDM4hep/pull/360))

### Open PRs

* add loading pythonizations from podio
    * https://github.com/key4hep/EDM4hep/pull/290
    * Figuring out why cppyy choses "wrong" overload
    * Which overload behavior do we want to keep? We can choose `at` for getting immutable objects or `operator[]` which always returns mutable ones.
    * In principle getting immutable behavior for reading files would be the "right thing" to do as it makes reading safer and less error prone.
    * No objections -> go with pythonization for EDM4hep
    * Some measurements to still be done on how the impact is for tab completion in environments that use an LSP for completion
    
* [WIP] Add read tests to ensure backwards compatibility
    * https://github.com/key4hep/EDM4hep/pull/358
    * Similar to what we do in podio to ensure we can truly read files written with older versions
    * Pre-requisite for switching out links with templated links
    
* Use the Key4hepConfig flag to set the standard, compiler flags and rpath magic.
    * https://github.com/key4hep/EDM4hep/pull/359
    * Common compiler flags throughout Key4hep
    * No changes in how EDM4hep is consumed by other (CMake) packages, and very little changes in how EDM4hep is built (a few more warning are enabled)

     
## Converter & MarlinWrapper

* [merged] Convert `Nholes` and `subdetectorHoleNumbers` for tracks ([#95](https://github.com/key4hep/k4EDM4hep2LcioConv/pull/95))
* [merged] Add the possibility to patch ParticleID algorithms to standalone converter ([#94](https://github.com/key4hep/k4EDM4hep2LcioConv/pull/94))
* [merged] Remove deprecated functions ([#91](https://github.com/key4hep/k4EDM4hep2LcioConv/pull/91))
* [merged] Switch from association to link ([k4MarlinWrapper#200](https://github.com/key4hep/k4MarlinWrapper/pull/200))
   
## AoB

 

## Next meeting:
* Sep 24, 09:00

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