Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
dcdb8d9
feat: inherit jana::components::JOmniFactory and transition to using …
wdconinc Feb 9, 2026
5fd145b
feat: inherit jana::components::JOmniFactory and transition to using …
epic-capybara Feb 11, 2026
85258ff
fix(cmake): detect and inform about JANA2 PR #464
wdconinc Feb 11, 2026
a107de0
fix: ensure shim supports 2.4.3 VariadicPodioOutput interface
wdconinc Jul 22, 2026
e48feab
fix(ci): bump minimum to 26.03.0-stable to pick up JANA2 #464 patch
wdconinc Jul 22, 2026
ea796e4
feat: inherit jana::components::JOmniFactory and transition to using …
epic-capybara Jul 22, 2026
0f9a165
fix(jana): guard logger fallback for 2.4.3 lifecycle
wdconinc Jul 22, 2026
dc86fb0
fix: extend logger initialization beyond 2.4.3
wdconinc Jul 22, 2026
46a27e1
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 22, 2026
58c830a
feat: inherit jana::components::JOmniFactory and transition to using …
epic-capybara Jul 22, 2026
84b3766
fix(meta): handle null optional collection inputs
wdconinc Jul 23, 2026
b573099
fix(lowq2): restore linear-tracking input wiring
wdconinc Jul 23, 2026
0739bfb
fix: keep TOF out of tracking
wdconinc Jul 24, 2026
3c63170
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 24, 2026
cc16f40
fix: retain B0 tag name
wdconinc Jul 24, 2026
e1be4f7
fix: always JANA2 2.4.3+ now
wdconinc Jul 24, 2026
994d5f8
Revert "fix: always JANA2 2.4.3+ now"
wdconinc Jul 24, 2026
14ec374
Merge branch 'main' into jana2-2.4.3-jomnifactory
ruse-traveler Jul 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/linux-eic-shell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ jobs:
USE_TSAN: ON
- CXX: clang++
CMAKE_BUILD_TYPE: Release
release: 26.02.0-stable
release: 26.03.0-stable
- CXX: clang++
CMAKE_BUILD_TYPE: Release
release: 26.04.1-stable
Expand Down
23 changes: 23 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,29 @@ find_package(spdlog ${spdlog_VERSION_MIN} REQUIRED)
# Guidelines Support Library
find_package(Microsoft.GSL CONFIG)

# Check for JANA2 v2.4.3 JOmniFactory issues (fixed in PR #464)
if(JANA_VERSION VERSION_EQUAL "2.4.3")
try_run(
JANA_BUG_RESULT
JANA_BUG_COMPILED
"${CMAKE_BINARY_DIR}"
"${CMAKE_SOURCE_DIR}/cmake/test_jana243_f18b66c6.cpp"
LINK_LIBRARIES
${JANA_LIB}
podio::podio
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${JANA_INCLUDE_DIR}"
COMPILE_OUTPUT_VARIABLE _unused_compile_out
RUN_OUTPUT_VARIABLE _unused_run_out)

if(JANA_BUG_COMPILED AND JANA_BUG_RESULT EQUAL 1)
message(
FATAL_ERROR
"JANA2 v2.4.3 has JOmniFactory bugs. Apply fixes with: "
"`git cherry-pick -m 1 0421819` or use JANA2 > v2.4.3. "
"Ref: https://github.com/JeffersonLab/JANA2/pull/464")
endif()
endif()

Comment thread
wdconinc marked this conversation as resolved.
# Remove PODIO_JSON_OUTPUT (ref: https://github.com/AIDASoft/podio/issues/475)
get_target_property(EDM4HEP_INTERFACE_COMPILE_DEFINITIONS EDM4HEP::edm4hep
INTERFACE_COMPILE_DEFINITIONS)
Expand Down
26 changes: 26 additions & 0 deletions cmake/test_jana243_f18b66c6.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Test program to detect JANA2 v2.4.3 Input<T> bug
// The bug is fixed in commit f18b66c6
//
// Bug: Input<T> constructor sets m_databundle_name = m_type_name
// but GetCollection() uses m_tag (which is never set)
// Fix: Removes m_tag member, uses m_databundle_name everywhere

#include <JANA/Components/JHasInputs.h>

// Helper class that can access protected Input<T>
struct TestHasInputs : public jana::components::JHasInputs {
static bool has_bug() {
TestHasInputs owner;
Input<int> test_input(&owner);

// In buggy version: constructor sets m_databundle_name = "int"
// In fixed version: constructor doesn't set m_databundle_name (empty)

return test_input.GetDatabundleName() == "int";
}
};

int main() {
// Return 1 if bug detected, 0 if fixed
return TestHasInputs::has_bug() ? 1 : 0;
}
3 changes: 3 additions & 0 deletions src/detectors/B0ECAL/B0ECAL.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
// Copyright (C) 2022 - 2025 Whitney Armstrong, Sylvester Joosten, Chao Peng, David Lawrence, Wouter Deconinck, Kolja Kauder, Nathan Brei, Dmitry Kalinkin, Derek Anderson, Michael Pitt

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <cmath>
#include <string>
Expand All @@ -21,6 +23,7 @@ extern "C" {
void InitPlugin(JApplication* app) {

using namespace eicrecon;
using eicrecon::JOmniFactoryGeneratorT;

InitJANAPlugin(app);

Expand Down
3 changes: 3 additions & 0 deletions src/detectors/B0TRK/B0TRK.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
//

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <string>
#include <vector>
Expand All @@ -18,6 +20,7 @@ void InitPlugin(JApplication* app) {
InitJANAPlugin(app);

using namespace eicrecon;
using eicrecon::JOmniFactoryGeneratorT;

// Digitization
app->Add(new JOmniFactoryGeneratorT<SiliconTrackerDigi_factory>(
Expand Down
2 changes: 2 additions & 0 deletions src/detectors/BEMC/BEMC.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <edm4eic/EDM4eicVersion.h>
#include <edm4eic/unit_system.h>
Expand Down Expand Up @@ -45,6 +46,7 @@ extern "C" {
void InitPlugin(JApplication* app) {

using namespace eicrecon;
using eicrecon::JOmniFactoryGeneratorT;

InitJANAPlugin(app);

Expand Down
8 changes: 7 additions & 1 deletion src/detectors/BHCAL/BHCAL.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
// Copyright (C) 2022 - 2024 David Lawrence, Derek Anderson, Wouter Deconinck

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <string>
#include <variant>
Expand All @@ -25,6 +27,7 @@ extern "C" {
void InitPlugin(JApplication* app) {

using namespace eicrecon;
using eicrecon::JOmniFactoryGeneratorT;

InitJANAPlugin(app);

Expand Down Expand Up @@ -165,7 +168,10 @@ void InitPlugin(JApplication* app) {
"HcalBarrelSplitMergeProtoClusters",
{"HcalBarrelTrackClusterMatches", "HcalBarrelClustersWithoutShapes",
"CalorimeterTrackProjections"},
{"HcalBarrelSplitMergeProtoClusters", "HcalBarrelTrackSplitMergeProtoClusterLinks"},
{
"HcalBarrelSplitMergeProtoClusters",
"HcalBarrelTrackSplitMergeProtoClusterLinks",
},
{.minSigCut = -2.0,
.avgEP = 0.50,
.sigEP = 0.25,
Expand Down
2 changes: 2 additions & 0 deletions src/detectors/BTOF/BTOF.cc
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <TMath.h>
#include <edm4eic/unit_system.h>
Expand Down Expand Up @@ -35,6 +36,7 @@ void InitPlugin(JApplication* app) {
InitJANAPlugin(app);

using namespace eicrecon;
using eicrecon::JOmniFactoryGeneratorT;

// Convert raw digitized hits into calibrated hits
// time walk correction is still TBD
Expand Down
3 changes: 3 additions & 0 deletions src/detectors/BTRK/BTRK.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
//

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <string>
#include <vector>
Expand All @@ -18,6 +20,7 @@ void InitPlugin(JApplication* app) {
InitJANAPlugin(app);

using namespace eicrecon;
using eicrecon::JOmniFactoryGeneratorT;

// Digitization
app->Add(new JOmniFactoryGeneratorT<SiliconTrackerDigi_factory>(
Expand Down
3 changes: 3 additions & 0 deletions src/detectors/BVTX/BVTX.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
//

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <string>
#include <vector>
Expand All @@ -18,6 +20,7 @@ void InitPlugin(JApplication* app) {
InitJANAPlugin(app);

using namespace eicrecon;
using eicrecon::JOmniFactoryGeneratorT;

// Digitization
app->Add(new JOmniFactoryGeneratorT<SiliconTrackerDigi_factory>(
Expand Down
3 changes: 3 additions & 0 deletions src/detectors/DIRC/DIRC.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// SPDX-License-Identifier: LGPL-3.0-or-later
// Copyright (C) 2022 - 2025 Christopher Dilks, Nilanga Wickramaarachchi, Dmitry Kalinkin

#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <string>
#include <utility>
Expand All @@ -18,6 +20,7 @@ void InitPlugin(JApplication* app) {
InitJANAPlugin(app);

using namespace eicrecon;
using eicrecon::JOmniFactoryGeneratorT;

// configuration parameters ///////////////////////////////////////////////

Expand Down
17 changes: 11 additions & 6 deletions src/detectors/DRICH/DRICH.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <functional>
#include <map>
Expand Down Expand Up @@ -39,6 +40,7 @@ void InitPlugin(JApplication* app) {
InitJANAPlugin(app);

using namespace eicrecon;
using eicrecon::JOmniFactoryGeneratorT;

// configuration parameters ///////////////////////////////////////////////

Expand Down Expand Up @@ -129,9 +131,10 @@ void InitPlugin(JApplication* app) {
"DRICHGasTracks", {"CentralCKFTracks", "CentralCKFActsTrackStates", "CentralCKFActsTracks"},
{"DRICHGasTracks"}, gas_track_cfg, app));

app->Add(new JOmniFactoryGeneratorT<MergeTrack_factory>("DRICHMergedTracks",
{"DRICHAerogelTracks", "DRICHGasTracks"},
{"DRICHMergedTracks"}, {}, app));
app->Add(new JOmniFactoryGeneratorT<MergeTrack_factory>(
{.tag = "DRICHMergedTracks",
.variadic_input_names = {{"DRICHAerogelTracks", "DRICHGasTracks"}},
.output_names = {"DRICHMergedTracks"}}));

// PID algorithm
app->Add(new JOmniFactoryGeneratorT<IrtCherenkovParticleID_factory>(
Expand All @@ -142,9 +145,11 @@ void InitPlugin(JApplication* app) {

// merge aerogel and gas PID results
app->Add(new JOmniFactoryGeneratorT<MergeCherenkovParticleID_factory>(
"DRICHMergedIrtCherenkovParticleID",
{"DRICHAerogelIrtCherenkovParticleID", "DRICHGasIrtCherenkovParticleID"},
{"DRICHMergedIrtCherenkovParticleID"}, merge_cfg, app));
{.tag = "DRICHMergedIrtCherenkovParticleID",
.variadic_input_names = {{"DRICHAerogelIrtCherenkovParticleID",
"DRICHGasIrtCherenkovParticleID"}},
.output_names = {"DRICHMergedIrtCherenkovParticleID"},
.configs = merge_cfg}));

// clang-format on
}
Expand Down
2 changes: 2 additions & 0 deletions src/detectors/ECTOF/ECTOF.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <TMath.h>
#include <edm4eic/unit_system.h>
Expand All @@ -30,6 +31,7 @@ void InitPlugin(JApplication* app) {
InitJANAPlugin(app);

using namespace eicrecon;
using eicrecon::JOmniFactoryGeneratorT;

// cluster all hits in a sensor into one hit location
// Currently it's just a simple weighted average
Expand Down
3 changes: 3 additions & 0 deletions src/detectors/ECTRK/ECTRK.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
//

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <string>
#include <vector>
Expand All @@ -18,6 +20,7 @@ void InitPlugin(JApplication* app) {
InitJANAPlugin(app);

using namespace eicrecon;
using eicrecon::JOmniFactoryGeneratorT;

// Digitization
app->Add(new JOmniFactoryGeneratorT<SiliconTrackerDigi_factory>(
Expand Down
31 changes: 16 additions & 15 deletions src/detectors/EEMC/EEMC.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
// Copyright (C) 2022 - 2025 Sylvester Joosten, Chao, Chao Peng, Whitney Armstrong, Thomas Britton, David Lawrence, Dhevan Gangadharan, Wouter Deconinck, Dmitry Kalinkin, Derek Anderson

#include <Evaluator/DD4hepUnits.h>
#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <cmath>
#include <string>
Expand All @@ -26,6 +28,7 @@ extern "C" {
void InitPlugin(JApplication* app) {

using namespace eicrecon;
using eicrecon::JOmniFactoryGeneratorT;

InitJANAPlugin(app);

Expand Down Expand Up @@ -162,19 +165,15 @@ void InitPlugin(JApplication* app) {
"EcalEndcapNParticleIDTarget",
},
app));

app->Add(new JOmniFactoryGeneratorT<ONNXInference_factory>(
"EcalEndcapNParticleIDInference",
{
"EcalEndcapNParticleIDInput_features",
},
{
"EcalEndcapNParticleIDOutput_label",
"EcalEndcapNParticleIDOutput_probability_tensor",
},
{
.modelPath = "calibrations/onnx/EcalEndcapN_pi_rejection.onnx",
},
app));
{.tag = "EcalEndcapNParticleIDInference",
.variadic_input_names = {{"EcalEndcapNParticleIDInput_features"}},
.variadic_output_names = {{"EcalEndcapNParticleIDOutput_label",
"EcalEndcapNParticleIDOutput_probability_tensor"}},
.configs = {
.modelPath = "calibrations/onnx/EcalEndcapN_pi_rejection.onnx",
}}));
app->Add(new JOmniFactoryGeneratorT<CalorimeterParticleIDPostML_factory>(
"EcalEndcapNParticleIDPostML",
{
Expand All @@ -195,7 +194,10 @@ void InitPlugin(JApplication* app) {
"EcalEndcapNSplitMergeProtoClusters",
{"EcalEndcapNTrackClusterMatches", "EcalEndcapNClustersWithoutPID",
"CalorimeterTrackProjections"},
{"EcalEndcapNSplitMergeProtoClusters", "EcalEndcapNTrackSplitMergeProtoClusterLinks"},
{
"EcalEndcapNSplitMergeProtoClusters",
"EcalEndcapNTrackSplitMergeProtoClusterLinks",
},
{.minSigCut = -1.0,
.avgEP = 1.0,
.sigEP = 0.10,
Expand All @@ -206,8 +208,7 @@ void InitPlugin(JApplication* app) {
));
app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
"EcalEndcapNSplitMergeClustersWithoutShapes",
{"EcalEndcapNSplitMergeProtoClusters",
"EcalEndcapNRawHitLinks", // edm4eic::MCRecoCalorimeterHitLink
{"EcalEndcapNSplitMergeProtoClusters", "EcalEndcapNRawHitLinks",
"EcalEndcapNRawHitAssociations"},
{"EcalEndcapNSplitMergeClustersWithoutShapes",
"EcalEndcapNSplitMergeClusterLinksWithoutShapes",
Expand Down
Loading
Loading