Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
32 changes: 32 additions & 0 deletions .github/workflows/linux-eic-shell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -489,6 +489,38 @@ jobs:
path: sim_dis_${{matrix.beam}}_minQ2=0_${{ matrix.detector_config }}.edm4hep.root
if-no-files-found: error

eicrecon-pr2000:
runs-on: ubuntu-24.04
needs:
- build
strategy:
matrix:
CXX: [g++]
detector_config: [craterlake]
steps:
- name: Checkout .github
uses: actions/checkout@v4
with:
sparse-checkout: .github
- name: Download install directory
uses: actions/download-artifact@v4
with:
name: install-${{ matrix.CXX }}-eic-shell-Release-${{ env.platform }}-${{ env.release }}-ASAN
- name: Unarchive install directory
run: tar -xaf install.tar.zst
- name: Setup cvmfs
uses: cvmfs-contrib/github-action-cvmfs@v5
- name: Run EICrecon
uses: eic/run-cvmfs-osg-eic-shell@main
with:
platform-release: "${{ env.platform }}:${{ env.release }}"
setup: "/opt/detector/epic-${{ env.detector-version }}/bin/thisepic.sh"
run: |
export DETECTOR_CONFIG=${DETECTOR}_${{ matrix.detector_config }}
export LD_LIBRARY_PATH=$PWD/install/lib:$LD_LIBRARY_PATH
export JANA_PLUGIN_PATH=$PWD/install/lib/EICrecon/plugins${JANA_PLUGIN_PATH:+:${JANA_PLUGIN_PATH}}
$PWD/install/bin/eicrecon ${{env.JANA_OPTIONS}} root://dtn-eic.jlab.org//work/eic3/users/davidl/2025.08.05.S1_demo/simulation/DVCS_5x41_02/all/output4998.edm4hep.root

eicrecon-two-stage-running:
runs-on: ubuntu-24.04
needs:
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ set(FastJet_VERSION_MIN 3)
set(FastJetContrib_VERSION_MIN 1.46)
set(fmt_VERSION_MIN 9.0.0)
set(IRT_VERSION_MIN 1.0.5)
set(JANA_VERSION_MIN 2.2.0)
set(JANA_VERSION_MIN 2.3.2)
set(onnxruntime_MIN_VERSION 1.17)
set(podio_VERSION_MIN 0.17)
set(ROOT_VERSION_MIN 6.28)
Expand Down
27 changes: 12 additions & 15 deletions src/detectors/B0ECAL/B0ECAL.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@
// 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/Components/JOmniFactoryGeneratorT.h>
#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <cmath>
#include <string>
#include <variant>
#include <vector>

#include "extensions/jana/JOmniFactoryGeneratorT.h"
#include "factories/calorimetry/CalorimeterClusterRecoCoG_factory.h"
#include "factories/calorimetry/CalorimeterClusterShape_factory.h"
#include "factories/calorimetry/CalorimeterHitDigi_factory.h"
Expand All @@ -21,6 +23,7 @@ extern "C" {
void InitPlugin(JApplication* app) {

using namespace eicrecon;
using jana::components::JOmniFactoryGeneratorT;

InitJANAPlugin(app);

Expand All @@ -38,8 +41,7 @@ void InitPlugin(JApplication* app) {
.resolutionTDC = 1e-11,
.corrMeanScale = "1.0",
.readout = "B0ECalHits",
},
app));
}));
app->Add(new JOmniFactoryGeneratorT<CalorimeterHitReco_factory>(
"B0ECalRecHits", {"B0ECalRawHits"}, {"B0ECalRecHits"},
{
Expand All @@ -53,11 +55,9 @@ void InitPlugin(JApplication* app) {
.sampFrac = "0.998",
.readout = "B0ECalHits",
.sectorField = "sector",
},
app));
}));
app->Add(new JOmniFactoryGeneratorT<CalorimeterTruthClustering_factory>(
"B0ECalTruthProtoClusters", {"B0ECalRecHits", "B0ECalHits"}, {"B0ECalTruthProtoClusters"},
app));
"B0ECalTruthProtoClusters", {"B0ECalRecHits", "B0ECalHits"}, {"B0ECalTruthProtoClusters"}));
app->Add(new JOmniFactoryGeneratorT<CalorimeterIslandCluster_factory>(
"B0ECalIslandProtoClusters", {"B0ECalRecHits"}, {"B0ECalIslandProtoClusters"},
{
Expand All @@ -77,8 +77,7 @@ void InitPlugin(JApplication* app) {
.transverseEnergyProfileMetric = "globalDistEtaPhi",
.transverseEnergyProfileScale = 1.,
.transverseEnergyProfileScaleUnits{},
},
app));
}));

app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
"B0ECalClustersWithoutShapes",
Expand All @@ -88,13 +87,12 @@ void InitPlugin(JApplication* app) {
},
{"B0ECalClustersWithoutShapes", // edm4eic::Cluster
"B0ECalClusterAssociationsWithoutShapes"}, // edm4eic::MCRecoClusterParticleAssociation
{.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 3.6, .enableEtaBounds = false},
app));
{.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 3.6, .enableEtaBounds = false}));

app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterShape_factory>(
"B0ECalClusters", {"B0ECalClustersWithoutShapes", "B0ECalClusterAssociationsWithoutShapes"},
{"B0ECalClusters", "B0ECalClusterAssociations"},
{.energyWeight = "log", .logWeightBase = 3.6}, app));
{.energyWeight = "log", .logWeightBase = 3.6}));

app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
"B0ECalTruthClustersWithoutShapes",
Expand All @@ -104,13 +102,12 @@ void InitPlugin(JApplication* app) {
},
{"B0ECalTruthClustersWithoutShapes", // edm4eic::Cluster
"B0ECalTruthClusterAssociationsWithoutShapes"}, // edm4eic::MCRecoClusterParticleAssociation
{.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 6.2, .enableEtaBounds = false},
app));
{.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 6.2, .enableEtaBounds = false}));

app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterShape_factory>(
"B0ECalTruthClusters",
{"B0ECalTruthClustersWithoutShapes", "B0ECalTruthClusterAssociationsWithoutShapes"},
{"B0ECalTruthClusters", "B0ECalTruthClusterAssociations"},
{.energyWeight = "log", .logWeightBase = 6.2}, app));
{.energyWeight = "log", .logWeightBase = 6.2}));
}
}
11 changes: 6 additions & 5 deletions src/detectors/B0TRK/B0TRK.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
//

#include <Evaluator/DD4hepUnits.h>
#include <JANA/Components/JOmniFactoryGeneratorT.h>
#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <string>
#include <vector>

#include "extensions/jana/JOmniFactoryGeneratorT.h"
#include "factories/digi/SiliconTrackerDigi_factory.h"
#include "factories/tracking/TrackerHitReconstruction_factory.h"

Expand All @@ -18,6 +20,7 @@ void InitPlugin(JApplication* app) {
InitJANAPlugin(app);

using namespace eicrecon;
using jana::components::JOmniFactoryGeneratorT;

// Digitization
app->Add(new JOmniFactoryGeneratorT<SiliconTrackerDigi_factory>(
Expand All @@ -26,15 +29,13 @@ void InitPlugin(JApplication* app) {
{
.threshold = 10.0 * dd4hep::keV,
.timeResolution = 8,
},
app));
}));

// Convert raw digitized hits into hits with geometry info (ready for tracking)
app->Add(new JOmniFactoryGeneratorT<TrackerHitReconstruction_factory>(
"B0TrackerRecHits", {"B0TrackerRawHits"}, {"B0TrackerRecHits"},
{
.timeResolution = 8,
},
app));
}));
}
} // extern "C"
55 changes: 17 additions & 38 deletions src/detectors/BEMC/BEMC.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@
// Copyright (C) 2022 - 2025 Whitney Armstrong, Sylvester Joosten, Chao Peng, David Lawrence, Thomas Britton, Wouter Deconinck, Maria Zurek, Akshaya Vijay, Nathan Brei, Dmitry Kalinkin, Derek Anderson, Minho Kim

#include <Evaluator/DD4hepUnits.h>
#include <JANA/Components/JOmniFactoryGeneratorT.h>
#include <JANA/JApplication.h>
#include <JANA/JApplicationFwd.h>
#include <JANA/Utils/JEventLevel.h>
#include <JANA/Utils/JTypeInfo.h>
#include <edm4eic/unit_system.h>
#include <cmath>
Expand All @@ -12,7 +15,6 @@

#include "algorithms/calorimetry/CalorimeterHitDigiConfig.h"
#include "algorithms/calorimetry/SimCalorimeterHitProcessorConfig.h"
#include "extensions/jana/JOmniFactoryGeneratorT.h"
#include "factories/calorimetry/CalorimeterClusterRecoCoG_factory.h"
#include "factories/calorimetry/CalorimeterClusterShape_factory.h"
#include "factories/calorimetry/CalorimeterHitDigi_factory.h"
Expand All @@ -28,6 +30,7 @@ extern "C" {
void InitPlugin(JApplication* app) {

using namespace eicrecon;
using jana::components::JOmniFactoryGeneratorT;

InitJANAPlugin(app);

Expand Down Expand Up @@ -61,9 +64,7 @@ void InitPlugin(JApplication* app) {
.contributionMergeFields = EcalBarrelScFi_contributionMergeFields,
.inversePropagationSpeed = EcalBarrelScFi_inversePropagationSpeed,
.fixedTimeDelay = EcalBarrelScFi_fixedTimeDelay,
},
app // TODO: Remove me once fixed
));
}));
app->Add(new JOmniFactoryGeneratorT<SimCalorimeterHitProcessor_factory>(
"EcalBarrelScFiNAttenuatedHits", {"EcalBarrelScFiHits"},
{"EcalBarrelScFiNAttenuatedHits", "EcalBarrelScFiNAttenuatedHitContributions"},
Expand All @@ -75,9 +76,7 @@ void InitPlugin(JApplication* app) {
.contributionMergeFields = EcalBarrelScFi_contributionMergeFields,
.inversePropagationSpeed = EcalBarrelScFi_inversePropagationSpeed,
.fixedTimeDelay = EcalBarrelScFi_fixedTimeDelay,
},
app // TODO: Remove me once fixed
));
}));
app->Add(new JOmniFactoryGeneratorT<CalorimeterHitDigi_factory>(
"EcalBarrelScFiRawHits", {"EventHeader", "EcalBarrelScFiHits"},
{"EcalBarrelScFiRawHits", "EcalBarrelScFiRawHitAssociations"},
Expand All @@ -93,9 +92,7 @@ void InitPlugin(JApplication* app) {
.corrMeanScale = "1.0",
.readout = "EcalBarrelScFiHits",
.fields = {"fiber", "z"},
},
app // TODO: Remove me once fixed
));
}));
app->Add(new JOmniFactoryGeneratorT<CalorimeterHitReco_factory>(
"EcalBarrelScFiRecHits", {"EcalBarrelScFiRawHits"}, {"EcalBarrelScFiRecHits"},
{
Expand All @@ -115,9 +112,7 @@ void InitPlugin(JApplication* app) {
// TODO: a more realistic way to get z is to reconstruct it from timing
.maskPos = "xy",
.maskPosFields = {"fiber", "z"},
},
app // TODO: Remove me once fixed
));
}));
app->Add(new JOmniFactoryGeneratorT<CalorimeterIslandCluster_factory>(
"EcalBarrelScFiProtoClusters", {"EcalBarrelScFiRecHits"}, {"EcalBarrelScFiProtoClusters"},
{
Expand All @@ -137,23 +132,19 @@ void InitPlugin(JApplication* app) {
.transverseEnergyProfileMetric{},
.transverseEnergyProfileScale{},
.transverseEnergyProfileScaleUnits{},
},
app // TODO: Remove me once fixed
));
}));
app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
"EcalBarrelScFiClustersWithoutShapes",
{"EcalBarrelScFiProtoClusters", // edm4eic::ProtoClusterCollection
"EcalBarrelScFiRawHitAssociations"}, // edm4eic::MCRecoCalorimeterHitAssociation
{"EcalBarrelScFiClustersWithoutShapes", // edm4eic::Cluster
"EcalBarrelScFiClusterAssociationsWithoutShapes"}, // edm4eic::MCRecoClusterParticleAssociation
{.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 6.2, .enableEtaBounds = false},
app // TODO: Remove me once fixed
));
{.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 6.2, .enableEtaBounds = false}));
app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterShape_factory>(
"EcalBarrelScFiClusters",
{"EcalBarrelScFiClustersWithoutShapes", "EcalBarrelScFiClusterAssociationsWithoutShapes"},
{"EcalBarrelScFiClusters", "EcalBarrelScFiClusterAssociations"},
{.longitudinalShowerInfoAvailable = true, .energyWeight = "log", .logWeightBase = 6.2}, app));
{.longitudinalShowerInfoAvailable = true, .energyWeight = "log", .logWeightBase = 6.2}));

// Make sure digi and reco use the same value
decltype(CalorimeterHitDigiConfig::capADC) EcalBarrelImaging_capADC = 8192; //8192, 13bit ADC
Expand All @@ -177,9 +168,7 @@ void InitPlugin(JApplication* app) {
.resolutionTDC = EcalBarrelImaging_resolutionTDC,
.corrMeanScale = "1.0",
.readout = "EcalBarrelImagingHits",
},
app // TODO: Remove me once fixed
));
}));
app->Add(new JOmniFactoryGeneratorT<CalorimeterHitReco_factory>(
"EcalBarrelImagingRecHits", {"EcalBarrelImagingRawHits"}, {"EcalBarrelImagingRecHits"},
{
Expand All @@ -194,9 +183,7 @@ void InitPlugin(JApplication* app) {
.readout = "EcalBarrelImagingHits",
.layerField = "layer",
.sectorField = "sector",
},
app // TODO: Remove me once fixed
));
}));
app->Add(new JOmniFactoryGeneratorT<ImagingTopoCluster_factory>(
"EcalBarrelImagingProtoClusters", {"EcalBarrelImagingRecHits"},
{"EcalBarrelImagingProtoClusters"},
Expand All @@ -209,9 +196,7 @@ void InitPlugin(JApplication* app) {
.minClusterCenterEdep = 0,
.minClusterEdep = 100 * dd4hep::MeV,
.minClusterNhits = 10,
},
app // TODO: Remove me once fixed
));
}));

app->Add(new JOmniFactoryGeneratorT<ImagingClusterReco_factory>(
"EcalBarrelImagingClusters",
Expand All @@ -220,9 +205,7 @@ void InitPlugin(JApplication* app) {
"EcalBarrelImagingLayers"},
{
.trackStopLayer = 6,
},
app // TODO: Remove me once fixed
));
}));
app->Add(new JOmniFactoryGeneratorT<EnergyPositionClusterMerger_factory>(
"EcalBarrelClusters",
{"EcalBarrelScFiClusters", "EcalBarrelScFiClusterAssociations", "EcalBarrelImagingClusters",
Expand All @@ -232,15 +215,11 @@ void InitPlugin(JApplication* app) {
.energyRelTolerance = 0.5,
.phiTolerance = 0.1,
.etaTolerance = 0.2,
},
app // TODO: Remove me once fixed
));
}));
app->Add(new JOmniFactoryGeneratorT<TruthEnergyPositionClusterMerger_factory>(
"EcalBarrelTruthClusters",
{"MCParticles", "EcalBarrelScFiClusters", "EcalBarrelScFiClusterAssociations",
"EcalBarrelImagingClusters", "EcalBarrelImagingClusterAssociations"},
{"EcalBarrelTruthClusters", "EcalBarrelTruthClusterAssociations"},
app // TODO: Remove me once fixed
));
{"EcalBarrelTruthClusters", "EcalBarrelTruthClusterAssociations"}));
}
}
Loading
Loading