Recent Releases of jana2

jana2 - v2.4.3

Behavior changes

  • JHasOutputs represents variadic output names as std::vector<std::vector<std::string>>, which now allows for multiple variadic outputs with arbitrary lengths (Pull request #458)

  • Removed the never-used JEventProcessorSequential and JEventProcessorSequentialRoot. All their functionality has been backported to JEventProcessor. (Pull request #456)

  • JInspector is now launched using the parameter jana:inspect=true instead of the command-line argument --interactive, which works regardless of which executable runs JANA. (Pull request 459)

Bugfixes

  • Relax JFactory::Create cycle detector for the sake of JEventSourceEVIOpp (Pull request #461)

  • Fix JFactoryPodioT template error when using Podio LinkCollections (Pull request #462)

  • JEventUnfolder erroneously inserted outputs even though KeepChildNextParent was returned (Pull request #458)

  • JEventUnfolder supports parent events with zero children (Pull request #456)

  • JTopologyBuilder creates a chain of TapArrows so that independent JEventProcessors can be pipelined, allowing new-style JEventProcessors to have comparable performance to the old-style ones. (Pull request 456)

Features

  • Variadic inputs now support an EmptyInputPolicy, which allows components to optionally retrieve all databundles/collections for a given type and EventLevel, analogous to JEvent::GetFactoryAll(). (Pull request #454)

Usability improvements and refactoring

  • Improve the JANA tutorial and examples by creating a new paradigm, in which a toy reconstruction codebase is systematically built up piece-by-piece. Two versions exist, one using a lightweight (GlueX-style) datamodel, and the other using a Podio datamodel. Apart from the datamodel choice, the two versions are functionally identical. (Pull request #453)

  • Improve debugging by having the JANA1-style JEvent::GetSingle directly throw a JException instead of a size_t, thereby producing a full stack trace (Pull request #461)

  • Renamed JEventProcessor::Process(const JEvent&) to ProcessSequential to reduce user confusion (Note that this feature was experimental and unused up until now) (Pull request #456)

  • JTopologyBuilder::connect() wires arrows using port id instead of port index, reducing confusion while manually configuring topologies. (Pull request #456)

  • JFactoryT uses JDatabundle under the hood, as part of a deeper long-term refactoring. (Pull request #458, Issues #254, #276)

- C++
Published by nathanwbrei 11 months ago

jana2 - v2.4.1

Features

This release introduces CCDB caching, significantly improving performance and reducing memory usage for applications that frequently access calibration constants. The improvements apply to all the applications using JANA2. The performance tests are mainly conducted using the monitoring_hists and beam_online plugins of halldrecon (`hdroot`).


Performance Highlights

Event Processing Rates

1000 events, 32 threads
Plugins: monitoring_hists, beam_online (Primary test case)

| Configuration | Cache ON | Cache OFF | |-----------------------------|--------------|---------------| | monitoringhists + beamonline | 19 Hz | 1.2 Hz | | beam_online only | 74.7 Hz | 1.7 Hz |

Startup Time

| Configuration | Cache ON | Cache OFF | |-----------------------------|--------------|---------------| | monitoringhists + beamonline | 17 sec | 44 sec | | beam_online only | 11 sec | 10 min (!) |


Memory Usage

Cache OFF

Cache ON

  • Run 1:
  • Run 2:

Resident Memory: 1k vs. 100k Events (Cache ON)


📄 Full Changelog: [v2.4.0 → v2.4.1]


Key Benefits

  • Significant rate improvements observed
  • Memory usage reduction
  • Faster startup times

- C++
Published by RaiqaRasool about 1 year ago

jana2 - v2.4.2

Behavior changes

  • jana:max_inflight_events now defaults to nthreads regardless of whether nthreads was explicitly set. Previously it defaulted to 4 when nthreads was unset, and otherwise defaulted to nthreads. (Issue #443)
  • JEventSource::GetEventCount() is deprecated and replaced by GetSkippedCount(), GetEmittedEventCount(), and GetProcessedEventCount(). These behave intuitively when nskip is used. (Issue #428)

Features

  • Added jana:output_processed_event_numbers parameter to assist with debugging (Issue #425)
  • Ported janaroot plugin from JANA1
  • JFactory detects and excepts on cycles (Issue #423)
  • Improved scale test visualizations, including plotting multiple scaling tests on the same plot and supporting log scaled axes.

Bugfixes

  • Missing template argument in VariadicPodioOutput
  • JEvent was being marked as warmed up prematurely
  • JAutoactivator was being called last instead of first (Issue #440)
  • If the user attempted to run without providing a JEventSource, processing would crash with an ArithmeticException instead of a helpful error message (Issue #437)
  • JEventSource::FinishEvent() was being called spuriously (Issue #424)

Refactoring

  • Preliminary support for random-access JEventSources is provided via JEventSource::Skip(). This feature should be considered experimental for now because it doesn't work with barrier events yet. (Issue #422)

- C++
Published by nathanwbrei about 1 year ago

jana2 - v2.4.0

Features

  • Externally wired factories using JWiredFactoryGenerator (#399, #400)

Bugfixes

  • Fix parameter strictness check (#394)
  • Fix Podio deprecation warnings (#389)
  • Fix ODR violation (#396)
  • Fix JFactory::Create() logic (#383)
  • Fix JEventProcessor deletion order (#391)
  • Fix double-free in JLockService destructor (#388)

Refactoring

  • Migrate JStreamLog uses to JLogger (#390, #395, #398)
  • Reorganize and deprecate Compatibility/ headers (#392, #397)
  • Refactor arrow execution machinery (#385, #387, #393)

Full Changelog: https://github.com/JeffersonLab/JANA2/compare/v2.3.3...v2.4.0

- C++
Published by nathanwbrei over 1 year ago

jana2 - v2.3.3

2.3.3

Bugfixes

  • Fix problem with user-defined factory generators (#366)
  • JEventProcessor::Process() called before BeginRun() (#367)
  • Lock overwrite in RootFillLock() (#369)
  • JFactory::Finish() is called (#377)

Features

  • JTopologyBuilder supports topologies with arbitrarily nested levels (#346)
  • Barrier events are back (#371)

Refactoring

  • Improved log output (#368)
  • JTest uses new-style component interfaces (#374)
  • JArrows now fire on individual events (#375, #378)

Full Changelog: https://github.com/JeffersonLab/JANA2/compare/v2.3.2...v2.3.3

- C++
Published by nathanwbrei over 1 year ago

jana2 - v2.3.2

What's Changed

Features

  • Added a simple JWiringService which can be used to wire JOmniFactories via a TOML file. (#353, #363)
  • Added add_jana_plugin, add_jana_library, and add_jana_test CMake macros (#364)

Bugfixes

  • A multithreading bug in JEventProcessor has been fixed.
  • JFactory::Create now checks JEventSource::GetObjects (#361)
  • JPluginLoader no longer loads plugins twice in certain cases (#343)
  • JParameterManager::FilterParameters marks parameters as 'used', thereby avoiding spurious 'unused parameter' warnings. (#331)
  • JTypeInfo::to_string_with_si_prefix generates the correct SI prefix in certain cases (#348)

Refactoring

  • Plugins and their headers are now installed to a directory that doesn't conflict with a system install (#330)
  • JPluginLoader has been extensively rewritten (#339)
  • JCsvWriter has been moved into examples (#350)
  • JANA's internal performance testing RNG has been refactored to be more reproducible, and to avoid ASAN violations. (#315)
  • JPodioExample has been split into several reusable examples. (#352)
  • Code was moved from Omni and Status into Components, making the layered architecture clearer (#351)
  • Documentation has been overhauled, including adding an extensive JANA1-to-JANA2 migration guide (#334, #336, #342, #354, #357, #359)
  • CI testing has been extended (#332, #341)

Behavior changes:

  • JANA now has one internal logger, configurable via the jana:loglevel parameter. External loggers are now configurable via the jana:global_loglevel parameter.
  • Log output has been streamlined: oversized tables are now YAML, and essential information is now logged at WARN level. (#362)
  • JPluginLoader now stops when a plugin fails to load, rather than continuing searching for another plugin with the same name.
  • JPluginLoader no longer accepts paths as part of a valid plugin name
  • JFactorySet is no longer silent when the user attempts to include duplicates of the same factory (#343)
  • JMetadata is deprecated, to be replaced with JMultifactory. (#345)
  • All JFactories now call JEventSource::GetObjects, not just JGetObjectsFactory. (#361)

New Contributors

  • @RaiqaRasool made their first contribution in https://github.com/JeffersonLab/JANA2/pull/332

  • Full Changelog: https://github.com/JeffersonLab/JANA2/compare/v2.3.1...v2.3.2

- C++
Published by nathanwbrei over 1 year ago

jana2 - v2.3.1

Bugfix: janadot produces nearly empty output files

This release fixes a bug which caused janadot plugin to stop producing output. It also drops support for Podio <= 00-17 by replacing the user-provided PodioTypeMap with the builtin PodioT::collection_type.

Full Changelog: https://github.com/JeffersonLab/JANA2/compare/v2.3.0...v2.3.1

- C++
Published by nathanwbrei almost 2 years ago

jana2 - v2.3.0

Features

  • There is a new "interactive mode" accessible by pressing Ctrl-C during running. This pauses processing and allows the user to manually fire individual arrows, as well as look up information about components, collections, topology, and processing performance: #307, #322
  • Users can now configure how strict JParameterManager will be about extra (e.g. misspelled) parameters: #302
  • Users can now configure how much detail the parameters table will show at startup: #302
  • Users can now directly look up which factories produce or consume each collection, and which collections are produced or consumed by each factory: #312
  • Users can access expanded, constexpr version information from JVersion.h: #320

Bugfixes

  • Improved CI coverage: #300, #319, #323
  • Improved exception handling logic in all components: #301
  • Components not being destroyed when they should: #299
  • jana-generate.py no longer pulls in ROOT dependency by default, breaking the tutorial: #310
  • CMake compilerdefinitions inconsistent with janaconfig.h: #313
  • Suppress spurious error messages during JVersion.h creation: #317
  • Factory parameters show up in parameters table: #311
  • jana-config script sets RPATH correctly: #309

Refactoring

  • Users no longer need to import and forward defines such as JANA2_HAVE_PODIO because they have been moved into JVersion.h: #313
  • Code deduplication: jana_config.h fully replaced by JVersion.h: #313
  • Dead code removal: JSubeventMailbox: #304
  • All library code uses #pragma once instead of header guards: #308
  • Example programs are installed to $PREFIX/bin instead of $PREFIX/programs: #309

Documentation

  • JANA code style conventions: #306
  • JANA release process: #306

Full Changelog: https://github.com/JeffersonLab/JANA2/compare/v2.2.0...v2.3.0

- C++
Published by nathanwbrei almost 2 years ago

jana2 - v2.2.0

Add support for event levels and timeslices

New features

  • Add support for timeslices by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/278
  • Develop TimesliceExample by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/281
  • TimesliceExample: Wire factories externally by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/289
  • Add JFactory "REGENERATE" flag by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/285
  • Polish timeslice example by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/290

Bugfixes

  • Fixes for the next PODIO version by @veprbl in https://github.com/JeffersonLab/JANA2/pull/269
  • Small fix to pushd and popd around source thisroot.sh by @kkauder in https://github.com/JeffersonLab/JANA2/pull/272
  • PodioExample: add schema_version by @wdconinc in https://github.com/JeffersonLab/JANA2/pull/271
  • fix: no copy constructor in PodioExample.cc by @wdconinc in https://github.com/JeffersonLab/JANA2/pull/273
  • Bugfix: Exceptions in JPluginLoader produce correct exit code by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/286
  • Service initialization fixes by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/287
  • Small fixes inspired by debugging eicrecon by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/288

Refactoring

  • Arrow refactoring by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/270
  • Cleanup: Remove obsolete, unused functionality by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/282
  • JService is now a JComponent by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/283

Full Changelog: https://github.com/JeffersonLab/JANA2/compare/v2.1.2...v2.2.0

- C++
Published by nathanwbrei about 2 years ago

jana2 - v2.1.2

  • Fix rough edges involving PODIO and JMultifactories (“TODO: NWB:” in the code) (#263, #247, #253)
  • Fix exported CMake target’s link libraries and compile definitions (#242)
  • Fix parameter manager bugs: No more ”loses equality with itself after stringification!” warnings (#256, #233)
  • Add support for std::array parameters (#236)
  • Deprecate PodioTypeMap/data model glue (#262)
  • Improve performance test suite (for regression testing!) (#260)
  • Fix race condition which emerges when nthreads > 80 (#227)

- C++
Published by nathanwbrei over 2 years ago

jana2 - v2.1.1

  • Add missing GetApplication() in JMultifactory (Issue #225)
  • Bugfixes in JFactoryPodioT (PR #234)
  • Add config parameters jana:ticker_interval, janadot:output_file, janadot:weight_edges (PR #232)
  • Add RTD+Sphinx documentation (PR #230)
  • Fix free-after-use in JBacktrace.h (PR #224)
  • Fix missing header in JTypeInfo.h (PR #223)
  • Add self-hosted macOS CI runner (PR #220, #221)
  • Fix conflict between USEPODIO and USEPYTHON CMake flats (PR #219)
  • Change JParameter template specialization (PR #218)

- C++
Published by nathanwbrei almost 3 years ago

jana2 - v2.1.0

JANA2 v2.1.0

Summary

This release adds support for factories with multiple outputs ("Multifactories") and improves the experimental PODIO integration first introduced in v2.0.9. The show-stopping double-free on exit bug present in v2.0.9 has been fixed. The BlockExample has received a number of bug fixes, and custom topologies can now use components that are loaded from plugins. The janacontrol plugin has gained a feature to sample and inspect processed events without pausing the event stream, along with some bug fixes. The RPATHs have been reconfigured so that we need to set the LDLIBRARYPATH less often. The vendorized pybind11 is upgraded to version 2.10.3.

Important

  • JANA2 requires the C++17 language standard or higher.
  • JANA2 requires PODIO v0.16.3 or higher.

Pull requests

  • Automatically add the RPATH by @faustus123 in https://github.com/JeffersonLab/JANA2/pull/198
  • No sources bug fix by @faustus123 in https://github.com/JeffersonLab/JANA2/pull/200
  • Custom topologies can now access components loaded from plugins by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/204
  • Fix JBlockSourceArrow::execute::lambda_result never change by @cissieAB in https://github.com/JeffersonLab/JANA2/pull/206
  • Fix double free on exit. by @faustus123 in https://github.com/JeffersonLab/JANA2/pull/205
  • Fixes to BlockExample by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/208
  • janacontrol bug fixes by @faustus123 in https://github.com/JeffersonLab/JANA2/pull/209
  • Add Fetch feature to janacontrol. by @faustus123 in https://github.com/JeffersonLab/JANA2/pull/211
  • Fix compiler warnings about sprintf by @faustus123 in https://github.com/JeffersonLab/JANA2/pull/213
  • Revise CI to add BlockExample tests in by @cissieAB in https://github.com/JeffersonLab/JANA2/pull/203
  • Python update by @faustus123 in https://github.com/JeffersonLab/JANA2/pull/214
  • Experimental multifactory implementation by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/215

Full changelog

https://github.com/JeffersonLab/JANA2/compare/v2.0.9...v2.1.0

- C++
Published by nathanwbrei about 3 years ago

jana2 - v2.0.9

v2.0.9 provides first-class PODIO integration as well as a variety of bugfixes

- C++
Published by nathanwbrei over 3 years ago

jana2 - v2.0.8

What's Changed

  • Fix typo in Tutorial.md by @cissieAB in https://github.com/JeffersonLab/JANA2/pull/152
  • Fix JAutoActivator factory name parsing by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/161
  • Generate an up-to-date JVersion.h via CMake by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/163
  • Improvements to JParameters by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/167
  • Fix janadot by @faustus123 in https://github.com/JeffersonLab/JANA2/pull/169
  • Error handling fixes by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/170
  • JPluginLoader: Improve handling of short vs long plugin names by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/172
  • Fix deadlock when calling JApplication::Quit by @nathanwbrei in https://github.com/JeffersonLab/JANA2/pull/171

New Contributors

  • @cissieAB made their first contribution in https://github.com/JeffersonLab/JANA2/pull/152

Full Changelog: https://github.com/JeffersonLab/JANA2/compare/v2.0.7...v2.0.8

- C++
Published by faustus123 over 3 years ago

jana2 - v2.0.7

This release covers the second round of fixes and improvements for porting EICrecon.

  • Forwards exceptions thrown on worker threads back to the main thread, so that the caller to JApplication::Run can handle them (PR #143)
  • Updates JANAConfig.cmake to export modern CMake targets (PR #133)
  • Improves UI for exceptions thrown from missing JFactories (issue #131) and missing JServices (issue #130)
  • Creates a jana:plugin_path parameter to mirror $JANA_PLUGIN_PATH (issue #134)
  • Enforces a CMAKE_CXX_STANDARD that is consistent with that of ROOT. (issue #138)
  • Fixes some gcc warnings about final classes (PR #129)
  • Prevents confused users from inadvertently creating a weird and tricky bug (issue #135)

- C++
Published by nathanwbrei almost 4 years ago

jana2 - v2.0.6

Fixes issues uncovered while porting EICRecon. - Support configuration parameters which are vectors of primitives (issue #114) - Expose all configuration parameters from JParameterManager (issue #120) - Expose ticker and timer state from JApplication (issue #112) - JEventProcessor::Finalize was being called prematurely when stopping a run via Ctrl-C. (issue #119, issue #87) - Support factory default tag overrides (issue #128) - Support JEventProcessors that don't require users to manage locks (pull request #118)

- C++
Published by nathanwbrei almost 4 years ago

jana2 - v2.0.5

Numerous changes to bring code, jana-generate.py and documentation back in alignment.

- C++
Published by faustus123 almost 4 years ago

jana2 - JANA 2.0.4

- C++
Published by nathanwbrei over 5 years ago

jana2 - JANA 2.0.3

Minor changes. - Added jana-this.(c)sh files to help users set up environment to use specific build.

- C++
Published by faustus123 about 6 years ago

jana2 - JANA 2.0.2

We are cutting this release so that ejpm can start building JANA using CMake instead of SCons, which is now deprecated.

- C++
Published by nathanwbrei over 6 years ago

jana2 - JANA 2.0.1

- C++
Published by nathanwbrei over 6 years ago

jana2 - JANA 2.0.0-alpha

Initial release of JANA2. This is not complete, but can be used as a starting point for development using JANA2.

- C++
Published by faustus123 about 7 years ago