-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use JANA's new first-class PODIO integration (#578)
### Briefly, what does this PR introduce? This PR allows eicrecon to use PODIO associations correctly, resolving a major source of confusion, entropy, and bugs. As of v2.1.0, the JANA2 framework has first-class support for PODIO. This means that users can directly read and write PODIO collections. Even if users continue to use the classic JANA vector-of-pointers style, under the hood the PODIO objects are always registered to a collection and that collection is registered to a frame. JANA understands and abides by PODIO's memory ownership semantics, including supporting subset collections. This PR also converts three problematic factories into multifactories, which support multiple outputs. These factories used direct object ID rewriting in order to set up valid associations, and/or had particularly thorny PODIO ownership issues. They are now models for how to write factories in the future. These factories are: MatchClusters_factory, ParticlesWithTruthPID_factory, and TrackingResult_factory. ### What kind of change does this PR introduce? - [ ] Bug fix (issue #__) - [ ] New feature (issue #__) - [ ] Documentation update - [ ] Other: __ ### Please check if this PR fulfills the following: - [ ] Tests for the changes have been added - [ ] Documentation has been added / updated - [x] Changes have been communicated to collaborators ### Does this PR introduce breaking changes? What changes might users need to make to their code? - The way that users should write future factories has changed. Users should look to TrackingResult_factory as an example of how to write factories with multiple outputs. - Output files are now written using Podio's Frame writer, which is incompatible with Podio's older EventStore writer. ### Does this PR change default behavior? - JEventProcessorPODIO used to maintain a list of factories that have thrown an exception. After it crashed once, it would never be called again. Now, it will be called again on every event. The reason for this change in behavior is that PODIO v0.16.3 has a bug where collection IDs depend on insertion order, which causes the PODIO frame writer to crash. Excepting factories still produce an empty collection (thus preserving the insertion order), which the JEventProcessorPODIO then persists. --------- Co-authored-by: Nathan Brei <[email protected]>
- Loading branch information
1 parent
11e728d
commit e14e81b
Showing
151 changed files
with
1,449 additions
and
3,419 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.