Back to home page

EIC code displayed by LXR

 
 

    


Warning, /jana2/docs/Download.md is written in an unsupported language. File is not indexed.

0001 # Download
0002 
0003 ### Latest master (unstable)
0004 
0005 - `git clone https://github.com/JeffersonLab/JANA2/`
0006 
0007 ### Latest release
0008 
0009 - `git clone --branch latest_release https://github.com/JeffersonLab/JANA2`
0010 - [See release on GitHub](https://github.com/JeffersonLab/JANA2/tree/latest_release)
0011 - [See online documentation](https://jeffersonlab.github.io/JANA2/)
0012 - [See online doxygen documentation](https://jeffersonlab.github.io/JANA2/refcpp/)
0013 
0014 ### 2026.03.01
0015 
0016 Fixes several important bugs in v2026.03.00. 
0017 
0018 - Parent event cleared prematurely. Introduced in v2026.03.00. Issue #515, PR #516.
0019 - Pool depletion and hang in JUnfoldArrow due to state machine bug. Introduced in v2026.03.00. PR #514.
0020 - JEventSourceGenerator::SetLevel() was set to private. PR #513.
0021 - janacontrol links against libzmq target instead of inconsistently defined CMake variable. PR #512.
0022 
0023 ### 2026.03.00
0024 
0025 #### Dependencies
0026 - Now builds with ROOT v6.40 (#498)
0027 - Adds optional bindings for Perfetto  (#497)
0028 - Swaps out optional dependency libzmq for cppzmq (#507, #509)
0029 - Building/installing examples is now optional (#505, 501)
0030 
0031 #### Bugfixes
0032 - Parameter parsing conflict: JLogger::Level vs spdlog level (#509)
0033 - Test cases run in the build directory without pulling in artifacts from the install directory (#505, #504, #503)
0034 
0035 #### Refactoring
0036 - Redesign of the TopologyBuilder interface (#495)
0037 - Topologies which include an Unfolder no longer also pull in a no-op Folder (#499)
0038 - Improve engine performance with ultra fine grain parallelism (#508)
0039 
0040 #### Ergonomics
0041 - Improve logging of swallowed exceptions (#509)
0042 
0043 ### 2026.02.00
0044 
0045 This release redesigns the `JFactory` state machine, changing `JFactory`'s behavior so that it now handles certain
0046 edge cases correctly. The new design enforces the guarantees for the `Init()` callback, making sure that it is run
0047 exactly once before `Process()` gets called, and doesn't get run if data is always `Insert()`ed instead. If `Init()` excepts, `Process()` is never run, and an empty collection is written instead. If `Process()` excepts, a partial collection may be written. This release also changes behavior such that if an exception is encountered in `Init()` or `Process()`, JANA2 will store the exception and re-throw it, rather than re-running the excepting callback.
0048 
0049 The `JFactory::Status` enum now precisely describes the contents of the factory cache, i.e. `{Empty, Processed, Inserted, Excepted}`. Whether or not the factory has been initialized has been factored out into the `JFactory::InitStatus` enum, i.e. `{InitNotRun, InitRun, InitExcepted}`. The `JFactory::CreationStatus` has been deprecated but is still around because GlueX
0050 uses it. It has been shrunk so that it only describes whether or not the factory has been activated, i.e. `{NotCreatedYet, Created}`, which is how it was used in practice.
0051 
0052 This release primarily addresses issue #490. There are several additional bugfixes included:
0053 
0054 - Adds CMake flags for disabling examples and tests, addressing issue #489
0055 - JWiringService wasn't loading plugins listed in the wiring file
0056 - JComponent::Input<T> wasn't calling JFactory::Create
0057 - Adding a JEventUnfolder but no JEventProcessors triggered an error in the JEventQueue ordering logic
0058 
0059 
0060 ### 2026.01.00
0061 
0062 This release brings a couple of exciting new features along with some important bugfixes. The big JFactory/JDatabundle refactoring is
0063 finally complete, and the bugs that it introduced in v2.4.3 are fixed. We are hoping that this release will be sufficient for merging 
0064 EICrecon's timeframe splitter. This release is also notable for being our first release that uses calendar versioning, which hopefully 
0065 matches our workflow better.
0066 
0067 #### Bugfixes
0068 
0069 - Fix problems with `Input` and `Output` tags introduced in v2.4.3 (PR #464)
0070 - Use of deprecated `operator->()` on podio collections (PR #477)
0071 - Template instantation error with podio LinkCollections (PR #462)
0072 - Stringify array and vector parameters consistently with primitives (PR #457)
0073 
0074 #### Features
0075 
0076 - Extend support for external wiring to include non-JFactory components (PR #476, #473)
0077 - Add support for preserving the original event ordering with multithreading enabled (PR #472)
0078 - Add support for multilevel event sources (PR #467)
0079 
0080 #### Refactoring
0081 
0082 - Podio-collection-producing factories no longer inherit from JFactoryT (PR #460, #479)
0083 - Removed obsolete `Streaming/` code (PR #468)
0084 
0085 #### Examples
0086 
0087 - Example: Hit reconstruction (PR #470)
0088 - Example: Protoclustering (PR #469)
0089 
0090 ### 2.4.3
0091 
0092 #### Behavior changes
0093 
0094 - 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)
0095 
0096 - Removed the never-used JEventProcessorSequential and JEventProcessorSequentialRoot. All their functionality has been backported to JEventProcessor. (Pull request #456)
0097 
0098 - 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)
0099 
0100 #### Bugfixes
0101 
0102 - Relax JFactory::Create cycle detector for the sake of JEventSourceEVIOpp (Pull request #461)
0103 
0104 - Fix JFactoryPodioT template error when using Podio LinkCollections (Pull request #462)
0105 
0106 - JEventUnfolder erroneously inserted outputs even though KeepChildNextParent was returned (Pull request #458)
0107 
0108 - JEventUnfolder supports parent events with zero children (Pull request #456)
0109 
0110 - 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)
0111 
0112 #### Features
0113 
0114 - 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)
0115 
0116 #### Usability improvements and refactoring
0117 
0118 - 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)
0119 
0120 - 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)
0121 
0122 - 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)
0123 
0124 - JTopologyBuilder::connect() wires arrows using port id instead of port index, reducing confusion while manually configuring topologies. (Pull request #456)
0125 
0126 - JFactoryT uses JDatabundle under the hood, as part of a deeper long-term refactoring. (Pull request #458, Issues #254, #276)
0127 
0128 ### 2.4.2
0129 
0130 #### Behavior changes
0131 - `jana:max_inflight_events` now defaults `nthreads` regardless of whether `nthreads` was explicitly set. Previously it defaulted to 4 when `nthreads` was unset, and otherwise defaulted to `nthreads`. (Issue #443)
0132 - `JEventSource::GetEventCount()` is deprecated and replaced by `GetSkippedCount()`, `GetEmittedEventCount()`, and `GetProcessedEventCount()`. These behave intuitively when `nskip` is used. (Issue #428)
0133 
0134 #### Features
0135 - Added `jana:output_processed_event_numbers` parameter to assist with debugging (Issue #425)
0136 - Ported `janaroot` plugin from JANA1
0137 - JFactory detects and excepts on cycles (Issue #423)
0138 - Improved scale test visualizations, including plotting multiple scaling tests on the same plot and supporting log scaled axes.
0139 
0140 #### Bugfixes
0141 - Missing template argument in VariadicPodioOutput
0142 - JEvent was being marked as warmed up prematurely
0143 - JAutoactivator was being called last instead of first (Issue #440)
0144 - If the user attempted to run without providing a JEventSource, processing would crash with an ArithmeticException instead of a helpful error message (Issue #437)
0145 - `JEventSource::FinishEvent()` was being called spuriously (Issue #424)
0146 
0147 #### Refactoring
0148 - 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)
0149 
0150 ### 2.4.1
0151 
0152 This release enables CCDB caching, significantly improving performance and reducing memory usage for applications that frequently access calibration constants.
0153 
0154 ### 2.4.0
0155 
0156 #### Features
0157 
0158 - Externally wired factories using `JWiredFactoryGenerator` (#399, #400)
0159 
0160 #### Bugfixes
0161 
0162 - Fix parameter strictness check (#394)
0163 - Fix Podio deprecation warnings (#389)
0164 - Fix ODR violation (#396)
0165 - Fix `JFactory::Create()` logic (#383)
0166 - Fix `JEventProcessor` deletion order (#391)
0167 - Fix double-free in `JLockService` destructor (#388)
0168 
0169 #### Refactoring
0170 
0171 - Migrate `JStreamLog` uses to `JLogger` (#390, #395, #398)
0172 - Reorganize and deprecate `Compatibility/` headers (#392, #397)
0173 - Refactor arrow execution machinery (#385, #387, #393)
0174 
0175 ### 2.3.3
0176 
0177 #### Bugfixes
0178 * Fix problem with user-defined factory generators (#366)
0179 * JEventProcessor::Process() called before BeginRun() (#367)
0180 * Lock overwrite in RootFillLock() (#369)
0181 * JFactory::Finish() is called (#377)
0182 
0183 #### Features
0184 * JTopologyBuilder supports topologies with arbitrarily nested levels (#346)
0185 * Barrier events are back (#371)
0186 
0187 #### Refactoring
0188 * Improved log output (#368)
0189 * JTest uses new-style component interfaces (#374)
0190 * JArrows now fire on individual events (#375, #378)
0191 
0192 - [See release on GitHub](https://github.com/JeffersonLab/JANA2/releases/tag/v2.3.3)
0193 
0194 ### 2.3.2
0195 This release includes the following:
0196 
0197 #### Features
0198 - Added a simple `JWiringService` which can be used to wire `JOmniFactories` via a TOML file. (#353, #363)
0199 - Added `add_jana_plugin`, `add_jana_library`, and `add_jana_test` CMake macros (#364)
0200 
0201 #### Bugfixes
0202 - A multithreading bug in `JEventProcessor` has been fixed.
0203 - `JFactory::Create` now checks `JEventSource::GetObjects` (#361)
0204 - `JPluginLoader` no longer loads plugins twice in certain cases (#343)
0205 - `JParameterManager::FilterParameters` marks parameters as 'used', thereby avoiding spurious 'unused parameter' warnings. (#331)
0206 - `JTypeInfo::to_string_with_si_prefix` generates the correct SI prefix in certain cases (#348)
0207 
0208 #### Refactoring
0209 - Plugins and their headers are now installed to a directory that doesn't conflict with a system install (#330)
0210 - `JPluginLoader` has been extensively rewritten (#339)
0211 - `JCsvWriter` has been moved into `examples` (#350)
0212 - JANA's internal performance testing RNG has been refactored to be more reproducible, and to avoid ASAN violations. (#315)
0213 - `JPodioExample` has been split into several reusable examples. (#352)
0214 - Code was moved from `Omni` and `Status` into `Components`, making the layered architecture clearer (#351)
0215 - Documentation has been overhauled, including adding an extensive JANA1-to-JANA2 migration guide (#334, #336, #342, #354, #357, #359)
0216 - CI testing has been extended (#332, #341)
0217 
0218 #### Behavior changes:
0219 - JANA now has one internal logger, configurable via the `jana:loglevel` parameter. External loggers are now configurable via the `jana:global_loglevel` parameter.
0220 - Log output has been streamlined: oversized tables are now YAML, and essential information is now logged at `WARN` level. (#362)
0221 - `JPluginLoader` now stops when a plugin fails to load, rather than continuing searching for another plugin with the same name.
0222 - `JPluginLoader` no longer accepts paths as part of a valid plugin name
0223 - `JFactorySet` is no longer silent when the user attempts to include duplicates of the same factory (#343)
0224 - `JMetadata` is deprecated, to be replaced with `JMultifactory`. (#345)
0225 - All `JFactories` now call `JEventSource::GetObjects`, not just `JGetObjectsFactory`. (#361)
0226 
0227 - [See release on GitHub](https://github.com/JeffersonLab/JANA2/releases/tag/v2.3.2)
0228 - [See online doxygen documentation](http://www.jlab.org/JANA/jana_doc_2.3.1/index.html)
0229 - [Download doxygen documentation](http://www.jlab.org/JANA/jana_doc_2.3.1.tar.gz)
0230 
0231 ### 2.3.1
0232 This release fixes a bug which caused the `janadot` plugin to stop producing output. It also drops support for Podio <= 00-17 by replacing the user-provided `PodioTypeMap` with the built-in `PodioT::collection_type`. 
0233 
0234 - [See release on GitHub](https://github.com/JeffersonLab/JANA2/releases/tag/v2.3.1)
0235 - [See online doxygen documentation](http://www.jlab.org/JANA/jana_doc_2.3.1/index.html)
0236 - [Download doxygen documentation](http://www.jlab.org/JANA/jana_doc_2.3.1.tar.gz)
0237 
0238 ### 2.3.0 
0239 - [See release on GitHub](https://github.com/JeffersonLab/JANA2/releases/tag/v2.3.0)
0240 - [See online doxygen documentation](http://www.jlab.org/JANA/jana_doc_2.3.0/index.html)
0241 - [Download doxygen documentation](http://www.jlab.org/JANA/jana_doc_2.3.0.tar.gz)
0242 
0243 ### JANA 1
0244 
0245 - JANA 1 is deprecated but still in use with projects such as GlueX.
0246 - [JANA 1 homepage](https://www.jlab.org/JANA/)
0247 - [JANA 1 repo](https://github.com/JeffersonLab/JANA)
0248 
0249