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=trueinstead 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_eventsnow defaults tonthreadsregardless of whethernthreadswas explicitly set. Previously it defaulted to 4 whennthreadswas unset, and otherwise defaulted tonthreads. (Issue #443)JEventSource::GetEventCount()is deprecated and replaced byGetSkippedCount(),GetEmittedEventCount(), andGetProcessedEventCount(). These behave intuitively whennskipis used. (Issue #428)
Features
- Added
jana:output_processed_event_numbersparameter to assist with debugging (Issue #425) - Ported
janarootplugin 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
JEventProcessordeletion order (#391) - Fix double-free in
JLockServicedestructor (#388)
Refactoring
- Migrate
JStreamLoguses toJLogger(#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
JWiringServicewhich can be used to wireJOmniFactoriesvia a TOML file. (#353, #363) - Added
add_jana_plugin,add_jana_library, andadd_jana_testCMake macros (#364)
Bugfixes
- A multithreading bug in
JEventProcessorhas been fixed. JFactory::Createnow checksJEventSource::GetObjects(#361)JPluginLoaderno longer loads plugins twice in certain cases (#343)JParameterManager::FilterParametersmarks parameters as 'used', thereby avoiding spurious 'unused parameter' warnings. (#331)JTypeInfo::to_string_with_si_prefixgenerates 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)
JPluginLoaderhas been extensively rewritten (#339)JCsvWriterhas been moved intoexamples(#350)- JANA's internal performance testing RNG has been refactored to be more reproducible, and to avoid ASAN violations. (#315)
JPodioExamplehas been split into several reusable examples. (#352)- Code was moved from
OmniandStatusintoComponents, 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:loglevelparameter. External loggers are now configurable via thejana:global_loglevelparameter. - Log output has been streamlined: oversized tables are now YAML, and essential information is now logged at
WARNlevel. (#362) JPluginLoadernow stops when a plugin fails to load, rather than continuing searching for another plugin with the same name.JPluginLoaderno longer accepts paths as part of a valid plugin nameJFactorySetis no longer silent when the user attempts to include duplicates of the same factory (#343)JMetadatais deprecated, to be replaced withJMultifactory. (#345)- All
JFactoriesnow callJEventSource::GetObjects, not justJGetObjectsFactory. (#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.pyno 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_PODIObecause they have been moved intoJVersion.h: #313 - Code deduplication: jana_config.h fully replaced by JVersion.h: #313
- Dead code removal: JSubeventMailbox: #304
- All library code uses
#pragma onceinstead of header guards: #308 - Example programs are installed to
$PREFIX/bininstead 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.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_pathparameter to mirror$JANA_PLUGIN_PATH(issue #134) - Enforces a
CMAKE_CXX_STANDARDthat 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 - 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.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