EDM4hep Discussion
Zoom
EDM4hep Live Notes
==================
Date: February 9, 2021
Indico: https://indico.cern.ch/event/1001383/
This is a document for taking notes during EDM4hep meetings.
Connected: Tao, Andre, Wenxing, Weidong, Frank, Jiaheng, Teng, Placido, Gerri, Birgit, Benedikt, Graeme, Sanghyun, Thomas, Valentin, Clement
Apologies:
## Introduction and General Points
### Virtual Chep
* **First Drafts next week, Tuesday**
* papers(!) due February 28, 2021
* Submissions should consist of a paper of 6-10 pages, following the instructions for authors. Paper submission is open until 28 February 2021.
* https://indico.cern.ch/event/948465/page/21562-instructions-to-submitters
* Contribution:
* Key4hep overview
* podio+edm4hep!
* Created Overleaf and outline
## Fixing Compiler Warnings
* See slides
* PRs
* https://github.com/AIDASoft/podio/pull/158 (close?)
* https://github.com/AIDASoft/podio/pull/156 (merge?)
*
* Unfixable warning for clang and overlength-string in root dictionary
* Check with newest root version
* DD4hep ignores the warning
https://github.com/AIDASoft/DD4hep/blob/c179ef49bb51c3ce537b837b335b7293ab59105b/cmake/DD4hepBuild.cmake#L606-L610
* Make a tag after all the warnings are fixed
## Progress and Discussion
## Podio
### Benchmarking
[Thomas] Added some scripts and tools to have almost automatic benchmarking and some results using k4SimDelphes to "generate" data for I/O. Could be made fully automatic with a bit more work and if we want it to be fully automatic.
* https://github.com/tmadlener/podio_benchmarking
* Example results: https://github.com/tmadlener/podio_benchmarking/tree/master/results/k4SimDelphes/ee_Z_bbbar
### Issues/PRs
#### Heap-use-after-free
* https://github.com/AIDASoft/podio/issues/174
* Not a problem in frameworks, but if collections used outside of them
* Deep inside the memory management of podio, so not easy to fix
* Happens more often with clang than with gcc, but could be compiler options.
* Flagged by address-sanitizer
* Compare with the DD4hep "Handle"s
* LINK:
#### more fixes to unsigned and shadowed variables
* https://github.com/AIDASoft/podio/pull/158
* https://github.com/AIDASoft/podio/pull/171
* effc++ warnings not all fixable or not relevant
* Should check if worth fixing, or downsides
* https://github.com/AIDASoft/podio/issues/170
* sign vs unsigned
* using negative values for some special cases (invalid, untracked), could use largest unsigned, or cast to signed when comparing with vectors
* Maybe better to leave it signed to avoid possible issues with `max<unsigned> - 1`
* Use a typedef for the "podIDType"?
*
#### Multiple Yaml files
* https://github.com/AIDASoft/podio/issues/168
*
#### c++ concepts
* BH: add compile time checks for class behaviours: e.g., movable
#### CollectionIterator does not fully satisfy iterator concept
* https://github.com/AIDASoft/podio/issues/150
* For const collections, would be useful, e.g. using std::find on the collection
#### Idea: True reference collections
* https://github.com/AIDASoft/podio/issues/146
#### issue w/ ROOT and (vectors of) non-copyable collections
* happens in ROOT 6.22
* PM: there is a patch available in LCG repository
* ROOT team is working on a general solution
#### What are the different branches in the root file?
* Related to use in RDataFrame
* Encode more information in the _relation_ branch names?
#### Multi-Threading
See minutes of https://indico.cern.ch/event/969468/
--> Open issue(s) for further discussion
* Thomas and Benedikt discussing and started to work, nothing to report yet
#### "event class" in podio
* Currently being perceived
### PRs
* https://github.com/AIDASoft/podio/pulls
### Meta Data
#### Usage of "metadata" for user defined data
* need to check if current implementation addresses all use cases
* need test use-cases
### Issues following MetaData Developments
* cannot write out event data previously read from file
* Issue: https://github.com/AIDASoft/podio/issues/103
* Test: https://github.com/AIDASoft/podio/pull/102
* TM: have fix, but break framework core handling of collections
* there seems to be a fix in the Gaudi ROOTWriter in FCC-EDM !?
* historical reason, fixes and developments should be back ported to PODIO
* ...
### EventStore
### Schema Evolution
- Version for object descriptions, etc.
- Open issue: https://github.com/AIDASoft/podio/issues/86
### Features
* Subset collections?
## LCIOConverters
* https://github.com/key4hep/k4LCIOReader
* TrackState Covariance Matrix conversion from LCIO
* https://github.com/key4hep/k4LCIOReader/issues/8
* Change EDM4hep storage of the covariance matrix
* What is done in ACTS?
* Different track parametrisation and time, no easy conversion
## EDM4hep
https://github.com/key4hep/EDM4hep/pulls
### EDM4hep documentation page moved
### EDM4hep tools
https://github.com/key4hep/EDM4hep-utils
### Issues
### Type difference between EDM4hep and LCIO algorithmType (vertex)
* https://github.com/key4hep/EDM4hep/issues/106
* Related to how to store metadata or collection parameters
* Maybe never really used in LCIO
* Usually store a map of algorithms as collection parameters and refer to the key via the algorithmType (or equivalent)
* --> Keep the int in EDM4hep
### Tracker Hit
* Q: Tracker hit input to tracking algorithms?
* A: In LCIO different traker hits: Planar and Cylindrical using inheritance. Still needs to be adressed how to do this in EDM4hep.
* Q: Is inheritance needed?
* Q: What to use for Driftchambers?
* Open issue:
### Need review of EDM4hepDelphes output
* Output is not stored if no tracks or towers created (?)
* Allow also other types to be part of the list
* Allow construction in a more general way (VV)
* Need to assume there is a complete list of reconstructed particles?
* Relations:
* FCCSW: Issue with more than one RecoParticle pointing to one MCParticle
* In LCIO to Delphes, conversion happens later than in edm4hep, maybe delphes does de-duplication?
* TODO: open issue in edm4hep with reproducer (VV)
--> Moving to separate repository
### PRs
https://github.com/key4hep/EDM4hep/pulls/
### Release 1.0
## AOB
### Conditions handling in Belle2
* Benedikt, or Martin Ritter
### Feedback from FCC tutorial for snowmass
* Common question: What are the different branches in the root file?
* ``uproot`` was also used to access the root file
* Basically re-implemented event store
* Associations
* Try to get this into the, e.g., podio repository
### Next meeting:
* February 23, 2021