From 7da7b2a74283fc8504876e07ea9ae234a1b3174c Mon Sep 17 00:00:00 2001 From: tongtongcao Date: Mon, 26 Oct 2026 15:17:08 -0400 Subject: [PATCH 1/4] 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/4] 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/4] 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/4] 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! }