From f86d6422ce1d1d2abf23bf381d41e6fce5c49a47 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 21 Aug 2026 18:31:08 -0400 Subject: [PATCH 1/6] update uber engines for DC AI 2026 --- reconstruction/uber/pom.xml | 5 +++ .../main/java/org/jlab/service/uber/Uber.java | 44 +++++++++++++++++-- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/reconstruction/uber/pom.xml b/reconstruction/uber/pom.xml index 31436a2ee0..c00232cb46 100644 --- a/reconstruction/uber/pom.xml +++ b/reconstruction/uber/pom.xml @@ -24,6 +24,11 @@ swim-tools 14.2.0-SNAPSHOT + + org.jlab.clas12.detector + clas12detector-ai + 14.1.3-SNAPSHOT + org.jlab.clas12.detector clas12detector-dc diff --git a/reconstruction/uber/src/main/java/org/jlab/service/uber/Uber.java b/reconstruction/uber/src/main/java/org/jlab/service/uber/Uber.java index e3aac26011..a3d16c92e6 100644 --- a/reconstruction/uber/src/main/java/org/jlab/service/uber/Uber.java +++ b/reconstruction/uber/src/main/java/org/jlab/service/uber/Uber.java @@ -29,7 +29,10 @@ import org.jlab.service.mltn.MLTDEngine; import org.jlab.service.rtpc.RTPCEngine; import org.jlab.calibration.service.CalibBanksEngine; +import org.jlab.service.ai.DCClsComboEngine; +import org.jlab.service.ai.DCDenoiseEngine; import org.jlab.service.dc.DCHBPostClusterConv; +import org.jlab.service.dc.DCHBTrackingAI; import org.jlab.service.dc.DCTBEngineAI; import org.jlab.service.eb.EBHBAIEngine; import org.jlab.service.eb.EBTBAIEngine; @@ -82,8 +85,8 @@ public HitBasedCV() { } } - public static class HitBasedAI extends UberEngine { - public HitBasedAI() { + public static class HitBasedAIClassic extends UberEngine { + public HitBasedAIClassic() { super("HB","uber","1.0"); add(new DCHBClustering(), new MLTDEngine(), @@ -97,8 +100,24 @@ public HitBasedAI() { } } - public static class HitBasedAICV extends UberEngine { - public HitBasedAICV() { + public static class HitBasedAI extends UberEngine { + public HitBasedAI() { + super("HB","uber","1.0"); + add(new DCDenoiseEngine(), + new DCHBClustering(), + new DCClsComboEngine(), + new DCHBTrackingAI("HB"), + new BANDEngine(), + new HTCCReconstructionService(), + new LTCCEngine(), + new FTOFHBEngine(), + new ECEngine(), + new EBHBEngine()); + } + } + + public static class HitBasedAIClassicCV extends UberEngine { + public HitBasedAIClassicCV() { super("HB","uber","1.0"); add(new DCHBClustering(), new MLTDEngine(), @@ -114,6 +133,23 @@ public HitBasedAICV() { } } + public static class HitBasedAICV extends UberEngine { + public HitBasedAICV() { + super("HB","uber","1.0"); + add(new DCDenoiseEngine(), + new DCHBClustering(), + new DCHBPostClusterConv(), + new DCHBTrackingAI("AI"), + new BANDEngine(), + new HTCCReconstructionService(), + new LTCCEngine(), + new FTOFHBEngine(), + new ECEngine(), + new EBHBEngine(), + new EBHBAIEngine()); + } + } + public static class TimeBasedCV extends UberEngine { public TimeBasedCV() { super("TB","uber","1.0"); From c4d8b9cf36a89982625e3261662295367c8c9d3d Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 21 Aug 2026 18:31:17 -0400 Subject: [PATCH 2/6] rename yamls --- .../{data-ai-2026.yaml => data-ai-classic.yaml} | 15 +++++++-------- etc/services/data-ai.yaml | 15 ++++++++------- 2 files changed, 15 insertions(+), 15 deletions(-) rename etc/services/{data-ai-2026.yaml => data-ai-classic.yaml} (91%) diff --git a/etc/services/data-ai-2026.yaml b/etc/services/data-ai-classic.yaml similarity index 91% rename from etc/services/data-ai-2026.yaml rename to etc/services/data-ai-classic.yaml index 80fccf0326..38c26c7e42 100644 --- a/etc/services/data-ai-2026.yaml +++ b/etc/services/data-ai-classic.yaml @@ -20,18 +20,15 @@ services: name: FTEB - class: org.jlab.service.raster.RasterEngine name: RASTER -# DC denoising - - class: org.jlab.service.ai.DCDenoiseEngine - name: DCDN # DC clustering: nominal algoritm, filled the cluster bank for ai and conventional tracking - class: org.jlab.service.dc.DCHBClustering name: DCCR # This is where the AI plugin would go. THe AI code reads the HB clusters. - - class: org.jlab.service.ai.DCClsComboEngine - name: DCCC + - class: org.jlab.service.mltn.MLTDEngine + name: MLTD # DC using clustering on AI hits: NN assisted HB tracking - - class: org.jlab.service.dc.DCHBTrackingAI - name: DCHTAI + - class: org.jlab.service.dc.DCHBPostClusterAI + name: DCHAI - class: org.jlab.service.ftof.FTOFHBEngine name: FTOFHB - class: org.jlab.service.ec.ECEngine @@ -82,7 +79,9 @@ configuration: MAGFIELDS: magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat magfieldTorusMap: Full_torus_r251_phi181_z251_25Jan2021.dat - DCHTAI: + MLTD: + run: "6302" + DCHAI: outputBankPrefix: "HB" mime-types: diff --git a/etc/services/data-ai.yaml b/etc/services/data-ai.yaml index 38c26c7e42..80fccf0326 100644 --- a/etc/services/data-ai.yaml +++ b/etc/services/data-ai.yaml @@ -20,15 +20,18 @@ services: name: FTEB - class: org.jlab.service.raster.RasterEngine name: RASTER +# DC denoising + - class: org.jlab.service.ai.DCDenoiseEngine + name: DCDN # DC clustering: nominal algoritm, filled the cluster bank for ai and conventional tracking - class: org.jlab.service.dc.DCHBClustering name: DCCR # This is where the AI plugin would go. THe AI code reads the HB clusters. - - class: org.jlab.service.mltn.MLTDEngine - name: MLTD + - class: org.jlab.service.ai.DCClsComboEngine + name: DCCC # DC using clustering on AI hits: NN assisted HB tracking - - class: org.jlab.service.dc.DCHBPostClusterAI - name: DCHAI + - class: org.jlab.service.dc.DCHBTrackingAI + name: DCHTAI - class: org.jlab.service.ftof.FTOFHBEngine name: FTOFHB - class: org.jlab.service.ec.ECEngine @@ -79,9 +82,7 @@ configuration: MAGFIELDS: magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat magfieldTorusMap: Full_torus_r251_phi181_z251_25Jan2021.dat - MLTD: - run: "6302" - DCHAI: + DCHTAI: outputBankPrefix: "HB" mime-types: From 28c17419156e823d636e965f1535a92f0cf68a71 Mon Sep 17 00:00:00 2001 From: Raffaella De Vita Date: Fri, 28 Aug 2026 17:27:03 -0400 Subject: [PATCH 3/6] completing the transition to the new DC AI engines in yamls and uber services --- etc/services/README.md | 1 - etc/services/data-aicv.yaml | 18 ++++++--------- etc/services/denoise.yaml | 23 ++++++++----------- etc/services/eb.yaml | 2 -- .../main/java/org/jlab/service/uber/Uber.java | 1 + 5 files changed, 17 insertions(+), 28 deletions(-) diff --git a/etc/services/README.md b/etc/services/README.md index 5815034a31..d684f8f0f4 100644 --- a/etc/services/README.md +++ b/etc/services/README.md @@ -2,7 +2,6 @@ * Real Data * Warning, these must be set appropriately for the data in question: * the CCDB variation - * the run number for MLTD/MLTAI network * [`data-ai.yaml`](data-ai.yaml) * AI track finding * [`data-cv.yaml`](data-cv.yaml) diff --git a/etc/services/data-aicv.yaml b/etc/services/data-aicv.yaml index 7e62bcc414..a5f362aa11 100644 --- a/etc/services/data-aicv.yaml +++ b/etc/services/data-aicv.yaml @@ -20,18 +20,16 @@ services: name: FTEB - class: org.jlab.service.raster.RasterEngine name: RASTER -# DC clustering: nominal algoritm, filled the cluster bank for ai and conventional tracking +# - class: org.jlab.service.ai.DCDenoiseEngine +# name: DCDN - class: org.jlab.service.dc.DCHBClustering name: DCCR -# This is where the AI plugin would go. THe AI code reads the HB clusters. - - class: org.jlab.service.mltn.MLTDEngine - name: MLTD -# DC using clustering: regular HB tracking + - class: org.jlab.service.ai.DCClsComboEngine + name: DCCC - class: org.jlab.service.dc.DCHBPostClusterConv name: DCHB -# DC using clustering on AI hits: NN assisted HB tracking - - class: org.jlab.service.dc.DCHBPostClusterAI - name: DCHAI + - class: org.jlab.service.dc.DCHBTrackingAI + name: DCHTAI - class: org.jlab.service.ftof.FTOFHBEngine name: FTOFHB - class: org.jlab.service.ec.ECEngine @@ -91,12 +89,10 @@ configuration: MAGFIELDS: magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat magfieldTorusMap: Full_torus_r251_phi181_z251_25Jan2021.dat - DCHAI: + DCHTAI: outputBankPrefix: "AI" DCTAI: outputBankPrefix: "AI" - MLTD: - run: "6302" EBTAI: outputBankPrefix: "RECAI" diff --git a/etc/services/denoise.yaml b/etc/services/denoise.yaml index 46a0cca21d..b89f15b369 100644 --- a/etc/services/denoise.yaml +++ b/etc/services/denoise.yaml @@ -20,21 +20,19 @@ services: name: FTEB - class: org.jlab.service.raster.RasterEngine name: RASTER -# DC clustering: nominal algoritm, filled the cluster bank for ai and conventional tracking + - class: org.jlab.service.ai.DCDenoiseEngine + name: DCDN - class: org.jlab.service.dc.DCHBClustering name: DCCR - class: org.jlab.service.dc.DCHBClustering name: DCRAI -# This is where the AI plugin would go. THe AI code reads the HB clusters. - - class: org.jlab.service.mltn.MLTDEngine - name: MLTD - - class: org.jlab.service.mltn.MLTDEngine - name: MLTAI -# DC using clustering: regular HB tracking - - class: org.jlab.service.dc.DCHBPostClusterAI + - class: org.jlab.service.ai.DCClsComboEngine + name: DCCC + - class: org.jlab.service.ai.DCClsComboEngine + name: DCCAI + - class: org.jlab.service.dc.DCHBTrackingAI name: DCHB -# DC using clustering on AI hits: NN assisted HB tracking - - class: org.jlab.service.dc.DCHBPostClusterAI + - class: org.jlab.service.dc.DCHBTrackingAI name: DCHAI - class: org.jlab.service.ftof.FTOFHBEngine name: FTOFHB @@ -99,10 +97,7 @@ configuration: #rawBankGroup: "DEFAULT" rawBankGroup: "NOISE1" outputBankPrefix: "DN" - MLTD: - run: "6302" - MLTAI: - run: "6302" + DCCAI: inputBankPrefix: "DN" outputBankPrefix: "aidn" DCHB: diff --git a/etc/services/eb.yaml b/etc/services/eb.yaml index 76109a39e6..84745172e7 100644 --- a/etc/services/eb.yaml +++ b/etc/services/eb.yaml @@ -6,8 +6,6 @@ io-services: class: org.jlab.io.clara.Clas12Writer name: Clas12Writer services: - - class: org.jlab.clas.reco.DecoderEngine - name: DECO - class: org.jlab.service.eb.EBTBEngine name: EBTB configuration: diff --git a/reconstruction/uber/src/main/java/org/jlab/service/uber/Uber.java b/reconstruction/uber/src/main/java/org/jlab/service/uber/Uber.java index a3d16c92e6..7258743b09 100644 --- a/reconstruction/uber/src/main/java/org/jlab/service/uber/Uber.java +++ b/reconstruction/uber/src/main/java/org/jlab/service/uber/Uber.java @@ -138,6 +138,7 @@ public HitBasedAICV() { super("HB","uber","1.0"); add(new DCDenoiseEngine(), new DCHBClustering(), + new DCClsComboEngine(), new DCHBPostClusterConv(), new DCHBTrackingAI("AI"), new BANDEngine(), From 2e7d664025dae2a28cf33d225f657f85267a0375 Mon Sep 17 00:00:00 2001 From: Raffaella De Vita Date: Mon, 31 Aug 2026 16:14:56 -0400 Subject: [PATCH 4/6] adding denoising to aicv yamls --- etc/services/data-aicv-uber.yml | 2 +- etc/services/data-aicv.yaml | 6 ++++-- etc/services/mc-aicv.yaml | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/etc/services/data-aicv-uber.yml b/etc/services/data-aicv-uber.yml index d5ba19d256..9f1b6cca9a 100644 --- a/etc/services/data-aicv-uber.yml +++ b/etc/services/data-aicv-uber.yml @@ -11,7 +11,7 @@ configuration: magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat magfieldTorusMap: Full_torus_r251_phi181_z251_25Jan2021.dat HB: - run: "19000" + rawBankGroup: "NODENOISE" io-services: reader: class: org.jlab.io.clara.Clas12Reader diff --git a/etc/services/data-aicv.yaml b/etc/services/data-aicv.yaml index a5f362aa11..db87ae7a18 100644 --- a/etc/services/data-aicv.yaml +++ b/etc/services/data-aicv.yaml @@ -20,8 +20,8 @@ services: name: FTEB - class: org.jlab.service.raster.RasterEngine name: RASTER -# - class: org.jlab.service.ai.DCDenoiseEngine -# name: DCDN + - class: org.jlab.service.ai.DCDenoiseEngine + name: DCDN - class: org.jlab.service.dc.DCHBClustering name: DCCR - class: org.jlab.service.ai.DCClsComboEngine @@ -89,6 +89,8 @@ configuration: MAGFIELDS: magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat magfieldTorusMap: Full_torus_r251_phi181_z251_25Jan2021.dat + DCCR: + rawBankGroup: "NODENOISE" DCHTAI: outputBankPrefix: "AI" DCTAI: diff --git a/etc/services/mc-aicv.yaml b/etc/services/mc-aicv.yaml index 6dcf7509b7..fb7dae7136 100644 --- a/etc/services/mc-aicv.yaml +++ b/etc/services/mc-aicv.yaml @@ -18,8 +18,8 @@ services: name: FTEB - class: org.jlab.service.raster.RasterEngine name: RASTER -# - class: org.jlab.service.ai.DCDenoiseEngine -# name: DCDN + - class: org.jlab.service.ai.DCDenoiseEngine + name: DCDN - class: org.jlab.service.dc.DCHBClustering name: DCCR - class: org.jlab.service.ai.DCClsComboEngine @@ -84,6 +84,8 @@ configuration: MAGFIELDS: magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat magfieldTorusMap: Symm_torus_r2501_phi16_z251_24Apr2018.dat + DCCR: + rawBankGroup: "NODENOISE" RTPC: rtpcSimulation: "true" From 27d639114314e3be77ea24cf8c86ddc9f3d22802 Mon Sep 17 00:00:00 2001 From: Raffaella De Vita Date: Mon, 31 Aug 2026 16:22:04 -0400 Subject: [PATCH 5/6] Adding the functionality to choose the input/output bank names to new AI-assisted tracking service. Used by denoise.yaml --- .../java/org/jlab/service/ai/DCClsComboEngine.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/reconstruction/ai/src/main/java/org/jlab/service/ai/DCClsComboEngine.java b/reconstruction/ai/src/main/java/org/jlab/service/ai/DCClsComboEngine.java index aa959e1dea..dc08ac1ee1 100644 --- a/reconstruction/ai/src/main/java/org/jlab/service/ai/DCClsComboEngine.java +++ b/reconstruction/ai/src/main/java/org/jlab/service/ai/DCClsComboEngine.java @@ -21,6 +21,7 @@ import ai.djl.translate.TranslatorContext; import java.io.IOException; import java.nio.file.Paths; +import java.util.Optional; import java.util.logging.Level; import java.util.logging.Logger; import org.jlab.clas.reco.ReconstructionEngine; @@ -31,8 +32,8 @@ import org.jlab.rec.ai.dcCluster.DCClusterCombo; public class DCClsComboEngine extends ReconstructionEngine { - final String inputBank = "HitBasedTrkg::Clusters"; - final String outputBank = "ai::tracks"; + String inputBank = "HitBasedTrkg::Clusters"; + String outputBank = "ai::tracks"; final static String CONF_THREADS = "threads"; @@ -124,6 +125,11 @@ public boolean init() { LOGGER.log(Level.SEVERE, null, ex); return false; } + + String inputBankPrefix = Optional.ofNullable(this.getEngineConfigString("inputBankPrefix")).orElse(""); + String outputBankPrefix = Optional.ofNullable(this.getEngineConfigString("outputBankPrefix")).orElse("ai"); + inputBank = "HitBasedTrkg::"+inputBankPrefix+"Clusters"; + outputBank = outputBankPrefix+"::tracks"; return true; } From 6691d652857add825acb8811c4262040a214c2a0 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 31 Aug 2026 16:33:40 -0400 Subject: [PATCH 6/6] update pom version --- reconstruction/uber/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reconstruction/uber/pom.xml b/reconstruction/uber/pom.xml index c00232cb46..11d4462e98 100644 --- a/reconstruction/uber/pom.xml +++ b/reconstruction/uber/pom.xml @@ -27,7 +27,7 @@ org.jlab.clas12.detector clas12detector-ai - 14.1.3-SNAPSHOT + 14.2.0-SNAPSHOT org.jlab.clas12.detector