From 34b31de82e45bb66ae9812663680eef9f5206f65 Mon Sep 17 00:00:00 2001 From: Mathieu Ouillon <67646911+mathieuouillon@users.noreply.github.com> Date: Wed, 15 Apr 2026 15:51:44 -0400 Subject: [PATCH 01/25] Continue with RG-L Fix in the HitReader and AHDCEngine (#1207) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * AHDC: skip raw-hit cut lookups in sim and tidy HitReader In simulation mode fetch_AHDCHits was still reading the per-wire rawHitCuts table even though the pass/fail result was discarded, which is wasted work and can fail when the sim CCDB run has no cut entries. The cut lookups and pass check are now nested inside the existing !sim branch alongside the ToT and ADC-gain corrections, so sim events go straight from time calibration to DOCA. While in the file: - Drop the rawHitCutsTable/timeOffsetsTable/... instance fields; the IndexedTables are passed through to fetch_AHDCHits and T2Dfunction as parameters, matching how they are used. - Make T2Dfunction / fetch_AHDCHits / fetch_TrueAHDCHits private; nothing outside HitReader calls them. - Collapse the DOCA branch to a single ternary. - Add Javadoc on the class, constructor, calibration pipeline, T2D function, and the hit/true-hit accessors. * AHDC: register missing output banks, fix track-finding mode leak, drop unused MaterialMap - Add AHDC::interclusters and AHDC::docaclusters to registerOutputBank so framework bank management (clearing, schema lookup) sees them. - Use a per-event effectiveMode local instead of overwriting the modeTrackFinding instance field when an event exceeds MAX_HITS_FOR_AI; previously a single noisy event forced CV_Distance for the rest of the run. - Remove the unused materialMap field and its MaterialMap/Material imports; the Kalman filter no longer consumes it from AHDCEngine. * AHDC/ATOF/ALERT: suffix IndexedTable variables with "Table" Rename all IndexedTable fields, parameters, and javadoc references in the ALERT engine suite to carry a "Table" suffix, making calibration-table variables easy to spot at a glance. Touches AHDCEngine, ATOFEngine, ALERTEngine, HitReader, HitFinder, ATOFHit, and BarHit. * ALERTEngine: fix IOOBE when Kalman loop skips a track row The Kalman preprocessing loop read tracks back via AHDC_tracks.get(row), which breaks as soon as the empty-hit guard skips a row and desynchronises row from the list index. Build each Track through a local reference, initialise position/momentum/trackid, then append — so skipped rows never poison later iterations. Also log a warning on the skip branch so the upstream "AHDC::track row with no matching AHDC::hits" case is visible. * ALERTEngine: drop unreachable empty-hit guard, document invariant * AHDC: greedy non-overlap selection in AI track finding The AI candidate generator routinely emits overlapping TrackPredictions that share PreCluster (and therefore Hit) references. Accepting all predictions above threshold let later tracks silently steal earlier tracks' hits via in-place set_trackId() mutation, leaving orphan rows in AHDC::track with no matching rows in AHDC::hits — which in turn crashed the ALERTEngine Kalman loop with IndexOutOfBoundsException inside Track(ArrayList). Sort predictions by score descending, greedily accept each one only if none of its PreClusters has already been claimed, enforcing one-hit one-track. --- .../java/org/jlab/rec/ahdc/Hit/HitReader.java | 170 ++++++++++++------ .../java/org/jlab/rec/atof/hit/ATOFHit.java | 12 +- .../java/org/jlab/rec/atof/hit/BarHit.java | 4 +- .../java/org/jlab/rec/atof/hit/HitFinder.java | 8 +- .../org/jlab/service/ahdc/AHDCEngine.java | 71 ++++---- .../org/jlab/service/alert/ALERTEngine.java | 32 ++-- .../org/jlab/service/atof/ATOFEngine.java | 18 +- 7 files changed, 197 insertions(+), 118 deletions(-) diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/HitReader.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/HitReader.java index e2953d7857..6268dd5dd2 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/HitReader.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/HitReader.java @@ -9,37 +9,65 @@ import org.jlab.geom.detector.alert.AHDC.AlertDCDetector; import org.jlab.utils.groups.IndexedTable; +/** + * Reads raw AHDC hits from the {@code AHDC::adc} bank, applies calibration corrections + * (time offsets, time-over-threshold, ADC gains), filters them against per-wire cuts in + * data mode, and builds the list of {@link Hit} objects used by downstream reconstruction. + * In simulation mode, the per-wire cuts and data-only ADC/ToT corrections are bypassed, + * and truth information is additionally read from the {@code MC::True} bank into {@link TrueHit}s. + */ public class HitReader { private ArrayList _AHDCHits; private ArrayList _TrueAHDCHits; private boolean sim = false; - private IndexedTable rawHitCutsTable; - private IndexedTable timeOffsetsTable; - private IndexedTable timeToDistanceWireTable; - private IndexedTable timeOverThresholdTable; - private IndexedTable adcGainsTable; - - public HitReader(DataEvent event, AlertDCDetector detector, boolean simulation, - IndexedTable rawHitCuts, - IndexedTable timeOffsets, - IndexedTable timeToDistanceWire, - IndexedTable timeOverThreshold, - IndexedTable adcGains) { + /** + * Constructs a HitReader and eagerly populates the hit lists from the given event. + * After construction, retrieve the results via {@link #get_AHDCHits()} and + * (in simulation) {@link #get_TrueAHDCHits()}. + * + * @param event current event containing the {@code AHDC::adc} bank (and {@code MC::True} in sim) + * @param detector AHDC geometry used to resolve wire positions on each hit + * @param simulation {@code true} for Monte Carlo events; disables data-only cuts and corrections + * @param rawHitCutsTable per-wire acceptance cuts (time, ToT, ADC, pedestal min/max) + * @param timeOffsetsTable per-wire {@code t0} offsets applied to the leading-edge time + * @param timeToDistanceWireTable per-wire T2D calibration coefficients used to convert time to DOCA + * @param timeOverThresholdTable per-wire ToT correction factors (applied in data mode only) + * @param adcGainsTable per-wire ADC gain corrections (applied in data mode only) + */ + public HitReader(DataEvent event, AlertDCDetector detector, boolean simulation, IndexedTable rawHitCutsTable, IndexedTable timeOffsetsTable, + IndexedTable timeToDistanceWireTable, IndexedTable timeOverThresholdTable, IndexedTable adcGainsTable) { sim = simulation; - fetch_AHDCHits(event, detector, rawHitCuts, timeOffsets, timeToDistanceWire, timeOverThreshold, adcGains); + fetch_AHDCHits(event, detector, rawHitCutsTable, timeOffsetsTable, timeToDistanceWireTable, timeOverThresholdTable, adcGainsTable); if (simulation) fetch_TrueAHDCHits(event); } - public double T2Dfunction(int sector, int layer, int wire, double time){ + /** + * Converts a calibrated drift time into a distance-of-closest-approach (DOCA) for a + * given wire, using the piecewise T2D calibration stored in {@code timeToDistanceWireTable}. + * + *

The result is a blend of three 1st-order polynomials {@code p1, p2, p3} stitched + * together by two logistic transition functions {@code t1, t2}: + * {@code doca = p1·(1-t1) + t1·p2·(1-t2) + t2·p3}. The coefficients are looked up + * once per call via a hashed index on (sector, layer, wire). + * + *

Expected column order of the calibration row: + * p1_int(0), p1_slope(1), p2_int(2), p2_slope(3), p3_int(4), p3_slope(5), + * t1_x0(6), t1_width(7), t2_x0(8), t2_width(9), z0(10), z1(11), z2(12), + * extra1(13), extra2(14), chi2ndf(15). + * + * @param sector AHDC sector index + * @param layer packed layer index ({@code superlayer*10 + layer}) + * @param wire wire (component) id within the layer + * @param time calibrated drift time in ns + * @param timeToDistanceWireTable per-wire T2D calibration table + * @return the DOCA in mm + */ + private double T2Dfunction(int sector, int layer, int wire, double time, IndexedTable timeToDistanceWireTable){ long hash = timeToDistanceWireTable.getList().getIndexGenerator().hashCode(sector, layer, wire); List t2d = timeToDistanceWireTable.getDoublesByHash(hash); - // T2D function consists of three 1st order polynomials (p1, p2, p3) and two transition functions (t1, t2). - // Column order: p1_int(0), p1_slope(1), p2_int(2), p2_slope(3), p3_int(4), p3_slope(5), - // t1_x0(6), t1_width(7), t2_x0(8), t2_width(9), z0(10), z1(11), z2(12), extra1(13), extra2(14), chi2ndf(15) - double p1 = (t2d.get(0) + t2d.get(1)*time); double p2 = (t2d.get(2) + t2d.get(3)*time); double p3 = (t2d.get(4) + t2d.get(5)*time); @@ -50,16 +78,31 @@ public double T2Dfunction(int sector, int layer, int wire, double time){ return (p1)*(1.0 - t1) + (t1)*(p2)*(1.0 - t2) + (t2)*(p3); } - public final void fetch_AHDCHits(DataEvent event, AlertDCDetector detector, - IndexedTable rawHitCuts, IndexedTable timeOffsets, - IndexedTable timeToDistanceWire, IndexedTable totCorrTable, - IndexedTable adcGains) { - this.rawHitCutsTable = rawHitCuts; - this.timeOffsetsTable = timeOffsets; - this.timeToDistanceWireTable = timeToDistanceWire; - this.timeOverThresholdTable = totCorrTable; - this.adcGainsTable = adcGains; - + /** + * Reads the {@code AHDC::adc} bank, calibrates each raw row, and builds the list of + * reconstructed {@link Hit}s. For each row the method: + *

    + *
  1. applies the per-wire time offset {@code t0} (subtracting event start time in data mode),
  2. + *
  3. in data mode, corrects time-over-threshold and enforces per-wire acceptance cuts + * (time, ToT, ADC, pedestal, and {@code wfType <= 2}) — hits failing the cuts are dropped,
  4. + *
  5. computes the DOCA from the calibrated time via {@link #T2Dfunction} (DOCA forced to 0 + * when {@code time < 0}),
  6. + *
  7. in data mode, applies the per-wire ADC gain correction,
  8. + *
  9. instantiates a {@link Hit}, resolves its wire position via the geometry, and stores the + * calibrated ADC and ToT on it.
  10. + *
+ * The resulting list is stored via {@link #set_AHDCHits(ArrayList)} (empty if the bank is absent). + * + * @param event current event + * @param detector AHDC geometry used to set each hit's wire position + * @param rawHitCutsTable per-wire acceptance cuts (data mode only) + * @param timeOffsetsTable per-wire {@code t0} + * @param timeToDistanceWireTable per-wire T2D coefficients + * @param timeOverThresholdTable per-wire ToT correction factors (data mode only) + * @param adcGainsTable per-wire ADC gain corrections (data mode only) + */ + private void fetch_AHDCHits(DataEvent event, AlertDCDetector detector, IndexedTable rawHitCutsTable, IndexedTable timeOffsetsTable, + IndexedTable timeToDistanceWireTable, IndexedTable timeOverThresholdTable, IndexedTable adcGainsTable) { ArrayList hits = new ArrayList<>(); if (!event.hasBank("AHDC::adc")) { @@ -92,16 +135,6 @@ public final void fetch_AHDCHits(DataEvent event, AlertDCDetector detector, double adcOffset = bankDGTZ.getFloat("ped", i); int wfType = bankDGTZ.getShort("wfType", i); - // Raw hit cuts - double t_min = rawHitCutsTable.getDoubleValue("t_min", sector, number, wire); - double t_max = rawHitCutsTable.getDoubleValue("t_max", sector, number, wire); - double tot_min = rawHitCutsTable.getDoubleValue("tot_min", sector, number, wire); - double tot_max = rawHitCutsTable.getDoubleValue("tot_max", sector, number, wire); - double adc_min = rawHitCutsTable.getDoubleValue("adc_min", sector, number, wire); - double adc_max = rawHitCutsTable.getDoubleValue("adc_max", sector, number, wire); - double ped_min = rawHitCutsTable.getDoubleValue("ped_min", sector, number, wire); - double ped_max = rawHitCutsTable.getDoubleValue("ped_max", sector, number, wire); - // Time calibration double t0 = timeOffsetsTable.getDoubleValue("t0", sector, number, wire); double time = leadingEdgeTime - t0 - startTime; @@ -111,21 +144,30 @@ public final void fetch_AHDCHits(DataEvent event, AlertDCDetector detector, if (!sim) { double totCorr = timeOverThresholdTable.getDoubleValue("totCorr", sector, number, wire); if (totCorr != 0.0) totUsed = timeOverThreshold * totCorr; - } - - // Hit selection (cuts) - boolean passCuts = - (wfType <= 2) && - (adcRaw >= adc_min) && (adcRaw <= adc_max) && - (time >= t_min) && (time <= t_max) && - (timeOverThreshold >= tot_min) && (timeOverThreshold <= tot_max) && - (adcOffset >= ped_min) && (adcOffset <= ped_max); - if (!passCuts && !sim) continue; + // Hit selection (cuts) — only applied on data, bypassed in sim + long hash = rawHitCutsTable.getList().getIndexGenerator().hashCode(sector, number, wire); + double t_min = rawHitCutsTable.getDoubleValueByHash("t_min", hash); + double t_max = rawHitCutsTable.getDoubleValueByHash("t_max", hash); + double tot_min = rawHitCutsTable.getDoubleValueByHash("tot_min", hash); + double tot_max = rawHitCutsTable.getDoubleValueByHash("tot_max", hash); + double adc_min = rawHitCutsTable.getDoubleValueByHash("adc_min", hash); + double adc_max = rawHitCutsTable.getDoubleValueByHash("adc_max", hash); + double ped_min = rawHitCutsTable.getDoubleValueByHash("ped_min", hash); + double ped_max = rawHitCutsTable.getDoubleValueByHash("ped_max", hash); + + boolean passCuts = + (wfType <= 2) && + (adcRaw >= adc_min) && (adcRaw <= adc_max) && + (time >= t_min) && (time <= t_max) && + (timeOverThreshold >= tot_min) && (timeOverThreshold <= tot_max) && + (adcOffset >= ped_min) && (adcOffset <= ped_max); + + if (!passCuts) continue; + } // DOCA from calibrated time - double doca = T2Dfunction(sector, number, wire, time); - if (time < 0) doca = 0.0; + double doca = (time < 0) ? 0.0 : T2Dfunction(sector, number, wire, time, timeToDistanceWireTable); // ADC gain calibration double adcCal = adcRaw; @@ -144,7 +186,15 @@ public final void fetch_AHDCHits(DataEvent event, AlertDCDetector detector, this.set_AHDCHits(hits); } - public final void fetch_TrueAHDCHits(DataEvent event) { + /** + * Reads Monte-Carlo truth information from the {@code MC::True} bank into a list of + * {@link TrueHit}s (particle id and average hit position/energy). Called only when + * the reader is constructed with {@code simulation = true}. If the bank is absent, + * the resulting list is empty. + * + * @param event current event + */ + private void fetch_TrueAHDCHits(DataEvent event) { ArrayList truehits = new ArrayList<>(); @@ -164,18 +214,36 @@ public final void fetch_TrueAHDCHits(DataEvent event) { this.set_TrueAHDCHits(truehits); } + /** + * @return the calibrated AHDC hits produced from the current event; never {@code null} + * (empty if the {@code AHDC::adc} bank is missing) + */ public ArrayList get_AHDCHits() { return _AHDCHits; } + /** + * Replaces the internally stored list of AHDC hits. Primarily used by {@link #fetch_AHDCHits}. + * + * @param hits the list to store + */ public void set_AHDCHits(ArrayList hits) { this._AHDCHits = hits; } + /** + * @return the MC-truth hits for the current event (populated only in simulation mode; + * {@code null} for data events where {@code fetch_TrueAHDCHits} was not called) + */ public ArrayList get_TrueAHDCHits() { return _TrueAHDCHits; } + /** + * Replaces the internally stored list of MC-truth hits. Primarily used by {@link #fetch_TrueAHDCHits}. + * + * @param trueHits the list to store + */ public void set_TrueAHDCHits(ArrayList trueHits) { this._TrueAHDCHits = trueHits; } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/ATOFHit.java b/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/ATOFHit.java index c04a4ad4d4..a1812a237b 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/ATOFHit.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/ATOFHit.java @@ -27,7 +27,7 @@ public class ATOFHit { private boolean isInACluster; private int associatedClusterIndex; int idTDC; - private IndexedTable atofTimeOffsets; + private IndexedTable atofTimeOffsetsTable; public int getSector() { @@ -197,10 +197,10 @@ public final int convertTdcToTime() { if(this.startTime!= null) this.time -= this.startTime; //Time offsets - if (atofTimeOffsets == null) return 0; + if (atofTimeOffsetsTable == null) return 0; int order0 = 0; - double t0 = atofTimeOffsets.getDoubleValue("t0", this.sector, this.layer, this.component, order0); - double tud = atofTimeOffsets.getDoubleValue("upstream_downstream", this.sector, this.layer, this.component, order0); + double t0 = atofTimeOffsetsTable.getDoubleValue("t0", this.sector, this.layer, this.component, order0); + double tud = atofTimeOffsetsTable.getDoubleValue("upstream_downstream", this.sector, this.layer, this.component, order0); //The rest of the constants are not used for now /*double twb = timeOffsets[2]; double xtra1 = timeOffsets[3]; @@ -400,7 +400,7 @@ public double getPhi() { * spatial coordinates. */ public ATOFHit(int sector, int layer, int component, int order, int tdc, int tot, Float startTime, Detector atof, - IndexedTable atofTimeOffsets) { + IndexedTable atofTimeOffsetsTable) { this.sector = sector; this.layer = layer; this.component = component; @@ -408,7 +408,7 @@ public ATOFHit(int sector, int layer, int component, int order, int tdc, int tot this.tdc = tdc; this.tot = tot; this.startTime = startTime; - this.atofTimeOffsets = atofTimeOffsets; + this.atofTimeOffsetsTable = atofTimeOffsetsTable; this.isInACluster = false; this.makeType(); diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/BarHit.java b/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/BarHit.java index b60ecbdc2a..4dd8a94b12 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/BarHit.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/BarHit.java @@ -106,7 +106,7 @@ public final void computeEnergy() { this.setEnergy(Edep_up + Edep_down); } - public BarHit(ATOFHit hit_down, ATOFHit hit_up, IndexedTable atofEffectiveVelocity) { + public BarHit(ATOFHit hit_down, ATOFHit hit_up, IndexedTable atofEffectiveVelocityTable) { boolean hits_match = hit_down.matchBar(hit_up); if (!hits_match) { throw new UnsupportedOperationException("Hits do not match \n"); @@ -122,7 +122,7 @@ public BarHit(ATOFHit hit_down, ATOFHit hit_up, IndexedTable atofEffectiveVeloci this.setY(hit_up.getY()); //CCDB readout for the effective velocity - this.vEff = atofEffectiveVelocity.getDoubleValue("veff", this.getSector(), this.getLayer(), this.getComponent()); + this.vEff = atofEffectiveVelocityTable.getDoubleValue("veff", this.getSector(), this.getLayer(), this.getComponent()); this.computeZ(); this.computeTime(); this.computeEnergy(); diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/HitFinder.java b/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/HitFinder.java index 3970f11139..918cefa864 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/HitFinder.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/HitFinder.java @@ -65,8 +65,8 @@ public void setWedgeHits(ArrayList wedge_hits) { * the sector/layer/component to x/y/z. */ public void findHits(DataEvent event, Detector atof, Float startTime, - IndexedTable atofTimeOffsets, - IndexedTable atofEffectiveVelocity) { + IndexedTable atofTimeOffsetsTable, + IndexedTable atofEffectiveVelocityTable) { //For each event a list of bar hits and a list of wedge hits are filled this.barHits.clear(); this.wedgeHits.clear(); @@ -92,7 +92,7 @@ public void findHits(DataEvent event, Detector atof, Float startTime, int tot = bank.getInt("ToT", i); //Building a Hit - ATOFHit hit = new ATOFHit(sector, layer, component, order, tdc, tot, startTime, atof, atofTimeOffsets); + ATOFHit hit = new ATOFHit(sector, layer, component, order, tdc, tot, startTime, atof, atofTimeOffsetsTable); if (hit.getEnergy() < 0.01) { continue; //energy threshold } @@ -127,7 +127,7 @@ public void findHits(DataEvent event, Detector atof, Float startTime, //Matching the hits: if same module and different order, they make up a bar hit if (this_hit_up.matchBar(this_hit_down)) { //Bar hits are matched to ahdc tracks and listed - BarHit this_bar_hit = new BarHit(this_hit_down, this_hit_up, atofEffectiveVelocity); + BarHit this_bar_hit = new BarHit(this_hit_down, this_hit_up, atofEffectiveVelocityTable); //Only add bar hits for which the time sum is in time if(!this_bar_hit.isInTime()) continue; this.barHits.add(this_bar_hit); diff --git a/reconstruction/alert/src/main/java/org/jlab/service/ahdc/AHDCEngine.java b/reconstruction/alert/src/main/java/org/jlab/service/ahdc/AHDCEngine.java index 8d4252fd28..66b965825c 100644 --- a/reconstruction/alert/src/main/java/org/jlab/service/ahdc/AHDCEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/service/ahdc/AHDCEngine.java @@ -1,7 +1,6 @@ package org.jlab.service.ahdc; import org.jlab.clas.reco.ReconstructionEngine; -import org.jlab.clas.tracking.kalmanfilter.Material; import org.jlab.io.base.DataBank; import org.jlab.io.base.DataEvent; import org.jlab.io.hipo.HipoDataSource; @@ -17,7 +16,6 @@ import org.jlab.rec.ahdc.Hit.Hit; import org.jlab.rec.ahdc.Hit.HitReader; import org.jlab.rec.ahdc.HoughTransform.HoughTransform; -import org.jlab.rec.ahdc.KalmanFilter.MaterialMap; import org.jlab.rec.ahdc.PreCluster.PreCluster; import org.jlab.rec.ahdc.PreCluster.PreClusterFinder; import org.jlab.rec.ahdc.Track.Track; @@ -43,10 +41,7 @@ public class AHDCEngine extends ReconstructionEngine { static final Logger LOGGER = Logger.getLogger(AHDCEngine.class.getName()); - private boolean simulation; - - /// Material Map used by Kalman filter - private HashMap materialMap; + private boolean simulation = false; private ModelTrackFinding modelTrackFinding; private ModeTrackFinding modeTrackFinding = ModeTrackFinding.AI_Track_Finding; @@ -57,11 +52,11 @@ public class AHDCEngine extends ReconstructionEngine { private ModeAHDC ahdcExtractor = new ModeAHDC(); // AHDC calibration tables (instance-level, refreshed on run change) - private IndexedTable ahdcTimeOffsets; - private IndexedTable ahdcTimeToDistanceWire; - private IndexedTable ahdcRawHitCuts; - private IndexedTable ahdcAdcGains; - private IndexedTable ahdcTimeOverThreshold; + private IndexedTable ahdcTimeOffsetsTable; + private IndexedTable ahdcTimeToDistanceWireTable; + private IndexedTable ahdcRawHitCutsTable; + private IndexedTable ahdcAdcGainsTable; + private IndexedTable ahdcTimeOverThresholdTable; int Run = -1; @@ -76,9 +71,6 @@ public boolean init(ModeTrackFinding m) { public boolean init() { factory = (new AlertDCFactory()).createDetectorCLAS(new DatabaseConstantProvider()); - simulation = false; - - if (materialMap == null) materialMap = MaterialMap.generateMaterials(); String modeConfig = this.getEngineConfigString("Mode"); if (modeConfig != null) modeTrackFinding = ModeTrackFinding.valueOf(modeConfig); @@ -92,10 +84,8 @@ public boolean init() { tableMap.put("/calibration/alert/ahdc/time_over_threshold", 3); requireConstants(tableMap); - - this.getConstantsManager().setVariation("default"); - - this.registerOutputBank("AHDC::hits","AHDC::preclusters","AHDC::clusters","AHDC::track","AHDC::mc","AHDC::ai:prediction"); + this.getConstantsManager().setVariation("default"); + this.registerOutputBank("AHDC::hits","AHDC::preclusters","AHDC::clusters","AHDC::track","AHDC::mc","AHDC::ai:prediction","AHDC::interclusters","AHDC::docaclusters"); return true; } @@ -115,11 +105,11 @@ public boolean processDataEvent(DataEvent event) { return false; } if(Run != newRun) { - ahdcTimeOffsets = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/time_offsets"); - ahdcTimeToDistanceWire = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/time_to_distance_wire"); - ahdcRawHitCuts = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/raw_hit_cuts"); - ahdcAdcGains = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/gains"); - ahdcTimeOverThreshold = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/time_over_threshold"); + ahdcTimeOffsetsTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/time_offsets"); + ahdcTimeToDistanceWireTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/time_to_distance_wire"); + ahdcRawHitCutsTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/raw_hit_cuts"); + ahdcAdcGainsTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/gains"); + ahdcTimeOverThresholdTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/time_over_threshold"); Run = newRun; } } @@ -127,8 +117,8 @@ public boolean processDataEvent(DataEvent event) { if (event.hasBank("AHDC::adc")) { // I) Read raw hits HitReader hitReader = new HitReader(event, factory, simulation, - ahdcRawHitCuts, ahdcTimeOffsets, ahdcTimeToDistanceWire, - ahdcTimeOverThreshold, ahdcAdcGains); + ahdcRawHitCutsTable, ahdcTimeOffsetsTable, ahdcTimeToDistanceWireTable, + ahdcTimeOverThresholdTable, ahdcAdcGainsTable); ArrayList AHDC_Hits = hitReader.get_AHDCHits(); // II) Create PreClusters @@ -147,14 +137,15 @@ public boolean processDataEvent(DataEvent event) { // Otherwise, the conventional methods (Hough Transform or distance) use clusters. // Safety check: if too many hits, rely on conventional track finding + ModeTrackFinding effectiveMode = modeTrackFinding; if (AHDC_Hits.size() > MAX_HITS_FOR_AI) { LOGGER.info("Too many AHDC_Hits in AHDC::adc, rely on conventional track finding for this event"); - modeTrackFinding = ModeTrackFinding.CV_Distance; + effectiveMode = ModeTrackFinding.CV_Distance; } ArrayList AHDC_Tracks = new ArrayList<>(); - if (modeTrackFinding == ModeTrackFinding.AI_Track_Finding) { + if (effectiveMode == ModeTrackFinding.AI_Track_Finding) { // 1) Create inter-clusters from pre-clusters PreClustering preClustering = new PreClustering(); ArrayList inter_clusters = preClustering.mergePreclusters(AHDC_PreClusters); @@ -178,12 +169,26 @@ public boolean processDataEvent(DataEvent event) { throw new RuntimeException(e); } - // 4) Use the output for the AI model to select the good tracks among the candidates + // 4) Select good tracks via greedy non-overlap: sort predictions by score + // descending, accept the highest-scoring prediction, mark its PreClusters + // as claimed, and skip any later prediction that reuses a claimed PreCluster. + // The AI candidate generator routinely emits overlapping predictions (each + // PreCluster can feed several combinations), and because set_trackId mutates + // the shared Hit references in place, a naive "accept all above threshold" + // pass would let later tracks silently steal earlier tracks' hits and leave + // them orphaned in AHDC::hits. Greedy selection enforces one-hit-one-track. + predictions.sort((a, b) -> Float.compare(b.getPrediction(), a.getPrediction())); + Set claimedPreclusters = new HashSet<>(); for (TrackPrediction t : predictions) { - if (t.getPrediction() > TRACK_FINDING_AI_THRESHOLD) AHDC_Tracks.add(new Track(t.getClusters())); + if (t.getPrediction() <= TRACK_FINDING_AI_THRESHOLD) continue; + boolean overlaps = false; + for (PreCluster pc : t.getPreclusters()) { + if (claimedPreclusters.contains(pc)) { overlaps = true; break; } + } + if (overlaps) continue; + claimedPreclusters.addAll(t.getPreclusters()); + AHDC_Tracks.add(new Track(t.getClusters())); } - // The assignment of Track ID to all objects is done in the Kalman filter step below - // I don't know if it is a good idea. } else { // Conventional Track Finding: Hough Transform or Distance: use cluster informations to find tracks @@ -193,12 +198,12 @@ public boolean processDataEvent(DataEvent event) { ArrayList AHDC_Clusters = clusterfinder.get_AHDCClusters(); // 2) Find tracks using the selected conventional method - if (modeTrackFinding == ModeTrackFinding.CV_Distance) { + if (effectiveMode == ModeTrackFinding.CV_Distance) { Distance distance = new Distance(); distance.find_track(AHDC_Clusters); AHDC_Tracks = distance.get_AHDCTracks(); } - else if (modeTrackFinding == ModeTrackFinding.CV_Hough) { + else if (effectiveMode == ModeTrackFinding.CV_Hough) { HoughTransform houghtransform = new HoughTransform(); houghtransform.find_tracks(AHDC_Clusters); AHDC_Tracks = houghtransform.get_AHDCTracks(); diff --git a/reconstruction/alert/src/main/java/org/jlab/service/alert/ALERTEngine.java b/reconstruction/alert/src/main/java/org/jlab/service/alert/ALERTEngine.java index 3b6444e46e..a899e20c8a 100644 --- a/reconstruction/alert/src/main/java/org/jlab/service/alert/ALERTEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/service/alert/ALERTEngine.java @@ -76,7 +76,7 @@ public class ALERTEngine extends ReconstructionEngine { private ModelPrePID modelPrePID; // AHDC calibration table (refreshed on run change) - private IndexedTable ahdcAdcGains; + private IndexedTable ahdcAdcGainsTable; public void setB(double B) { this.b = B; @@ -152,7 +152,7 @@ public boolean processDataEvent(DataEvent event) { if (run.get() == 0 || (run.get() != 0 && run.get() != newRun)) { run.set(newRun); - ahdcAdcGains = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/gains"); + ahdcAdcGainsTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/gains"); } //Do we need to read the event vx,vy,vz? @@ -359,20 +359,26 @@ public boolean processDataEvent(DataEvent event) { AHDC_hits.add(hit); } } - if (AHDC_hits.isEmpty()) continue; // It can happen that a track has no associated hit, in this case we skip it for the Kalman Filter - AHDC_tracks.add(new Track(AHDC_hits)); // Initialise the position and the momentum using the information of the AHDC::track // position : mm // momentum : MeV - double x = trackBank.getFloat("x", row); - double y = trackBank.getFloat("y", row); - double z = trackBank.getFloat("z", row); - double px = trackBank.getFloat("px", row); - double py = trackBank.getFloat("py", row); - double pz = trackBank.getFloat("pz", row); - double[] vec = {x, y, z, px, py, pz}; - AHDC_tracks.get(row).setPositionAndMomentumVec(vec); - AHDC_tracks.get(row).set_trackId(trackid); + // Invariant: AHDC_hits is non-empty. AHDCEngine's AI_Track_Finding path uses greedy + // non-overlap selection so each PreCluster (and thus each Hit) belongs to at most one + // surviving track, so the set_trackId stamping is unambiguous and every AHDC::track + // row has matching AHDC::hits rows. If this invariant ever flips, the get(0) inside + // Track(ArrayList) fails loudly here, which is the right signal. + Track newTrack = new Track(AHDC_hits); + double[] vec = { + trackBank.getFloat("x", row), + trackBank.getFloat("y", row), + trackBank.getFloat("z", row), + trackBank.getFloat("px", row), + trackBank.getFloat("py", row), + trackBank.getFloat("pz", row) + }; + newTrack.setPositionAndMomentumVec(vec); + newTrack.set_trackId(trackid); + AHDC_tracks.add(newTrack); } // intialise the Kalman Filter double magfieldfactor = runBank.getFloat("solenoid", 0); diff --git a/reconstruction/alert/src/main/java/org/jlab/service/atof/ATOFEngine.java b/reconstruction/alert/src/main/java/org/jlab/service/atof/ATOFEngine.java index 7e4974ef3a..ad15498413 100644 --- a/reconstruction/alert/src/main/java/org/jlab/service/atof/ATOFEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/service/atof/ATOFEngine.java @@ -55,10 +55,10 @@ public Detector getATOF() { int Run = -1; // ATOF calibration tables (instance-level, refreshed on run change) - private IndexedTable atofEffectiveVelocity; - private IndexedTable atofTimeWalk; - private IndexedTable atofAttenuationLength; - private IndexedTable atofTimeOffsets; + private IndexedTable atofEffectiveVelocityTable; + private IndexedTable atofTimeWalkTable; + private IndexedTable atofAttenuationLengthTable; + private IndexedTable atofTimeOffsetsTable; @Override public boolean processDataEvent(DataEvent event) { @@ -87,10 +87,10 @@ public boolean processDataEvent(DataEvent event) { } int newRun = runNo; if(Run!=newRun) { - atofEffectiveVelocity = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/effective_velocity"); - atofTimeWalk = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/time_walk"); - atofAttenuationLength = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/attenuation"); - atofTimeOffsets = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/time_offsets"); + atofEffectiveVelocityTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/effective_velocity"); + atofTimeWalkTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/time_walk"); + atofAttenuationLengthTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/attenuation"); + atofTimeOffsetsTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/time_offsets"); Run = newRun; } @@ -111,7 +111,7 @@ public boolean processDataEvent(DataEvent event) { //Hit finder init HitFinder hitfinder = new HitFinder(); - hitfinder.findHits(event, ATOF, startTime, atofTimeOffsets, atofEffectiveVelocity); + hitfinder.findHits(event, ATOF, startTime, atofTimeOffsetsTable, atofEffectiveVelocityTable); ArrayList WedgeHits = hitfinder.getWedgeHits(); ArrayList BarHits = hitfinder.getBarHits(); //Exit if hit lists are empty From 73de29b5d45b68f0f276f897186d665d02617dd1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Apr 2026 16:43:36 +0000 Subject: [PATCH 02/25] ci(deps): bump softprops/action-gh-release from 2 to 2.6.1 (#1209) Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2 to 2.6.1. - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/v2...v3) --- updated-dependencies: - dependency-name: softprops/action-gh-release dependency-version: 2.6.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aac21b2ead..ec4bad9bf6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -380,7 +380,7 @@ jobs: mv coatjava{,-${{ env.TAG_NAME }}} tar czf coatjava-${{ env.TAG_NAME }}{.tar.gz,} - name: release - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@v3 with: files: coatjava-${{ env.TAG_NAME }}.tar.gz - name: open issue if failed From efc71b12f090277f9456be5d2fb7c594b65c9921 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Apr 2026 13:53:34 -0400 Subject: [PATCH 03/25] ci(deps): bump actions/deploy-pages from 4 to 5 (#1208) Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 4 to 5. - [Release notes](https://github.com/actions/deploy-pages/releases) - [Commits](https://github.com/actions/deploy-pages/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/deploy-pages dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ec4bad9bf6..43849d9c78 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -352,7 +352,7 @@ jobs: steps: - name: deployment id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v5 # finalize ############################################################################# From c37ef347f388333fce5f29daa6daf7eb9db0de68 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 23 Apr 2026 19:12:30 -0400 Subject: [PATCH 04/25] add option to only set $PATH (#1219) --- libexec/env.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libexec/env.sh b/libexec/env.sh index 8497746346..543a1f81bd 100644 --- a/libexec/env.sh +++ b/libexec/env.sh @@ -2,6 +2,12 @@ export CLAS12DIR=$(cd $(dirname ${BASH_SOURCE[0]:-$0})/.. && pwd -P) +export PATH=$CLAS12DIR/bin:$PATH + +if [ "${1-}" = '--shell' ]; then + return +fi + # Set default field maps (but do not override user's env): if [ -z "${COAT_MAGFIELD_TORUSMAP-}" ]; then export COAT_MAGFIELD_TORUSMAP=Symm_torus_r2501_phi16_z251_24Apr2018.dat From 93422b842355177d118b63651e24e4f47f1e2947 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 24 Apr 2026 16:18:09 -0400 Subject: [PATCH 05/25] feat: decouple macos/linux build jobs to reduce CI latency (#1222) --- .github/workflows/ci.yml | 76 +++++++++++++++++++++++++++++++++++----- 1 file changed, 68 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 43849d9c78..3c69cfc8c9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,14 +61,46 @@ jobs: # build ############################################################################# + build_macos: + strategy: + fail-fast: true + runs-on: macos-latest + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.java_distribution }} + cache: maven + - name: setup cvmfs + uses: cvmfs-contrib/github-action-cvmfs@v5 + with: + cvmfs_repositories: 'oasis.opensciencegrid.org' + - name: cvmfs + run: ls /cvmfs/oasis.opensciencegrid.org/jlab/hallb/clas12/sw/noarch/data/ccdb/ccdb_latest.sqlite + - name: bump version to tag if tag trigger + if: ${{ github.ref_type == 'tag' }} + run: libexec/version-bump.sh ${{ github.ref_name }} + - name: build + run: | + ./build-coatjava.sh --lfs --no-progress -T${{ env.nthreads }} + ./bin/install-clara -b -c ./coatjava ./clara + - name: tar # tarball to preserve permissions + run: | + tar czvf coatjava.tar.gz coatjava + tar czvf clara.tar.gz clara + - uses: actions/upload-artifact@v7 + with: + name: build_macos + retention-days: 1 + path: | + coatjava.tar.gz + clara.tar.gz + build: strategy: fail-fast: true - matrix: - runner: - - ubuntu-latest - - macos-latest - runs-on: ${{ matrix.runner }} + runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-java@v5 @@ -95,7 +127,7 @@ jobs: tar czvf clara.tar.gz clara - uses: actions/upload-artifact@v7 with: - name: build_${{ matrix.runner }} + name: build_ubuntu-latest retention-days: 1 path: | coatjava.tar.gz @@ -251,8 +283,6 @@ jobs: - { id: eb-epc, cmd: ./run-eb-tests.sh -100 electronprotonC } - { id: eb-enc, cmd: ./run-eb-tests.sh -100 electronneutronC } - { id: eb-eftpi, cmd: ./run-eb-tests.sh -100 electronFTpion } - # run one macos test - - { runner: macos-latest, id: eb-ep, cmd: ./run-eb-tests.sh -100 electronproton } runs-on: ${{ matrix.runner }} steps: - uses: actions/checkout@v6 @@ -280,6 +310,36 @@ jobs: echo "COMMAND: ${{ matrix.cmd }}" ${{ matrix.cmd }} + test_coatjava_macos: + needs: [ build_macos ] + strategy: + fail-fast: true + runs-on: macos-latest + steps: + - uses: actions/checkout@v6 + - name: Set up JDK + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.java_distribution }} + cache: maven + - uses: actions/download-artifact@v8 + with: + name: build_macos + - uses: cvmfs-contrib/github-action-cvmfs@v5 + with: + cvmfs_repositories: 'oasis.opensciencegrid.org' + - name: untar build + run: | + tar xzvf coatjava.tar.gz + tar xzvf clara.tar.gz + - name: run test + run: | + git lfs install + git submodule update --init validation/advanced-tests/data + cd validation/advanced-tests + ./run-eb-tests.sh -100 electronproton + test_run-groovy: needs: [ build ] runs-on: ubuntu-latest From 4c4c97bf1596f650e1d02ecc9389160225c66fed Mon Sep 17 00:00:00 2001 From: Uditha Weerasinghe <92590276+skuditha@users.noreply.github.com> Date: Fri, 24 Apr 2026 20:50:51 -0400 Subject: [PATCH 06/25] fix: indexing issue between DECAYS::Particle and REC::VertDoca bank (#1212) Co-authored-by: Uditha Weerasinghe --- .../src/main/java/org/jlab/clas/decay/analysis/Decay.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common-tools/clas-decay-tools/src/main/java/org/jlab/clas/decay/analysis/Decay.java b/common-tools/clas-decay-tools/src/main/java/org/jlab/clas/decay/analysis/Decay.java index e1c08685b6..36c2c08ce3 100644 --- a/common-tools/clas-decay-tools/src/main/java/org/jlab/clas/decay/analysis/Decay.java +++ b/common-tools/clas-decay-tools/src/main/java/org/jlab/clas/decay/analysis/Decay.java @@ -584,8 +584,8 @@ private boolean checkVertDocaBank(Particle p1, Particle p2) { if(getVertBank()!=null) { int nrows2 = getVertBank().rows(); for(int loop2 = 0; loop2 < nrows2; loop2++){ - if(p1.getIdx()-1==(int) getVertBank().getShort("index1", loop2) - && p2.getIdx()-1==(int) getVertBank().getShort("index2", loop2)) { + if(p1.getIdx()==(int) getVertBank().getShort("index1", loop2) + && p2.getIdx()==(int) getVertBank().getShort("index2", loop2)) { p1.vIndex=loop2; p2.vIndex=loop2; @@ -620,8 +620,8 @@ private boolean checkVertDocaBank(Particle p1, Particle p2) { pass=true; return pass; } - if(p2.getIdx()-1==(int) getVertBank().getShort("index1", loop2) - && p1.getIdx()-1==(int) getVertBank().getShort("index2", loop2)) { + if(p2.getIdx()==(int) getVertBank().getShort("index1", loop2) + && p1.getIdx()==(int) getVertBank().getShort("index2", loop2)) { p1.vIndex=loop2; p2.vIndex=loop2; //r = (double) getVertBank().getFloat("r", loop2); From 822fbd3102f5177706a73412cfcf9afa04c30fd6 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Sun, 26 Apr 2026 16:46:28 -0400 Subject: [PATCH 07/25] cleanup: remove unnecessary CLARA reader class (#1223) * remove unnecessary reader class * cleanup --- .../java/org/jlab/io/clara/Clas12Reader.java | 91 ------------------- .../org/jlab/io/clara/Clas12Reader.yaml | 11 --- etc/services/rgd-clarode.yml | 4 +- 3 files changed, 2 insertions(+), 104 deletions(-) delete mode 100644 common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java delete mode 100644 common-tools/clara-io/src/main/resources/org/jlab/io/clara/Clas12Reader.yaml diff --git a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java deleted file mode 100644 index cd1f39dc95..0000000000 --- a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java +++ /dev/null @@ -1,91 +0,0 @@ -package org.jlab.io.clara; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.file.Path; -import org.jlab.clara.engine.EngineDataType; -import org.jlab.clara.std.services.AbstractEventReaderService; -import org.jlab.clara.std.services.EventReaderException; -import org.jlab.coda.jevio.EvioException; -import org.jlab.detector.decode.CLASDecoder4; -import org.jlab.io.evio.EvioDataEvent; -import org.jlab.io.evio.EvioSource; -import org.jlab.jnp.hipo4.data.Event; -import org.jlab.jnp.hipo4.io.HipoReader; -import org.json.JSONObject; - -/** - * Emulate DecoderReader for EVIO files, or HipoToHipoReader for HIPO files. - * - * @author baltzell - */ -public class Clas12Reader extends AbstractEventReaderService { - - boolean evio; - CLASDecoder4 decoder; - private long maxEvents; - private Double torus; - private Double solenoid; - - @Override - protected Object createReader(Path path, JSONObject opts) throws EventReaderException { - if (path.toString().endsWith(".hipo")) { - evio = false; - HipoReader r = new HipoReader(); - r.open(path.toString()); - return r; - } - else { - evio = true; - EvioSource r = new EvioSource(); - r.open(path.toString()); - maxEvents = r.getEventCount(); - decoder = new CLASDecoder4(); - torus = opts.has("torus") ? opts.getDouble("torus") : null; - solenoid = opts.has("solenoid") ? opts.getDouble("solenoid") : null; - if (opts.has("variation")) decoder.setVariation(opts.getString("variation")); - if (opts.has("timestamp")) decoder.setTimestamp(opts.getString("timestamp")); - return r; - } - } - - @Override - protected void closeReader() { - if (evio) ((EvioSource)reader).close(); - else ((HipoReader)reader).close(); - } - - @Override - protected int readEventCount() throws EventReaderException { - if (evio) return ((EvioSource)reader).getEventCount(); - else return ((HipoReader)reader).getEventCount(); - } - - @Override - protected Object readEvent(int eventNumber) throws EventReaderException { - try { - if (evio) { - if (eventNumber++ >= maxEvents) return null; - ByteBuffer b = ((EvioSource)reader).getEventBuffer(eventNumber, true); - EvioDataEvent e = new EvioDataEvent(b.array(), readByteOrder()); - return decoder.getDecodedEvent(e, -1, eventNumber, torus, solenoid); - } - else { - return ((HipoReader)reader).getEvent(new Event(),eventNumber); - } - } catch (EvioException e) { - throw new EventReaderException(e); - } - } - - @Override - public ByteOrder readByteOrder() throws EventReaderException { - return ByteOrder.LITTLE_ENDIAN; - } - - @Override - protected EngineDataType getDataType() { - return Clas12Types.HIPO; - } - -} diff --git a/common-tools/clara-io/src/main/resources/org/jlab/io/clara/Clas12Reader.yaml b/common-tools/clara-io/src/main/resources/org/jlab/io/clara/Clas12Reader.yaml deleted file mode 100644 index 30c6e00495..0000000000 --- a/common-tools/clara-io/src/main/resources/org/jlab/io/clara/Clas12Reader.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -name: Clas12Reader -engine: org.jlab.io.clara.Clas12Reader -type: java - -author: Nathan Baltzell -email: baltzell@jlab.org - -version: 0.1 -description: - Reads EVIO or HIPO events from a file, converting to HIPO via "decoding" if EVIO. diff --git a/etc/services/rgd-clarode.yml b/etc/services/rgd-clarode.yml index 0fef0e2016..b3612af29d 100644 --- a/etc/services/rgd-clarode.yml +++ b/etc/services/rgd-clarode.yml @@ -19,8 +19,8 @@ configuration: outputBankPrefix: "HB" io-services: reader: - class: org.jlab.io.clara.Clas12Reader - name: Clas12Reader + class: org.jlab.io.clara.DecoderReader + name: DecoderReader writer: class: org.jlab.io.clara.DecoderWriter name: DecoderWriter From f826f66d54367e543f8709c39b6e9282bc09b3b0 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Sun, 26 Apr 2026 16:53:37 -0400 Subject: [PATCH 08/25] remove example engine (#1224) --- .../clas/service/PulseExtractorEngine.java | 53 ------------------- 1 file changed, 53 deletions(-) delete mode 100644 common-tools/clas-reco/src/main/java/org/jlab/clas/service/PulseExtractorEngine.java diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/service/PulseExtractorEngine.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/service/PulseExtractorEngine.java deleted file mode 100644 index 3f2dc5254e..0000000000 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/service/PulseExtractorEngine.java +++ /dev/null @@ -1,53 +0,0 @@ -package org.jlab.clas.service; - -import org.jlab.clas.reco.ReconstructionEngine; -import org.jlab.detector.pulse.Mode3; -import org.jlab.detector.pulse.Mode7; -import org.jlab.detector.pulse.ModeAHDC; -import org.jlab.io.base.DataEvent; - -/** - * An example of using a {@link org.jlab.detector.pulse.HipoExtractor} from a - * {@link org.jlab.clas.reco.ReconstructionEngine}. - * - * @author baltzell - */ -public class PulseExtractorEngine extends ReconstructionEngine { - - Mode3 mode3 = new Mode3(); - Mode3 mode7 = new Mode7(); - ModeAHDC mode_ahdc = new ModeAHDC(); - - public PulseExtractorEngine() { - super("PULSE", "baltzell", "0.0"); - } - - @Override - public boolean init() { - // If using a CCDB table, must register it here: - //requireConstants("/daq/config/ahdc"); - return true; - } - - @Override - public boolean processDataEvent(DataEvent event) { - - // No CCDB table, hardcoded parameters in the extractor: - //mode3.update(6, null, event, "BMT::wf", "BMT::adc"); - //mode7.update(80, null, event, "AHDC::wf", "AHDC::adc"); - mode_ahdc.update(30, null, event, "AHDC::wf", "AHDC::adc"); - - /* - // Requiring a CCDB table: - DataBank runConfig = event.getBank("RUN::config"); - if (runConfig.rows()>0) { - IndexedTable it = getConstantsManager().getConstants( - runConfig.getInt("run", 0), "/daq/config/ahdc"); - basic.update(136, it, event, "AHDC::wf", "AHDC::adc"); - } - */ - - return true; - } - -} From b3c4fc24ab36aa32a87e45ff3c84ec63d320240a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 09:24:13 -0400 Subject: [PATCH 09/25] ci(deps): bump actions/upload-pages-artifact from 4 to 5 (#1227) --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3c69cfc8c9..453bd9dd84 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -394,7 +394,7 @@ jobs: libexec/build-javadocs.sh mv target/reports/apidocs pages/javadoc ### upload artifacts - - uses: actions/upload-pages-artifact@v4 + - uses: actions/upload-pages-artifact@v5 with: retention-days: 7 path: pages/ From 8fac63d3adb6db8bded6678ff07f52846a0bca2e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 13:33:11 +0000 Subject: [PATCH 10/25] ci(deps): bump actions/github-script from 8 to 9 (#1226) --- .github/workflows/submodule.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/submodule.yml b/.github/workflows/submodule.yml index a647fa395d..0141491d6a 100644 --- a/.github/workflows/submodule.yml +++ b/.github/workflows/submodule.yml @@ -29,7 +29,7 @@ jobs: cat changes.txt >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT - name: comment - uses: actions/github-script@v8 + uses: actions/github-script@v9 with: script: | github.rest.issues.createComment({ From 957842592404045ab54a0baa66bedce7cd8e54cc Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 27 Apr 2026 10:57:15 -0400 Subject: [PATCH 11/25] fix run-clara for macos (#1221) * higher ports on macos, cleanup process dpe process * remove ineffective pid trap Removed process ID handling and cleanup trap. --- bin/run-clara | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/run-clara b/bin/run-clara index 798ffd6544..05c0b6b148 100755 --- a/bin/run-clara +++ b/bin/run-clara @@ -127,7 +127,7 @@ function get_host_ip() { } function get_dpe_port() { local ports - ports=$(seq 7000 20 8000) + ports=$(seq 49152 20 65535) command -v shuf >/dev/null 2>&1 && ports=$(echo "$ports" | shuf) for port in $ports do @@ -153,7 +153,7 @@ then --max-sockets 5120 --report 5 \ 2>&1 | tee $CLARA_USER_DATA/log/dpe.log & set +v - #echo "Sleeping 7 ......." && sleep 7 + sleep 1 unset JAVA_OPTS set -v $CLARA_HOME/bin/clara-orchestrator \ From 298028360a8b05f761d53a4d9ed67d60a38e4e6b Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 30 Apr 2026 14:18:33 -0400 Subject: [PATCH 12/25] fix: disable gnuplot fit logging and log file (#1232) * disable gnuplot fit logfile * also silence stderr/stdout --- libexec/scaling.gpl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libexec/scaling.gpl b/libexec/scaling.gpl index 1589761971..3c5598d0d4 100644 --- a/libexec/scaling.gpl +++ b/libexec/scaling.gpl @@ -67,6 +67,8 @@ set key nobox inside top left f(x) = m*x m = 2 +set fit quiet +set fit nolog fit [0:24] f(x) datafile using 1:(1/$2*1e3) via m rate = sprintf('%.1f Hz/CPU',m) plot datafile using 1:(1/$2*1e3) pt 7 notitle, f(x) title rate @@ -83,7 +85,6 @@ plot datafile \ '' using 1:($5) pt 9 with points title 'Reader' ,\ '' using 1:((column($#-1))) pt 11 with points title 'Writer' ,\ -#set logscale y set size 0.6,1.0 set origin 0.4,0.0 set key outside right vertical From 9a7978de80c590209afcf70c39d15e9f50bcf300 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 30 Apr 2026 14:27:10 -0400 Subject: [PATCH 13/25] just run gnuplot automatically if available (#1233) --- libexec/scaling | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/libexec/scaling b/libexec/scaling index b5fb0c9412..735b74a1e8 100755 --- a/libexec/scaling +++ b/libexec/scaling @@ -123,6 +123,22 @@ def save(benchmarks): for row in table(benchmarks): f.write(' '.join([str(x) for x in row])+'\n') +def plot(): + import os,shutil,subprocess + if shutil.which('gnuplot'): + g = os.path.dirname(os.path.abspath(__file__))+'/scaling.gpl' + r = subprocess.run(['gnuplot',g], capture_output=True, text=True) + if r.returncode == 0: + with open('scaling.svg','w') as f: + f.write(r.stdout) + print('Info: created scaling.svg from scaling.txt and scaling.gpl!') + else: + print(r.stdout) + print(r.stderr) + print('Error: gnuplot failed!') + else: + print('Warning: gnuplot is not in $PATH.') + if __name__ == '__main__': cfg = cli() import os @@ -133,4 +149,5 @@ if __name__ == '__main__': benchmarks.append([threads, benchmark(cfg, threads, log)]) show(benchmarks) save(benchmarks) + plot() From 1398e1e6903a559e5f553be01d700c717a73ce26 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 30 Apr 2026 14:37:30 -0400 Subject: [PATCH 14/25] use events instead of events/thread (#1231) --- libexec/scaling | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libexec/scaling b/libexec/scaling index 735b74a1e8..a5f73beec8 100755 --- a/libexec/scaling +++ b/libexec/scaling @@ -6,7 +6,7 @@ def cli(): cli.add_argument('-y','--yaml', metavar='YAML',help='path to YAML file',required=True) cli.add_argument('-c','--clara', metavar='DIR',help='CLARA_HOME path (default=$CLARA_HOME)',default=os.getenv('CLARA_HOME',None)) cli.add_argument('-t','--threads',metavar='#',help='threads (default=4,8)',default='4,8') - cli.add_argument('-e','--events', metavar='#',help='events per thread (default=555)',default=555,type=int) + cli.add_argument('-e','--events', metavar='#',help='events per threads (default=2555)',default=2555,type=int) cli.add_argument('-N','--numa', metavar='#',help='NUMA socket (default=None, choices=[0,1])',default=None,type=int,choices=[0,1]) cli.add_argument('datafile', help='input EVIO/HIPO data file') cfg = cli.parse_args() @@ -58,7 +58,7 @@ def benchmark(cfg, threads, log): # add the run-clara command: cmd.extend([cfg.run_clara, '-c',cfg.clara, - '-n',str(cfg.events*int(threads)), + '-n',str(cfg.events), '-t',str(threads), '-l', '-y',cfg.yaml, From 3fafda781e779b6ed44817feb7788ed9f890c725 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 4 May 2026 09:57:51 -0400 Subject: [PATCH 15/25] reduce cosines (#1237) --- .../org/jlab/rec/dc/timetodistance/TableLoader.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TableLoader.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TableLoader.java index 1ff5c51e32..947ec8f809 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TableLoader.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TableLoader.java @@ -229,18 +229,15 @@ private static int getAlphaBin(double Alpha) { } private static synchronized void FillAlpha() { + final double cos30 = Math.cos(Math.toRadians(30.)); for(int icosalpha =0; icosalpha Date: Mon, 4 May 2026 12:23:09 -0400 Subject: [PATCH 16/25] back to events-per-thread and better default threads for scaling script (#1241) --- libexec/scaling | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libexec/scaling b/libexec/scaling index a5f73beec8..30064ada1e 100755 --- a/libexec/scaling +++ b/libexec/scaling @@ -5,8 +5,8 @@ def cli(): cli = argparse.ArgumentParser(description='CLARA scaling test') cli.add_argument('-y','--yaml', metavar='YAML',help='path to YAML file',required=True) cli.add_argument('-c','--clara', metavar='DIR',help='CLARA_HOME path (default=$CLARA_HOME)',default=os.getenv('CLARA_HOME',None)) - cli.add_argument('-t','--threads',metavar='#',help='threads (default=4,8)',default='4,8') - cli.add_argument('-e','--events', metavar='#',help='events per threads (default=2555)',default=2555,type=int) + cli.add_argument('-t','--threads',metavar='#',help='threads (default=8,16,24,34,44)',default='8,16,24,34,44') + cli.add_argument('-e','--events', metavar='#',help='events per thread (default=555)',default=555,type=int) cli.add_argument('-N','--numa', metavar='#',help='NUMA socket (default=None, choices=[0,1])',default=None,type=int,choices=[0,1]) cli.add_argument('datafile', help='input EVIO/HIPO data file') cfg = cli.parse_args() @@ -58,7 +58,7 @@ def benchmark(cfg, threads, log): # add the run-clara command: cmd.extend([cfg.run_clara, '-c',cfg.clara, - '-n',str(cfg.events), + '-n',str(cfg.events*int(threads)), '-t',str(threads), '-l', '-y',cfg.yaml, From c143e4e8d5f43434ed43b25cd79b6af9897cdb8c Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 8 May 2026 15:08:20 -0400 Subject: [PATCH 17/25] fix: replace chains of DC ifs with if-elses (#1245) --- .../dc/cluster/ClusterCleanerUtilities.java | 61 ++++++------------- 1 file changed, 20 insertions(+), 41 deletions(-) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterCleanerUtilities.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterCleanerUtilities.java index 6ab72f997e..48643ca6e2 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterCleanerUtilities.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterCleanerUtilities.java @@ -17,14 +17,13 @@ public class ClusterCleanerUtilities { private static final Logger LOGGER = Logger.getLogger(ClusterCleanerUtilities.class.getName()); + private List> sortedHits; + public ClusterCleanerUtilities() { - List> sortdHits = new ArrayList<>(); - for(int l = 0; l < 6; l++) { - sortdHits.add(new ArrayList<>()); - } - sortedHits = sortdHits; + sortedHits = new ArrayList<>(); + for(int l = 0; l < 6; l++) sortedHits.add(new ArrayList<>()); } - private List> sortedHits = null; + /** * * Pattern Recognition step for identifying clusters in a clump: Find the @@ -220,7 +219,6 @@ public List ClusterSplitter(FittedCluster clus, int nextClsStartI FittedCluster bestCls = OverlappingClusterResolver(cluster, splitclusters); if (bestCls != null) { - if (!(selectedClusList.contains(bestCls))) { selectedClusList.add(bestCls); } @@ -237,7 +235,6 @@ public List ClusterSplitter(FittedCluster clus, int nextClsStartI FittedCluster bestCls = OverlappingClusterResolver(cluster, selectedClusList); if (bestCls != null) { - if (!(selectedClusList2.contains(bestCls))) { selectedClusList2.add(bestCls); } @@ -283,12 +280,9 @@ public List> byLayerListSorter(List DCHits, int sector, int super */ public int count_nlayers_hit(Hit[] hits_inlayer) { int nlayr = 6; - Hit[] allhits_inlayer = new Hit[nlayr]; - allhits_inlayer = hits_inlayer; - int nlayers_hit = 0; for (int la = 0; la < nlayr; la++) { - if (allhits_inlayer[la] != null) { + if (hits_inlayer[la] != null) { nlayers_hit++; } } @@ -341,7 +335,6 @@ public FittedCluster LRAmbiguityResolver(DataEvent event, FittedCluster fClus, if (hit.get_LeftRightAmb() == 0) { index++; } - } if (index == 0) { return fClus; // cluster OK @@ -445,7 +438,7 @@ public FittedCluster LRAmbiguityResolver(DataEvent event, FittedCluster fClus, arrayOfClus.get(0).addAll(okClus); arrayOfClus.get(1).addAll(okClus); } - if (index == 2) { + else if (index == 2) { for (int i1 = 0; i1 < totNotLRClus.size(); i1++) { for (int i2 = 2; i2 < totNotLRClus.size(); i2++) { if (totNotLRClus.get(i1).get_Id() == totNotLRClus.get(i2).get_Id()) { @@ -459,8 +452,7 @@ public FittedCluster LRAmbiguityResolver(DataEvent event, FittedCluster fClus, } } } - - if (index == 3) { + else if (index == 3) { for (int i1 = 0; i1 < totNotLRClus.size(); i1++) { for (int i2 = 2; i2 < totNotLRClus.size(); i2++) { for (int i3 = 4; i3 < totNotLRClus.size(); i3++) { @@ -479,8 +471,7 @@ public FittedCluster LRAmbiguityResolver(DataEvent event, FittedCluster fClus, } } } - - if (index == 4) { + else if (index == 4) { for (int i1 = 0; i1 < totNotLRClus.size(); i1++) { for (int i2 = 2; i2 < totNotLRClus.size(); i2++) { for (int i3 = 4; i3 < totNotLRClus.size(); i3++) { @@ -505,8 +496,7 @@ public FittedCluster LRAmbiguityResolver(DataEvent event, FittedCluster fClus, } } } - - if (index == 5) { + else if (index == 5) { for (int i1 = 0; i1 < totNotLRClus.size(); i1++) { for (int i2 = 2; i2 < totNotLRClus.size(); i2++) { for (int i3 = 4; i3 < totNotLRClus.size(); i3++) { @@ -538,8 +528,7 @@ public FittedCluster LRAmbiguityResolver(DataEvent event, FittedCluster fClus, } } } - - if (index == 6) { + else if (index == 6) { for (int i1 = 0; i1 < totNotLRClus.size(); i1++) { for (int i2 = 2; i2 < totNotLRClus.size(); i2++) { for (int i3 = 4; i3 < totNotLRClus.size(); i3++) { @@ -613,14 +602,14 @@ public FittedCluster SecondariesRemover(DataEvent event, FittedCluster clus, Clu if (hitsInLayer.isEmpty()) { continue; } - if (hitsInLayer.size() == 1) { + else if (hitsInLayer.size() == 1) { baseClusterHits.addAll(hitsInLayer); // safe all good hits to base cluster for (int j = 0; j < hitsInLayer.size(); j++) { hitsInLayer.get(j).set_LeftRightAmb(0); hitsInLayer.get(j).updateHitPositionWithTime(event, 1, hitsInLayer.get(j).getB(), tab, DcDetector, tde); } } - if (hitsInLayer.size() == 2) { + else if (hitsInLayer.size() == 2) { double docaSum = 0; for (int j = 0; j < hitsInLayer.size(); j++) { docaSum += hitsInLayer.get(j).get_Doca(); @@ -665,7 +654,6 @@ public FittedCluster SecondariesRemover(DataEvent event, FittedCluster clus, Clu } if (nbLyr > 0) { - for (int[] get : Constants.getInstance().CombArray.get(nbLyr - 1)) { ArrayList hitsInClusterCand = new ArrayList<>(); hitsInClusterCand.addAll(baseClusterHits); @@ -675,6 +663,7 @@ public FittedCluster SecondariesRemover(DataEvent event, FittedCluster clus, Clu hitsInClusCandLists.add(hitsInClusterCand); } } + for (int i = 0; i < hitsInClusCandLists.size(); i++) { FittedCluster newClus = new FittedCluster(clus.getBaseCluster()); for (int i1 = 0; i1 < newClus.size(); i1++) { @@ -794,7 +783,7 @@ public List HitListPruner(List hits) { rmHits.removeAll(kHits); sortedHits.get(l).removeAll(rmHits); } - if(sortedHits.get(l).size()>4 && sortedHits.get(l).size()<10) { + else if(sortedHits.get(l).size()>4 && sortedHits.get(l).size()<10) { ArrayList rmHits = (ArrayList) sortedHits.get(l).clone(); ArrayList kHits = new ArrayList<>(); kHits.add(sortedHits.get(l).get(0)); @@ -804,7 +793,7 @@ public List HitListPruner(List hits) { rmHits.removeAll(kHits); sortedHits.get(l).removeAll(rmHits); } - if(sortedHits.get(l).size()>=10) + else if(sortedHits.get(l).size()>=10) sortedHits.get(l).removeAll(sortedHits.get(l)); } @@ -861,13 +850,13 @@ public FittedCluster IsolatedHitsPruner(FittedCluster clus) { fcluster.add(clus.get(i)); } } - if (layer == 6) // look of neighbor in previous layer + else if (layer == 6) // look of neighbor in previous layer { if (HitArray[layer - 2][wire - 1] != null || HitArray[layer - 2][wire - 2] != null || HitArray[layer - 2][wire] != null || HitArray[layer - 1][wire - 2] != null || HitArray[layer - 1][wire] != null) { fcluster.add(clus.get(i)); } } - if (layer > 1 && layer < 6) // look of neighbor in next and previous layers + else if (layer > 1 && layer < 6) // look of neighbor in next and previous layers { if (HitArray[layer][wire - 1] != null || HitArray[layer][wire - 2] != null || HitArray[layer][wire] != null || HitArray[layer - 2][wire - 1] != null || HitArray[layer - 2][wire - 2] != null || HitArray[layer - 2][wire] != null || HitArray[layer - 1][wire - 2] != null || HitArray[layer - 1][wire] != null) { fcluster.add(clus.get(i)); @@ -929,7 +918,7 @@ public FittedCluster ClusterCleaner(FittedCluster clus, ClusterFitter cf, DCGean baseClusterHits.addAll(hitsInLayer); // safe all good hits to base cluster } - if (hitsInLayer.size() == 2) { + else if (hitsInLayer.size() == 2) { double docaSum = 0; for (int j = 0; j < hitsInLayer.size(); j++) { docaSum += hitsInLayer.get(j).get_Residual(); @@ -963,7 +952,6 @@ public FittedCluster ClusterCleaner(FittedCluster clus, ClusterFitter cf, DCGean } if (nbLyr > 0) { - for (int[] get : Constants.getInstance().CombArray.get(nbLyr - 1)) { ArrayList hitsInClusterCand = new ArrayList<>(); hitsInClusterCand.addAll(baseClusterHits); @@ -973,6 +961,7 @@ public FittedCluster ClusterCleaner(FittedCluster clus, ClusterFitter cf, DCGean hitsInClusCandLists.add(hitsInClusterCand); } } + for (int i = 0; i < hitsInClusCandLists.size(); i++) { FittedCluster newClus = new FittedCluster(clus.getBaseCluster()); for (int i1 = 0; i1 < newClus.size(); i1++) { @@ -982,17 +971,7 @@ public FittedCluster ClusterCleaner(FittedCluster clus, ClusterFitter cf, DCGean clusters.add(newClus); } - // get the best cluster - //LOGGER.log(Level.INFO, " clusters for selection "); - //for(FittedCluster c : clusters) { - // LOGGER.log(Level.INFO, c.printInfo()); - // for(FittedHit h : c) - // LOGGER.log(Level.INFO, h.printInfo()); - //} FittedCluster BestCluster = cf.BestClusterSelector(clusters, "LC"); - //LOGGER.log(Level.INFO, " ---> selected cluster : "); - //for(FittedHit h : BestCluster) - // LOGGER.log(Level.INFO, h.printInfo()); return BestCluster; } From 2e3d74476de3135a08fc3e0443097e2ac85cbe4f Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 8 May 2026 15:17:12 -0400 Subject: [PATCH 18/25] fix: reduce DCA swim stopper overhead (#1244) --- .../src/main/java/org/jlab/clas/swimtools/Swim.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/common-tools/swim-tools/src/main/java/org/jlab/clas/swimtools/Swim.java b/common-tools/swim-tools/src/main/java/org/jlab/clas/swimtools/Swim.java index 66897dc346..e83c49fd66 100644 --- a/common-tools/swim-tools/src/main/java/org/jlab/clas/swimtools/Swim.java +++ b/common-tools/swim-tools/src/main/java/org/jlab/clas/swimtools/Swim.java @@ -1361,21 +1361,20 @@ public DCASwimStopper(SwimTrajectory swimTraj) { @Override public boolean stopIntegration(double t, double[] y) { - Point3D dcaCand = new Point3D(y[0],y[1],y[2]); double maxDoca = Double.POSITIVE_INFINITY; - - for(Line3D l : polylines) { - if(l.distance(dcaCand).length() Date: Fri, 8 May 2026 15:45:18 -0400 Subject: [PATCH 19/25] feat: add GitLab profiling and pages jobs (#1248) --- .gitlab-ci.yml | 113 ++++++++++++++++++++++++++------------ docs/mkdocs/docs/index.md | 6 +- libexec/profile | 64 +++++++++++---------- 3 files changed, 119 insertions(+), 64 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b4cae92810..7c1117abf5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: codecr.jlab.org/hallb/clas12/container-forge/base:latest +image: codecr.jlab.org/hallb/clas12/iguana/ci_no_root:latest workflow: rules: @@ -6,13 +6,16 @@ workflow: auto_cancel: on_new_commit: interruptible - if: $CI_PIPELINE_SOURCE == "schedule" - - if: $CI_COMMIT_BRANCH == "main" + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH auto_cancel: on_new_commit: conservative - if: $CI_COMMIT_TAG auto_cancel: on_new_commit: conservative +variables: + EVIOFILE: clas_018779.evio.00001 + default: interruptible: true before_script: @@ -22,6 +25,25 @@ default: - export PATH=$CLARA_HOME/bin:$PATH - export PATH=$COATJAVA/bin:$PATH +.clon: + tags: + - clonfarm3-shell + stage: test + needs: [build,download] + dependencies: [build,download] + interruptible: true + before_script: + - export JAVA_HOME=/usr/clas12/offline/jdk/21.0.2 + - export PATH=$JAVA_HOME:$PATH + - export PATH=/usr/clas12/offline/maven/3.9.6/bin:$PATH + - export PATH=/usr/clas12/offline/asprof/4.4/bin:$PATH + - export CLARA_HOME=$CI_PROJECT_DIR/clara + - export COATJAVA=$CI_PROJECT_DIR/coatjava + - export PATH=$CLARA_HOME/plugins/clas12/bin:$PATH + - export PATH=$CLARA_HOME/bin:$PATH + - export PATH=$COATJAVA/bin:$PATH + - tar -xzvf clara.tar.gz + stages: - mirror - build @@ -50,7 +72,7 @@ build: optional: true script: - git config --global --add safe.directory $CI_PROJECT_DIR - - ./build-coatjava.sh --lfs --clara -T$JL_RUNNER_AVAIL_CPU --quiet --no-progress + - ./build-coatjava.sh --lfs --clara -T48 --quiet --no-progress - tar -czf coatjava.tar.gz coatjava - tar -czf clara.tar.gz clara artifacts: @@ -63,31 +85,33 @@ build: download: stage: build script: -# - xrdcp xroot://sci-xrootd.jlab.org///osgpool/hallb/clas12/validation/raw/rg-d/clas_018779.evio.00001 ./ - - git lfs install - - git clone https://code.jlab.org/hallb/clas12/validation-data - - cp validation-data/raw/rg-d/clas_018779.evio.00001 . + - GIT_LFS_SKIP_SMUDGE=1 git clone https://code.jlab.org/hallb/clas12/validation-data + - cd validation-data + - git lfs install --skip-smudge + - git config lfs.fetchinclude raw/rg-d/$EVIOFILE + - git lfs pull + - cd - + - ln validation-data/raw/rg-d/$EVIOFILE artifacts: when: always - expire_in: 1 day paths: - - clas_018779.evio.00001 + - $EVIOFILE -.spotbugs: +spotbugs: stage: test needs: [build] dependencies: [build] script: - tar -xzf coatjava.tar.gz - - ./build-coatjava.sh -T$JL_RUNNER_AVAIL_CPU --spotbugs --quiet --no-progress + - ./build-coatjava.sh -T48 --spotbugs --quiet --no-progress -.unit_tests: +unit-tests: stage: test needs: [build] dependencies: [build] script: - tar -xzf coatjava.tar.gz - - ./build-coatjava.sh -T$JL_RUNNER_AVAIL_CPU --lfs --unittests --quiet --no-progress + - ./build-coatjava.sh -T48 --lfs --unittests --quiet --no-progress - ./validation/jacoco-aggregate.sh artifacts: when: always @@ -95,10 +119,10 @@ download: paths: - publish -.docs: +docs: stage: test - needs: [build,unit_tests] - dependencies: [build,unit_tests] + needs: [build,unit-tests] + dependencies: [build,unit-tests] script: - tar -xzf coatjava.tar.gz - python3 -m venv venv @@ -111,7 +135,7 @@ download: - cp -r publish pages/jacoco artifacts: when: always - expire_in: 7 days + expire_in: 1 week paths: - pages @@ -121,7 +145,6 @@ eb: dependencies: [build] script: - tar -xzf coatjava.tar.gz - - tar -xzf clara.tar.gz - git config --global --add safe.directory $CI_PROJECT_DIR - git lfs install - git submodule update --init validation/advanced-tests/data @@ -141,12 +164,7 @@ decoder: dependencies: [build,download] script: - tar -xzf clara.tar.gz - - decoder -l FINE -n 1000 -o clas_018779_00001.hipo clas_018779.evio.00001 - artifacts: - when: always - expire_in: 1 day - paths: - - clas_018779_00001.hipo + - decoder -l FINE -n 1000 -o decoded.hipo $EVIOFILE clara: stage: test @@ -154,24 +172,49 @@ clara: dependencies: [build,download] script: - tar -xzf clara.tar.gz - - run-clara -v -c $CLARA_HOME -t $JL_RUNNER_AVAIL_CPU -y ./etc/services/rgd-clarode.yml -n 100 -o out clas_018779.evio.00001 + - run-clara -v -c $CLARA_HOME -t 4 -y ./etc/services/rgd-clarode.yml -n 30 -o out $EVIOFILE + - mv out/rec_$EVIOFILE.hipo claroded.hipo profile: - stage: test - needs: [build,decoder] - dependencies: [build,decoder] + extends: .clon + allow_failure: true script: - - tar -xzf coatjava.tar.gz - - libexec/profile -f flamegraph -e cpu clas_018779_00001.hipo - - libexec/profile -f flamegraph -e nativemem clas_018779_00001.hipo - - libexec/profile -f flamegraph -e alloc clas_018779_00001.hipo + - ./clara/plugins/clas12/libexec/profile -e cpu run-clara -c ./clara -y ./etc/services/rgd-clarode.yml -o tmp1 -t 16 -l $EVIOFILE + - ./clara/plugins/clas12/libexec/profile -e alloc run-clara -c ./clara -y ./etc/services/rgd-clarode.yml -o tmp2 -t 16 -l $EVIOFILE + - ./clara/plugins/clas12/libexec/profile -e lock run-clara -c ./clara -y ./etc/services/rgd-clarode.yml -o tmp3 -t 16 -l $EVIOFILE artifacts: when: always expire_in: 1 week paths: - - pro_flamegraph_cpu_clas_018779_00001 - - pro_flamegraph_nativemem_clas_018779_00001 - - pro_flamegraph_alloc_clas_018779_00001 + - "asprof*.html" + +scaling: + extends: .clon + allow_failure: true + script: + - ./clara/plugins/clas12/libexec/scaling -c ./clara -y ./etc/services/rgd-clarode.yml -t 8,12,18,24 $EVIOFILE + artifacts: + when: always + expire_in: 1 week + paths: + - scaling.svg + +pages: + stage: deploy + needs: [profile,scaling,docs] + dependencies: [profile,scaling,docs] + script: + - cp -r pages public + - mkdir public/perf + - cp asprof*.html public/perf + - cp scaling.svg public/perf + pages: true + artifacts: + expire_in: 1 week + paths: + - public + rules: + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH .deploy: stage: deploy diff --git a/docs/mkdocs/docs/index.md b/docs/mkdocs/docs/index.md index 25a1cf9442..1dc49c17df 100644 --- a/docs/mkdocs/docs/index.md +++ b/docs/mkdocs/docs/index.md @@ -12,4 +12,8 @@ --- ## Reports -- [Coverage Report](jacoco/index.html) +- [Jacoco Coverage](jacoco/index.html) +- [Scaling Test](perf/scaling.svg) +- [Cpu Profiling](perf/asprof_cpu.html) +- [Alloc Profiling](perf/asprof_alloc.html) +- [Lock Profiling](perf/asprof_lock.html) diff --git a/libexec/profile b/libexec/profile index 19da5dbd5c..a16b534935 100755 --- a/libexec/profile +++ b/libexec/profile @@ -1,29 +1,31 @@ #!/bin/bash event=cpu -format=flat -seconds=12 -usage1="Usage: profile [-h] [-s seconds] [-w seconds] [-e event] [-f format] [--] executable args" -usage2="Usage: profile [options] executable args\nOptions:\n\t[-h] [-s seconds] [-w seconds]\n\t[-e cpu|alloc|nativemem|lock|cache-misses]\n\t[-f flat|traces|collapsed|flamegraph|tree|jfr|otlp]" +profile_seconds=30 +warmup_seconds=60 +usage1="Usage: profile [-h] [-s seconds] [-w seconds] [-e event] [--] executable args" +usage2="Usage: profile [options] executable args\nOptions:\n\t[-h] [-s seconds] [-w seconds]\n\t[-e cpu|alloc|nativemem|lock|cache-misses]" -while getopts s:f:e:o:w:h opt +let tail_seconds=warmup_seconds-5 +let sleep_seconds=5 + +while getopts s:e:o:w:h opt do case $opt in - s) seconds=$OPTARG ;; - f) format=$OPTARG ;; + s) profile_seconds=$OPTARG ;; + w) warmup_seconds=$OPTARG ;; e) event=$OPTARG ;; o) stub=$OPTARG ;; - w) warmup=$OPTARG ;; h) echo -e $usage2 && exit 0 ;; --) break ;; \?) echo $usage1 && exit 1 ;; -# :) echo $usage1 && exit 2 ;; esac done shift $((OPTIND-1)) executable=$1 arguments=${@:2} +logfile=asprof$stub.log which asprof >& /dev/null [ "$?" -ne 0 ] && echo 'ERROR: asprof is not in $PATH.' && echo -e $usage2 && exit 3 @@ -32,30 +34,36 @@ which $executable >& /dev/null [ "$?" -ne 0 ] && echo "ERROR: $executable is not in \$PATH." && echo -e $usage2 && exit 4 echo "Running asprof on '$executable $arguments' ..." +sleep 1 -set -e +rm -f $logfile && touch $logfile -$executable $arguments >& asprof_$stub.log +set -e +$executable $arguments >> $logfile 2>&1 & +set +e pid_bash=$! +echo info: pid bash=$pid_bash, getting java ... +sleep 1 +pid_java=$(pgrep -P $pid_bash) +sleep 1 +# go 2 deep for run-clara: +pid_java=$(pgrep -P $pid_java | head -n 1) +echo info: pid java=$pid_java +tail -f $logfile & +pid_tail=$! +sleep $tail_seconds +kill -9 $pid_tail -echo PID1=$pid_bash -sleep 5 -pid_java=$(pgrep -P "$pid_bash") - -echo PID2=$pid_java - -ps waux && ps -p $pid_java - -echo "Waiting for $warmup seconds of warmup ..." -for x in $(seq $warmup); do let y=$warmup-$x && echo -e -n "\r$y ..." && sleep 1; done - -# This 42 is probably for recon-util: -tail -n 42 asprof_$stub.log +set -e +asprof -e $event -d $profile_seconds -f asprof_${event}$stub.html $pid_java >> $logfile 2>&1 & +pid_asprof=$! +set +e -asprof --title "Coatjava:asprof:$executable:$event" -e $event \ - -d $seconds -o $format -f asprof_${format}_${event}_$stub $pid_java +tail -f $logfile & +pid_tail=$! +wait $pid_asprof +kill -9 $pid_bash +kill -9 $pid_tail kill -9 $pid_java -rm -f asprof_$stub.hipo - From add24dc7deeea6fa3f593fb9276df34ecd7b125f Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 8 May 2026 16:09:31 -0400 Subject: [PATCH 20/25] remove unnecessary check (#1250) --- .../magfield/src/main/java/cnuphys/magfield/Cell3D.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/Cell3D.java b/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/Cell3D.java index 20b5141000..7562b86019 100644 --- a/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/Cell3D.java +++ b/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/Cell3D.java @@ -71,14 +71,9 @@ private boolean reset(double q1, double q2, double q3) { for (int k = 0; k < 2; k++) { int nn3 = _n3 + k; int index = _probe.getCompositeIndex(nn1, nn2, nn3); - - if (index < 0) { - System.out.println(); - } c[i][j][k][0] = _probe.getB1(index); c[i][j][k][1] = _probe.getB2(index); c[i][j][k][2] = _probe.getB3(index); - } } } From 646a0790734a997e0bb806ddebeccee8819476ff Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 8 May 2026 19:09:54 -0400 Subject: [PATCH 21/25] feat: add thread affinity options to scaling script (#1239) * add -C and -T options * back to events per thread --- libexec/scaling | 55 ++++++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/libexec/scaling b/libexec/scaling index 30064ada1e..6cad8e3450 100755 --- a/libexec/scaling +++ b/libexec/scaling @@ -7,36 +7,38 @@ def cli(): cli.add_argument('-c','--clara', metavar='DIR',help='CLARA_HOME path (default=$CLARA_HOME)',default=os.getenv('CLARA_HOME',None)) cli.add_argument('-t','--threads',metavar='#',help='threads (default=8,16,24,34,44)',default='8,16,24,34,44') cli.add_argument('-e','--events', metavar='#',help='events per thread (default=555)',default=555,type=int) - cli.add_argument('-N','--numa', metavar='#',help='NUMA socket (default=None, choices=[0,1])',default=None,type=int,choices=[0,1]) + cli.add_argument('-N','--numa', metavar='#',help='restrict to a NUMA socket (choices=[0,1])',choices=[0,1]) + cli.add_argument('-C','--cpus', metavar='#',help='restrict to a CPU list (e.g. 0,1,2,3)') + cli.add_argument('-T','--cputhr', metavar='#',help='restrict to same number of CPUs as threads') cli.add_argument('datafile', help='input EVIO/HIPO data file') cfg = cli.parse_args() cfg.threads = cfg.threads.split(',') if not cfg.clara: cli.error('cannot find CLARA installation via -c or $CLARA_HOME') - cfg.run_clara = find_run_clara(cfg.clara) - if not cfg.run_clara: - cli.error('cannot find run-clara in $PATH or CLARA installation') - if cfg.numa is not None: + elif shutil.which('run-clara'): + cfg.run_clara = shutil.which('run-clara') + elif os.path.exists(clara_home + '/plugins/clas12/bin/run-clara'): + cfg.run_clara = clara_home + '/plugins/clas12/bin/run-clara' + else: + cli.error('cannot find run-clara in $PATH or $CLARA_HOME') + if cfg.cpus: + try: + cfg.cpus = ','.join([str(int(i)) for i in cfg.cpus.split(',')]) + except Exception as e: + cli.error('invalid --cpus argument: {cfg.cpus}') + elif cfg.numa or cfg.cputhr: + if not cfg.numa: + cfg.numa = 0 if not shutil.which('numactl'): cli.error('numactl is not in $PATH, --numa option not supported') - if len(list(get_numa_cpus(cfg.numa))) == 0: - cli.error('invalid --numa node: {cfg.numa}') - cfg.numa = ','.join(list(get_numa_cpus(cfg.numa))) + for x in run(['numactl','-H']): + if x.startswith(f'node {cfg.numa} cpus:'): + cfg.cpus = ','.join([str(int(i)) for i in x.strip().split()[3:]]) + break + if not cfg.cpus: + cli.error('error determining cpu list for -C or -T') return cfg -def find_run_clara(clara_home): - import os,shutil - if shutil.which('run-clara'): - return shutil.which('run-clara') - elif os.path.exists(clara_home + '/plugins/clas12/bin/run-clara'): - return clara_home + '/plugins/clas12/bin/run-clara' - -def get_numa_cpus(node): - for line in run(['numactl','-H']): - if line.startswith(f'node {node} cpus:'): - for col in line.strip().split()[3:]: - yield col - def run(cmd): import subprocess print('run >>> '+' '.join(cmd)) @@ -46,15 +48,16 @@ def run(cmd): if len(line) > 0: yield line p.wait() - if p.returncode != 0: - pass def benchmark(cfg, threads, log): import collections cmd = [] - # use taskset: - if cfg.numa is not None: - cmd.extend(['taskset','-c',cfg.numa]) + # use taskset for thread affinity: + if cfg.cpus: + if cfg.cputhr: + cmd.extend(['taskset','-c',','.join(cfg.cpus.split(',')[:threads])]) + else: + cmd.extend(['taskset','-c',cfg.cpus]) # add the run-clara command: cmd.extend([cfg.run_clara, '-c',cfg.clara, From e425aae216f8bef9661c719ee7dfa45ff3382e22 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 8 May 2026 19:24:34 -0400 Subject: [PATCH 22/25] fix: reduce thread contention in DC TableLoader (#1238) * cleanup * private some methods and reduce locks --------- Co-authored-by: raffaelladevita --- .../jlab/rec/dc/timetodistance/TableLoader.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TableLoader.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TableLoader.java index 947ec8f809..3742f6e906 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TableLoader.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TableLoader.java @@ -228,7 +228,7 @@ private static int getAlphaBin(double Alpha) { return bin; } - private static synchronized void FillAlpha() { + private static void FillAlpha() { final double cos30 = Math.cos(Math.toRadians(30.)); for(int icosalpha =0; icosalpha Date: Fri, 8 May 2026 19:33:07 -0400 Subject: [PATCH 23/25] fix: more hash/index-based IndexedTable access in DC (#1236) * switch to row/hash based lookup * reduce hashing * fix oops --- .../src/main/java/org/jlab/rec/dc/Constants.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java index e11d0ac1b6..ad651acd4e 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java @@ -519,14 +519,15 @@ private void addReverseTT(int run, IndexedTable tt) { int crate = tt.getList().getIndexGenerator().getIndex((long)key, 0); int slot = tt.getList().getIndexGenerator().getIndex((long)key, 1); int channel = tt.getList().getIndexGenerator().getIndex((long)key, 2); - int sector = tt.getIntValue("sector", crate,slot,channel); - int layer = tt.getIntValue("layer", crate,slot,channel); - int comp = tt.getIntValue("component", crate,slot,channel); - int order = tt.getIntValue("order", crate,slot,channel); + int sector = tt.getIntValueByHash(0, (long)key); + int layer = tt.getIntValueByHash(1, (long)key); + int comp = tt.getIntValueByHash(2, (long)key); + int order = tt.getIntValueByHash(3, (long)key); reverse.addEntry(sector, layer, comp, order); - reverse.setIntValue(crate, "crate", sector, layer, comp, order); - reverse.setIntValue(slot, "slot", sector, layer, comp, order); - reverse.setIntValue(channel, "channel", sector, layer, comp, order); + long hash = IndexedTable.DEFAULT_GENERATOR.hashCode(sector,layer,comp,order); + reverse.setIntValueByHash(crate, 0, hash); + reverse.setIntValueByHash(slot, 1, hash); + reverse.setIntValueByHash(channel, 2, hash); } reverseTTs.put(run, reverse); } From 32e3887716182bcbd31f72a541d6fe3bfb659748 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 8 May 2026 19:59:56 -0400 Subject: [PATCH 24/25] fix: reduce CVT atan calculations (#1243) * reduce atan calculations * restore --- .../java/org/jlab/rec/cvt/cross/Cross.java | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/cross/Cross.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/cross/Cross.java index fcc5cc01e9..2dfc4b60e0 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/cross/Cross.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/cross/Cross.java @@ -616,33 +616,38 @@ public int getSVTCosmicsRegion() { @Override public int compareTo(Cross arg) { - int return_val = 0; - if(Constants.getInstance().isCosmics) { + int return_val; + if (Constants.getInstance().isCosmics) { int RegComp = this.getSVTCosmicsRegion() < arg.getSVTCosmicsRegion() ? -1 : this.getSVTCosmicsRegion() == arg.getSVTCosmicsRegion() ? 0 : 1; int IDComp = this.getId() < arg.getId() ? -1 : this.getId() == arg.getId() ? 0 : 1; - return_val = ((RegComp == 0) ? IDComp : RegComp); - } else { - - //int thisreg = (this.getDetector().equalsIgnoreCase("BMT")) ? 3 + bgeom.getLayer( this.getRegion(), this.getDetectorType()) : this.getRegion(); - //int argreg = (arg.getDetector().equalsIgnoreCase("BMT")) ? 3 + bgeom.getLayer( arg.getRegion(), arg.getDetectorType()) : arg.getRegion(); + } + else { + int thisreg = this.getOrderedRegion(); int argreg = arg.getOrderedRegion(); int RegComp = thisreg < argreg ? -1 : thisreg == argreg ? 0 : 1; -// int RegComp = this.getRegion() < arg.getRegion() ? -1 : this.getRegion() == arg.getRegion() ? 0 : 1; // check that is not BMTC for phi comparison if( Double.isNaN(arg.getPoint().x())==false && Double.isNaN(this.getPoint().x())==false ) { - int PhiComp = this.getPoint0().toVector3D().phi() < arg.getPoint0().toVector3D().phi() ? -1 : this.getPoint0().toVector3D().phi() == arg.getPoint0().toVector3D().phi() ? 0 : 1; - - return_val = ((RegComp == 0) ? PhiComp : RegComp); + if (RegComp == 0) { + double phi0 = this.getPoint0().toVector3D().phi(); + double phi1 = arg.getPoint0().toVector3D().phi(); + return_val = phi0 < phi1 ? -1 : phi0 == phi1 ? 0 : 1; + } + else { + return_val = RegComp; + } } else { - int ZComp = this.getPoint0().z() < arg.getPoint0().z() ? -1 : this.getPoint0().z() == arg.getPoint0().z() ? 0 : 1; - return_val = ((RegComp == 0) ? ZComp : RegComp); + if (RegComp == 0) { + return_val = this.getPoint0().z() < arg.getPoint0().z() ? -1 : this.getPoint0().z() == arg.getPoint0().z() ? 0 : 1; + } + else { + return_val = RegComp; + } } } - return return_val; } From 975a9ccff38bc9dd0bfd5afd644707eef06e784d Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 11 May 2026 10:37:33 -0400 Subject: [PATCH 25/25] build: bump version number to 13.8.4 (#1253) --- common-tools/clara-io/pom.xml | 12 ++++---- common-tools/clas-analysis/pom.xml | 20 ++++++------- common-tools/clas-decay-tools/pom.xml | 24 +++++++-------- common-tools/clas-detector/pom.xml | 12 ++++---- common-tools/clas-geometry/pom.xml | 4 +-- common-tools/clas-io/pom.xml | 6 ++-- common-tools/clas-jcsg/pom.xml | 10 +++---- common-tools/clas-logging/pom.xml | 4 +-- common-tools/clas-math/pom.xml | 4 +-- common-tools/clas-physics/pom.xml | 4 +-- common-tools/clas-reco/pom.xml | 18 ++++++------ common-tools/clas-tracking/pom.xml | 12 ++++---- common-tools/clas-utils/pom.xml | 6 ++-- common-tools/cnuphys/magfield/pom.xml | 4 +-- common-tools/cnuphys/pom.xml | 4 +-- common-tools/cnuphys/snr/pom.xml | 4 +-- common-tools/cnuphys/splot/pom.xml | 4 +-- common-tools/cnuphys/swimmer/pom.xml | 8 ++--- common-tools/coat-libs/pom.xml | 34 +++++++++++----------- common-tools/pom.xml | 4 +-- common-tools/swim-tools/pom.xml | 18 ++++++------ pom.xml | 2 +- reconstruction/ai/pom.xml | 10 +++---- reconstruction/alert/pom.xml | 22 +++++++------- reconstruction/band/pom.xml | 12 ++++---- reconstruction/bg/pom.xml | 10 +++---- reconstruction/calib/pom.xml | 10 +++---- reconstruction/cnd/pom.xml | 16 +++++----- reconstruction/cvt/pom.xml | 28 +++++++++--------- reconstruction/dc/pom.xml | 32 ++++++++++---------- reconstruction/eb/pom.xml | 32 ++++++++++---------- reconstruction/ec/pom.xml | 18 ++++++------ reconstruction/fmt/pom.xml | 18 ++++++------ reconstruction/ft/pom.xml | 16 +++++----- reconstruction/htcc/pom.xml | 12 ++++---- reconstruction/ltcc/pom.xml | 14 ++++----- reconstruction/mc/pom.xml | 12 ++++---- reconstruction/mltn/pom.xml | 8 ++--- reconstruction/mu/pom.xml | 20 ++++++------- reconstruction/pom.xml | 4 +-- reconstruction/postproc/pom.xml | 10 +++---- reconstruction/raster/pom.xml | 12 ++++---- reconstruction/recoil/pom.xml | 14 ++++----- reconstruction/rich/pom.xml | 18 ++++++------ reconstruction/rtpc/pom.xml | 18 ++++++------ reconstruction/swaps/pom.xml | 10 +++---- reconstruction/tof/pom.xml | 18 ++++++------ reconstruction/uber/pom.xml | 42 +++++++++++++-------------- reconstruction/urwt/pom.xml | 14 ++++----- reconstruction/vtx/pom.xml | 14 ++++----- 50 files changed, 341 insertions(+), 341 deletions(-) diff --git a/common-tools/clara-io/pom.xml b/common-tools/clara-io/pom.xml index b25558dc2c..e75018765d 100644 --- a/common-tools/clara-io/pom.xml +++ b/common-tools/clara-io/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clara-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -44,25 +44,25 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-analysis/pom.xml b/common-tools/clas-analysis/pom.xml index 43ffef46cb..1260cfe315 100644 --- a/common-tools/clas-analysis/pom.xml +++ b/common-tools/clas-analysis/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -38,49 +38,49 @@ org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-decay-tools/pom.xml b/common-tools/clas-decay-tools/pom.xml index 8fc851a613..384a4bcfa9 100644 --- a/common-tools/clas-decay-tools/pom.xml +++ b/common-tools/clas-decay-tools/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-decay-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,54 +21,54 @@ org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar cnuphys swimmer - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-vtx - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-detector/pom.xml b/common-tools/clas-detector/pom.xml index 543c8f9a79..63f7f53bb4 100644 --- a/common-tools/clas-detector/pom.xml +++ b/common-tools/clas-detector/pom.xml @@ -4,20 +4,20 @@ org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -43,19 +43,19 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-logging - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-geometry/pom.xml b/common-tools/clas-geometry/pom.xml index f464c51e6c..c22d685037 100644 --- a/common-tools/clas-geometry/pom.xml +++ b/common-tools/clas-geometry/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-io/pom.xml b/common-tools/clas-io/pom.xml index e87c4487c4..06daa9b4b1 100644 --- a/common-tools/clas-io/pom.xml +++ b/common-tools/clas-io/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -50,7 +50,7 @@ org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-jcsg/pom.xml b/common-tools/clas-jcsg/pom.xml index 7dfd17d15f..1e33cf8332 100644 --- a/common-tools/clas-jcsg/pom.xml +++ b/common-tools/clas-jcsg/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -32,17 +32,17 @@ org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT java3d diff --git a/common-tools/clas-logging/pom.xml b/common-tools/clas-logging/pom.xml index ee71e0719b..1a57384ab0 100644 --- a/common-tools/clas-logging/pom.xml +++ b/common-tools/clas-logging/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-logging - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-math/pom.xml b/common-tools/clas-math/pom.xml index ef09b38d2e..a849951d91 100644 --- a/common-tools/clas-math/pom.xml +++ b/common-tools/clas-math/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-math - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-physics/pom.xml b/common-tools/clas-physics/pom.xml index 75410aa18e..3d819ebf25 100644 --- a/common-tools/clas-physics/pom.xml +++ b/common-tools/clas-physics/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-reco/pom.xml b/common-tools/clas-reco/pom.xml index 6985a776a7..b839caa297 100644 --- a/common-tools/clas-reco/pom.xml +++ b/common-tools/clas-reco/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -50,43 +50,43 @@ cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys swimmer - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-tracking/pom.xml b/common-tools/clas-tracking/pom.xml index 50b468e3d2..adb391695f 100644 --- a/common-tools/clas-tracking/pom.xml +++ b/common-tools/clas-tracking/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-tracking - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -33,23 +33,23 @@ org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-utils/pom.xml b/common-tools/clas-utils/pom.xml index d604ccece6..460ad95fe7 100644 --- a/common-tools/clas-utils/pom.xml +++ b/common-tools/clas-utils/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -22,7 +22,7 @@ org.jlab.clas clas-logging - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/cnuphys/magfield/pom.xml b/common-tools/cnuphys/magfield/pom.xml index 79bf378633..bcd4854fea 100644 --- a/common-tools/cnuphys/magfield/pom.xml +++ b/common-tools/cnuphys/magfield/pom.xml @@ -4,13 +4,13 @@ cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar cnuphys clas12 - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/cnuphys/pom.xml b/common-tools/cnuphys/pom.xml index a28b8479f1..6161774821 100644 --- a/common-tools/cnuphys/pom.xml +++ b/common-tools/cnuphys/pom.xml @@ -4,13 +4,13 @@ cnuphys clas12 - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT pom org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/cnuphys/snr/pom.xml b/common-tools/cnuphys/snr/pom.xml index aa0634cc14..90f23dfcbc 100644 --- a/common-tools/cnuphys/snr/pom.xml +++ b/common-tools/cnuphys/snr/pom.xml @@ -4,13 +4,13 @@ cnuphys snr - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar cnuphys clas12 - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/cnuphys/splot/pom.xml b/common-tools/cnuphys/splot/pom.xml index 41df0ed603..26ee79a55f 100644 --- a/common-tools/cnuphys/splot/pom.xml +++ b/common-tools/cnuphys/splot/pom.xml @@ -4,13 +4,13 @@ cnuphys splot - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar cnuphys clas12 - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/cnuphys/swimmer/pom.xml b/common-tools/cnuphys/swimmer/pom.xml index 9ee2ef420a..33a857bbfc 100644 --- a/common-tools/cnuphys/swimmer/pom.xml +++ b/common-tools/cnuphys/swimmer/pom.xml @@ -4,26 +4,26 @@ cnuphys swimmer - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar cnuphys clas12 - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys splot - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/coat-libs/pom.xml b/common-tools/coat-libs/pom.xml index ce8fe83d48..345723ee7f 100644 --- a/common-tools/coat-libs/pom.xml +++ b/common-tools/coat-libs/pom.xml @@ -4,13 +4,13 @@ org.jlab.coat coat-libs - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -66,91 +66,91 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clara-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-logging - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-math - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-tracking - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-decay-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys snr - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/pom.xml b/common-tools/pom.xml index d472b1815b..809fb7afe3 100644 --- a/common-tools/pom.xml +++ b/common-tools/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT pom org.jlab.clas coatjava - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/swim-tools/pom.xml b/common-tools/swim-tools/pom.xml index 0b7a5e9088..dcf4a09be7 100644 --- a/common-tools/swim-tools/pom.xml +++ b/common-tools/swim-tools/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,37 +21,37 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys swimmer - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/pom.xml b/pom.xml index 75fdbe9ecc..7b2cf7486b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.jlab.clas coatjava - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT pom diff --git a/reconstruction/ai/pom.xml b/reconstruction/ai/pom.xml index ad000d0bb4..4bebb2c65c 100644 --- a/reconstruction/ai/pom.xml +++ b/reconstruction/ai/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-ai - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -18,19 +18,19 @@ org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index 7ebf9b7cf7..69c0e1a864 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-alert - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -30,54 +30,54 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test org.jlab.clas clas-tracking - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile diff --git a/reconstruction/band/pom.xml b/reconstruction/band/pom.xml index 4ba1e672d7..a985e8bcd6 100644 --- a/reconstruction/band/pom.xml +++ b/reconstruction/band/pom.xml @@ -4,35 +4,35 @@ org.jlab.clas12.detector clas12detector-band - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/bg/pom.xml b/reconstruction/bg/pom.xml index 29b74cc53c..3f862882d7 100644 --- a/reconstruction/bg/pom.xml +++ b/reconstruction/bg/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-bg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -18,19 +18,19 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/calib/pom.xml b/reconstruction/calib/pom.xml index 518b0e01fc..8e800e62f9 100644 --- a/reconstruction/calib/pom.xml +++ b/reconstruction/calib/pom.xml @@ -6,13 +6,13 @@ org.jlab.clas12.detector clas12detector-calib - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -20,19 +20,19 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/cnd/pom.xml b/reconstruction/cnd/pom.xml index bbed982553..13ec3a10a4 100644 --- a/reconstruction/cnd/pom.xml +++ b/reconstruction/cnd/pom.xml @@ -4,45 +4,45 @@ org.jlab.clas12.detector clas12detector-cnd - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-cvt - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/cvt/pom.xml b/reconstruction/cvt/pom.xml index b4111dc9e4..258c6ed025 100644 --- a/reconstruction/cvt/pom.xml +++ b/reconstruction/cvt/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-cvt - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -26,63 +26,63 @@ cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test org.jlab.clas clas-tracking - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-eb - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test jar diff --git a/reconstruction/dc/pom.xml b/reconstruction/dc/pom.xml index 9fe4136e6d..2724d7d10b 100644 --- a/reconstruction/dc/pom.xml +++ b/reconstruction/dc/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-dc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -33,69 +33,69 @@ cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test org.jlab.clas clas-tracking - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-ai - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test org.jlab.clas clas-math - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys snr - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.plugins @@ -105,7 +105,7 @@ org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT junit diff --git a/reconstruction/eb/pom.xml b/reconstruction/eb/pom.xml index ed37cd3d04..ddcb8c21fe 100644 --- a/reconstruction/eb/pom.xml +++ b/reconstruction/eb/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-eb - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,74 +21,74 @@ cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-dc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-ec - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-tof - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-htcc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-ltcc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT junit diff --git a/reconstruction/ec/pom.xml b/reconstruction/ec/pom.xml index 17346913ff..aedc1a47e5 100644 --- a/reconstruction/ec/pom.xml +++ b/reconstruction/ec/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-ec - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,38 +21,38 @@ org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT junit diff --git a/reconstruction/fmt/pom.xml b/reconstruction/fmt/pom.xml index 52ec2153e8..633fbb24e2 100644 --- a/reconstruction/fmt/pom.xml +++ b/reconstruction/fmt/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-fmt - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,37 +21,37 @@ org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/ft/pom.xml b/reconstruction/ft/pom.xml index 5530069874..77ca4bc8ad 100644 --- a/reconstruction/ft/pom.xml +++ b/reconstruction/ft/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-ft - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,32 +21,32 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/htcc/pom.xml b/reconstruction/htcc/pom.xml index f2b1042e40..6269c5b7e8 100644 --- a/reconstruction/htcc/pom.xml +++ b/reconstruction/htcc/pom.xml @@ -4,35 +4,35 @@ org.jlab.clas12.detector clas12detector-htcc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/ltcc/pom.xml b/reconstruction/ltcc/pom.xml index 88dfb46ba0..b56d01d75e 100644 --- a/reconstruction/ltcc/pom.xml +++ b/reconstruction/ltcc/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-ltcc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -30,27 +30,27 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/mc/pom.xml b/reconstruction/mc/pom.xml index a3ebbe4489..c5be978515 100644 --- a/reconstruction/mc/pom.xml +++ b/reconstruction/mc/pom.xml @@ -4,35 +4,35 @@ org.jlab.clas12.detector clas12detector-mc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/mltn/pom.xml b/reconstruction/mltn/pom.xml index aa0a5c423b..2fe2256f97 100644 --- a/reconstruction/mltn/pom.xml +++ b/reconstruction/mltn/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-mltn - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -38,13 +38,13 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/mu/pom.xml b/reconstruction/mu/pom.xml index 6364ba88ee..79a1b3bddf 100644 --- a/reconstruction/mu/pom.xml +++ b/reconstruction/mu/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-mu - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -25,42 +25,42 @@ org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/pom.xml b/reconstruction/pom.xml index 0a0869eea7..0befecee4b 100644 --- a/reconstruction/pom.xml +++ b/reconstruction/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT pom org.jlab.clas coatjava - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/postproc/pom.xml b/reconstruction/postproc/pom.xml index a2453d7a5f..dfb46c0607 100644 --- a/reconstruction/postproc/pom.xml +++ b/reconstruction/postproc/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-postproc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -18,19 +18,19 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/raster/pom.xml b/reconstruction/raster/pom.xml index 7144b80a23..a0e997b026 100644 --- a/reconstruction/raster/pom.xml +++ b/reconstruction/raster/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-raster - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,22 +21,22 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/recoil/pom.xml b/reconstruction/recoil/pom.xml index 094abb26a2..7a8ed1c523 100644 --- a/reconstruction/recoil/pom.xml +++ b/reconstruction/recoil/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-recoil - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,27 +21,27 @@ org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/rich/pom.xml b/reconstruction/rich/pom.xml index f772ffe1f4..5c81bdf09a 100644 --- a/reconstruction/rich/pom.xml +++ b/reconstruction/rich/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-rich - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,37 +21,37 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/rtpc/pom.xml b/reconstruction/rtpc/pom.xml index e1e9697a3e..181992fc12 100644 --- a/reconstruction/rtpc/pom.xml +++ b/reconstruction/rtpc/pom.xml @@ -4,20 +4,20 @@ org.jlab.clas12.detector clas12detector-rtpc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.apache.commons @@ -26,33 +26,33 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-tracking - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/swaps/pom.xml b/reconstruction/swaps/pom.xml index 381ffb8f64..8de6b7310d 100644 --- a/reconstruction/swaps/pom.xml +++ b/reconstruction/swaps/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-swaps - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -18,19 +18,19 @@ org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/tof/pom.xml b/reconstruction/tof/pom.xml index 349268aab9..3ff73e323f 100644 --- a/reconstruction/tof/pom.xml +++ b/reconstruction/tof/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-tof - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -18,43 +18,43 @@ org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/uber/pom.xml b/reconstruction/uber/pom.xml index 99b17c30c2..f033ed8ff1 100644 --- a/reconstruction/uber/pom.xml +++ b/reconstruction/uber/pom.xml @@ -4,110 +4,110 @@ org.jlab.clas12.detector clas12detector-uber - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-dc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-ec - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-tof - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-htcc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-ltcc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-ft - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-cnd - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-band - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-cvt - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-raster - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-vtx - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-calib - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-rtpc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-rich - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-eb - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-mltn - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-fmt - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/urwt/pom.xml b/reconstruction/urwt/pom.xml index 79c8de6b87..a1a86403fe 100644 --- a/reconstruction/urwt/pom.xml +++ b/reconstruction/urwt/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-urwt - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,27 +21,27 @@ org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT clas12detector-urwt diff --git a/reconstruction/vtx/pom.xml b/reconstruction/vtx/pom.xml index a9ff4c6009..a787878ef4 100644 --- a/reconstruction/vtx/pom.xml +++ b/reconstruction/vtx/pom.xml @@ -4,41 +4,41 @@ org.jlab.clas12.detector clas12detector-vtx - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar cnuphys swimmer - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT