From 7da7b2a74283fc8504876e07ea9ae234a1b3174c Mon Sep 17 00:00:00 2001 From: tongtongcao Date: Mon, 26 Oct 2026 15:17:08 -0400 Subject: [PATCH 1/9] Momentum magnitude for forward tracks, estimated by AI, needs to be scaled by the scale factor of magnetic field --- .../main/java/org/jlab/rec/dc/track/TrackCandListFinder.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java index f90b26236a..092e416cff 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java @@ -9,6 +9,7 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.jlab.clas.swimtools.Swim; +import org.jlab.clas.swimtools.Swimmer; import org.jlab.detector.geant4.v2.DCGeant4Factory; import org.jlab.geom.prim.Line3D; import org.jlab.geom.prim.Point3D; @@ -254,6 +255,10 @@ public List getTrackCandsAI(CrossList crossList, DCGeant4Factory DcDetect initSV.tx = estSV[2]; initSV.ty = estSV[3]; initSV.Q = estSV[4]; + + double absTorScale = Math.abs(Swimmer.getTorScale()); + if(absTorScale != 1 && absTorScale != 0) + initSV.Q = estSV[4] / absTorScale; // Momentum magnitude is scaled by the scale factor of magnetic field RungeKuttaDoca rk = new RungeKuttaDoca(); rk.SwimToZ(sector, initSV, dcSwim, measSurfaces.get(0).wireLine[0].end().z(), new float[3]); From 4bf9fe4d3f7495a16a13c67953182d0a53eae64a Mon Sep 17 00:00:00 2001 From: tongtongcao Date: Thu, 29 Oct 2026 16:37:59 -0400 Subject: [PATCH 2/9] polish update --- .../main/java/org/jlab/rec/dc/track/TrackCandListFinder.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java index 092e416cff..952d3d80ea 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java @@ -257,8 +257,7 @@ public List getTrackCandsAI(CrossList crossList, DCGeant4Factory DcDetect initSV.Q = estSV[4]; double absTorScale = Math.abs(Swimmer.getTorScale()); - if(absTorScale != 1 && absTorScale != 0) - initSV.Q = estSV[4] / absTorScale; // Momentum magnitude is scaled by the scale factor of magnetic field + initSV.Q = absTorScale>0.001 ? estSV[4]/absTorScale : estSV[4]; // Momentum magnitude is scaled by the scale factor of magnetic field RungeKuttaDoca rk = new RungeKuttaDoca(); rk.SwimToZ(sector, initSV, dcSwim, measSurfaces.get(0).wireLine[0].end().z(), new float[3]); From 05dcd0dc12883acf9ca67538f6a7b36ded660379 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 22 Oct 2026 18:30:18 -0400 Subject: [PATCH 3/9] switch kpp test to modern ai --- etc/services/kpp.yaml | 75 ++++++++----------- .../advanced-tests/run-advanced-tests.sh | 7 +- .../src/kpptracking/KppTrackingTest.java | 2 +- 3 files changed, 34 insertions(+), 50 deletions(-) diff --git a/etc/services/kpp.yaml b/etc/services/kpp.yaml index f0a37eac5f..0be7189bb1 100644 --- a/etc/services/kpp.yaml +++ b/etc/services/kpp.yaml @@ -1,10 +1,17 @@ -io-services: - reader: - class: org.jlab.io.clara.Clas12Reader - name: Clas12Reader - writer: - class: org.jlab.io.clara.Clas12Writer - name: Clas12Writer +configuration: + services: + MAGFIELDS: + magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat + magfieldTorusMap: Full_torus_r251_phi181_z251_25Jan2021.dat + DCCR: + rawBankGroup: "NODENOISE" + DCHTAI: + outputBankPrefix: "AI" + DCTAI: + outputBankPrefix: "AI" + EBTAI: + outputBankPrefix: "RECAI" + services: - class: org.jlab.clas.reco.DecoderEngine name: DECO @@ -20,18 +27,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 @@ -72,36 +77,18 @@ services: name: RICH - class: org.jlab.service.rtpc.RTPCEngine name: RTPC + - class: org.jlab.rec.service.vtx.VTXEngine + name: VTX - class: org.jlab.calibration.service.CalibBanksEngine name: CALIB -configuration: - services: - MAGFIELDS: - magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat - magfieldTorusMap: Symm_torus_r2501_phi16_z251_24Apr2018.dat -# examples of yaml settings for magfields -# magfieldSolenoidShift: "0.0" -# magfieldTorusXShift: "0.0" -# magfieldTorusYShift: "0.0" -# magfieldTorusZShift: "0.0" -# examples of yaml settings for DC services -# DCRC: -# dcGeometryVariation: rga_spring2018 -# dcT2DFunc: "Polynomial" -# dcWireDistortion: "true" -# example of how to set variation and timestamp for a service, uncomment to use -# EBTB: -# variation: default -# timestamp: 08/22/2018 - DCCR: - dcT2DFunc: "Exponential" - DCHB: - dcT2DFunc: "Exponential" - DCHAI: - dcT2DFunc: "Exponential" - DCTB: - dcT2DFunc: "Exponential" - DCTAI: - dcT2DFunc: "Exponential" + +io-services: + reader: + class: org.jlab.io.clara.Clas12Reader + name: Clas12Reader + writer: + class: org.jlab.io.clara.Clas12Writer + name: Clas12Writer + mime-types: - binary/data-hipo diff --git a/validation/advanced-tests/run-advanced-tests.sh b/validation/advanced-tests/run-advanced-tests.sh index c96599669a..c375c64f06 100755 --- a/validation/advanced-tests/run-advanced-tests.sh +++ b/validation/advanced-tests/run-advanced-tests.sh @@ -11,12 +11,8 @@ COAT=$CLARA_HOME/plugins/clas12/ source $COAT/libexec/env.sh classPath="${COATJAVA_CLASSPATH}:../lib/*:src/" -# download test files -#wget --no-check-certificate http://clasweb.jlab.org/clas12offline/distribution/coatjava/validation_files/twoTrackEvents_809_raw.evio.tar.gz -#[ $? -ne 0 ] && echo "wget validation files failure" && exit 2 -#tar -zxvf twoTrackEvents_809_raw.evio.tar.gz - # run decoder +rm -f twoTrackEvents_809.hipo $COAT/bin/decoder -t -0.5 -s 0.0 -i ./data/twoTrackEvents_809_raw.evio -o ./twoTrackEvents_809.hipo -c 2 [ $? -ne 0 ] && echo "decoder failure" && exit 3 @@ -24,6 +20,7 @@ $COAT/bin/decoder -t -0.5 -s 0.0 -i ./data/twoTrackEvents_809_raw.evio -o ./twoT $COAT/bin/hipo-utils -stats ./twoTrackEvents_809.hipo # run clara +rm -f rec_twoTrackEvents_809.hipo $COAT/bin/run-clara -y $COAT/etc/services/kpp.yaml ./twoTrackEvents_809.hipo [ $? -ne 0 ] && echo "reconstruction with clara failure" && exit 4 diff --git a/validation/advanced-tests/src/kpptracking/KppTrackingTest.java b/validation/advanced-tests/src/kpptracking/KppTrackingTest.java index cfdbdff198..2cb314e470 100644 --- a/validation/advanced-tests/src/kpptracking/KppTrackingTest.java +++ b/validation/advanced-tests/src/kpptracking/KppTrackingTest.java @@ -36,7 +36,7 @@ public void testKppTracking() { System.out.println("\tTotal count: " + totalCount + "\n\t2-track count: " + twoTrackCountAI); assertEquals(twoTrackCountCV > 30, true); // this should be stricter! - assertEquals(twoTrackCountAI > 30, true); // this should be stricter! + assertEquals(twoTrackCountAI > 10, true); // this should be stricter! } From 8e9715896e8c9939546e7ff9626aa7f381da567b Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 29 Oct 2026 17:25:34 -0400 Subject: [PATCH 4/9] back to 30 for ai test --- validation/advanced-tests/src/kpptracking/KppTrackingTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/validation/advanced-tests/src/kpptracking/KppTrackingTest.java b/validation/advanced-tests/src/kpptracking/KppTrackingTest.java index 2cb314e470..cfdbdff198 100644 --- a/validation/advanced-tests/src/kpptracking/KppTrackingTest.java +++ b/validation/advanced-tests/src/kpptracking/KppTrackingTest.java @@ -36,7 +36,7 @@ public void testKppTracking() { System.out.println("\tTotal count: " + totalCount + "\n\t2-track count: " + twoTrackCountAI); assertEquals(twoTrackCountCV > 30, true); // this should be stricter! - assertEquals(twoTrackCountAI > 10, true); // this should be stricter! + assertEquals(twoTrackCountAI > 30, true); // this should be stricter! } From 296e4973ecb099f178dafe823b1615fa07a27ea3 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 8 Oct 2026 12:07:35 -0400 Subject: [PATCH 5/9] remove j4ml dependency --- common-tools/coat-libs/pom.xml | 10 -- pom.xml | 22 ---- reconstruction/mltn/pom.xml | 52 -------- .../org/jlab/service/mltn/MLTDEngine.java | 119 ------------------ .../org/jlab/service/mltn/MLTNEngine.java | 96 -------------- reconstruction/pom.xml | 1 - 6 files changed, 300 deletions(-) delete mode 100644 reconstruction/mltn/pom.xml delete mode 100644 reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTDEngine.java delete mode 100644 reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTNEngine.java diff --git a/common-tools/coat-libs/pom.xml b/common-tools/coat-libs/pom.xml index 761e3c2152..6a6d847814 100644 --- a/common-tools/coat-libs/pom.xml +++ b/common-tools/coat-libs/pom.xml @@ -26,16 +26,6 @@ et - - j4ml - j4ml-neuroph - - - - j4ml - j4ml-clas12 - - org.jlab.clas clas-io diff --git a/pom.xml b/pom.xml index d1203eb2e5..ed4092a0ed 100644 --- a/pom.xml +++ b/pom.xml @@ -200,28 +200,6 @@ 4.5 - - j4ml - j4ml-neuroph - 0.9-SNAPSHOT - - - - j4ml - j4ml-data - 0.9-SNAPSHOT - - - - j4ml - j4ml-clas12 - 0.9-SNAPSHOT - - org.jlab.ccdbrcdb ccdbrcdb diff --git a/reconstruction/mltn/pom.xml b/reconstruction/mltn/pom.xml deleted file mode 100644 index 5b8bb62881..0000000000 --- a/reconstruction/mltn/pom.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - 4.0.0 - - org.jlab.clas12.detector - clas12detector-mltn - 14.2.3-SNAPSHOT - jar - - - org.jlab.clas12 - reconstruction - 14.2.3-SNAPSHOT - - - - - - org.jlab.jnp - jnp-hipo4 - - - - j4ml - j4ml-neuroph - - - - j4ml - j4ml-data - - - - j4ml - j4ml-clas12 - - - - org.jlab.clas - clas-io - 14.2.3-SNAPSHOT - - - - org.jlab.clas - clas-reco - 14.2.3-SNAPSHOT - - - - - diff --git a/reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTDEngine.java b/reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTDEngine.java deleted file mode 100644 index 6dce3c09cd..0000000000 --- a/reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTDEngine.java +++ /dev/null @@ -1,119 +0,0 @@ -package org.jlab.service.mltn; - -import j4ml.clas12.ejml.ArchiveProvider; -import j4ml.clas12.ejml.EJMLTrackNeuralNetwork; -import j4ml.clas12.network.Clas12TrackFinder; -import j4ml.clas12.tracking.ClusterCombinations; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import org.jlab.clas.reco.ReconstructionEngine; -import org.jlab.io.base.DataBank; -import org.jlab.io.base.DataEvent; -import org.jlab.io.hipo.HipoDataBank; -import org.jlab.utils.CLASResources; - -/** - * - * @author gavalian - */ -public class MLTDEngine extends ReconstructionEngine { - - EJMLTrackNeuralNetwork network = null; - private String networkFlavor = "default"; - private Integer userRunNumber = -1; - private String inputBankPrefix = ""; - private String outputBankPrefix = "ai"; - private String inputBank = null; - private String outputBank = null; - - public MLTDEngine(){ - super("MLTD","gavalian","1.0"); - } - - @Override - public boolean init() { - inputBankPrefix = Optional.ofNullable(this.getEngineConfigString("inputBankPrefix")).orElse(""); - outputBankPrefix = Optional.ofNullable(this.getEngineConfigString("outputBankPrefix")).orElse("ai"); - inputBank = "HitBasedTrkg::"+inputBankPrefix+"Clusters"; - outputBank = outputBankPrefix+"::tracks"; - networkFlavor = Optional.ofNullable(this.getEngineConfigString("flavor")).orElse("default"); - userRunNumber = Integer.valueOf(Optional.ofNullable(this.getEngineConfigString("run")).orElse("-1")); - return true; - } - - public boolean load(int run) { - String path = CLASResources.getResourcePath("etc/data/nnet/ejml/ejmlclas12.network"); - if(this.getEngineConfigString("network")!=null) - path = this.getEngineConfigString("network"); - System.out.println("[neural-network] info : Loading neural network from " + path); - network = new EJMLTrackNeuralNetwork(); - Map files = new HashMap<>(); - files.put("classifier", "trackClassifier.network"); - files.put("fixer", "trackFixer.network"); - - ArchiveProvider provider = new ArchiveProvider(path.trim()); - - //----- This will find in the archive the last run number closest - //----- to provided run number that contains trained network. - //----- it works similar to CCDB, but not exatly, for provided - //----- run number it looks for run that has smaller number, - //----- however it the provided run # it lower than anything - //----- existing in the arhive, it will return the closest run - //----- number entry. - int adjustedRun = provider.findEntry(run); - - String directory = String.format("network/%d/%s", adjustedRun, networkFlavor); - network.initZip(path.trim(),directory, files); - - //trackFinder = Clas12TrackFinder.createEJML("CLAS12DIR","etc/ejml/ejmlclas12.network"); - //classifier.setEnvDirectory("CLAS12DIR"); - //classifier.setEnvPath("etc/nnet/neuroph"); - //classifier.load("trackClassifier.nnet", "trackFixer.nnet"); - System.out.println("[neural-network] info : Loading neural network files done..."); - System.out.println("[neural-network] info : Only network is initialized..."); - //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - return true; - } - - @Override - public void detectorChanged(int runNumber) { - if (userRunNumber < 0) { - load(runNumber); - } - else if (network == null) { - load(userRunNumber); - } - } - - @Override - public boolean processDataEventUser(DataEvent de) { - if(de.hasBank(inputBank)==true){ - DataBank bank = de.getBank(inputBank); - HipoDataBank hipoBank = (HipoDataBank) bank; - Clas12TrackFinder trackFinder = new Clas12TrackFinder(); - trackFinder.setTrackingNetwork(network); - trackFinder.process(hipoBank.getBank()); - writeBank(de,trackFinder.getResults()); - } - return true; - } - - public void writeBank(DataEvent event, ClusterCombinations combi){ - DataBank bank = event.createBank(outputBank, combi.getSize()); - for(int i = 0; i < combi.getSize(); i++){ - bank.setByte("id", i, (byte) (i+1)); - bank.setByte("sector", i, (byte) 1); - bank.setByte("charge", i, (byte) combi.setRow(i).getStatus()); - bank.setFloat("prob", i, (float) combi.setRow(i).getProbability()); - int[] ids = combi.getLabels(i); - for(int c = 0; c < 6; c++){ - int order = c+1; - bank.setShort("c"+order, i, (short) ids[c]); - } - } - event.removeBank(outputBank); - event.appendBank(bank); - } - -} diff --git a/reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTNEngine.java b/reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTNEngine.java deleted file mode 100644 index 0d2c3ce339..0000000000 --- a/reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTNEngine.java +++ /dev/null @@ -1,96 +0,0 @@ -package org.jlab.service.mltn; - -import j4ml.clas12.Clas12TrackAnalyzer; -import j4ml.clas12.Clas12TrackClassifier; -import j4ml.clas12.track.ClusterCombinations; -import org.jlab.clas.reco.ReconstructionEngine; -import org.jlab.io.base.DataBank; -import org.jlab.io.base.DataEvent; -import org.jlab.io.hipo.HipoDataBank; - -/** - * - * @author gavalian - @Deprecated - */ -public class MLTNEngine extends ReconstructionEngine { - - Clas12TrackClassifier classifier = new Clas12TrackClassifier(); - - public MLTNEngine(){ - super("MLTN","gavalian","1.0"); - } - - @Override - public boolean init() { - classifier.setEnvDirectory("CLAS12DIR"); - classifier.setEnvPath("etc/data/nnet/neuroph"); - classifier.load("trackClassifier.nnet", "trackFixer.nnet"); - System.out.println("Loading neural network files done..."); - return true; - } - - @Override - public void detectorChanged(int runNumber) {} - - @Override - public boolean processDataEventUser(DataEvent de) { - if(de.hasBank("HitBasedTrkg::Clusters")==true){ - DataBank bank = de.getBank("HitBasedTrkg::Clusters"); - - - HipoDataBank hipoBank = (HipoDataBank) bank; - //classifier.processBank(hipoBank.getBank()); - - Clas12TrackAnalyzer analyzer = new Clas12TrackAnalyzer(); - for(int sector = 1; sector <=6; sector++){ - analyzer.readBank(hipoBank.getBank(), sector); - classifier.evaluate(analyzer.getCombinations()); - //analyzer.getCombinations().analyze(); - //System.out.println(analyzer.getCombinations()); - classifier.evaluate5(analyzer.getCombinationsPartial()); - analyzer.analyze(); - } - - writeBank(de,analyzer.getTracks()); - - } - return true; - } - - public void writeBank(DataEvent event, ClusterCombinations combi){ - //ClusterCombinations combi = cl.getTracks(); - //System.out.println(">>> writing ai bank with entries = " + combi.getSize()); - DataBank bank = event.createBank("ai::tracks", combi.getSize()); - for(int i = 0; i < combi.getSize(); i++){ - bank.setByte("id", i, (byte) (i+1)); - bank.setByte("sector", i, (byte) 1); - bank.setByte("charge", i, (byte) combi.setRow(i).getStatus()); - bank.setFloat("prob", i, (float) combi.setRow(i).getProbability()); - int[] ids = combi.getLabels(i); - for(int c = 0; c < 6; c++){ - int order = c+1; - bank.setShort("c"+order, i, (short) ids[c]); - } - } - //System.out.println("appending bank"); - event.appendBank(bank); - } - - /*public void writeBank(DataEvent event, Clas12TrackClassifier cl){ - ClusterCombinations combi = cl.getTracks(); - //System.out.println(">>> writing ai bank with entries = " + combi.getSize()); - DataBank bank = event.createBank("ai::tracks", combi.getSize()); - for(int i = 0; i < combi.getSize(); i++){ - bank.setByte("id", i, (byte) (i+1)); - bank.setByte("sector", i, (byte) 1); - int[] ids = combi.getLabels(i); - for(int c = 0; c < 6; c++){ - int order = c+1; - bank.setShort("c"+order, i, (short) ids[c]); - } - } - //System.out.println("appending bank"); - event.appendBank(bank); - }*/ -} diff --git a/reconstruction/pom.xml b/reconstruction/pom.xml index dd90f1e511..f00723cd62 100644 --- a/reconstruction/pom.xml +++ b/reconstruction/pom.xml @@ -29,7 +29,6 @@ band mc rtpc - mltn swaps raster vtx From a640569f166300516fb38e1866b0ab9e54077d29 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 29 Oct 2026 17:58:35 -0400 Subject: [PATCH 6/9] remove unused dependency --- reconstruction/uber/pom.xml | 5 --- .../main/java/org/jlab/service/uber/Uber.java | 33 ------------------- 2 files changed, 38 deletions(-) diff --git a/reconstruction/uber/pom.xml b/reconstruction/uber/pom.xml index 6fe9a043f8..7c540c551d 100644 --- a/reconstruction/uber/pom.xml +++ b/reconstruction/uber/pom.xml @@ -104,11 +104,6 @@ clas12detector-eb 14.2.3-SNAPSHOT - - org.jlab.clas12.detector - clas12detector-mltn - 14.2.3-SNAPSHOT - org.jlab.clas12.detector clas12detector-fmt 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 7258743b09..6a10ad68cf 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 @@ -26,7 +26,6 @@ import org.jlab.service.ftof.FTOFTBEngine; import org.jlab.service.htcc.HTCCReconstructionService; import org.jlab.service.ltcc.LTCCEngine; -import org.jlab.service.mltn.MLTDEngine; import org.jlab.service.rtpc.RTPCEngine; import org.jlab.calibration.service.CalibBanksEngine; import org.jlab.service.ai.DCClsComboEngine; @@ -85,21 +84,6 @@ public HitBasedCV() { } } - public static class HitBasedAIClassic extends UberEngine { - public HitBasedAIClassic() { - super("HB","uber","1.0"); - add(new DCHBClustering(), - new MLTDEngine(), - new DCHBPostClusterAI("HB"), - new BANDEngine(), - new HTCCReconstructionService(), - new LTCCEngine(), - new FTOFHBEngine(), - new ECEngine(), - new EBHBEngine()); - } - } - public static class HitBasedAI extends UberEngine { public HitBasedAI() { super("HB","uber","1.0"); @@ -116,23 +100,6 @@ public HitBasedAI() { } } - public static class HitBasedAIClassicCV extends UberEngine { - public HitBasedAIClassicCV() { - super("HB","uber","1.0"); - add(new DCHBClustering(), - new MLTDEngine(), - new DCHBPostClusterConv(), - new DCHBPostClusterAI("AI"), - new BANDEngine(), - new HTCCReconstructionService(), - new LTCCEngine(), - new FTOFHBEngine(), - new ECEngine(), - new EBHBEngine(), - new EBHBAIEngine()); - } - } - public static class HitBasedAICV extends UberEngine { public HitBasedAICV() { super("HB","uber","1.0"); From fc806063554aa8fa6ec0e7d5552c68f92d6ff486 Mon Sep 17 00:00:00 2001 From: Christopher Dilks Date: Fri, 30 Oct 2026 15:30:19 -0400 Subject: [PATCH 7/9] build: cleanup convergence conflict resolution pins --- .github/dependabot.yml | 7 ++----- Makefile | 3 +++ pom.xml | 38 ++++---------------------------------- 3 files changed, 9 insertions(+), 39 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 13c7fea22c..8feea71aba 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -18,11 +18,8 @@ updates: commit-message: prefix: "build(deps)" ignore: - - dependency-name: "org.jlab:groot" # since version numbers are not in order - - dependency-name: "net.objecthunter:exp4j" # pinned for dependency convergence - - dependency-name: "org.ejml:ejml-simple" # pinned for dependency convergence - - dependency-name: "org.apache.commons:commons-lang3" # pinned for dependency convergence - - dependency-name: "org.slf4j:slf4j-api" # pinned for dependency convergence + - dependency-name: "org.jlab:groot" # since clasweb version numbers are not in order + - dependency-name: "org.ejml:ejml-simple" # see https://github.com/JeffersonLab/coatjava/pull/636 - dependency-name: "org.openjfx:javafx-base" versions: [">= 24"] # version 24 requires JAVA_VERSION 22+ - dependency-name: "org.openjfx:javafx-graphics" diff --git a/Makefile b/Makefile index fe7cf3c86c..6d316f4e53 100644 --- a/Makefile +++ b/Makefile @@ -21,4 +21,7 @@ clean: clara: $(BUILD) --clara $(THREADS) +test: + $(BUILD) --unittests $(THREADS) + all: clara diff --git a/pom.xml b/pom.xml index ed4092a0ed..cbd13e607d 100644 --- a/pom.xml +++ b/pom.xml @@ -131,13 +131,13 @@ org.apache.commons commons-text - 1.15.0 + 1.15.0 org.jlab groot - 6.0.0 + 6.0.0 @@ -197,7 +197,7 @@ org.jlab.jnp jnp-hipo4 - 4.5 + 4.5 @@ -237,40 +237,10 @@ import - org.ejml ejml-simple - 0.40 - - - - - org.apache.commons - commons-lang3 - 3.20.0 - - - - - org.slf4j - slf4j-api - 1.7.6 + 0.40 From 3cbae4d4c7107f839808b3a8c49f17764288791b Mon Sep 17 00:00:00 2001 From: Christopher Dilks Date: Fri, 30 Oct 2026 18:11:30 -0400 Subject: [PATCH 8/9] fix: install `djl` runtime dependencies with dedicated module --- build-coatjava.sh | 10 +-- common-tools/djl-runtime/pom.xml | 116 +++++++++++++++++++++++++++++++ common-tools/pom.xml | 1 + pom.xml | 8 --- reconstruction/alert/pom.xml | 55 --------------- 5 files changed, 119 insertions(+), 71 deletions(-) create mode 100644 common-tools/djl-runtime/pom.xml diff --git a/build-coatjava.sh b/build-coatjava.sh index 7187ffc4b8..0f990134e3 100755 --- a/build-coatjava.sh +++ b/build-coatjava.sh @@ -403,14 +403,8 @@ install_jars() { for pom in $(find reconstruction -name pom.xml); do install_jars $pom $prefix_dir/lib/services done -for pom in $(find common-tools -name pom.xml); do - if [[ "$pom" =~ coat-libs ]]; then - install_jars $pom $prefix_dir/lib/clas 'coat-libs-*.jar' - # else # FIXME, consumers may be need these after https://github.com/JeffersonLab/coatjava/pull/632 ; alternatively add needed deps to `coat-libs` - # install_jars $pom $prefix_dir/lib/services - fi -done - +install_jars common-tools/djl-runtime/pom.xml $prefix_dir/lib/services +install_jars common-tools/coat-libs/pom.xml $prefix_dir/lib/clas 'coat-libs-*.jar' echo "installed coatjava to: $prefix_dir" # install clara diff --git a/common-tools/djl-runtime/pom.xml b/common-tools/djl-runtime/pom.xml new file mode 100644 index 0000000000..edaed6dc51 --- /dev/null +++ b/common-tools/djl-runtime/pom.xml @@ -0,0 +1,116 @@ + + + 4.0.0 + + + + djl-runtime + pom + + + org.jlab.clas + common-tools + 14.2.3-SNAPSHOT + + + + + linux-x86_64 + + + + + + djl-linux-x86_64 + + + unix + Linux + amd64 + + + + linux-x86_64 + + + + djl-osx-aarch64 + + + mac + aarch64 + + + + osx-aarch64 + + + + djl-win-x86_64 + + + windows + amd64 + + + + win-x86_64 + + + + + + + ai.djl + api + + + ai.djl + model-zoo + + + ai.djl.pytorch + pytorch-model-zoo + + + ai.djl.pytorch + pytorch-engine + + + ai.djl.pytorch + pytorch-native-cpu + ${djl.pytorch.classifier} + + + ai.djl.pytorch + pytorch-jni + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.11.0 + + + copy-djl-runtime + package + + copy-dependencies + + + ${project.build.directory}/lib/services + runtime + + + + + + + + diff --git a/common-tools/pom.xml b/common-tools/pom.xml index fa5af73563..3b954184d1 100644 --- a/common-tools/pom.xml +++ b/common-tools/pom.xml @@ -29,6 +29,7 @@ clara-io clas-tracking clas-decay-tools + djl-runtime coat-libs diff --git a/pom.xml b/pom.xml index cbd13e607d..f195893c03 100644 --- a/pom.xml +++ b/pom.xml @@ -353,14 +353,6 @@ ${project.build.directory}/dependency-tree.txt true - - - ai.djl:model-zoo - ai.djl.pytorch:pytorch-model-zoo - ai.djl.pytorch:pytorch-engine - ai.djl.pytorch:pytorch-native-cpu - ai.djl.pytorch:pytorch-jni - diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index f20fea7847..9b41383f1c 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -83,61 +83,6 @@ ai.djl api - - - - - ai.djl - model-zoo - runtime - - - - ai.djl.pytorch - pytorch-model-zoo - runtime - - - - ai.djl.pytorch - pytorch-engine - runtime - - - ai.djl.pytorch - pytorch-native-cpu - linux-x86_64 - runtime - - - ai.djl.pytorch - pytorch-jni - runtime - - - - - - org.apache.maven.plugins - maven-dependency-plugin - 3.11.0 - - - copy-dependencies - package - - copy-dependencies - - - ${project.build.directory}/lib/services - ai.djl,com.google.code.gson - - - - - - - From 88ef1dc63da75114e99706c3b42812039114427e Mon Sep 17 00:00:00 2001 From: Christopher Dilks Date: Fri, 30 Oct 2026 18:29:22 -0400 Subject: [PATCH 9/9] fix: cleanup! --- .github/workflows/ci.yml | 2 +- CODEOWNERS | 1 - pom.xml | 4 ---- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3c327df4c3..12371fab20 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ env: RCDB_CONNECTION: 'sqlite:///${{ github.workspace }}/coatjava/etc/data/sqlite/rcdb.sqlite' nthreads: 1 # Maven 3.9+ reads MAVEN_ARGS automatically, including inside build-coatjava.sh: - # --no-snapshot-updates : don't re-check remote repos (j4ml) for newer SNAPSHOTs; + # --no-snapshot-updates : don't re-check remote repos for newer SNAPSHOTs; # use whatever `warm_maven_cache` resolved # retryHandler.count : built-in HTTP retries for transient 403/429/5xx MAVEN_ARGS: --no-snapshot-updates -Daether.connector.http.retryHandler.count=5 diff --git a/CODEOWNERS b/CODEOWNERS index ea7190a46e..c1cdf66a30 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -79,7 +79,6 @@ reconstruction/ft/ @raffaelladevita reconstruction/htcc/ @raffaelladevita @baltzell @zieglerv reconstruction/ltcc/ @raffaelladevita @baltzell @zieglerv @sly2j reconstruction/mc/ @baltzell @rafopar -reconstruction/mltn/ @gavalian reconstruction/postproc/ @baltzell reconstruction/raster/ @raffaelladevita @N-Plx reconstruction/recoil/ @silvianic diff --git a/pom.xml b/pom.xml index f195893c03..b13f48e9f7 100644 --- a/pom.xml +++ b/pom.xml @@ -59,10 +59,6 @@ clasweb-clas12maven https://clasweb.jlab.org/.clas12maven - - clasweb-jhep - https://clasweb.jlab.org/.jhep/maven -