From 73bd1ef3f05039f6bcf6b941f855bd46a22b2739 Mon Sep 17 00:00:00 2001 From: raffaelladevita Date: Mon, 24 Mar 2025 12:20:45 -0400 Subject: [PATCH 001/100] DC v2: includes TFLight fix and new dc beta time walk with constants from /calibration/dc/v2 (#494) * fix issue for path length in FD tracking * fix issue for coordinate transformation from global to tilted sector coordinate * add comments to explain transition of starting point for path length * T2D with beta dependence. Fixes in interpolation. * Fix for instances where the t2d function turns over. * Fix in last interpolation step. More validation plots. * Fix table filling * B-field interpolation test interpolation in B instead of B^2. More plots * Added modularity for calibration use * version bump * switch to use new dc/v2 tables * switch to use new dc/v2 for ref_pressure too --------- Co-authored-by: tongtongcao Co-authored-by: ziegler --- .../kalmanfilter/zReference/KFitter.java | 22 +- .../zReference/KFitterStraight.java | 12 +- .../kalmanfilter/zReference/StateVecs.java | 100 +++- .../main/java/org/jlab/rec/dc/Constants.java | 24 +- .../java/org/jlab/rec/dc/banks/HitReader.java | 4 +- .../java/org/jlab/rec/dc/hit/FittedHit.java | 43 +- .../rec/dc/timetodistance/T2DFunctions.java | 2 +- .../rec/dc/timetodistance/TableLoader.java | 493 ++++++++++++------ .../TimeToDistanceEstimator.java | 381 ++++++++------ .../rec/dc/track/TrackCandListFinder.java | 28 +- .../java/org/jlab/service/dc/DCTBEngine.java | 35 +- 11 files changed, 759 insertions(+), 385 deletions(-) diff --git a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitter.java b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitter.java index c723fb2a3f..cfdce11c30 100644 --- a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitter.java +++ b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitter.java @@ -708,7 +708,9 @@ private boolean filter(int k, boolean forward, double annealingFactor) { return false; } } - + + // Since no vertex inforamtion, the starting point for path length is the final point at the last layer. + // After vertex information is obtained, transition for the starting point from the final point to vertex will be taken. private boolean filter(int k, boolean forward) { StateVec sVec = sv.transported(forward).get(k); org.jlab.clas.tracking.kalmanfilter.AMeasVecs.MeasVec mVec = mv.measurements.get(k); @@ -857,7 +859,9 @@ public Matrix filterCovMat(double[] H, Matrix Ci, double V) { private void calcFinalChisq(int sector) { calcFinalChisq(sector, false); } - + + // Since no vertex inforamtion, the starting point for path length is the final point at the last layer. + // After vertex information is obtained, transition for the starting point from the final point to vertex will be taken. private void calcFinalChisq(int sector, boolean nofilter) { int k = svzLength - 1; this.chi2 = 0; @@ -880,9 +884,9 @@ private void calcFinalChisq(int sector, boolean nofilter) { sv.transport(sector, k, 0, sVec, mv, this.getSwimmer(), forward); StateVec svc = sv.transported(forward).get(0); - path += svc.deltaPath; + path += (forward ? 1 : -1) * svc.deltaPath; svc.setPathLength(path); - + double V0 = mv.measurements.get(0).surface.unc[0]; Point3D point = new Point3D(svc.x, svc.y, mv.measurements.get(0).surface.measPoint.z()); @@ -922,7 +926,7 @@ private void calcFinalChisq(int sector, boolean nofilter) { double h = mv.hDoca(point, mv.measurements.get(k1 + 1).surface.wireLine[0]); svc = sv.transported(forward).get(k1 + 1); - path += svc.deltaPath; + path += (forward ? 1 : -1) * svc.deltaPath; svc.setPathLength(path); svc.setProjector(mv.measurements.get(k1 + 1).surface.wireLine[0].origin().x()); svc.setProjectorDoca(h); @@ -975,7 +979,7 @@ private void calcFinalChisqDAF(int sector, boolean nofilter) { sv.transport(sector, k, 0, sVec, mv, this.getSwimmer(), forward); StateVec svc = sv.transported(forward).get(0); - path += svc.deltaPath; + path += (forward ? 1 : -1) * svc.deltaPath; svc.setPathLength(path); Point3D point = new Point3D(svc.x, svc.y, mv.measurements.get(0).surface.measPoint.z()); @@ -1047,7 +1051,7 @@ private void calcFinalChisqDAF(int sector, boolean nofilter) { } svc = sv.transported(forward).get(k1 + 1); - path += svc.deltaPath; + path += (forward ? 1 : -1) * svc.deltaPath; svc.setPathLength(path); point = new Point3D(sv.transported(forward).get(k1 + 1).x, sv.transported(forward).get(k1 + 1).y, mv.measurements.get(k1 + 1).surface.measPoint.z()); @@ -1116,6 +1120,10 @@ private void calcFinalChisqDAF(int sector, boolean nofilter) { public Matrix propagateToVtx(int sector, double Zf) { return sv.transport(sector, finalStateVec.k, Zf, finalStateVec, mv, this.getSwimmer()); } + + public double getDeltaPathToVtx(int sector, double Zf) { + return sv.getDeltaPath(sector, finalStateVec.k, Zf, finalStateVec, mv, this.getSwimmer()); + } //Todo: apply the common funciton to replace current function above @Override diff --git a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitterStraight.java b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitterStraight.java index 232bcaa7d0..fb563fcc8b 100644 --- a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitterStraight.java +++ b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitterStraight.java @@ -406,6 +406,8 @@ private void calcFinalChisq(int sector) { calcFinalChisq(sector, false); } + // Since no vertex inforamtion, the starting point for path length is the final point at the last layer. + // After vertex information is obtained, transition for the starting point from the final point to vertex will be taken. private void calcFinalChisq(int sector, boolean nofilter) { int k = svzLength - 1; this.chi2 = 0; @@ -426,11 +428,11 @@ private void calcFinalChisq(int sector, boolean nofilter) { kfStateVecsAlongTrajectory = new ArrayList<>(); if (sVec != null && sVec.CM != null) { - boolean forward = false; + boolean forward = false; sv.transport(sector, k, 0, sVec, mv, this.getSwimmer(), forward); StateVec svc = sv.transported(forward).get(0); - path += svc.deltaPath; + path += (forward ? 1 : -1) * svc.deltaPath; svc.setPathLength(path); double V0 = mv.measurements.get(0).surface.unc[0]; @@ -473,7 +475,7 @@ private void calcFinalChisq(int sector, boolean nofilter) { double h = mv.hDoca(point, mv.measurements.get(k1 + 1).surface.wireLine[0]); svc = sv.transported(forward).get(k1+1); - path += svc.deltaPath; + path += (forward ? 1 : -1) * svc.deltaPath; svc.setPathLength(path); svc.setProjector(mv.measurements.get(k1 + 1).surface.wireLine[0].origin().x()); svc.setProjectorDoca(h); @@ -504,6 +506,10 @@ public Matrix propagateToVtx(int sector, double Zf) { return sv.transport(sector, finalStateVec.k, Zf, finalStateVec, mv, this.getSwimmer()); } + public double getDeltaPathToVtx(int sector, double Zf) { + return sv.getDeltaPath(sector, finalStateVec.k, Zf, finalStateVec, mv, this.getSwimmer()); + } + @Override public void runFitter(AStateVecs sv, AMeasVecs mv) { throw new UnsupportedOperationException("Not supported yet."); diff --git a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/StateVecs.java b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/StateVecs.java index f69dd0bfc9..269e966c21 100644 --- a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/StateVecs.java +++ b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/StateVecs.java @@ -53,7 +53,7 @@ public void initFromHB(StateVec initSV, double beta) { this.trackTrajS.clear(); this.trackTrajT.put(0, new StateVec(initSV)); } - + /** * * @param sector @@ -150,6 +150,104 @@ public Matrix transport(int sector, int i, double Zf, StateVec iVec, AMeasVecs m return fVec.CM; + } + + /** + * + * @param sector + * @param i initial state vector index + * @param Zf + * @param iVec state vector at the initial index + * @param mv measurements + */ + public double getDeltaPath(int sector, int i, double Zf, StateVec iVec, AMeasVecs mv, Swim swimmer) { // s = signed step-size + + double stepSize = 1.0; + StateVec fVec = new StateVec(0); + fVec.x = iVec.x; + fVec.y = iVec.y; + fVec.z = iVec.z; + fVec.tx = iVec.tx; + fVec.ty = iVec.ty; + fVec.Q = iVec.Q; + fVec.B = iVec.B; + Matrix5x5.copy(iVec.CM, fVec.CM); + + double s = 0; + double zInit = mv.measurements.get(i).surface.measPoint.z(); + double BatMeas = iVec.B; + + double z = zInit; + + while (Math.signum(Zf - zInit) * z < Math.signum(Zf - zInit) * Zf) { + z = fVec.z; + if (z == Zf) { + break; + } + + double x = fVec.x; + double y = fVec.y; + double tx = fVec.tx; + double ty = fVec.ty; + double Q = fVec.Q; + double dPath = fVec.deltaPath; + Matrix cMat = new Matrix(); + Matrix5x5.copy(fVec.CM, cMat); + s = Math.signum(Zf - zInit) * stepSize; + + // LOGGER.log(Level.FINE, " from "+(float)Z[i]+" to "+(float)Z[f]+" at "+(float)z+" By is "+bf[1]+" B is "+Math.sqrt(bf[0]*bf[0]+bf[1]*bf[1]+bf[2]*bf[2])/Bmax+" stepSize is "+s); + if (Math.signum(Zf - zInit) * (z + s) > Math.signum(Zf - zInit) * Zf) { + s = Math.signum(Zf - zInit) * Math.abs(Zf - z); + } + + //rk.RK4transport(sector, Q, x, y, z, tx, ty, s, swimmer, cMat, fVec, dPath); + rk.RK4transport(sector, s, swimmer, cMat, fVec); + + // Q process noise matrix estimate + double p = Math.abs(1. / iVec.Q); + + double X0 = this.getX0(mv.measurements.get(i).surface, z, Z); + double t_ov_X0 = Math.abs(s) / X0;//path length in radiation length units = t/X0 [true path length/ X0] ; Ar radiation length = 14 cm + + double beta = this.beta; + if (beta > 1.0 || beta <= 0) { + beta = 1.0; + } + + double sctRMS = 0; + + ////// Todo: Modify multi-scattering or remove it; After update, some parameters, like iteration termintion chonditions, may need to be updated. + // Speed of light should be 1 + // From one measurement site to another, F and Q should be calculated separaetely with multiple steps; and then C' = FTCF + Q + if (Math.abs(s) > 0) { + sctRMS = ((0.0136) / (beta * PhysicsConstants.speedOfLight() * p)) * Math.sqrt(t_ov_X0) + * (1 + 0.038 * Math.log(t_ov_X0)); + } + + double cov_txtx = (1 + tx * tx) * (1 + tx * tx + ty * ty) * sctRMS * sctRMS; + double cov_tyty = (1 + ty * ty) * (1 + tx * tx + ty * ty) * sctRMS * sctRMS; + double cov_txty = tx * ty * (1 + tx * tx + ty * ty) * sctRMS * sctRMS; + + fMS.set( + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, cov_txtx, cov_txty, 0, + 0, 0, cov_txty, cov_tyty, 0, + 0, 0, 0, 0, 0 + ); + + Matrix5x5.copy(fVec.CM, copyMatrix); + Matrix5x5.add(copyMatrix, fMS, fVec.CM); + + if (Math.abs(fVec.B - BatMeas) < 0.0001) { + stepSize *= 2; + } + + BatMeas = fVec.B; + } + + return fVec.deltaPath; + } /** 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 d020322477..25473ca915 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 @@ -94,7 +94,7 @@ public static Constants getInstance() { public int SECTORSELECT = 0; public int NSUPERLAYERTRACKING = 5; private boolean USETSTART = true; - private boolean USETIMETBETA = false; + //private boolean USETIMETBETA = false; private boolean CHECKBETA = false; private int T2D = 1; // 1=polynomial, 0=exponential private boolean USEDOUBLETS = false; @@ -105,10 +105,10 @@ public static Constants getInstance() { public static final String TT = "/daq/tt/dc"; public static final String DOCARES = "/calibration/dc/signal_generation/doca_resolution"; public static final String TIME2DIST = "/calibration/dc/time_to_distance/time2dist"; - public static final String T2DPRESSURE = "/calibration/dc/time_to_distance/t2d_pressure"; + public static final String T2DPRESSURE = "/calibration/dc/v2/t2d_pressure"; public static final String PRESSURE = "/hall/weather/pressure"; - public static final String T2DPRESSUREREF = "/calibration/dc/time_to_distance/ref_pressure"; - public static final String T0CORRECTION = "/calibration/dc/time_corrections/T0Corrections"; + public static final String T2DPRESSUREREF = "/calibration/dc/v2/ref_pressure"; + public static final String T0CORRECTION = "/calibration/dc/v2/t0"; public static final String TDCTCUTS = "/calibration/dc/time_corrections/tdctimingcuts"; public static final String WIRESTAT = "/calibration/dc/tracking/wire_status"; public static final String TIMEJITTER = "/calibration/dc/time_jitter"; @@ -296,13 +296,13 @@ public void setUSETSTART(boolean usetstart) { USETSTART = usetstart; } - public boolean useUSETIMETBETA() { - return USETIMETBETA; - } - - public void setUSETIMETBETA(boolean usetimebeta) { - USETIMETBETA = usetimebeta; - } +// public boolean useUSETIMETBETA() { +// return USETIMETBETA; +// } +// +// public void setUSETIMETBETA(boolean usetimebeta) { +// USETIMETBETA = usetimebeta; +// } public double getWIREDIST() { return WIREDIST; @@ -429,7 +429,7 @@ public void printConfig(String engine) { LOGGER.log(Level.INFO, "["+engine+"] run with wire ministagger = " + MINISTAGGERSTATUS.getName()); LOGGER.log(Level.INFO, "["+engine+"] run with wire feedthroughs = " + FEEDTHROUGHSSTATUS.getName()); LOGGER.log(Level.INFO, "["+engine+"] run with wire distortions = " + ENDPLATESBOWING); - LOGGER.log(Level.INFO, "["+engine+"] run with with time Beta correction (is false for doca Beta correction) = " + USETIMETBETA); + //LOGGER.log(Level.INFO, "["+engine+"] run with with time Beta correction (is false for doca Beta correction) = " + USETIMETBETA); LOGGER.log(Level.INFO, "["+engine+"] run with with Beta cut = " + CHECKBETA); LOGGER.log(Level.INFO, "["+engine+"] run with time to distance function set to exponential/polynomial (0/1) = " + T2D); LOGGER.log(Level.INFO, "["+engine+"] run with with hit doublets recovery = " + USEDOUBLETS); diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java index faa907a8cf..102e9a4b47 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java @@ -791,8 +791,8 @@ private double[] getT0(int sector, int superlayer, int cable = this.getCableID1to6(layer, wire); int slot = this.getSlotID1to7(wire); - double t0 = t0Table.getDoubleValue("T0Correction", sector, superlayer, slot, cable); - double t0E = t0Table.getDoubleValue("T0Error", sector, superlayer, slot, cable); + double t0 = t0Table.getDoubleValue("t0correction", sector, superlayer, slot, cable); + double t0E = t0Table.getDoubleValue("t0error", sector, superlayer, slot, cable); T0Corr[0] = t0; T0Corr[1] = t0E; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/hit/FittedHit.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/hit/FittedHit.java index 36e802de15..19f27b1c50 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/hit/FittedHit.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/hit/FittedHit.java @@ -385,27 +385,28 @@ public void set_TimeToDistance(DataEvent event, double trkAngle, double B, Index double deltatime_beta = 0; double deltadoca_beta = 0; - if(Constants.getInstance().useUSETIMETBETA()==true) { - deltatime_beta = calcDeltaTimeBetaTFCN(this.get_Time(), tab, beta); - } - - if(event.hasBank("MC::Particle")==false) { - distance = tde.interpolateOnGrid(B, Math.toDegrees(ralpha), - this.getCorrectedTime(this.get_Time(), deltatime_beta), - secIdx, slIdx); - } else { - distance = tde.interpolateOnGrid(B, Math.toDegrees(ralpha), - this.getCorrectedTime(this.get_Time(), 0), - secIdx, slIdx) ; - } - //get deltadoca - if(Constants.getInstance().useUSETIMETBETA()==false) { - deltadoca_beta = calcDeltaDocaBeta(distance, tab, beta); - } - - distance -=deltadoca_beta; - this.set_DeltaTimeBeta(deltatime_beta); - this.set_DeltaDocaBeta(deltadoca_beta); +// if(Constants.getInstance().useUSETIMETBETA()==true) { +// deltatime_beta = calcDeltaTimeBetaTFCN(this.get_Time(), tab, beta); +// } +// +// if(event.hasBank("MC::Particle")==false) { +// distance = tde.interpolateOnGrid(B, Math.toDegrees(ralpha), +// this.getCorrectedTime(this.get_Time(), deltatime_beta), +// secIdx, slIdx); +// } else { +// distance = tde.interpolateOnGrid(B, Math.toDegrees(ralpha), +// this.getCorrectedTime(this.get_Time(), 0), +// secIdx, slIdx) ; +// } +// //get deltadoca +// if(Constants.getInstance().useUSETIMETBETA()==false) { +// deltadoca_beta = calcDeltaDocaBeta(distance, tab, beta); +// } +// +// distance -=deltadoca_beta; + //this.set_DeltaTimeBeta(deltatime_beta); + //this.set_DeltaDocaBeta(deltadoca_beta); + distance = tde.interpolateOnGrid(B, Math.toDegrees(ralpha), beta, this.get_Time(), secIdx, slIdx); } diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/T2DFunctions.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/T2DFunctions.java index 9a863dbcce..4892d5ceb8 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/T2DFunctions.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/T2DFunctions.java @@ -321,7 +321,7 @@ public static double polyFcnMac(double x, double alpha, double bfield, double v_ double time = 0; // alpha correction double cos30minusalpha=Math.cos(Math.toRadians(30.-alpha)); - double dmaxalpha = dmax*cos30minusalpha; + double dmaxalpha = dmax*cos30minusalpha; double xhatalpha = x/dmaxalpha; // rcapital is an intermediate parameter double rcapital = R*dmax; 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 1ae2e32755..1309a42012 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 @@ -1,10 +1,21 @@ package org.jlab.rec.dc.timetodistance; -import java.math.RoundingMode; -import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; +import org.jlab.detector.base.DetectorType; +import org.jlab.detector.base.GeometryFactory; +import org.jlab.geom.base.ConstantProvider; +import org.jlab.groot.data.H1F; +import org.jlab.groot.data.H2F; +import org.jlab.groot.math.Func1D; +import org.jlab.groot.ui.TCanvas; import org.jlab.rec.dc.Constants; +import static org.jlab.rec.dc.timetodistance.T2DFunctions.polyFcnMac; +import org.jlab.service.dc.DCEngine; import org.jlab.utils.groups.IndexedTable; @@ -17,8 +28,8 @@ public TableLoader() { private static boolean T2DLOADED = false; - private static final int NBINST=2000; - + public static final int NBINST=2000; + public static final double[] betaValues = new double[] {0.6, 0.7, 0.8, 0.9, 1.0}; public static final double[] BfieldValues = new double[]{0.0000, 1.0000, 1.4142, 1.7321, 2.0000, 2.2361, 2.4495, 2.6458}; public static int minBinIdxB = 0; public static int maxBinIdxB = BfieldValues.length-1; @@ -28,39 +39,185 @@ public TableLoader() { private static final double[][] AlphaBounds = new double[6][2]; public static int minBinIdxT = 0; public static final int[][][][] maxBinIdxT = new int[6][6][8][6]; - public static double[][][][][] DISTFROMTIME = new double[6][6][maxBinIdxB+1][maxBinIdxAlpha+1][NBINST]; // sector slyr alpha Bfield time bins [s][r][ibfield][icosalpha][tbin] + public static double[][][][][][] DISTFROMTIME = new double[6][6][maxBinIdxB+1][maxBinIdxAlpha+1][betaValues.length][NBINST]; // sector slyr alpha Bfield time bins [s][r][ibfield][icosalpha][tbin] + public static int timeBinWidth = 2; //ns public static int maxTBin = -1; - //public static double[] distbetaValues = new double[]{0.16, 0.16, 0.08, 0.08, 0.08, 0.08}; - /* - * - */ + public static void main(String[] args) { + DCEngine dce = new DCEngine("test"); + dce.setVariation("default"); + dce.LoadTables(); + ConstantProvider provider = GeometryFactory.getConstants(DetectorType.DC, 11, "default"); + for(int l=0; l<6; l++) { + Constants.getInstance().wpdist[l] = provider.getDouble("/geometry/dc/superlayer/wpdist", l); + } + int run = 18331; + TableLoader.Fill(dce.getConstantsManager().getConstants(run, Constants.T2DPRESSURE), + dce.getConstantsManager().getConstants(run, Constants.T2DPRESSUREREF), + dce.getConstantsManager().getConstants(run, Constants.PRESSURE)); + TableLoader.Fill(dce.getConstantsManager().getConstants(run, Constants.T2DPRESSURE), + dce.getConstantsManager().getConstants(run, Constants.T2DPRESSUREREF), + dce.getConstantsManager().getConstants(run, Constants.PRESSURE)); + test(); + } + public static void test(){ - TimeToDistanceEstimator tde = new TimeToDistanceEstimator(); - for(int s = 0; s<1; s++ ){ // loop over sectors - for(int r = 4; r<5; r++ ){ //loop over slys - for(int ibfield =0; ibfield<1; ibfield++) { - for (int tb = 250; tb< 300; tb++) { - LOGGER.log(Level.FINE, " NEW TIME BIN "); - for(int icosalpha =0; icosalpha hts = new ArrayList<>(); //histo to check table and interp. from time to idistance (by interpolation) + //to calculated time (from dist.to t) in seconds; as a function of time + List hds = new ArrayList<>(); //histo to check table and interp. from distance to calculated time (from dist.to t) + //to idistance (by interpolation) in microns; as a function of distance + List hdsSL3 = new ArrayList<>(); //histo to check table and interp. from distance to calculated time (from dist.to t) + //for various values of B-field + List hdsSL4 = new ArrayList<>(); //histo to check table and interp. from distance to calculated time (from dist.to t) + //for various values of B-field + List hd2s = new ArrayList<>();// as s function of distance + List ht2d = new ArrayList<>();// time to distance from interpolation + for(int r = 0; r<6; r++ ){ //loop over slys + hts.add(new H1F("ht"+(r+1), "time resolution (ns)", "Counts/0.1 ns", 400, -20.0,20.0)); + hds.add(new H1F("hd"+(r+1), "doca resolution (um)", "Counts/0.1 um", 400, -20.0,20.0)); + //public H2F(String name, String title, int bx, double xmin, double xmax, int by, double ymin, double ymax) + hd2s.add(new H2F("hd2"+(r+1), "doca resolution (um) vs doca (cm)", (int)(hdmax[r]*100), 0, hdmax[r], 400, -20.0,20.0)); + ht2d.add(new H2F("ht2d"+(r+1), "doca (cm) vs time(time (ns)", (int)htmax[r], 0, htmax[r], (int)(hdmax[r]*100), 0, hdmax[r])); + } + for (int b =0; b3) maxBidx=1; + for(int ibfield =0; ibfield fmap = new HashMap<>(); + for (int i = 0; i < 6; i++) { + CanD2T.cd(i); + double[] pars = new double[11]; + pars[0] = TableLoader.v0[0][i]; + pars[1] = TableLoader.vmid[0][i]; + pars[2] = TableLoader.FracDmaxAtMinVel[0][i]; + pars[3] = TableLoader.Tmax[0][i]; + pars[4] = TableLoader.distbeta[0][i]; + pars[5] = TableLoader.delta_bfield_coefficient[0][i]; + pars[6] = TableLoader.b1[0][i]; + pars[7] = TableLoader.b2[0][i]; + pars[8] = TableLoader.b3[0][i]; + pars[9] = TableLoader.b4[0][i]; + pars[10] = 2.*Constants.getInstance().wpdist[i];//fix dmax + + for(int j =0; j0 && (i<2 || i>3) ) continue; + String name = "f"; + name+=i; + name+="."; + name+=j; + name+="."; + name+=k; + fmap.put(name, new FitLine(name, 0, pars[10], 0, i, 3, alpha, BfieldValues[k])); + fmap.get(name).setLineWidth(2); + fmap.get(name).setLineColor(k+1); + fmap.get(name).setRange(0, pars[10]); + fmap.get(name).getAttributes().setTitleX("doca (cm)"); + fmap.get(name).getAttributes().setTitleY("time (ns)"); + CanD2T.draw(fmap.get(name), "same"); + } + } + } + } private static int getAlphaBin(double Alpha) { @@ -93,148 +250,135 @@ private static synchronized void FillAlpha() { AlphaBounds[0][0] = 0; AlphaBounds[5][1] = 30; } - public static synchronized void Fill(IndexedTable t2dPressure, IndexedTable t2dPressRef, IndexedTable pressure) { - if (T2DLOADED) return; - - + public static boolean useP = true; + public static synchronized void getConstants(IndexedTable t2dPressure, IndexedTable t2dPressRef, IndexedTable pressure){ double p_ref = t2dPressRef.getDoubleValue("pressure", 0,0,0); double p = pressure.getDoubleValue("value", 0,0,3); double dp = p - p_ref; + double dp2scale = 0; + double dpscale = 1; + + if(!useP) + dpscale = 0; for(int s = 0; s<6; s++ ){ // loop over sectors for(int r = 0; r<6; r++ ){ //loop over slys // Fill constants FracDmaxAtMinVel[s][r] = t2dPressure.getDoubleValue("c1_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("c1_a1", s+1,r+1,0)*dp; + +t2dPressure.getDoubleValue("c1_a1", s+1,r+1,0)*dp*dpscale; v0[s][r] = t2dPressure.getDoubleValue("v0_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("v0_a1", s+1,r+1,0)*dp - +t2dPressure.getDoubleValue("v0_a2", s+1,r+1,0)*dp*dp; + +t2dPressure.getDoubleValue("v0_a1", s+1,r+1,0)*dp*dpscale + +t2dPressure.getDoubleValue("v0_a2", s+1,r+1,0)*dp*dp*dp2scale; vmid[s][r] = t2dPressure.getDoubleValue("vmid_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("vmid_a1", s+1,r+1,0)*dp - +t2dPressure.getDoubleValue("vmid_a2", s+1,r+1,0)*dp*dp; - delta_bfield_coefficient[s][r] = t2dPressure.getDoubleValue("delta_bfield_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("delta_bfield_a1", s+1,r+1,0)*dp - +t2dPressure.getDoubleValue("delta_bfield_a2", s+1,r+1,0)*dp*dp; - b1[s][r] = t2dPressure.getDoubleValue("b1_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("b1_a1", s+1,r+1,0)*dp - +t2dPressure.getDoubleValue("b1_a2", s+1,r+1,0)*dp*dp; - b2[s][r] = t2dPressure.getDoubleValue("b2_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("b2_a1", s+1,r+1,0)*dp - +t2dPressure.getDoubleValue("b2_a2", s+1,r+1,0)*dp*dp; - b3[s][r] = t2dPressure.getDoubleValue("b3_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("b3_a1", s+1,r+1,0)*dp - +t2dPressure.getDoubleValue("b3_a2", s+1,r+1,0)*dp*dp; - b4[s][r] = t2dPressure.getDoubleValue("b4_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("b4_a1", s+1,r+1,0)*dp - +t2dPressure.getDoubleValue("b4_a2", s+1,r+1,0)*dp*dp; + +t2dPressure.getDoubleValue("vmid_a1", s+1,r+1,0)*dp*dpscale + +t2dPressure.getDoubleValue("vmid_a2", s+1,r+1,0)*dp*dp*dp2scale; + distbeta[s][r] = t2dPressure.getDoubleValue("distbeta_a0", s+1,r+1,0) + +t2dPressure.getDoubleValue("distbeta_a1", s+1,r+1,0)*dp*dpscale + +t2dPressure.getDoubleValue("distbeta_a2", s+1,r+1,0)*dp*dp*dp2scale; + if(r>1 && r<4) { + delta_bfield_coefficient[s][r] = t2dPressure.getDoubleValue("delta_bfield_a0", s+1,r+1,0) + +t2dPressure.getDoubleValue("delta_bfield_a1", s+1,r+1,0)*dp*dpscale + +t2dPressure.getDoubleValue("delta_bfield_a2", s+1,r+1,0)*dp*dp*dp2scale + +t2dPressure.getDoubleValue("delta_bfield_a1", s+1,r+1,0)*dp*dpscale + +t2dPressure.getDoubleValue("delta_bfield_a2", s+1,r+1,0)*dp*dp*dp2scale; + b1[s][r] = t2dPressure.getDoubleValue("b1_a0", s+1,r+1,0) + +t2dPressure.getDoubleValue("b1_a1", s+1,r+1,0)*dp*dpscale + +t2dPressure.getDoubleValue("b1_a2", s+1,r+1,0)*dp*dp*dp2scale; + b2[s][r] = t2dPressure.getDoubleValue("b2_a0", s+1,r+1,0) + +t2dPressure.getDoubleValue("b2_a1", s+1,r+1,0)*dp*dpscale + +t2dPressure.getDoubleValue("b2_a2", s+1,r+1,0)*dp*dp*dp2scale; + b3[s][r] = t2dPressure.getDoubleValue("b3_a0", s+1,r+1,0) + +t2dPressure.getDoubleValue("b3_a1", s+1,r+1,0)*dp*dpscale + +t2dPressure.getDoubleValue("b3_a2", s+1,r+1,0)*dp*dp*dp2scale; + b4[s][r] = t2dPressure.getDoubleValue("b4_a0", s+1,r+1,0) + +t2dPressure.getDoubleValue("b4_a1", s+1,r+1,0)*dp*dpscale + +t2dPressure.getDoubleValue("b4_a2", s+1,r+1,0)*dp*dp*dp2scale; + } Tmax[s][r] = t2dPressure.getDoubleValue("tmax_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("tmax_a1", s+1,r+1,0)*dp - +t2dPressure.getDoubleValue("tmax_a2", s+1,r+1,0)*dp*dp; - + +t2dPressure.getDoubleValue("tmax_a1", s+1,r+1,0)*dp*dpscale + +t2dPressure.getDoubleValue("tmax_a2", s+1,r+1,0)*dp*dp*dp2scale; } } - Fill(); } - public static synchronized void Fill(IndexedTable tab) { - //CCDBTables 0 = "/calibration/dc/signal_generation/doca_resolution"; - //CCDBTables 1 = "/calibration/dc/time_to_distance/t2d"; - //CCDBTables 2 = "/calibration/dc/time_corrections/T0_correction"; - if (T2DLOADED) return; - + public static synchronized void FillTable() { + double stepSize = 0.00010; for(int s = 0; s<6; s++ ){ // loop over sectors - for(int r = 0; r<6; r++ ){ //loop over slys - // Fill constants - delta_T0[s][r] = tab.getDoubleValue("delta_T0", s+1,r+1,0); - FracDmaxAtMinVel[s][r] = tab.getDoubleValue("c1", s+1,r+1,0);//use same table. names strings - deltanm[s][r] = tab.getDoubleValue("deltanm", s+1,r+1,0); - v0[s][r] = tab.getDoubleValue("v0", s+1,r+1,0); - vmid[s][r] = tab.getDoubleValue("c2", s+1,r+1,0); - delta_bfield_coefficient[s][r] = tab.getDoubleValue("delta_bfield_coefficient", s+1,r+1,0); - b1[s][r] = tab.getDoubleValue("b1", s+1,r+1,0); - b2[s][r] = tab.getDoubleValue("b2", s+1,r+1,0); - b3[s][r] = tab.getDoubleValue("b3", s+1,r+1,0); - b4[s][r] = tab.getDoubleValue("b4", s+1,r+1,0); - Tmax[s][r] = tab.getDoubleValue("tmax", s+1,r+1,0); - // end fill constants + //System.out.println("sector "+(s+1)+" sly "+(r+1)+" v0 "+v0[s][r]+" vmid "+vmid[s][r]+" R "+FracDmaxAtMinVel[s][r]); + double dmax = 2.*Constants.getInstance().wpdist[r]; + //double tmax = CCDBConstants.getTMAXSUPERLAYER()[s][r]; + for(int ibfield =0; ibfieldmaxTime) + maxTime=timebfield; + + //System.out.println("T "+timebfield+" maxT "+maxTime+" x "+x); + int tbin = (int) Math.floor(timebfield/2); + if(tbin<0 || tbin>NBINST-1) { + //System.err.println("Problem with tbin"); + continue; + } + if(tbin>maxTBin) + maxTBin = tbin; + + if(timebfielddmax) { + DISTFROMTIME[s][r][ibfield][icosalpha][ibeta][tbin]=dmax; + idist=nxmax; + } + } + } + } + } } } - Fill(); - } - public static synchronized void Fill() { + TableLoader.fillMissingTableBins(); + } + public static synchronized void Fill(IndexedTable t2dPressure, IndexedTable t2dPressRef, IndexedTable pressure) { + //CCDBTables 0 = "/calibration/dc/signal_generation/doca_resolution"; //CCDBTables 1 = "/calibration/dc/time_to_distance/t2d"; //CCDBTables 2 = "/calibration/dc/time_corrections/T0_correction"; - - double stepSize = 0.0010; + if (T2DLOADED) return; FillAlpha(); + getConstants(t2dPressure, t2dPressRef, pressure); + FillTable(); - for(int s = 0; s<6; s++ ){ // loop over sectors - - for(int r = 0; r<6; r++ ){ //loop over slys - - // constants filled - //LOGGER.log(Level.FINE, v0[s][r]+" "+vmid[s][r]+" "+FracDmaxAtMinVel[s][r]); - double dmax = 2.*Constants.getInstance().wpdist[r]; - //double tmax = CCDBConstants.getTMAXSUPERLAYER()[s][r]; - for(int ibfield =0; ibfieldNBINST-1) { - //System.err.println("Problem with tbin"); - continue; - } - if(tbin>maxTBin) - maxTBin = tbin; - //if(tbin>maxBinIdxT[s][r][ibfield][icosalpha]) { - //maxBinIdxT[s][r][ibfield][icosalpha] = NBINST; - //} //LOGGER.log(Level.FINE, "tbin "+tbin+" tmax "+tmax+ "s "+s+" sl "+r ); - if(DISTFROMTIME[s][r][ibfield][icosalpha][tbin]==0) { - // firstbin = bi - // bincount = 0; - DISTFROMTIME[s][r][ibfield][icosalpha][tbin]=x; - } else { - // test for getting center of the bin (to be validated): - //double prevTime = calc_Time(x-stepSize, alpha, bfield, s+1, r+1); - //if(x>DISTFROMTIME[s][r][ibfield][icosalpha][tbin] - // && Math.abs((double)(2.*tbin+1)-timebfield)<=Math.abs((double)(2.*tbin+1)-prevTime)) { - // DISTFROMTIME[s][r][ibfield][icosalpha][tbin]=x; - //} - // bincount++; - DISTFROMTIME[s][r][ibfield][icosalpha][tbin]+=stepSize; - } - - /* if(timebfield>timebfield_max) { - DISTFROMTIME[s][r][ibfield][icosalpha][tbin]=x-stepSize*0.5; - if(DISTFROMTIME[s][r][ibfield][icosalpha][tbin]>dmax) - DISTFROMTIME[s][r][ibfield][icosalpha][tbin] = dmax; - } */ - } - } - } - } - } - TableLoader.fillMissingTableBins(); - //TableLoader.test(); + System.out.println(" T2D TABLE FILLED....."); T2DLOADED = true; - } + } - private static synchronized void fillMissingTableBins() { + private static void fillMissingTableBins() { for(int s = 0; s<6; s++ ){ // loop over sectors @@ -244,17 +388,21 @@ private static synchronized void fillMissingTableBins() { for(int icosalpha =0; icosalphadmax) x=dmax; - - if(Constants.getInstance().getT2D()==0) { - - return T2DFunctions.ExpoFcn(x, alpha, bfield, v0[s][r], deltanm[s][r], 0.615, - tmax, dmax, delBf, Bb1, Bb2, Bb3, Bb4, superlayer) + delta_T0[s][r]; - } else { - return T2DFunctions.polyFcnMac(x, alpha, bfield, v0[s][r], vmid[s][r], FracDmaxAtMinVel[s][r], + return polyFcnMac(x, alpha, bfield, v0[s][r], vmid[s][r], FracDmaxAtMinVel[s][r], tmax, dmax, delBf, Bb1, Bb2, Bb3, Bb4, superlayer) ; - } + + } + + public static synchronized double getDeltaTimeBeta(double x, double beta, double distbeta, double v_0) { + + double value = (0.5*Math.pow(beta*beta*distbeta,3)*x/(Math.pow(beta*beta*distbeta,3)+x*x*x))/v_0; + + return value; } + public static double[][] delta_T0 = new double[6][6]; public static double[][] delta_bfield_coefficient = new double[6][6]; - public static double[][] deltanm = new double[6][6]; + public static double[][] distbeta = new double[6][6]; public static double[][] vmid = new double[6][6]; public static double[][] v0 = new double[6][6]; public static double[][] b1 = new double[6][6]; @@ -297,6 +447,31 @@ public static synchronized double calc_Time(double x, double alpha, double bfiel public static double[][] b3 = new double[6][6]; public static double[][] b4 = new double[6][6]; public static double[][] Tmax = new double[6][6]; - public static double[][] FracDmaxAtMinVel = new double[6][6]; // fraction of dmax corresponding to the point in the cell where the velocity is minimal + public static double[][] FracDmaxAtMinVel = new double[6][6]; + private static class FitLine extends Func1D { + + public FitLine(String name, double min, double max, + int s, int r, int ibeta, double alpha, double bfield) { + super(name, min, max); + this.s = s; + this.r = r; + this.ibeta = ibeta; + this.alpha = alpha; + this.bfield = bfield; + } + private final double alpha; + private final double bfield; + private final int ibeta; + private final int s; + private final int r; + + @Override + public double evaluate(double x) { + double timebfield = calc_Time( x, alpha, bfield, s+1, r+1) ; + double deltatime_beta = getDeltaTimeBeta(x,betaValues[ibeta],distbeta[s][r],v0[s][r]); + timebfield+=deltatime_beta; + return timebfield; + } + } } diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TimeToDistanceEstimator.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TimeToDistanceEstimator.java index 141a631ed3..998541d165 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TimeToDistanceEstimator.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TimeToDistanceEstimator.java @@ -1,17 +1,19 @@ package org.jlab.rec.dc.timetodistance; -import java.math.RoundingMode; -import java.text.DecimalFormat; import java.util.logging.Level; import java.util.logging.Logger; +import org.jlab.rec.dc.Constants; +import static org.jlab.rec.dc.timetodistance.TableLoader.BfieldValues; +import static org.jlab.rec.dc.timetodistance.TableLoader.calc_Time; public class TimeToDistanceEstimator { + public TimeToDistanceEstimator() { + // TODO Auto-generated constructor stub } - - private static final Logger LOGGER = Logger.getLogger(TimeToDistanceEstimator.class.getName()); + public boolean t2DPrecisionImprov=false; /** * * @param x value on grid @@ -27,104 +29,224 @@ private double interpolateLinear(double x0, double xa, double xb, double ya, dou x=xb; if(xTableLoader.NBINST-1) { + tHi=TableLoader.NBINST-1; + } + } + double timeLo=2*tLo+1; + double timeHi=2*tHi+1; + //get the beta bins + int binBeta = this.getBetaIdx(beta); + int betaLo = 0; + int betaHi = 0; + double betaCent = TableLoader.betaValues[binBeta]; + if(betaTableLoader.betaValues.length-1) { + betaHi=TableLoader.betaValues.length-1; + } + } + double betaValueLo = TableLoader.betaValues[betaLo]; + double betaValueHigh = TableLoader.betaValues[betaHi]; + //get the Bfield bins double B = Math.abs(Bf); - - int binlowB = this.getBIdx(B); - int binhighB = binlowB + 1; - - if(binhighB > TableLoader.maxBinIdxB) { - binhighB = TableLoader.maxBinIdxB; + int binB = this.getBIdx(B); + double BfCen = BfieldValues[binB]; + int BfLo=0; + int BfHi=0; + if(BTableLoader.BfieldValues.length-1) { + BfHi=TableLoader.BfieldValues.length-1; + } } - - double B1 = TableLoader.BfieldValues[binlowB]; - double B2 = TableLoader.BfieldValues[binhighB]; - - // for alpha ranges - int binlowAlpha = this.getAlphaIdx(alpha); - int binhighAlpha = binlowAlpha + 1; - - if(binhighAlpha > TableLoader.maxBinIdxAlpha) { - binhighAlpha = TableLoader.maxBinIdxAlpha; + double BLo = BfieldValues[BfLo]; + double BHi = BfieldValues[BfHi]; + // get the alpha bins + int alphaBin = this.getAlphaIdx(alpha); + int alphaLo = 0; + int alphaHi = 0; + double alphaCenValue = this.getAlphaFromAlphaIdx(alphaBin); + if(alpha TableLoader.maxBinIdxAlpha) { + alphaHi = TableLoader.maxBinIdxAlpha; + } } - //if(binhighAlpha==binlowAlpha) { - // binlowAlpha=binhighAlpha-1; - //} - - double alpha1 = this.getAlphaFromAlphaIdx(binlowAlpha); - double alpha2 = this.getAlphaFromAlphaIdx(binhighAlpha); + double alphaValueLo = this.getAlphaFromAlphaIdx(alphaLo); + double alphaValueHi = this.getAlphaFromAlphaIdx(alphaHi); // interpolate in B: - double f_B_alpha1_t1 = interpolateLinear(B*B, B1*B1, B2*B2, - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binlowB][binlowAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binlowAlpha)], - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binhighB][binlowAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binhighB, binlowAlpha)]); - double f_B_alpha2_t1 = interpolateLinear(B*B, B1*B1, B2*B2, - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binlowB][binhighAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binhighAlpha)], - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binhighB][binhighAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binhighB, binhighAlpha)]); - double f_B_alpha1_t2 = interpolateLinear(B*B, B1*B1, B2*B2, - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binlowB][binlowAlpha][this.getTimeNextIdx(t, SecIdx, SlyrIdx, binlowB, binlowAlpha)], - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binhighB][binlowAlpha][this.getTimeNextIdx(t, SecIdx, SlyrIdx, binhighB, binlowAlpha)]); - double f_B_alpha2_t2 = interpolateLinear(B*B, B1*B1, B2*B2, - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binlowB][binhighAlpha][this.getTimeNextIdx(t, SecIdx, SlyrIdx, binlowB, binhighAlpha)], - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binhighB][binhighAlpha][this.getTimeNextIdx(t, SecIdx, SlyrIdx, binhighB, binhighAlpha)]); - // interpolate in d for 2 values of alpha: - double f_B_alpha1_t = interpolateLinear(t, this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binlowAlpha)*2., this.getTimeNextIdx(t, SecIdx, SlyrIdx, binhighB, binlowAlpha)*2., f_B_alpha1_t1, f_B_alpha1_t2); - double f_B_alpha2_t = interpolateLinear(t, this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binhighAlpha)*2., this.getTimeNextIdx(t, SecIdx, SlyrIdx, binhighB, binhighAlpha)*2., f_B_alpha2_t1, f_B_alpha2_t2); - //LOGGER.log(Level.FINE, TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binlowB][binlowAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binlowAlpha)]); - //LOGGER.log(Level.FINE, SlyrIdx+" binlowB "+binlowB+" binlowAlpha "+binlowAlpha+" t "+this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binlowAlpha)+" time "+t); - //LOGGER.log(Level.FINE, TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binlowB][binhighAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binhighAlpha)]); - //LOGGER.log(Level.FINE, SlyrIdx+" binlowB "+binlowB+" binhighAlpha "+binhighAlpha+" t "+this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binhighAlpha)+" time "+t); - //LOGGER.log(Level.FINE, TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binhighB][binlowAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binhighB, binlowAlpha)]); - //LOGGER.log(Level.FINE, SlyrIdx+" binhighB "+binhighB+" binlowAlpha "+binlowAlpha+" t "+this.getTimeIdx(t, SecIdx, SlyrIdx, binhighB, binlowAlpha)+" time "+t); - //LOGGER.log(Level.FINE, TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binhighB][binhighAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binhighB, binhighAlpha)]); - //LOGGER.log(Level.FINE, SlyrIdx+" binhighB "+binhighB+" binhighAlpha "+binhighAlpha+" t "+this.getTimeIdx(t, SecIdx, SlyrIdx, binhighB, binhighAlpha)+" time "+t); - //LOGGER.log(Level.FINE, " f_B_alpha1_t1 "+f_B_alpha1_t1+" f_B_alpha2_t1 "+f_B_alpha2_t1 - // +" f_B_alpha1_t2 "+f_B_alpha1_t2+" f_B_alpha2_t2 "+f_B_alpha2_t2 - // +" f_B_alpha1_t "+f_B_alpha1_t+" f_B_alpha2_t "+f_B_alpha2_t); + double Bfc = B*B; + double Bfa = BLo*BLo; + double Bfb = BHi*BHi; + double f_B_alpha1_beta1_t1 = interpolateLinear(Bfc, Bfa, Bfb, + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaLo][betaLo][tLo], + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaLo][betaLo][tLo]); + double f_B_alpha2_beta1_t1 = interpolateLinear(Bfc, Bfa, Bfb, + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaHi][betaLo][tLo], + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaHi][betaLo][tLo]); + double f_B_alpha1_beta1_t2 = interpolateLinear(Bfc, Bfa, Bfb, + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaLo][betaLo][tHi], + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaLo][betaLo][tHi]); + double f_B_alpha2_beta1_t2 = interpolateLinear(Bfc, Bfa, Bfb, + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaHi][betaLo][tHi], + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaHi][betaLo][tHi]); + double f_B_alpha1_beta2_t1 = interpolateLinear(Bfc, Bfa, Bfb, + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaLo][betaHi][tLo], + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaLo][betaHi][tLo]); + double f_B_alpha2_beta2_t1 = interpolateLinear(Bfc, Bfa, Bfb, + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaHi][betaHi][tLo], + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaHi][betaHi][tLo]); + double f_B_alpha1_beta2_t2 = interpolateLinear(Bfc, Bfa, Bfb, + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaLo][betaHi][tHi], + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaLo][betaHi][tHi]); + double f_B_alpha2_beta2_t2 = interpolateLinear(Bfc, Bfa, Bfb, + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaHi][betaHi][tHi], + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaHi][betaHi][tHi]); - // interpolate in alpha: (cos30-cosA) - double f_B_alpha_t = interpolateLinear(Math.cos(Math.toRadians(30.))-Math.cos(Math.toRadians(alpha)), - Math.cos(Math.toRadians(30.))-Math.cos(Math.toRadians(alpha1)), - Math.cos(Math.toRadians(30.))-Math.cos(Math.toRadians(alpha2)), f_B_alpha1_t, f_B_alpha2_t); + //interpolate in alpha + double f_B_alpha_beta1_t1 = interpolateLinear(alpha, alphaValueLo, alphaValueHi, f_B_alpha1_beta1_t1, f_B_alpha2_beta1_t1); + double f_B_alpha_beta2_t1 = interpolateLinear(alpha, alphaValueLo, alphaValueHi, f_B_alpha1_beta2_t1, f_B_alpha2_beta2_t1); + double f_B_alpha_beta1_t2 = interpolateLinear(alpha, alphaValueLo, alphaValueHi, f_B_alpha1_beta1_t2, f_B_alpha2_beta1_t2); + double f_B_alpha_beta2_t2 = interpolateLinear(alpha, alphaValueLo, alphaValueHi, f_B_alpha1_beta2_t2, f_B_alpha2_beta2_t2); + //interpolate in beta + double f_B_alpha_beta_t1 = interpolateLinear(beta, betaValueLo, betaValueHigh,f_B_alpha_beta1_t1,f_B_alpha_beta2_t1); + double f_B_alpha_beta_t2 = interpolateLinear(beta, betaValueLo, betaValueHigh,f_B_alpha_beta1_t2,f_B_alpha_beta2_t2); + //interpolate in time + double f_B_alpha_beta_t = interpolateLinear(t, timeLo, timeHi, f_B_alpha_beta_t1, f_B_alpha_beta_t2); + + double x = f_B_alpha_beta_t; +// String st =new String(); +// st +="time "+t+" beta "+beta+" BETA: ["+betaValueLo+" "+betaCent+" "+betaValueHigh+"]"+" alpha "+alpha+"\n"; +// st +=(" f_B_alpha1_beta1_t1 "+f_B_alpha1_beta1_t1+" f_B_alpha2_beta1_t1 "+f_B_alpha2_beta1_t1+"\n"); +// st +=(" f_B_alpha1_beta2_t1 "+f_B_alpha1_beta2_t1+" f_B_alpha2_beta2_t1 "+f_B_alpha2_beta2_t1+"\n"); +// st +=(" f_B_alpha1_beta1_t2 "+f_B_alpha1_beta1_t2+" f_B_alpha2_beta1_t2 "+f_B_alpha2_beta1_t2+"\n"); +// st +=(" f_B_alpha1_beta2_t2 "+f_B_alpha1_beta2_t2+" f_B_alpha2_beta2_t2 "+f_B_alpha2_beta2_t2+"\n"); +// st +=(" f_B_alpha_beta1_t1 "+f_B_alpha_beta1_t1+" f_B_alpha_beta2_t1 "+f_B_alpha_beta2_t1+"\n"); +// st +=(" f_B_alpha_beta1_t2 "+f_B_alpha_beta1_t2+" f_B_alpha_beta2_t2 "+f_B_alpha_beta2_t2+"\n"); +// st +=(" f_B_alpha_beta_t1 "+f_B_alpha_beta_t1+" f_B_alpha_beta_t2 "+f_B_alpha_beta_t2+"\n"); +// st +=(" f_B_alpha_t "+f_B_alpha_beta_t+"\n"); + + double dmax = 2.*Constants.getInstance().wpdist[SlyrIdx]; +// st +=(" x "+x+" dmax "+dmax+"\n"); + + if(x>dmax) { +// setDebug(st); + return dmax; + } + if(!this.t2DPrecisionImprov) return x; + //Reolution improvement to compensate for non-linearity accross bin not accounted for in interpolation + double calctime = calc_Time( x, alpha, B, SecIdx+1, SlyrIdx+1) ; + double deltatime_beta = TableLoader.getDeltaTimeBeta(x,beta,TableLoader.distbeta[SecIdx][SlyrIdx],TableLoader.v0[SecIdx][SlyrIdx]); + calctime+=deltatime_beta; +// st +=(" t "+t+" calctime "+calctime+" deltatime_beta "+deltatime_beta+"\n"); + if(calctime>t) { + double tref=0; + for(int i = 1; i<100; i++) { + x-=0.0001*i; + if(x<0) return x; + calctime = calc_Time( x, alpha, B, SecIdx+1, SlyrIdx+1) ; + deltatime_beta = TableLoader.getDeltaTimeBeta(x,beta,TableLoader.distbeta[SecIdx][SlyrIdx],TableLoader.v0[SecIdx][SlyrIdx]); + calctime+=deltatime_beta; +// st +=(i+"] x "+x+" t "+t+" calct "+calctime+"\n"); + if(calctimecalctime) { + double tref=0; + for(int i = 1; i<100; i++) { + x+=0.0001*i; + calctime = calc_Time( x, alpha, B, SecIdx+1, SlyrIdx+1) ; + deltatime_beta = TableLoader.getDeltaTimeBeta(x,beta,TableLoader.distbeta[SecIdx][SlyrIdx],TableLoader.v0[SecIdx][SlyrIdx]); + calctime+=deltatime_beta; +// st +=(i+"] x "+x+" t "+t+" calct "+calctime+"\n"); + if(x>dmax) { +// setDebug(st); + return dmax; + } + if(tTableLoader.maxTBin) { - binIdx = TableLoader.maxTBin ; - } - - return binIdx; + public int getTimeIdx(double t1) { + int idx=(int) Math.floor(t1 / TableLoader.timeBinWidth); + if(idx<0) idx=0; + return idx; } + /** * * @param b1 bfield value in T * @return B field bin */ - public int getBIdx(double b1) { - -// int binIdx = (int) ((1+b1)*2) -2; -// if(binIdx<0) { -// binIdx = TableLoader.minBinIdxB; -// } -// if(binIdx>TableLoader.maxBinIdxB) { -// binIdx = TableLoader.maxBinIdxB; -// } + public int getBIdx(double b1) { + int binIdx = (int) Math.floor(b1*b1); int maxBinIdxB = TableLoader.BfieldValues.length-1; - DecimalFormat df = new DecimalFormat("#"); - df.setRoundingMode(RoundingMode.CEILING); - - int binIdx =0; - try{ - binIdx = Integer.parseInt(df.format(b1*b1) ) -1; - } catch (NumberFormatException e) { - LOGGER.log(Level.WARNING, " field bin error "+b1+" "); - } + if(binIdx<0) { binIdx = 0; } if(binIdx>maxBinIdxB) binIdx = maxBinIdxB; + return binIdx; } /** @@ -220,34 +311,18 @@ private int getAlphaIdx(double alpha) { } return binIdx; } - - private int getTimeNextIdx(double t, int SecIdx, int SlyrIdx, int binlowB, int binlowAlpha) { - int binlowT = this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binlowAlpha); - int binhighT = binlowT + 1; - - if(binhighT>TableLoader.maxBinIdxT[SecIdx][SlyrIdx][binlowB][binlowAlpha]) { - binhighT=TableLoader.maxBinIdxT[SecIdx][SlyrIdx][binlowB][binlowAlpha]; - } - return binhighT; - } - /** - * @param slyIdx superlayer index - * @param time - * @return test doca corr - */ - public double addDOCACorr(double time, int slyIdx) { - double dDoca = 0; - if(slyIdx+1 == 5 || slyIdx+1 ==6) { - if(time>600) { - dDoca = 0.15; - } else { - dDoca = (7.6e-3 - 2.4e-4*time +9.8e-3*time*time - 3.8e-6*time*time*time)*5.5410595e-05; + private int getBetaIdx(double beta) { + if(beta>=1.0) return TableLoader.betaValues.length-1; + int value = TableLoader.betaValues.length-1; + for(int i = 0; i=TableLoader.betaValues[i] && beta findStraightTracks(CrossList crossList, DCGeant4Factory DcDe continue; } - List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef); - StateVec fn = new StateVec(); if (!kFZRef.setFitFailed && kFZRef.finalStateVec != null) { fn.set(kFZRef.finalStateVec.x, kFZRef.finalStateVec.y, kFZRef.finalStateVec.tx, kFZRef.finalStateVec.ty); @@ -927,6 +925,11 @@ private List findStraightTracks(CrossList crossList, DCGeant4Factory DcDe cand.set_FitConvergenceStatus(kFZRef.ConvStatus); cand.set_Id(cands.size() + 1); cand.set_CovMat(kFZRef.finalStateVec.CM); + + Point3D VTCS = cand.get(cand.size()-1).getCoordsInTiltedSector(cand.get_Vtx0().x(), cand.get_Vtx0().y(), cand.get_Vtx0().z()); + double deltaPathToVtx = kFZRef.getDeltaPathToVtx(cand.get(cand.size()-1).get_Sector(), VTCS.z()); + + List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef, deltaPathToVtx); cand.setStateVecs(kfStateVecsAlongTrajectory); // add candidate to list of tracks @@ -1071,7 +1074,6 @@ private List findCurvedTracks(CrossList crossList, DCGeant4Factory DcDete kFZRef.init(measSurfaces, initSV); kFZRef.runFitter(); - List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef); if (kFZRef.finalStateVec == null) { continue; @@ -1093,15 +1095,21 @@ private List findCurvedTracks(CrossList crossList, DCGeant4Factory DcDete cand.set_FitNDF(kFZRef.NDF); cand.set_FitConvergenceStatus(kFZRef.ConvStatus); - cand.set_CovMat(kFZRef.finalStateVec.CM); - cand.setStateVecs(kfStateVecsAlongTrajectory); - + cand.set_CovMat(kFZRef.finalStateVec.CM); + cand.setFinalStateVec(fitStateVec); cand.set_Id(cands.size() + 1); this.setTrackPars(cand, traj, trjFind, fitStateVec, fitStateVec.getZ(), DcDetector, dcSwim); + + Point3D VTCS = cand.get(cand.size()-1).getCoordsInTiltedSector(cand.get_Vtx0().x(), cand.get_Vtx0().y(), cand.get_Vtx0().z()); + double deltaPathToVtx = kFZRef.getDeltaPathToVtx(cand.get(cand.size()-1).get_Sector(), VTCS.z()); + + List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef, deltaPathToVtx); + cand.setStateVecs(kfStateVecsAlongTrajectory); + // add candidate to list of tracks if (cand.fit_Successful = true) { cands.add(cand); @@ -1117,7 +1125,7 @@ private List findCurvedTracks(CrossList crossList, DCGeant4Factory DcDete return cands; } - public List setKFStateVecsAlongTrajectory(KFitter kFZRef) { + public List setKFStateVecsAlongTrajectory(KFitter kFZRef, double deltaPathToVtx) { List kfStateVecsAlongTrajectory = new ArrayList<>(); for(int i = 0; i < kFZRef.kfStateVecsAlongTrajectory.size(); i++) { @@ -1125,7 +1133,7 @@ public List setKFStateVecsAlongTrajectory(K org.jlab.rec.dc.trajectory.StateVec sv = new org.jlab.rec.dc.trajectory.StateVec(svc.x, svc.y, svc.tx, svc.ty); sv.setZ(svc.z); sv.setB(svc.B); - sv.setPathLength(svc.getPathLength()); + sv.setPathLength(svc.getPathLength() + deltaPathToVtx); // Transition for the starting point from the final point at the last layer to vertex sv.setProjector(svc.getProjector()); sv.setProjectorDoca(svc.getProjectorDoca()); kfStateVecsAlongTrajectory.add(sv); @@ -1134,7 +1142,7 @@ public List setKFStateVecsAlongTrajectory(K return kfStateVecsAlongTrajectory; } - public List setKFStateVecsAlongTrajectory(KFitterStraight kFZRef) { + public List setKFStateVecsAlongTrajectory(KFitterStraight kFZRef, double deltaPathToVtx) { List kfStateVecsAlongTrajectory = new ArrayList<>(); for(int i = 0; i < kFZRef.kfStateVecsAlongTrajectory.size(); i++) { @@ -1142,7 +1150,7 @@ public List setKFStateVecsAlongTrajectory(K org.jlab.rec.dc.trajectory.StateVec sv = new org.jlab.rec.dc.trajectory.StateVec(svc.x, svc.y, svc.tx, svc.ty); sv.setZ(svc.z); sv.setB(svc.B); - sv.setPathLength(svc.getPathLength()); + sv.setPathLength(svc.getPathLength() + deltaPathToVtx); // Transition for the starting point from the final point at the last layer to vertex sv.setProjector(svc.getProjector()); sv.setProjectorDoca(svc.getProjectorDoca()); kfStateVecsAlongTrajectory.add(sv); diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java index 2bd9d1e9f9..5ecf48569d 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java @@ -90,13 +90,13 @@ public boolean processDataEvent(DataEvent event) { Swim dcSwim = new Swim(); // fill T2D table - if(Constants.getInstance().getT2D()==0) { - TableLoader.Fill(this.getConstantsManager().getConstants(run, Constants.TIME2DIST)); - } else { +// if(Constants.getInstance().getT2D()==0) { +// TableLoader.Fill(this.getConstantsManager().getConstants(run, Constants.TIME2DIST)); +// } else { TableLoader.Fill(this.getConstantsManager().getConstants(run, Constants.T2DPRESSURE), this.getConstantsManager().getConstants(run, Constants.T2DPRESSUREREF), this.getConstantsManager().getConstants(run, Constants.PRESSURE)); - } +// } ClusterFitter cf = new ClusterFitter(); ClusterCleanerUtilities ct = new ClusterCleanerUtilities(); @@ -235,7 +235,6 @@ public boolean processDataEvent(DataEvent event) { getInitState(TrackArray1, measSurfaces.get(0).measPoint.z(), initSV, kFZRef, dcSwim, new float[3]); kFZRef.initFromHB(measSurfaces, initSV, TrackArray1.get(0).get(0).get(0).get_Beta()); kFZRef.runFitter(); - List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef); StateVec fn = new StateVec(); if (kFZRef.setFitFailed==false && kFZRef.finalStateVec!=null) { @@ -253,15 +252,18 @@ public boolean processDataEvent(DataEvent event) { TrackArray1.set_FitChi2(kFZRef.chi2); TrackArray1.set_FitNDF(kFZRef.NDF); - TrackArray1.setStateVecs(kfStateVecsAlongTrajectory); TrackArray1.set_FitConvergenceStatus(kFZRef.ConvStatus); if (TrackArray1.get_Vtx0().toVector3D().mag() > 500) { continue; } - + // get CovMat at vertex - Point3D VTCS = crosses.get(0).getCoordsInSector(TrackArray1.get_Vtx0().x(), TrackArray1.get_Vtx0().y(), TrackArray1.get_Vtx0().z()); + Point3D VTCS = crosses.get(0).getCoordsInTiltedSector(TrackArray1.get_Vtx0().x(), TrackArray1.get_Vtx0().y(), TrackArray1.get_Vtx0().z()); TrackArray1.set_CovMat(kFZRef.propagateToVtx(crosses.get(0).get_Sector(), VTCS.z())); + + double deltaPathToVtx = kFZRef.getDeltaPathToVtx(TrackArray1.get(TrackArray1.size()-1).get_Sector(), VTCS.z()); + List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef, deltaPathToVtx); + TrackArray1.setStateVecs(kfStateVecsAlongTrajectory); if (TrackArray1.isGood()) { trkcands.add(TrackArray1); @@ -277,8 +279,6 @@ public boolean processDataEvent(DataEvent event) { kFZRef.initFromHB(measSurfaces, initSV, TrackArray1.get(0).get(0).get(0).get_Beta(), useDAF); kFZRef.runFitter(useDAF); - List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef); - StateVec fn = new StateVec(); if (kFZRef.setFitFailed==false && kFZRef.finalStateVec!=null) { // set the state vector at the last measurement site @@ -296,15 +296,18 @@ public boolean processDataEvent(DataEvent event) { TrackArray1.set_FitChi2(kFZRef.chi2); TrackArray1.set_FitNDF(kFZRef.NDF); TrackArray1.set_NDFDAF(kFZRef.getNDFDAF()); - TrackArray1.setStateVecs(kfStateVecsAlongTrajectory); TrackArray1.set_FitConvergenceStatus(kFZRef.ConvStatus); if (TrackArray1.get_Vtx0().toVector3D().mag() > 500) { continue; } // get CovMat at vertex - Point3D VTCS = crosses.get(0).getCoordsInSector(TrackArray1.get_Vtx0().x(), TrackArray1.get_Vtx0().y(), TrackArray1.get_Vtx0().z()); + Point3D VTCS = crosses.get(0).getCoordsInTiltedSector(TrackArray1.get_Vtx0().x(), TrackArray1.get_Vtx0().y(), TrackArray1.get_Vtx0().z()); TrackArray1.set_CovMat(kFZRef.propagateToVtx(crosses.get(0).get_Sector(), VTCS.z())); + + double deltaPathToVtx = kFZRef.getDeltaPathToVtx(TrackArray1.get(TrackArray1.size()-1).get_Sector(), VTCS.z()); + List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef, deltaPathToVtx); + TrackArray1.setStateVecs(kfStateVecsAlongTrajectory); if (TrackArray1.isGood()) { trkcands.add(TrackArray1); @@ -361,7 +364,7 @@ public boolean processDataEvent(DataEvent event) { return true; } - public List setKFStateVecsAlongTrajectory(KFitter kFZRef) { + public List setKFStateVecsAlongTrajectory(KFitter kFZRef, double deltaPathToVtx) { List kfStateVecsAlongTrajectory = new ArrayList<>(); for(int i = 0; i < kFZRef.kfStateVecsAlongTrajectory.size(); i++) { @@ -369,7 +372,7 @@ public List setKFStateVecsAlongTrajectory(K org.jlab.rec.dc.trajectory.StateVec sv = new org.jlab.rec.dc.trajectory.StateVec(svc.x, svc.y, svc.tx, svc.ty); sv.setZ(svc.z); sv.setB(svc.B); - sv.setPathLength(svc.getPathLength()); + sv.setPathLength(svc.getPathLength() + deltaPathToVtx); // Transition for the starting point from the final point at the last layer to vertex sv.setProjector(svc.getProjector()); sv.setProjectorDoca(svc.getProjectorDoca()); sv.setDAFWeight(svc.getFinalDAFWeight()); @@ -380,7 +383,7 @@ public List setKFStateVecsAlongTrajectory(K return kfStateVecsAlongTrajectory; } - public List setKFStateVecsAlongTrajectory(KFitterStraight kFZRef) { + public List setKFStateVecsAlongTrajectory(KFitterStraight kFZRef, double deltaPathToVtx) { List kfStateVecsAlongTrajectory = new ArrayList<>(); for(int i = 0; i < kFZRef.kfStateVecsAlongTrajectory.size(); i++) { @@ -388,7 +391,7 @@ public List setKFStateVecsAlongTrajectory(K org.jlab.rec.dc.trajectory.StateVec sv = new org.jlab.rec.dc.trajectory.StateVec(svc.x, svc.y, svc.tx, svc.ty); sv.setZ(svc.z); sv.setB(svc.B); - sv.setPathLength(svc.getPathLength()); + sv.setPathLength(svc.getPathLength() + deltaPathToVtx); // Transition for the starting point from the final point at the last layer to vertex sv.setProjector(svc.getProjector()); sv.setProjectorDoca(svc.getProjectorDoca()); kfStateVecsAlongTrajectory.add(sv); From f1aaacaba50eb28bb08bb70c5836bda069fcd7c3 Mon Sep 17 00:00:00 2001 From: Tongtong Cao Date: Mon, 24 Mar 2025 17:12:20 -0400 Subject: [PATCH 002/100] Update DC reconstruction at the denoisinng level (#499) * cancel SNR and change limit of total DC hits from raw hits to hits after denoising * remove unused codes --- .../java/org/jlab/rec/dc/banks/HitReader.java | 62 +++---------------- .../org/jlab/service/dc/DCHBClustering.java | 29 +++------ .../java/org/jlab/service/dc/DCHBEngine.java | 45 +++++--------- 3 files changed, 30 insertions(+), 106 deletions(-) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java index 102e9a4b47..49adb67ff1 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java @@ -205,65 +205,24 @@ private int getJitter(int sector, int layer, int wire, int order) { } return jitter; } - - public void fetch_DCHits(DataEvent event, Clas12NoiseAnalysis noiseAnalysis, - NoiseReductionParameters parameters, - Clas12NoiseResult results) { - this.initialize(event); - this.fetch_DCHits(noiseAnalysis, parameters, results); - } - + /** * reads the hits using clas-io methods to get the EvioBank for the DC and * fill the values to instantiate the DChit and MChit classes.This methods * fills the DChit list of hits. - * - * @param noiseAnalysis - * @param parameters - * @param results */ - private void fetch_DCHits(Clas12NoiseAnalysis noiseAnalysis, - NoiseReductionParameters parameters, - Clas12NoiseResult results) { - - _DCHits = new ArrayList<>(); - - IndexedList noise = new IndexedList<>(4); + public void fetch_DCHits(DataEvent event) { + this.initialize(event); - RawDataBank bankDGTZ = new RawDataBank(bankNames.getTdcBank(), OrderGroups.NODENOISE); - bankDGTZ.read(event); - - // event selection, including cut on max number of hits - if( run <= 0 || - tiTimeStamp < 0 || - bankDGTZ.rows()==0 || bankDGTZ.rows()>Constants.MAXHITS ) { - return; - } - else { - int rows = bankDGTZ.rows(); - int[] sector = new int[rows]; - int[] layer = new int[rows]; - int[] superlayer = new int[rows]; - int[] wire = new int[rows]; - for (int i = 0; i < rows; i++) { - sector[i] = bankDGTZ.getByte("sector", i); - layer[i] = (bankDGTZ.getByte("layer", i)-1)%6 + 1; - superlayer[i] = (bankDGTZ.getByte("layer", i)-1)/6 + 1; - wire[i] = bankDGTZ.getShort("component", i); - } - results.clear(); - noiseAnalysis.clear(); - noiseAnalysis.findNoise(sector, superlayer, layer, wire, results); - for(int i=0; i(); this.getDCRBJitters(Constants.getInstance().isSWAPDCRBBITS()); RawDataBank bankFiltered = new RawDataBank(bankNames.getTdcBank(), rawBankOrders); bankFiltered.read(event); + + if(run <= 0 || tiTimeStamp < 0 || bankFiltered.rows() > Constants.MAXHITS) return; + this.set_NumTDCBankRows(bankFiltered.rows()); for (int i = 0; i < bankFiltered.rows(); i++) { int sector = bankFiltered.getByte("sector", i); @@ -279,12 +238,7 @@ private void fetch_DCHits(Clas12NoiseAnalysis noiseAnalysis, if (wirestat != null) { if (wirestat.getIntValue("status", sector, layer+(superlayer-1)*6, wire) != 0) passHit = false; - } - - if(noise.hasItem(sector, superlayer, layer, wire)) { - if(noise.getItem(sector, superlayer, layer, wire)) - passHit = false; - } + } if (passHit && wire != -1 && !(superlayer == 0)) { diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBClustering.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBClustering.java index 978ae61e2f..f6d0e5f7ab 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBClustering.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBClustering.java @@ -1,9 +1,5 @@ package org.jlab.service.dc; -import cnuphys.snr.NoiseReductionParameters; -import cnuphys.snr.clas12.Clas12NoiseAnalysis; -import cnuphys.snr.clas12.Clas12NoiseResult; - import java.util.List; import org.jlab.clas.swimtools.Swim; import org.jlab.io.base.DataEvent; @@ -45,27 +41,16 @@ public boolean processDataEvent(DataEvent event) { // get Field Swim dcSwim = new Swim(); /* 2 */ - // init SNR - Clas12NoiseResult results = new Clas12NoiseResult(); + ClusterFitter cf = new ClusterFitter(); /* 3 */ - Clas12NoiseAnalysis noiseAnalysis = new Clas12NoiseAnalysis(); + ClusterCleanerUtilities ct = new ClusterCleanerUtilities(); /* 4 */ - NoiseReductionParameters parameters = - new NoiseReductionParameters( - 2, - Constants.SNR_LEFTSHIFTS, - Constants.SNR_RIGHTSHIFTS); + RecoBankWriter rbc = new RecoBankWriter(this.getBanks()); /* 5 */ - ClusterFitter cf = new ClusterFitter(); + HitReader hitRead = new HitReader(this.getBanks(), this.getRawBankOrders(), super.getConstantsManager(), Constants.getInstance().dcDetector); /* 6 */ - ClusterCleanerUtilities ct = new ClusterCleanerUtilities(); + hitRead.fetch_DCHits(event); /* 7 */ - RecoBankWriter rbc = new RecoBankWriter(this.getBanks()); - /* 8 */ - HitReader hitRead = new HitReader(this.getBanks(), this.getRawBankOrders(), super.getConstantsManager(), Constants.getInstance().dcDetector); - /* 9 */ - hitRead.fetch_DCHits(event, noiseAnalysis, parameters, results); - /* 10 */ //I) get the hits List hits = hitRead.get_DCHits(Constants.getInstance().SECTORSELECT); //II) process the hits @@ -73,7 +58,7 @@ public boolean processDataEvent(DataEvent event) { if (hits.isEmpty()) { return true; } - /* 11 */ + /* 8 */ //2) find the clusters from these hits ClusterFinder clusFinder = new ClusterFinder(); List clusters = clusFinder.FindHitBasedClusters(hits, @@ -84,7 +69,7 @@ public boolean processDataEvent(DataEvent event) { return true; } else { List fhits = rbc.createRawHitList(hits); - /* 13 */ + /* 9 */ rbc.updateListsWithClusterInfo(fhits, clusters); event.appendBanks(rbc.fillHitsBank(event, fhits), rbc.fillHBClustersBank(event, clusters) diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBEngine.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBEngine.java index eae796665e..c25bc4f479 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBEngine.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBEngine.java @@ -1,9 +1,5 @@ package org.jlab.service.dc; -import cnuphys.snr.NoiseReductionParameters; -import cnuphys.snr.clas12.Clas12NoiseAnalysis; -import cnuphys.snr.clas12.Clas12NoiseResult; - import java.util.ArrayList; import java.util.List; @@ -69,28 +65,17 @@ public boolean processDataEvent(DataEvent event) { // get Field Swim dcSwim = new Swim(); /* 2 */ - // init SNR - Clas12NoiseResult results = new Clas12NoiseResult(); - /* 3 */ - Clas12NoiseAnalysis noiseAnalysis = new Clas12NoiseAnalysis(); - /* 4 */ - NoiseReductionParameters parameters = - new NoiseReductionParameters( - 2, - Constants.SNR_LEFTSHIFTS, - Constants.SNR_RIGHTSHIFTS); - /* 5 */ ClusterFitter cf = new ClusterFitter(); - /* 6 */ + /* 3 */ ClusterCleanerUtilities ct = new ClusterCleanerUtilities(); - /* 7 */ + /* 4 */ RecoBankWriter rbc = new RecoBankWriter(this.getBanks()); - /* 8 */ + /* 5 */ HitReader hitRead = new HitReader(this.getBanks(), this.getRawBankOrders(), super.getConstantsManager(), Constants.getInstance().dcDetector); - /* 9 */ - hitRead.fetch_DCHits(event, noiseAnalysis, parameters, results); + /* 6 */ + hitRead.fetch_DCHits(event); - /* 10 */ + /* 7 */ //I) get the hits List hits = hitRead.get_DCHits(); //II) process the hits @@ -98,7 +83,7 @@ public boolean processDataEvent(DataEvent event) { if (hits.isEmpty()) { return true; } - /* 11 */ + /* 8 */ //2) find the clusters from these hits ClusterFinder clusFinder = new ClusterFinder(); List clusters = clusFinder.FindHitBasedClusters(hits, @@ -108,17 +93,17 @@ public boolean processDataEvent(DataEvent event) { if (clusters.isEmpty()) { return true; } - /* 12 */ + /* 9 */ List fhits = rbc.createRawHitList(hits); - /* 13 : assign cluster IDs to hits: if hit is associated to two clusters, the second survives*/ + /* 10 : assign cluster IDs to hits: if hit is associated to two clusters, the second survives*/ rbc.updateListsWithClusterInfo(fhits, clusters); - /* 14 */ + /* 11 */ //3) find the segments from the fitted clusters SegmentFinder segFinder = new SegmentFinder(); List segments = segFinder.get_Segments(clusters, event, Constants.getInstance().dcDetector, false); - /* 15 */ + /* 12 */ // need 6 segments to make a trajectory if (segments.isEmpty()) { rbc.fillAllHBBanks(event, @@ -142,7 +127,7 @@ public boolean processDataEvent(DataEvent event) { } } segments.removeAll(rmSegs); - /* 16 */ + /* 13 */ CrossMaker crossMake = new CrossMaker(); List crosses = crossMake.find_Crosses(segments, Constants.getInstance().dcDetector); if (crosses.isEmpty()) { @@ -154,7 +139,7 @@ public boolean processDataEvent(DataEvent event) { null); return true; } - /* 17 */ + /* 14 */ CrossListFinder crossLister = new CrossListFinder(); CrossList crosslist = crossLister.candCrossLists(event, crosses, @@ -163,14 +148,14 @@ public boolean processDataEvent(DataEvent event) { Constants.getInstance().dcDetector, null, dcSwim, false); - /* 18 */ + /* 15 */ //6) find the list of track candidates TrackCandListFinder trkcandFinder = new TrackCandListFinder(Constants.HITBASE); List trkcands = trkcandFinder.getTrackCands(crosslist, Constants.getInstance().dcDetector, Swimmer.getTorScale(), dcSwim, false); - /* 19 */ + /* 16 */ // track found int trkId = 1; From 892493803b292df11fee175cf70b987fdc2430e5 Mon Sep 17 00:00:00 2001 From: Tongtong Cao Date: Mon, 24 Mar 2025 17:13:39 -0400 Subject: [PATCH 003/100] reset limit for prob in DC clustering and cancel requirement that no skipped layer for cluster candidates from splitter (#500) --- .../dc/cluster/ClusterCleanerUtilities.java | 40 ++++++------------- .../jlab/rec/dc/cluster/ClusterFinder.java | 3 +- 2 files changed, 15 insertions(+), 28 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 b2b37c20f1..6ab72f997e 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 @@ -188,34 +188,20 @@ public List ClusterSplitter(FittedCluster clus, int nextClsStartI } } } - //no gaps - List contigArrayOfHits = new ArrayList<>(); //contiguous cluster - - boolean passCluster = true; - for (int l = 1; l <= Constants.NLAYR; l++) { - for (int i = 0; i < newClus.size(); i++) { - if (newClus.get(i).get_Layer() == l) { - contigArrayOfHits.add(newClus.get(i)); - } - } - } - for (int i = 0; i < contigArrayOfHits.size() - 1; i++) { //if there is a gap do not include in list - if (contigArrayOfHits.get(i + 1).get_Layer() - contigArrayOfHits.get(i).get_Layer() > 1) { - passCluster = false; + + //Limits for cluster candiates + boolean passCluster = false; + int nLayers = count_nlayers_in_cluster(newClus); + if((!isExceptionalCluster(newClus) && nLayers >= Constants.DC_MIN_NLAYERS) + || (isExceptionalCluster(newClus) && nLayers >= Constants.DC_MIN_NLAYERS - 1)) { + //require consistency with line + cf.SetFitArray(newClus, "LC"); + cf.Fit(newClus, true); + if ((nLayers == 6 && newClus.get_fitProb() > 0.9) || (nLayers == 5 && newClus.get_fitProb() > 0.85) + || (nLayers == 4 && newClus.get_fitProb() > 0.75) || (nLayers == 3 && newClus.get_fitProb() > 0.65)) { + passCluster = true; } } - //require 4 layers to make a cluster - if ((!isExceptionalCluster(contigArrayOfHits) && count_nlayers_in_cluster(contigArrayOfHits) < Constants.DC_MIN_NLAYERS) - || (isExceptionalCluster(contigArrayOfHits) && count_nlayers_in_cluster(contigArrayOfHits) < Constants.DC_MIN_NLAYERS - 1)) { - passCluster = false; - } - - //require consistency with line - cf.SetFitArray(newClus, "LC"); - cf.Fit(newClus, true); - if (newClus.get_fitProb() < 0.9) { - passCluster = false; - } if (!(splitclusters.contains(newClus)) && passCluster) { splitclusters.add(newClus); @@ -314,7 +300,7 @@ public int count_nlayers_hit(Hit[] hits_inlayer) { * @param hitsInClus the hits in a cluster * @return the number of layers in a cluster */ - int count_nlayers_in_cluster(List hitsInClus) { + int count_nlayers_in_cluster(List hitsInClus) { // count hits in each layer int nlayr = 6; int[] nlayers = new int[nlayr]; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterFinder.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterFinder.java index d9b8eb2ab8..a2d1b735fe 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterFinder.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterFinder.java @@ -236,7 +236,8 @@ public List FindHitBasedClusters(List allhits, ClusterCleane int idSharedHits = numTDCBankRows + 10000; for (FittedCluster clus : fittedClusList) { if (clus != null && ((!ct.isExceptionalFittedCluster(clus) && clus.size() >= Constants.DC_MIN_NLAYERS) || - (ct.isExceptionalFittedCluster(clus) && clus.size() >= Constants.DC_MIN_NLAYERS-1)) && clus.get_fitProb()>Constants.HITBASEDTRKGMINFITHI2PROB) { + (ct.isExceptionalFittedCluster(clus) && clus.size() >= Constants.DC_MIN_NLAYERS-1)) + && ((ct.count_nlayers_in_cluster(clus) < Constants.DC_MIN_NLAYERS && clus.get_fitProb() > 0.4) || (ct.count_nlayers_in_cluster(clus) >= Constants.DC_MIN_NLAYERS && clus.get_fitProb()>Constants.HITBASEDTRKGMINFITHI2PROB))) { // update the hits for (FittedHit fhit : clus) { From 395135196c5556a3aebe3911769a3853f47e5d0b Mon Sep 17 00:00:00 2001 From: baltzell Date: Mon, 24 Mar 2025 13:31:52 -0400 Subject: [PATCH 004/100] pass 2 additional values --- .../java/org/jlab/detector/decode/CLASDecoder4.java | 1 + .../java/org/jlab/detector/pulse/HipoExtractor.java | 12 ++++++++---- .../java/org/jlab/detector/pulse/IExtractor.java | 2 +- .../src/main/java/org/jlab/detector/pulse/Mode3.java | 4 +++- .../src/main/java/org/jlab/detector/pulse/Mode7.java | 4 ++-- .../main/java/org/jlab/detector/pulse/ModeAHDC.java | 6 +----- etc/bankdefs/hipo4/data.json | 3 ++- 7 files changed, 18 insertions(+), 14 deletions(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java index 763042a2d4..a11ff73f98 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java @@ -260,6 +260,7 @@ public Bank getDataBankWF(String name, DetectorType type) { b.putShort("component", i, (short) a.get(i).getDescriptor().getComponent()); b.putByte("order", i, (byte) a.get(i).getDescriptor().getOrder()); b.putLong("timestamp", i, a.get(i).getADCData(0).getTimeStamp()); + b.putInt("time", i, (int)a.get(i).getADCData(0).getTime()); DetectorDataDgtz.ADCData xxx = a.get(i).getADCData(0); for (int j=0; j getPulses(int n, IndexedTable it, DataBank wfBank) { for (int i=0; i p = it==null ? extract(null, i, samples) : - extract(it.getNamedEntry(getIndices(wfBank,i)), i, samples); + long timestamp = wfBank.getLong("timestamp",i); + long time = wfBank.getLong("time",i); + List p = it==null ? extract(null, i, timestamp, time, samples) : + extract(it.getNamedEntry(getIndices(wfBank,i)), i, timestamp, time, samples); if (p!=null && !p.isEmpty()) { if (pulses == null) pulses = new ArrayList<>(); pulses.addAll(p); @@ -147,8 +149,10 @@ protected List getPulses(int n, IndexedTable it, Bank wfBank) { samples[j] = wfBank.getShort(String.format("s%d",j+1), i); // FIXME: Can speed this up (but looks like not for DataBank?): //samples[j] = wfBank.getShort(String.format(5+j,j+1), i); - List p = it==null ? extract(null, i, samples) : - extract(it.getNamedEntry(getIndices(wfBank,i)), i, samples); + long time = wfBank.getLong("time",i); + long timestamp = wfBank.getLong("timestamp",i); + List p = it==null ? extract(null, i, timestamp, time, samples) : + extract(it.getNamedEntry(getIndices(wfBank,i)), i, timestamp, time, samples); if (p!=null && !p.isEmpty()) { if (pulses == null) pulses = new ArrayList<>(); pulses.addAll(p); diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/IExtractor.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/IExtractor.java index bfa765d84e..fac170f6b8 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/IExtractor.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/IExtractor.java @@ -5,6 +5,6 @@ public interface IExtractor { - public List extract(NamedEntry pars, int id, short... samples); + public List extract(NamedEntry pars, int id, long par1, long par2, short... samples); } diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/Mode3.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/Mode3.java index bf4049f60a..23e1289606 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/Mode3.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/Mode3.java @@ -20,11 +20,13 @@ public class Mode3 extends HipoExtractor { /** * @param pars CCDB row * @param id link to row in source bank + * @param par1 + * @param par2 * @param samples ADC samples * @return extracted pulses */ @Override - public List extract(NamedEntry pars, int id, short... samples) { + public List extract(NamedEntry pars, int id, long par1, long par2, short... samples) { List pulses = null; diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/Mode7.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/Mode7.java index b7f58f2c70..883b150aa2 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/Mode7.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/Mode7.java @@ -29,8 +29,8 @@ private static float calculateTime(int t0, float ped, short... samples) { } @Override - public List extract(NamedEntry pars, int id, short... samples) { - List pulses = super.extract(pars, id, samples); + public List extract(NamedEntry pars, int id, long par1, long par2, short... samples) { + List pulses = super.extract(pars, id, par1, par2, samples); for (Pulse p : pulses) p.time = calculateTime((int)p.time, p.pedestal, samples); return pulses; diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java index 26038aa226..d35b7731cb 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java @@ -5,11 +5,7 @@ import org.jlab.io.base.DataBank; import org.jlab.io.base.DataEvent; import org.jlab.jnp.hipo4.data.Bank; -import org.jlab.jnp.hipo4.data.Event; -import org.jlab.jnp.hipo4.data.SchemaFactory; import org.jlab.utils.groups.IndexedTable; - -import net.jcip.annotations.GuardedBy; import org.jlab.utils.groups.NamedEntry; @@ -32,7 +28,7 @@ public class ModeAHDC extends HipoExtractor { * @param samples ADC samples */ @Override - public List extract(NamedEntry pars, int id, short... samples){ + public List extract(NamedEntry pars, int id, long par1, long par2, short... samples){ // Settings parameters (they can be initialised by a CCDB) float samplingTime = 44; int sparseSample = 0; diff --git a/etc/bankdefs/hipo4/data.json b/etc/bankdefs/hipo4/data.json index 5ccc2696e4..1672588853 100644 --- a/etc/bankdefs/hipo4/data.json +++ b/etc/bankdefs/hipo4/data.json @@ -73,7 +73,8 @@ { "name":"s61" , "type":"S", "info":""}, { "name":"s62" , "type":"S", "info":""}, { "name":"s63" , "type":"S", "info":""}, - { "name":"s64" , "type":"S", "info":""} + { "name":"s64" , "type":"S", "info":""}, + { "name":"time" , "type":"S", "info":"for fine time correction"} ] }, { From a02825299520fcd28c686f184e70cb32c959007e Mon Sep 17 00:00:00 2001 From: baltzell Date: Mon, 24 Mar 2025 15:06:46 -0400 Subject: [PATCH 005/100] fix data type --- .../src/main/java/org/jlab/detector/pulse/HipoExtractor.java | 4 ++-- etc/bankdefs/hipo4/data.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/HipoExtractor.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/HipoExtractor.java index b130f2f1e8..146b087449 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/HipoExtractor.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/HipoExtractor.java @@ -130,7 +130,7 @@ protected List getPulses(int n, IndexedTable it, DataBank wfBank) { for (int j=0; j p = it==null ? extract(null, i, timestamp, time, samples) : extract(it.getNamedEntry(getIndices(wfBank,i)), i, timestamp, time, samples); if (p!=null && !p.isEmpty()) { @@ -149,7 +149,7 @@ protected List getPulses(int n, IndexedTable it, Bank wfBank) { samples[j] = wfBank.getShort(String.format("s%d",j+1), i); // FIXME: Can speed this up (but looks like not for DataBank?): //samples[j] = wfBank.getShort(String.format(5+j,j+1), i); - long time = wfBank.getLong("time",i); + int time = wfBank.getInt("time",i); long timestamp = wfBank.getLong("timestamp",i); List p = it==null ? extract(null, i, timestamp, time, samples) : extract(it.getNamedEntry(getIndices(wfBank,i)), i, timestamp, time, samples); diff --git a/etc/bankdefs/hipo4/data.json b/etc/bankdefs/hipo4/data.json index 1672588853..d965ded0bc 100644 --- a/etc/bankdefs/hipo4/data.json +++ b/etc/bankdefs/hipo4/data.json @@ -74,7 +74,7 @@ { "name":"s62" , "type":"S", "info":""}, { "name":"s63" , "type":"S", "info":""}, { "name":"s64" , "type":"S", "info":""}, - { "name":"time" , "type":"S", "info":"for fine time correction"} + { "name":"time" , "type":"I", "info":"for fine time correction"} ] }, { From b13d7618a5855bf76f47bcf64afa22a07f0a447e Mon Sep 17 00:00:00 2001 From: Christopher Dilks Date: Wed, 26 Mar 2025 18:37:09 -0400 Subject: [PATCH 006/100] feat: pre-commit hook to update banks README (#505) --- .../make_banks_readme.rb | 9 ++----- .github/make_banks_readme_precommit.sh | 2 ++ .pre-commit-config.yaml | 8 ++++++ etc/bankdefs/hipo4/README.md | 26 ++++++++++++------- 4 files changed, 29 insertions(+), 16 deletions(-) rename etc/bankdefs/util/dumpBankIDs.rb => .github/make_banks_readme.rb (92%) create mode 100755 .github/make_banks_readme_precommit.sh create mode 100644 .pre-commit-config.yaml diff --git a/etc/bankdefs/util/dumpBankIDs.rb b/.github/make_banks_readme.rb similarity index 92% rename from etc/bankdefs/util/dumpBankIDs.rb rename to .github/make_banks_readme.rb index 1f6ac8dc5f..ca67af8768 100755 --- a/etc/bankdefs/util/dumpBankIDs.rb +++ b/.github/make_banks_readme.rb @@ -51,13 +51,8 @@ # dump a table puts """# Bank Group and Item IDs -This file was generated by -```bash -#{$0} #{ARGV.join ' '} -``` - -> [!IMPORTANT] -> Please re-run this script if you modify any of the bank definitions. +> [!NOTE] +> Iguana banks, which are defined in the Iguana repository, use group number 30000. """ diff --git a/.github/make_banks_readme_precommit.sh b/.github/make_banks_readme_precommit.sh new file mode 100755 index 0000000000..d2fed8649f --- /dev/null +++ b/.github/make_banks_readme_precommit.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env sh +.github/make_banks_readme.rb etc/bankdefs/hipo4 > etc/bankdefs/hipo4/README.md diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000..a482a3ca64 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,8 @@ +repos: +- repo: local + hooks: + - id: make_banks_readme + name: make banks readme + entry: .github/make_banks_readme_precommit.sh + language: script + pass_filenames: false diff --git a/etc/bankdefs/hipo4/README.md b/etc/bankdefs/hipo4/README.md index 8b0eac1a24..cf2881f836 100644 --- a/etc/bankdefs/hipo4/README.md +++ b/etc/bankdefs/hipo4/README.md @@ -1,12 +1,7 @@ # Bank Group and Item IDs -This file was generated by -```bash -etc/bankdefs/util/dumpBankIDs.rb etc/bankdefs/hipo4 -``` - -> [!IMPORTANT] -> Please re-run this script if you modify any of the bank definitions. +> [!NOTE] +> Iguana banks, which are defined in the Iguana repository, use group number 30000. ## Group 40 @@ -381,13 +376,24 @@ etc/bankdefs/util/dumpBankIDs.rb etc/bankdefs/hipo4 | Item ID | Name | Description | | --- | --- | --- | -| 12 | `AHDC::tdc` | TDC bank for the ALERT Wire Chamber | +| 10 | `AHDC::wf` | Waveform bank for the AHDC | +| 11 | `AHDC::adc` | ADC bank for the ALERT Wire Chamber | ## Group 22500 | Item ID | Name | Description | | --- | --- | --- | -| 11 | `ATOF::adc` | ADC bank for the ALERT time-of-flight detector | +| 12 | `ATOF::tdc` | TDC bank for the ALERT TOF | +| 21 | `ATOF::hits` | Reconstructed ATOF hits | +| 22 | `ATOF::clusters` | Clusters in ATOF | + +## Group 22600 + +| Item ID | Name | Description | +| --- | --- | --- | +| 21 | `RECOIL::hits` | RECOIL hits | +| 22 | `RECOIL::clusters` | reconstructed clusters from RECOIL | +| 23 | `RECOIL::crosses` | reconstructed crosses from RECOIL | ## Group 23000 @@ -399,3 +405,5 @@ etc/bankdefs/util/dumpBankIDs.rb etc/bankdefs/hipo4 | 24 | `AHDC::PreClusters` | Pre Clusters info | | 25 | `AHDC::Clusters` | Clusters info | | 26 | `AHDC::KFTrack` | Reco Kalman Filter Tracks | +| 30 | `AHDC_AI::Prediction` | Prediction given by AI | +| 31 | `ALERT::Projections` | Track Projections to ATOF | From 970b025503204b223bd825e3baa5da5b79c3c0a9 Mon Sep 17 00:00:00 2001 From: MathieuOuillon Date: Mon, 3 Mar 2025 14:43:00 -0500 Subject: [PATCH 007/100] Change the option to select the track finding to a enum. Now this option can be setup from the yaml file with the option Mode: ``` ALERT: Mode: "AI_Track_Finding" ``` Add a cut on the number of hits to rely on the conventional track finding with there is more than 300 hits. --- .../src/main/java/org/jlab/rec/ahdc/Mode.java | 5 +++++ .../java/org/jlab/rec/service/AHDCEngine.java | 22 ++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Mode.java diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Mode.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Mode.java new file mode 100644 index 0000000000..1278ddae4c --- /dev/null +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Mode.java @@ -0,0 +1,5 @@ +package org.jlab.rec.ahdc; + +public enum Mode { + AI_Track_Finding, CV_Track_Finding; +} diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java index 5dab3df8f9..aa13190c7b 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java @@ -21,6 +21,7 @@ import org.jlab.rec.ahdc.PreCluster.PreCluster; import org.jlab.rec.ahdc.PreCluster.PreClusterFinder; import org.jlab.rec.ahdc.Track.Track; +import org.jlab.rec.ahdc.Mode; import java.io.File; import java.util.*; @@ -28,11 +29,12 @@ public class AHDCEngine extends ReconstructionEngine { private boolean simulation; - private boolean use_AI_for_trackfinding; private String findingMethod; private HashMap materialMap; private Model model; + private Mode mode = Mode.CV_Track_Finding; + public AHDCEngine() { super("ALERT", "ouillon", "1.0.1"); } @@ -41,12 +43,20 @@ public AHDCEngine() { public boolean init() { simulation = false; findingMethod = "distance"; - use_AI_for_trackfinding = true; if (materialMap == null) { materialMap = MaterialMap.generateMaterials(); } + if(this.getEngineConfigString("Mode")!=null) { + if (Objects.equals(this.getEngineConfigString("Mode"), Mode.AI_Track_Finding.name())) + mode = Mode.AI_Track_Finding; + + if (Objects.equals(this.getEngineConfigString("Mode"), Mode.CV_Track_Finding.name())) + mode = Mode.CV_Track_Finding; + + } + model = new Model(); return true; @@ -89,8 +99,6 @@ public boolean processDataEvent(DataEvent event) { AHDC_PreClusters = preclusterfinder.get_AHDCPreClusters(); //System.out.println("AHDC_PreClusters size " + AHDC_PreClusters.size()); - - // III) Create Cluster ClusterFinder clusterfinder = new ClusterFinder(); clusterfinder.findCluster(AHDC_PreClusters); @@ -101,7 +109,9 @@ public boolean processDataEvent(DataEvent event) { ArrayList AHDC_Tracks = new ArrayList<>(); ArrayList predictions = new ArrayList<>(); - if (use_AI_for_trackfinding == false) { + // If there is too much hits, we rely on to the conventional track finding + if (AHDC_Hits.size() > 300) mode = Mode.CV_Track_Finding; + if (mode == Mode.CV_Track_Finding) { if (findingMethod.equals("distance")) { // IV) a) Distance method //System.out.println("using distance"); @@ -116,7 +126,7 @@ public boolean processDataEvent(DataEvent event) { AHDC_Tracks = houghtransform.get_AHDCTracks(); } } - else { + if (mode == Mode.AI_Track_Finding) { // AI --------------------------------------------------------------------------------- AHDC_Hits.sort(new Comparator() { @Override From 1ef51d5515bb3fe0a410dad8544f2b554bf7039d Mon Sep 17 00:00:00 2001 From: MathieuOuillon Date: Mon, 3 Mar 2025 14:45:41 -0500 Subject: [PATCH 008/100] Change the default options for DJL: - Use a single thread for the inference. - Remove waring about the graph executor optimization --- .../alert/src/main/java/org/jlab/rec/ahdc/AI/Model.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/Model.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/Model.java index a558763d78..3f196db93c 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/Model.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/Model.java @@ -34,6 +34,9 @@ public NDList processInput(TranslatorContext translatorContext, float[] floats) return new NDList(samples); } }; + System.setProperty("ai.djl.pytorch.num_interop_threads", "1"); + System.setProperty("ai.djl.pytorch.num_threads", "1"); + System.setProperty("ai.djl.pytorch.graph_optimizer", "false"); String path = CLASResources.getResourcePath("etc/nnet/ALERT/model_AHDC/"); Criteria my_model = Criteria.builder().setTypes(float[].class, Float.class) From ce1e25f009c34edd71753e5a6ee484bb0d03a85a Mon Sep 17 00:00:00 2001 From: MathieuOuillon Date: Tue, 25 Mar 2025 12:43:00 -0400 Subject: [PATCH 009/100] Modification of the track candidates generation --- .../jlab/rec/ahdc/AI/TrackConstruction.java | 131 +++++++++++------- .../java/org/jlab/rec/service/AHDCEngine.java | 17 ++- 2 files changed, 92 insertions(+), 56 deletions(-) diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/TrackConstruction.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/TrackConstruction.java index dce5414001..fbc4b0f9bb 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/TrackConstruction.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/TrackConstruction.java @@ -1,5 +1,6 @@ package org.jlab.rec.ahdc.AI; +import org.apache.commons.lang3.mutable.MutableBoolean; import org.jlab.rec.ahdc.Hit.Hit; import java.io.File; @@ -8,6 +9,9 @@ import java.util.*; public class TrackConstruction { + private int max_number_of_track_candidates = 10000; + private double max_angle = Math.toRadians(60); + public TrackConstruction() {} private double mod(double x, double y) { @@ -38,69 +42,94 @@ private double mod(double x, double y) { private boolean angle_in_range(double angle, double lower, double upper) { return warp_zero_two_pi(angle - lower) <= warp_zero_two_pi(upper - lower); } - public ArrayList> get_all_possible_track(ArrayList preclusterSuperlayers) { + private ArrayList> cartesian_product(ArrayList> v1, ArrayList v2, MutableBoolean too_much_track_candidates, int number_of_track_candidates) { + ArrayList> result = new ArrayList<>(); + for (ArrayList i : v1) { + if (too_much_track_candidates.booleanValue()) break; + for (int j : v2) { + ArrayList newCombination = new ArrayList<>(i); + newCombination.add(j); + result.add(newCombination); + + if (number_of_track_candidates + result.size() > max_number_of_track_candidates) { + too_much_track_candidates.setValue(true); + break; + } + } + - // Get seeds to start the track finding algorithm - ArrayList seeds = new ArrayList<>(); - for (PreclusterSuperlayer precluster : preclusterSuperlayers) { - if (precluster.getPreclusters().get(0).get_hits_list().get(0).getSuperLayerId() == 1) seeds.add(precluster); } - seeds.sort(new Comparator() { - @Override - public int compare(PreclusterSuperlayer a1, PreclusterSuperlayer a2) { - return Double.compare(Math.atan2(a1.getY(), a1.getX()), Math.atan2(a2.getY(), a2.getX())); - } - }); - // System.out.println("seeds: " + seeds); + return result; + } - // Get all possible tracks ---------------------------------------------------------------- - double max_angle = Math.toRadians(60); + public boolean get_all_possible_track(ArrayList preclusterSuperlayers, ArrayList> all_track_candidates) { - ArrayList> all_combinations = new ArrayList<>(); - for (PreclusterSuperlayer seed : seeds) { - double phi_seed = warp_zero_two_pi(Math.atan2(seed.getY(), seed.getX())); + ArrayList seed_index = new ArrayList<>(); + for (int i = 0; i < preclusterSuperlayers.size(); i++) { + if (preclusterSuperlayers.get(i).getPreclusters().get(0).get_Super_layer() == 1) seed_index.add(i); + } - ArrayList track = new ArrayList<>(); - for (PreclusterSuperlayer p : preclusterSuperlayers) { - double phi_p = warp_zero_two_pi(Math.atan2(p.getY(), p.getX())); - if (angle_in_range(phi_p, phi_seed - max_angle, phi_seed + max_angle)) track.add(p); + // System.out.println("New event: -------------------------------------------------------------------------"); + + boolean sucess = true; + int number_of_track_candidates = 0; + for (int s : seed_index) { + if (!sucess) break; + // Find all superpreclusters that have a phi angle within phi angle of the seed +/- 60 degrees + // The goal is to reduce the number of superpreclusters to loop over + double phi_seed = warp_zero_two_pi(Math.atan2(preclusterSuperlayers.get(s).getY(), preclusterSuperlayers.get(s).getX())); // phi angle of the seed + ArrayList all_superpreclusters = new ArrayList<>(); // all superpreclusters that are within phi angle of the seed + for (int i = 0; i < preclusterSuperlayers.size(); ++i) { + double phi_p = warp_zero_two_pi(Math.atan2(preclusterSuperlayers.get(i).getY(), preclusterSuperlayers.get(i).getX())); + if (angle_in_range(phi_p, phi_seed - max_angle, phi_seed + max_angle)) { + all_superpreclusters.add(i); + } } - // System.out.println("track: " + track.size()); - - ArrayList> combinations = new ArrayList<>(List.of(new ArrayList<>(List.of(seed)))); - // System.out.println("combinations: " + combinations); - - for (int i = 1; i < 5; ++i) { - ArrayList> new_combinations = new ArrayList<>(); - for (ArrayList combination : combinations) { - - for (PreclusterSuperlayer precluster : track) { - if (precluster.getPreclusters().get(0).get_hits_list().get(0).getSuperLayerId() == seed.getPreclusters().get(0).get_hits_list().get(0).getSuperLayerId() + i) { - // System.out.printf("Good Precluster x: %.2f, y: %.2f, r: %.2f%n", precluster.getX(), precluster.getY(), Math.hypot(precluster.getX(), precluster.getY())); - // System.out.println("combination: " + combination); - - ArrayList new_combination = new ArrayList<>(combination); - new_combination.add(precluster); - // System.out.println("new_combination: " + new_combination); - new_combinations.add(new_combination); - } - } - for (ArrayList c : new_combinations) { - // System.out.println("c.size: " + c.size() + ", c: " + c); - } - } - combinations = new_combinations; - if (combinations.size() > 10000) break; + // Sort the superpreclusters by superlayer to have a simpler loops after + ArrayList> superpreclusters_s1 = new ArrayList<>(List.of(new ArrayList<>(List.of(s)))); + ArrayList superpreclusters_s3 = new ArrayList<>(new ArrayList<>()); + ArrayList superpreclusters_s4 = new ArrayList<>(new ArrayList<>()); + ArrayList superpreclusters_s2 = new ArrayList<>(new ArrayList<>()); + ArrayList superpreclusters_s5 = new ArrayList<>(new ArrayList<>()); + + for (int i = 0; i < all_superpreclusters.size(); i++) { + if (preclusterSuperlayers.get(all_superpreclusters.get(i)).getPreclusters().get(0).get_Super_layer() == 2) + superpreclusters_s2.add(all_superpreclusters.get(i)); + if (preclusterSuperlayers.get(all_superpreclusters.get(i)).getPreclusters().get(0).get_Super_layer() == 3) + superpreclusters_s3.add(all_superpreclusters.get(i)); + if (preclusterSuperlayers.get(all_superpreclusters.get(i)).getPreclusters().get(0).get_Super_layer() == 4) + superpreclusters_s4.add(all_superpreclusters.get(i)); + if (preclusterSuperlayers.get(all_superpreclusters.get(i)).getPreclusters().get(0).get_Super_layer() == 5) + superpreclusters_s5.add(all_superpreclusters.get(i)); } - for (ArrayList combination : combinations) { - if (combination.size() == 5) { - all_combinations.add(combination); + + // Find all possible combinations of superpreclusters on different superlayers + MutableBoolean too_much_track_candidates = new MutableBoolean(); + too_much_track_candidates.setFalse(); + ArrayList> combinations_s1_s2 = cartesian_product(superpreclusters_s1, superpreclusters_s2, too_much_track_candidates, number_of_track_candidates); + ArrayList> combinations_s1_s2_s3 = cartesian_product(combinations_s1_s2, superpreclusters_s3, too_much_track_candidates, number_of_track_candidates); + ArrayList> combinations_s1_s2_s3_s4 = cartesian_product(combinations_s1_s2_s3, superpreclusters_s4, too_much_track_candidates, number_of_track_candidates); + ArrayList> combinations_s1_s2_s3_s4_s5 = cartesian_product(combinations_s1_s2_s3_s4, superpreclusters_s5, too_much_track_candidates, number_of_track_candidates); + number_of_track_candidates += combinations_s1_s2_s3_s4_s5.size(); + if (too_much_track_candidates.booleanValue()) sucess = false; + // System.out.println("combinations_s1_s2_s3_s4_s5"); + for (ArrayList combination : combinations_s1_s2_s3_s4_s5) { + // System.out.println("combination: "+combination); + ArrayList track_candidate = new ArrayList<>(); + for (int index : combination) { + track_candidate.add(preclusterSuperlayers.get(index)); } + all_track_candidates.add(track_candidate); } + } - return all_combinations; + //System.out.println("nb of track candidates: " + all_track_candidates.size() + " sucess: " + sucess); + System.out.print(sucess+", "); + + + return sucess; } } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java index aa13190c7b..20f1fc915b 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java @@ -138,8 +138,14 @@ public int compare(Hit a1, Hit a2) { ArrayList preClustersAI = preClustering.find_preclusters_for_AI(AHDC_Hits); ArrayList preclusterSuperlayers = preClustering.merge_preclusters(preClustersAI); TrackConstruction trackConstruction = new TrackConstruction(); - ArrayList> tracks = trackConstruction.get_all_possible_track(preclusterSuperlayers); + ArrayList> tracks = new ArrayList<>(); + boolean sucess = trackConstruction.get_all_possible_track(preclusterSuperlayers, tracks); + //System.out.println("nb of track candidates: " + tracks.size()); + if (!sucess) { + // System.err.println("Too much tracks candidates, exit"); + return false; + } try { AIPrediction aiPrediction = new AIPrediction(); @@ -158,7 +164,7 @@ public int compare(Hit a1, Hit a2) { //Temporary track method ONLY for MC with no background; //AHDC_Tracks.add(new Track(AHDC_Hits)); - + /* // V) Global fit for (Track track : AHDC_Tracks) { int nbOfPoints = track.get_Clusters().size(); @@ -180,7 +186,7 @@ public int compare(Hit a1, Hit a2) { // VI) Kalman Filter // System.out.println("AHDC_Tracks = " + AHDC_Tracks); KalmanFilter kalmanFitter = new KalmanFilter(AHDC_Tracks, event); - + // VII) Write bank RecoBankWriter writer = new RecoBankWriter(); @@ -202,6 +208,7 @@ public int compare(Hit a1, Hit a2) { DataBank recoMCBank = writer.fillAHDCMCTrackBank(event); event.appendBank(recoMCBank); } + */ } return true; @@ -212,9 +219,9 @@ public static void main(String[] args) { double starttime = System.nanoTime(); int nEvent = 0; - int maxEvent = 1000; + int maxEvent = 10; int myEvent = 3; - String inputFile = "alert_out_update.hipo"; + String inputFile = "merged_10.hipo"; String outputFile = "output.hipo"; if (new File(outputFile).delete()) System.out.println("output.hipo is delete."); From a107bc33e46203ef478d4003f8d58eb9c7985ab3 Mon Sep 17 00:00:00 2001 From: MathieuOuillon Date: Tue, 25 Mar 2025 15:36:37 -0400 Subject: [PATCH 010/100] Improve the function to get all the track candidates. --- .../rec/ahdc/AI/PreclusterSuperlayer.java | 4 + .../jlab/rec/ahdc/AI/TrackConstruction.java | 109 +++++++++++++----- .../java/org/jlab/rec/service/AHDCEngine.java | 8 +- 3 files changed, 90 insertions(+), 31 deletions(-) diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/PreclusterSuperlayer.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/PreclusterSuperlayer.java index ecab32728c..f1773e73e9 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/PreclusterSuperlayer.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/PreclusterSuperlayer.java @@ -39,6 +39,10 @@ public double getY() { return y; } + public int getSuperlayer() { + return this.preclusters.get(0).get_Super_layer(); + } + public String toString() { return "PreCluster{" + "X: " + this.x + " Y: " + this.y + " phi: " + Math.atan2(this.y, this.x) + "}\n"; diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/TrackConstruction.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/TrackConstruction.java index fbc4b0f9bb..d88ee4a661 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/TrackConstruction.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/TrackConstruction.java @@ -8,12 +8,31 @@ import java.io.IOException; import java.util.*; +/** + * The TrackConstruction class is responsible for constructing all possible track + * candidates from a set of superpreclusters. + */ public class TrackConstruction { private int max_number_of_track_candidates = 10000; private double max_angle = Math.toRadians(60); + /** + * Default constructor. + */ public TrackConstruction() {} + /** + * Computes the modulo operation, which returns the remainder of the division + * of one number by another. This method handles floating-point edge cases + * to ensure accurate results within the expected range. + * + * @param x The dividend. + * @param y The divisor. If y is 0, the method returns x. + * @return The result of x modulo y. The result is in the range: + * - [0..y) if y > 0 + * - (y..0] if y < 0 + * Special cases are handled to avoid floating-point inaccuracies. + */ private double mod(double x, double y) { if (0. == y) return x; @@ -37,21 +56,46 @@ private double mod(double x, double y) { return m; } + + /** + * Wraps an angle to the range [0, 2Ï€). + * + * @param angle The angle to wrap. + * @return The angle wrapped to the range [0, 2Ï€). + */ private double warp_zero_two_pi(double angle) { return mod(angle, 2. * Math.PI); } + /** + * Checks if an angle is within a specified range. + * + * @param angle The angle to check. + * @param lower The lower bound of the range. + * @param upper The upper bound of the range. + * @return {@code true} if the angle is within the range, {@code false} otherwise. + */ private boolean angle_in_range(double angle, double lower, double upper) { return warp_zero_two_pi(angle - lower) <= warp_zero_two_pi(upper - lower); } - + /** + * Computes the Cartesian product of two lists of integers, ensuring the number of track candidates + * does not exceed the maximum allowed limit. + * + * @param v1 The first list of integer combinations. + * @param v2 The second list of integers to combine with the first list. + * @param too_much_track_candidates A mutable boolean that is set to {@code true} if the number of track candidates exceeds the maximum limit. + * @param number_of_track_candidates The current count of track candidates. + * @return A list of all possible combinations of integers from {@code v1} and {@code v2}. + */ private ArrayList> cartesian_product(ArrayList> v1, ArrayList v2, MutableBoolean too_much_track_candidates, int number_of_track_candidates) { ArrayList> result = new ArrayList<>(); for (ArrayList i : v1) { if (too_much_track_candidates.booleanValue()) break; for (int j : v2) { - ArrayList newCombination = new ArrayList<>(i); - newCombination.add(j); - result.add(newCombination); - - if (number_of_track_candidates + result.size() > max_number_of_track_candidates) { + if (too_much_track_candidates.booleanValue()) break; + ArrayList n = new ArrayList<>(i); + n.add(j); + result.add(n); + + if (number_of_track_candidates + result.size() >= max_number_of_track_candidates) { too_much_track_candidates.setValue(true); break; } @@ -64,17 +108,28 @@ private ArrayList> cartesian_product(ArrayList preclusterSuperlayers, ArrayList> all_track_candidates) { + /* + Identify all superpreclusters located in the first superlayer. + These superpreclusters serve as seeds for constructing track candidates. + A track candidate always starts from a seed. + */ ArrayList seed_index = new ArrayList<>(); for (int i = 0; i < preclusterSuperlayers.size(); i++) { - if (preclusterSuperlayers.get(i).getPreclusters().get(0).get_Super_layer() == 1) seed_index.add(i); + if (!preclusterSuperlayers.get(i).getPreclusters().isEmpty() && + preclusterSuperlayers.get(i).getSuperlayer() == 1) { + seed_index.add(i); + } } - // System.out.println("New event: -------------------------------------------------------------------------"); boolean sucess = true; int number_of_track_candidates = 0; + + // Loop over all seeds to construct track candidates for (int s : seed_index) { + // Check if the number of track candidates exceeds the maximum limit if so, stop the loop if (!sucess) break; + // Find all superpreclusters that have a phi angle within phi angle of the seed +/- 60 degrees // The goal is to reduce the number of superpreclusters to loop over double phi_seed = warp_zero_two_pi(Math.atan2(preclusterSuperlayers.get(s).getY(), preclusterSuperlayers.get(s).getX())); // phi angle of the seed @@ -86,49 +141,49 @@ public boolean get_all_possible_track(ArrayList precluster } } + // Sort the superpreclusters by superlayer to have a simpler loops after - ArrayList> superpreclusters_s1 = new ArrayList<>(List.of(new ArrayList<>(List.of(s)))); - ArrayList superpreclusters_s3 = new ArrayList<>(new ArrayList<>()); - ArrayList superpreclusters_s4 = new ArrayList<>(new ArrayList<>()); - ArrayList superpreclusters_s2 = new ArrayList<>(new ArrayList<>()); - ArrayList superpreclusters_s5 = new ArrayList<>(new ArrayList<>()); + ArrayList superpreclusters_s1 = new ArrayList<>(List.of(s)); + ArrayList superpreclusters_s3 = new ArrayList<>(); + ArrayList superpreclusters_s4 = new ArrayList<>(); + ArrayList superpreclusters_s2 = new ArrayList<>(); + ArrayList superpreclusters_s5 = new ArrayList<>(); for (int i = 0; i < all_superpreclusters.size(); i++) { if (preclusterSuperlayers.get(all_superpreclusters.get(i)).getPreclusters().get(0).get_Super_layer() == 2) superpreclusters_s2.add(all_superpreclusters.get(i)); - if (preclusterSuperlayers.get(all_superpreclusters.get(i)).getPreclusters().get(0).get_Super_layer() == 3) + else if (preclusterSuperlayers.get(all_superpreclusters.get(i)).getPreclusters().get(0).get_Super_layer() == 3) superpreclusters_s3.add(all_superpreclusters.get(i)); - if (preclusterSuperlayers.get(all_superpreclusters.get(i)).getPreclusters().get(0).get_Super_layer() == 4) + else if (preclusterSuperlayers.get(all_superpreclusters.get(i)).getPreclusters().get(0).get_Super_layer() == 4) superpreclusters_s4.add(all_superpreclusters.get(i)); - if (preclusterSuperlayers.get(all_superpreclusters.get(i)).getPreclusters().get(0).get_Super_layer() == 5) + else if (preclusterSuperlayers.get(all_superpreclusters.get(i)).getPreclusters().get(0).get_Super_layer() == 5) superpreclusters_s5.add(all_superpreclusters.get(i)); } - // Find all possible combinations of superpreclusters on different superlayers - MutableBoolean too_much_track_candidates = new MutableBoolean(); + MutableBoolean too_much_track_candidates = new MutableBoolean(); // Need to be a mutable boolean to be able to change it in the cartesian_product method too_much_track_candidates.setFalse(); - ArrayList> combinations_s1_s2 = cartesian_product(superpreclusters_s1, superpreclusters_s2, too_much_track_candidates, number_of_track_candidates); + + // Find all possible combinations of superpreclusters on different superlayers + ArrayList> combinations_s1_s2 = cartesian_product(new ArrayList<>(List.of(superpreclusters_s1)), superpreclusters_s2, too_much_track_candidates, number_of_track_candidates); ArrayList> combinations_s1_s2_s3 = cartesian_product(combinations_s1_s2, superpreclusters_s3, too_much_track_candidates, number_of_track_candidates); ArrayList> combinations_s1_s2_s3_s4 = cartesian_product(combinations_s1_s2_s3, superpreclusters_s4, too_much_track_candidates, number_of_track_candidates); ArrayList> combinations_s1_s2_s3_s4_s5 = cartesian_product(combinations_s1_s2_s3_s4, superpreclusters_s5, too_much_track_candidates, number_of_track_candidates); + + // Keep track of the number of track candidates number_of_track_candidates += combinations_s1_s2_s3_s4_s5.size(); - if (too_much_track_candidates.booleanValue()) sucess = false; - // System.out.println("combinations_s1_s2_s3_s4_s5"); + if (too_much_track_candidates.booleanValue()) sucess = false; // If the number of track candidates exceeds the maximum limit, set success to false + + // Add all track candidates to the list of all track candidates + // And switch back from index to superprecluster for (ArrayList combination : combinations_s1_s2_s3_s4_s5) { - // System.out.println("combination: "+combination); ArrayList track_candidate = new ArrayList<>(); for (int index : combination) { track_candidate.add(preclusterSuperlayers.get(index)); } all_track_candidates.add(track_candidate); } - } - //System.out.println("nb of track candidates: " + all_track_candidates.size() + " sucess: " + sucess); - System.out.print(sucess+", "); - - return sucess; } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java index 20f1fc915b..ecd040ab4e 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java @@ -111,6 +111,7 @@ public boolean processDataEvent(DataEvent event) { // If there is too much hits, we rely on to the conventional track finding if (AHDC_Hits.size() > 300) mode = Mode.CV_Track_Finding; + if (mode == Mode.CV_Track_Finding) { if (findingMethod.equals("distance")) { // IV) a) Distance method @@ -141,9 +142,8 @@ public int compare(Hit a1, Hit a2) { ArrayList> tracks = new ArrayList<>(); boolean sucess = trackConstruction.get_all_possible_track(preclusterSuperlayers, tracks); - //System.out.println("nb of track candidates: " + tracks.size()); if (!sucess) { - // System.err.println("Too much tracks candidates, exit"); + System.err.println("Too much tracks candidates, exit"); return false; } @@ -164,7 +164,7 @@ public int compare(Hit a1, Hit a2) { //Temporary track method ONLY for MC with no background; //AHDC_Tracks.add(new Track(AHDC_Hits)); - /* + // V) Global fit for (Track track : AHDC_Tracks) { int nbOfPoints = track.get_Clusters().size(); @@ -208,7 +208,7 @@ public int compare(Hit a1, Hit a2) { DataBank recoMCBank = writer.fillAHDCMCTrackBank(event); event.appendBank(recoMCBank); } - */ + } return true; From 3f00dfa2d460b06a0768b5ab2e0a27ea45f73265 Mon Sep 17 00:00:00 2001 From: MathieuOuillon Date: Tue, 25 Mar 2025 16:28:32 -0400 Subject: [PATCH 011/100] Update AHDCEngine to initialize model conditionally and adjust prediction threshold --- .../src/main/java/org/jlab/rec/service/AHDCEngine.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java index ecd040ab4e..9c118a09a2 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java @@ -57,7 +57,9 @@ public boolean init() { } - model = new Model(); + if (mode == Mode.AI_Track_Finding) { + model = new Model(); + } return true; } @@ -155,7 +157,7 @@ public int compare(Hit a1, Hit a2) { } for (TrackPrediction t : predictions) { - if (t.getPrediction() > 0.5) + if (t.getPrediction() > 0.2) AHDC_Tracks.add(new Track(t.getClusters())); } } From e20330f56aabf58f210c8999caf8674541a8519a Mon Sep 17 00:00:00 2001 From: efuchey Date: Thu, 27 Mar 2025 17:08:02 -0400 Subject: [PATCH 012/100] New features for ALERT Kalman filter+optimized parameters (#445) * Optimization of Kalman Filter: * adjusted number of filtering iterations from 10 to 5; * adjusted step size dx for calculation of ddoca/dx from 10^8 to 10^5; * Added AHDC hits residuals (post-fit and pre-fit) in the output: * residuals in the AHDC::Hits list in the alert.json file; * filling the hits residuals in the RecoBankWriter; * added residual and residual_prefit in ahdc/Hit/Hit.java * added a identification flag to match ahdc/KalmanFilter/Hit.java to ahdc/Hit/Hit.java * Successfully affected the calculated hit residual to the correct AHDC::Hit. * Fixed and improved the calculation of the post-fit residuals: * affecting the track parameters to the KFTrack right after the fit; * redo a forward indicators pass without correction; * * Cleaning the Kalman filter code: - removed all "cylindrical coordinates" vector and measurement functions; - renamed all preexisting vector and measurement function with their original name. - removed many commented printouts. * Attempt to include hit "sign" / left-right disambiguation: * added "virtual wires" located at the distance-of-closest-approach of the actual wire, on each side of the wire; * added hit sign parameter in KalmanFilter/Hit class; * added a new distance function to KalmanFilter/Hit class calculate the distance of a point to the correct virtual wire depending on the sign; * attempt to modify the "h" function to call new distance function * Fix of a parameter modified by mistake. * Added a second definition of BackwardIndicators in AHDC/KalmanFilter to be able to initialize a vertex. * Added a flag setDefinedVertex to AHDC/KalmanFilter and KFitter to define "hit_beam" vertex. * Reset Niter and ddoca step size parameters to 10, 1.e-8 respectively. * Added reading of wire ADC from the AHDC HitReader, and functions to access ADC for AHDC/Hit/Hit and AHDC/KalmanFilter/Hit. Added filtering of two hits on same superlayer/layer based on ADC (largest ADC is kept) and use info to determine the hit sign. * Added an option to build the initial track with just the hits combination and preset fixed parameters in AHDCEngine. Added a function in AHDC/KalmanFilter/Hit.java to calculate the measurement vector if we have a sign. * Substituted call of default hit vector and hit measurement functions with hit vector and measurement functions that handle hit left/right disambiguation. * Started to reintroduce the hit sign. * Save state: back to status quo before revising sign. * Added variable measurement error for hits with sign defined, with tracks on the wrong side. * Implemented varaible measurement error for signed hits: * if track on right side of wire, normal error; * if track on wrong side of wire, inflated error; Ensured reordering of hits by increasing phi; added exception for "rollover" around phi = pi; * fixed once and for all the convention for hit sign: sign >0 if phi_expected state > phi_wire * Tried to introduce a "pull" to the track on the correct sign of a wire by setting the measurement on the correct "virtual wire" with a larger error. * Revert "Tried to introduce a "pull" to the track on the correct sign of a wire by setting the measurement on the correct "virtual wire" with a larger error." This reverts commit 9bf47151d3dca0bd710e2f45a056c0a3c53966a1. * Fixed the convention for the "virtual wires": wire "minus" ("plus") at +deltaphi (-deltaphi) since wire x, y position depend on -R*sin(phi), -R cos(phi) respectively. * Improved the functions to calculate hit vector: returns doca if sign is 0 or if sign is good. * Added a hit distance function with goodsign as input, and H (measurement matrix) function with goodsign as an input. * Added (commented) calls of functions with sign. * Added a simple handle to disable reading of MC variables. * Rerolled to fitting with no double hit. * Harmonized simulation flag: - one simulation flag is declared in AHDCengine and defined as false; - it is now propagated into KalmanFilter. * Added a check to read MC hits in AHDC_engine. --------- Co-authored-by: Mathieu Ouillon <67646911+mathieuouillon@users.noreply.github.com> --- etc/bankdefs/hipo4/alert.json | 8 + .../jlab/rec/ahdc/Banks/RecoBankWriter.java | 2 + .../main/java/org/jlab/rec/ahdc/Hit/Hit.java | 27 +- .../java/org/jlab/rec/ahdc/Hit/HitReader.java | 5 +- .../org/jlab/rec/ahdc/KalmanFilter/Hit.java | 132 +++++++--- .../jlab/rec/ahdc/KalmanFilter/Hit_beam.java | 2 +- .../jlab/rec/ahdc/KalmanFilter/KFitter.java | 154 ++++++------ .../rec/ahdc/KalmanFilter/KalmanFilter.java | 232 ++++++++---------- .../java/org/jlab/rec/ahdc/Track/Track.java | 10 +- .../java/org/jlab/rec/service/AHDCEngine.java | 11 +- 10 files changed, 333 insertions(+), 250 deletions(-) diff --git a/etc/bankdefs/hipo4/alert.json b/etc/bankdefs/hipo4/alert.json index 611babce13..7999d13c2b 100644 --- a/etc/bankdefs/hipo4/alert.json +++ b/etc/bankdefs/hipo4/alert.json @@ -181,6 +181,14 @@ "name": "Doca", "type": "D", "info": "distance od closest approch (mm)" + }, { + "name": "residual", + "type": "D", + "info": "residual (mm)" + }, { + "name": "residual_prefit", + "type": "D", + "info": "residual pre-fit (mm)" } ] }, { diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java index 72b9b5f2fe..16e880dcb2 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java @@ -24,6 +24,8 @@ public DataBank fillAHDCHitsBank(DataEvent event, ArrayList hitList) { bank.setByte("superlayer", i, (byte) hitList.get(i).getSuperLayerId()); bank.setInt("wire", i, hitList.get(i).getWireId()); bank.setDouble("Doca", i, hitList.get(i).getDoca()); + bank.setDouble("residual", i, hitList.get(i).getResidual()); + bank.setDouble("residual_prefit", i, hitList.get(i).getResidualPrefit()); } return bank; diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java index 6ee4bab6a0..9182365273 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java @@ -9,6 +9,7 @@ public class Hit implements Comparable { private final int layerId; private final int wireId; private final double doca; + private final double adc; private double phi; private double radius; @@ -16,14 +17,20 @@ public class Hit implements Comparable { private boolean use = false; private double x; private double y; + private double residual_prefit; + private double residual; - public Hit(int _Id, int _Super_layer, int _Layer, int _Wire, double _Doca) { + //updated constructor with ADC + public Hit(int _Id, int _Super_layer, int _Layer, int _Wire, double _Doca, double _ADC) { this.id = _Id; this.superLayerId = _Super_layer; this.layerId = _Layer; this.wireId = _Wire; this.doca = _Doca; + this.adc = _ADC; wirePosition(); + this.residual_prefit = 0.0; + this.residual = 0.0; } private void wirePosition() { @@ -130,4 +137,22 @@ public double getY() { } public double getPhi() {return phi;} + + public double getADC() {return adc;} + + public double getResidual() { + return residual; + } + + public double getResidualPrefit() { + return residual_prefit; + } + + public void setResidual(double resid) { + this.residual = resid; + } + + public void setResidualPrefit(double resid) { + this.residual_prefit = resid; + } } 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 cef052afef..91e7a1daad 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 @@ -32,9 +32,10 @@ public void fetch_AHDCHits(DataEvent event) { int layer = number % 10; int superlayer = (int) (number % 100) / 10; int wire = bankDGTZ.getShort("component", i); + double adc = bankDGTZ.getInt("ADC", i); double doca = bankDGTZ.getShort("ped", i) / 1000.0; - hits.add(new Hit(id, superlayer, layer, wire, doca)); + hits.add(new Hit(id, superlayer, layer, wire, doca, adc)); } } this.set_AHDCHits(hits); @@ -75,4 +76,4 @@ public void set_TrueAHDCHits(ArrayList _TrueAHDCHits) { this._TrueAHDCHits = _TrueAHDCHits; } -} \ No newline at end of file +} diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java index fa4d1dc477..a07e4299df 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java @@ -19,13 +19,17 @@ public class Hit implements Comparable { private final double r; private final double phi; private final double doca; - private final double adc; + private double adc; private final double numWires; private final Line3D line3D; - - // Comparison with: common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java - // here, SuperLayer, Layer, Wire, start from 1 - // in AlertDCFactory, same variables start from 1 + private final Line3D line3D_plus; + private final Line3D line3D_minus; + private int hitidx; + private int hitsign; + + // Comparison with: common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java + // here, SuperLayer, Layer, Wire, start from 1 + // in AlertDCFactory, same variables start from 1 public Hit(int superLayer, int layer, int wire, int numWire, double r, double doca) { this.superLayer = superLayer; this.layer = layer; @@ -34,6 +38,8 @@ public Hit(int superLayer, int layer, int wire, int numWire, double r, double do this.doca = doca; this.numWires = numWire; this.adc = 0;//placeholder + this.hitidx = -1; + this.hitsign = 0; final double DR_layer = 4.0;//OK final double round = 360.0;//OK @@ -104,42 +110,65 @@ public Hit(int superLayer, int layer, int wire, int numWire, double r, double do Line3D wireLine = new Line3D(lPoint, rPoint); //wireLine.show(); this.line3D = wireLine; - } - - //hit measurement vector in cylindrical coordinates: r, phi, z - public RealVector get_Vector() { - // final double costhster = Math.cos(thster); - // final double sinthster = Math.cos(thster); - RealVector wire_meas = new ArrayRealVector(new double[]{this.r(), this.phi(), 0}); - // Array2DRowRealMatrix stereo_rotation = new Array2DRowRealMatrix(new double[][]{{1, 0.0, 0.0}, {0, costhster, -sinthster}, {0, sinthster, costhster}});//rotation of wire: needed? - return wire_meas;//.multiply(stereo_rotation); + + //calculate the "virtual" left and right wires accounting for the DOCA + double deltaphi = Math.asin(this.doca/R_layer); + double wx_plus = -R_layer * Math.sin( alphaW_layer * (this.wire-1) - deltaphi );//OK + double wy_plus = -R_layer * Math.cos( alphaW_layer * (this.wire-1) - deltaphi );//OK + + double wx_plus_end = -R_layer * Math.sin( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) - deltaphi );//OK + double wy_plus_end = -R_layer * Math.cos( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) - deltaphi );//OK + + line = new Line3D(wx_plus, wy_plus, -zl/2, wx_plus_end, wy_plus_end, zl/2); + lPoint = new Point3D(); + rPoint = new Point3D(); + lPlane.intersection(line, lPoint); + rPlane.intersection(line, rPoint); + + wireLine = new Line3D(lPoint, rPoint); + this.line3D_plus = wireLine; + + double wx_minus = -R_layer * Math.sin( alphaW_layer * (this.wire-1) + deltaphi );//OK + double wy_minus = -R_layer * Math.cos( alphaW_layer * (this.wire-1) + deltaphi );//OK + + double wx_minus_end = -R_layer * Math.sin( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) + deltaphi );//OK + double wy_minus_end = -R_layer * Math.cos( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) + deltaphi );//OK + + line = new Line3D(wx_minus, wy_minus, -zl/2, wx_minus_end, wy_minus_end, zl/2); + lPoint = new Point3D(); + rPoint = new Point3D(); + lPlane.intersection(line, lPoint); + rPlane.intersection(line, rPoint); + + wireLine = new Line3D(lPoint, rPoint); + this.line3D_minus = wireLine; + } - //hit measurement vector in 1 dimension: minimize distance - doca - public RealVector get_Vector_simple() { + //hit measurement vector in 1 dimension: minimize distance - doca + public RealVector get_Vector() { return new ArrayRealVector(new double[]{this.doca}); } - //hit measurement vector in 1 dimension: minimize distance - doca - adds hit "sign" - public RealVector get_Vector_sign(int sign) { - // Attempt: multiply doca by sign - return new ArrayRealVector(new double[]{sign*this.doca}); + //hit measurement vector in 1 dimension with sign: if sign = 0, return doca, otherwise return 0 + public RealVector get_Vector(int sign, boolean goodsign) { + if(sign == 0 || goodsign){ + return new ArrayRealVector(new double[]{this.doca}); + }else{ + return new ArrayRealVector(new double[]{0.0}); + } } - public RealMatrix get_MeasurementNoise() { - final double costhster = Math.cos(thster); - final double sinthster = Math.cos(thster); - //dR = 0.1m dphi = pi dz = L/2 - Array2DRowRealMatrix wire_noise = new Array2DRowRealMatrix(new double[][]{{0.1, 0.0, 0.0}, {0.0, Math.atan(0.1/this.r), 0.0}, {0.0, 0.0, 150.0/costhster}});//uncertainty matrix in wire coordinates - Array2DRowRealMatrix stereo_rotation = new Array2DRowRealMatrix(new double[][]{{1, 0.0, 0.0}, {0, costhster, -sinthster}, {0, sinthster, costhster}});//rotation of wire - wire_noise.multiply(stereo_rotation); - - return wire_noise.multiply(wire_noise); - // + public RealMatrix get_MeasurementNoise() { + return new Array2DRowRealMatrix(new double[][]{{0.0225}}); } - - public RealMatrix get_MeasurementNoise_simple() { - return new Array2DRowRealMatrix(new double[][]{{0.01}}); + + public RealMatrix get_MeasurementNoise(boolean goodsign) { + if(goodsign){ + return new Array2DRowRealMatrix(new double[][]{{0.0225}}); + }else{ + return new Array2DRowRealMatrix(new double[][]{{2*this.doca*this.doca}}); + } } public double doca() { @@ -151,8 +180,6 @@ public double doca() { public double phi() {return phi;}//at z = 0; public double phi(double z) { - // double x_0 = r*sin(phi); - // double y_0 = r*cos(phi); double x_z = r*Math.sin( phi + thster * z/(zl*0.5) * (Math.pow(-1, this.superLayer-1)) ); double y_z = r*Math.cos( phi + thster * z/(zl*0.5) * (Math.pow(-1, this.superLayer-1)) ); return Math.atan2(x_z, y_z); @@ -161,10 +188,16 @@ public double phi(double z) { public Line3D line() {return line3D;} public double distance(Point3D point3D) { - //System.out.println("Calculating distance: "); - //this.line3D.show(); - //point3D.show(); - //System.out.println(" d = " + this.line3D.distance(point3D).length()); + return this.line3D.distance(point3D).length(); + } + + public double distance(Point3D point3D, int sign, boolean goodsign) { + //if(sign!=0) + //System.out.println(" r " + this.r + " phi " + this.phi + " doca " + this.doca + " sign " + sign + " distance " + this.line3D.distance(point3D).length() + " (sign 0) " + this.line3D_plus.distance(point3D).length() + " (sign+) " + this.line3D_minus.distance(point3D).length() + " (sign-) "); + if(!goodsign){ + if(sign>0)return this.line3D_plus.distance(point3D).length(); + if(sign<0)return this.line3D_minus.distance(point3D).length(); + } return this.line3D.distance(point3D).length(); } @@ -211,6 +244,10 @@ public double getADC() { return adc; } + public void setADC(double _adc) { + this.adc = _adc; + } + public Line3D getLine3D() { return line3D; } @@ -218,5 +255,22 @@ public Line3D getLine3D() { public double getNumWires() { return numWires; } + + public int getHitIdx() { + return hitidx; + } + + public void setHitIdx(int idx) { + this.hitidx = idx; + } + + public int getSign() { + return hitsign; + } + + public void setSign(int sign) { + this.hitsign = sign; + } + } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit_beam.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit_beam.java index e1160642e4..d3221b2939 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit_beam.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit_beam.java @@ -9,7 +9,7 @@ public class Hit_beam extends Hit { double r,phi; public Hit_beam(int superLayer, int layer, int wire, int numWire, double doca, double x, double y , double z) { - super(0, 0, 0, 0, Math.hypot(x,y), 0); + super(0, 0, 0, 0, Math.hypot(x,y), 0); this.x = x; this.y = y; this.z = z; diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KFitter.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KFitter.java index 3feddf5b27..1a184bf5dc 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KFitter.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KFitter.java @@ -17,7 +17,7 @@ public class KFitter { // masses/energies in MeV private final double electron_mass_c2 = PhysicsConstants.massElectron() * 1000; private final double proton_mass_c2 = PhysicsConstants.massProton() * 1000; - + private boolean isvertexdefined = false; public KFitter(final RealVector initialStateEstimate, final RealMatrix initialErrorCovariance, final Stepper stepper, final Propagator propagator) { this.stateEstimation = initialStateEstimate; @@ -73,39 +73,39 @@ public void predict(Indicator indicator) throws Exception { } public void correct(Indicator indicator) { - //System.out.println(" state before: (" + stateEstimation.getEntry(0) + ", " + stateEstimation.getEntry(1) + ", " + stateEstimation.getEntry(2) + ", " + stateEstimation.getEntry(3) + ", " + stateEstimation.getEntry(4) + ", " + stateEstimation.getEntry(5) + ");" ); - //System.out.println(" state radius before: " + Math.sqrt( Math.pow(stateEstimation.getEntry(0), 2) + Math.pow(stateEstimation.getEntry(1), 2) ) ); RealVector z, z_plus, z_minus; RealMatrix measurementNoise; RealMatrix measurementMatrix; RealVector h; if (indicator.R == 0.0 && !indicator.direction) { + double z_beam_res_sq = 1.e10;//in mm + if(isvertexdefined)z_beam_res_sq = 4.0;//assuming 2. mm resolution measurementNoise = new Array2DRowRealMatrix( new double[][]{ - // {9.00, 0.0000, 0.0000}, - // {0.00, 1e10, 0.0000}, - // {0.00, 0.0000, 1e10} {0.09, 0.0000, 0.0000}, - {0.00, 1.e10, 0.0000}, - {0.00, 0.0000, 1.e10} + {0.00, 1e10, 0.0000}, + {0.00, 0.0000, z_beam_res_sq} });//3x3 measurementMatrix = H_beam(stateEstimation);//6x3 h = h_beam(stateEstimation);//3x1 z = indicator.hit.get_Vector_beam();//0! } else { - measurementNoise = indicator.hit.get_MeasurementNoise_simple();//1x1 - measurementMatrix = H_simple(stateEstimation, indicator);//6x1 - h = h_simple(stateEstimation, indicator);//.multiply(wire_sign_mat(indicator));//1x1 - z = indicator.hit.get_Vector_simple();//1x1 - - // measurementNoise = indicator.hit.get_MeasurementNoise();//3x3 - // measurementMatrix = H(stateEstimation, indicator);//6x3 - // h = h(stateEstimation, indicator);//3x1 - // z = indicator.hit.get_Vector();//3x1 - - //System.out.println(" h: r " + h.getEntry(0) + " phi " + h.getEntry(1) + " h z " + h.getEntry(2) + " z: r " + z.getEntry(0) + " phi " + z.getEntry(1) + " z " + z.getEntry(2) ); - + //System.out.println(" hit r " + indicator.hit.r() + " hit phi " + indicator.hit.phi() + " phi wire (-zl/2) " + indicator.hit.phi(-150.0) + " phi wire (0) " + indicator.hit.phi(0.0) + " phi wire (+zl/2) " + indicator.hit.phi(150.) + " state x " + stateEstimation.getEntry(0) + " state y " + stateEstimation.getEntry(1) + " state z " + stateEstimation.getEntry(2) ); + boolean goodsign = true; + if(indicator.hit.getSign()!=0){ + double dphi = Math.atan2(stateEstimation.getEntry(1), stateEstimation.getEntry(0))-indicator.hit.phi(stateEstimation.getEntry(2)); + if(dphi*indicator.hit.getSign()<0)goodsign = false; + //System.out.println(" hit r " + indicator.hit.r() + " phi wire (z) " + indicator.hit.phi(stateEstimation.getEntry(2)) + " phi state " + Math.atan2(stateEstimation.getEntry(1), stateEstimation.getEntry(0)) + " sign " + indicator.hit.getSign() + " good? " + goodsign ); + } + //measurementNoise = indicator.hit.get_MeasurementNoise();//1x1 + measurementNoise = indicator.hit.get_MeasurementNoise(goodsign);//1x1 + measurementMatrix = H(stateEstimation, indicator);//6x1 + //measurementMatrix = H(stateEstimation, indicator, goodsign);//6x1 + h = h(stateEstimation, indicator);//1x1 + //h = h(stateEstimation, indicator, goodsign);//1x1 + z = indicator.hit.get_Vector();//1x1 + //z = indicator.hit.get_Vector(indicator.hit.getSign(), goodsign);//1x1 } RealMatrix measurementMatrixT = measurementMatrix.transpose(); @@ -128,7 +128,6 @@ public void correct(Indicator indicator) { RealMatrix tmpMatrix = identity.subtract(kalmanGain.multiply(measurementMatrix)); errorCovariance = tmpMatrix.multiply(errorCovariance.multiply(tmpMatrix.transpose())).add(kalmanGain.multiply(measurementNoise.multiply(kalmanGain.transpose()))); - //System.out.println(" state after: (" + stateEstimation.getEntry(0) + ", " + stateEstimation.getEntry(1) + ", " + stateEstimation.getEntry(2) + ", " + stateEstimation.getEntry(3) + ", " + stateEstimation.getEntry(4) + ", " + stateEstimation.getEntry(5) + ");" ); // Give back to the stepper the new stateEstimation stepper.y = stateEstimation.toArray(); } @@ -138,20 +137,21 @@ public double residual(Indicator indicator) { return indicator.hit.doca()-d; } - public double wire_sign(Indicator indicator) {//let's decide: positive when (phi state - phi wire) > 0 + //function for left-right disambiguation + public int wire_sign(Indicator indicator) {//let's decide: positive when (phi state - phi wire) > 0 double phi_state = Math.atan2(stateEstimation.getEntry(1), stateEstimation.getEntry(0)); double phi_wire = indicator.hit.phi(stateEstimation.getEntry(2)); - //System.out.println(" phi state " + phi_state + " phi wire " + phi_wire);// + " phi state alt? " + Math.atan2(stateEstimation.getEntry(1), stateEstimation.getEntry(0))); - return (phi_state-phi_wire)/Math.abs(phi_state-phi_wire) ; + if( (phi_state-phi_wire)/Math.abs(phi_state-phi_wire)>0 ){ + return +1; + }else{ + return -1; + } } - // public RealMatrix wire_sign_mat(Indicator indicator) {//let's decide: positive when (phi state - phi wire) > 0 - // double phi_state = Math.atan2(stateEstimation.getEntry(1), stateEstimation.getEntry(0)); - // double phi_wire = indicator.hit.phi(stateEstimation.getEntry(2)); - // System.out.println(" phi state " + phi_state + " phi wire " + phi_wire);// + " phi state alt? " + Math.atan2(stateEstimation.getEntry(1), stateEstimation.getEntry(0))); - // return MatrixUtils.createRealMatrix(new double[][]{{(phi_state-phi_wire)/Math.abs(phi_state-phi_wire)}}); - // } - + public void ResetErrorCovariance(final RealMatrix initialErrorCovariance){ + this.errorCovariance = initialErrorCovariance; + } + private RealMatrix F(Indicator indicator, Stepper stepper1) throws Exception { double[] dfdx = subfunctionF(indicator, stepper1, 0); @@ -166,7 +166,7 @@ private RealMatrix F(Indicator indicator, Stepper stepper1) throws Exception { } double[] subfunctionF(Indicator indicator, Stepper stepper1, int i) throws Exception { - double h = 1e-8; + double h = 1e-8;// in mm Stepper stepper_plus = new Stepper(stepper1.y); Stepper stepper_minus = new Stepper(stepper1.y); @@ -189,57 +189,20 @@ private RealMatrix F(Indicator indicator, Stepper stepper1) throws Exception { return new double[]{dxdi, dydi, dzdi, dpxdi, dpydi, dpzdi}; } - //measurement matrix in cylindrical coordinates: r, phi, z + //measurement matrix in 1 dimension: minimize distance - doca private RealVector h(RealVector x, Indicator indicator) { - //As per my understanding: d -> r wire; phi -> phi wire, z unconstrained - double xx = x.getEntry(0); - double yy = x.getEntry(1); - return MatrixUtils.createRealVector(new double[]{Math.hypot(xx, yy), Math.atan2(yy, xx), x.getEntry(2)}); - } - - //measurement matrix in 1 dimension: minimize distance - doca - private RealVector h_simple(RealVector x, Indicator indicator) { double d = indicator.hit.distance(new Point3D(x.getEntry(0), x.getEntry(1), x.getEntry(2))); - return MatrixUtils.createRealVector(new double[]{d});//would need to have this 3x3 + //double d = indicator.hit.distance(new Point3D(x.getEntry(0), x.getEntry(1), x.getEntry(2)), indicator.hit.getSign()); + return MatrixUtils.createRealVector(new double[]{d}); } - //measurement noise matrix in cylindrical coordinates: r, phi, z - private RealMatrix H(RealVector x, Indicator indicator) { - // dphi/dx - double xx = x.getEntry(0); - double yy = x.getEntry(1); - - double drdx = (xx) / (Math.hypot(xx, yy)); - double drdy = (yy) / (Math.hypot(xx, yy)); - double drdz = 0.0; - double drdpx = 0.0; - double drdpy = 0.0; - double drdpz = 0.0; - - double dphidx = -(yy) / (xx * xx + yy * yy); - double dphidy = (xx) / (xx * xx + yy * yy); - double dphidz = 0.0; - double dphidpx = 0.0; - double dphidpy = 0.0; - double dphidpz = 0.0; - - double dzdx = 0.0; - double dzdy = 0.0; - double dzdz = 1.0; - double dzdpx = 0.0; - double dzdpy = 0.0; - double dzdpz = 0.0; - - return MatrixUtils.createRealMatrix( - new double[][]{ - {drdx, drdy, drdz, drdpx, drdpy, drdpz}, - {dphidx, dphidy, dphidz, dphidpx, dphidpy, dphidpz}, - {dzdx, dzdy, dzdz, dzdpx, dzdpy, dzdpz} - }); + private RealVector h(RealVector x, Indicator indicator, boolean goodsign) { + double d = indicator.hit.distance(new Point3D(x.getEntry(0), x.getEntry(1), x.getEntry(2)), indicator.hit.getSign(), goodsign); + return MatrixUtils.createRealVector(new double[]{d}); } - //measurement matrix in 1 dimension: minimize distance - doca - private RealMatrix H_simple(RealVector x, Indicator indicator) { + //measurement matrix in 1 dimension: minimize distance - doca + private RealMatrix H(RealVector x, Indicator indicator) { double ddocadx = subfunctionH(x, indicator, 0); double ddocady = subfunctionH(x, indicator, 1); @@ -254,15 +217,44 @@ private RealMatrix H_simple(RealVector x, Indicator indicator) { } double subfunctionH(RealVector x, Indicator indicator, int i) { - double h = 1e-8; + double h = 1e-8;// in mm RealVector x_plus = x.copy(); RealVector x_minus = x.copy(); x_plus.setEntry(i, x_plus.getEntry(i) + h); x_minus.setEntry(i, x_minus.getEntry(i) - h); - double doca_plus = h_simple(x_plus, indicator).getEntry(0); - double doca_minus = h_simple(x_minus, indicator).getEntry(0); + double doca_plus = h(x_plus, indicator).getEntry(0); + double doca_minus = h(x_minus, indicator).getEntry(0); + + return (doca_plus - doca_minus) / (2 * h); + } + + //measurement matrix in 1 dimension: minimize distance - doca + private RealMatrix H(RealVector x, Indicator indicator, boolean goodsign) { + + double ddocadx = subfunctionH(x, indicator, 0, goodsign); + double ddocady = subfunctionH(x, indicator, 1, goodsign); + double ddocadz = subfunctionH(x, indicator, 2, goodsign); + double ddocadpx = subfunctionH(x, indicator, 3, goodsign); + double ddocadpy = subfunctionH(x, indicator, 4, goodsign); + double ddocadpz = subfunctionH(x, indicator, 5, goodsign); + + // As per my understanding: ddocadx,y,z -> = dr/dx,y,z, etc + return MatrixUtils.createRealMatrix(new double[][]{ + {ddocadx, ddocady, ddocadz, ddocadpx, ddocadpy, ddocadpz}}); + } + + double subfunctionH(RealVector x, Indicator indicator, int i, boolean goodsign) { + double h = 1e-8;// in mm + RealVector x_plus = x.copy(); + RealVector x_minus = x.copy(); + + x_plus.setEntry(i, x_plus.getEntry(i) + h); + x_minus.setEntry(i, x_minus.getEntry(i) - h); + + double doca_plus = h(x_plus, indicator, goodsign).getEntry(0); + double doca_minus = h(x_minus, indicator, goodsign).getEntry(0); return (doca_plus - doca_minus) / (2 * h); } @@ -332,4 +324,6 @@ public double getMomentum() { return Math.sqrt(stateEstimation.getEntry(3) * stateEstimation.getEntry(3) + stateEstimation.getEntry(4) * stateEstimation.getEntry(4) + stateEstimation.getEntry(5) * stateEstimation.getEntry(5)); } + public void setVertexDefined(boolean isvtxdef) {isvertexdefined = isvtxdef;} + } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java index 2cd0bc5593..85d23fedef 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java @@ -31,46 +31,42 @@ public class KalmanFilter { - public KalmanFilter(ArrayList tracks, DataEvent event) {propagation(tracks, event);} + public KalmanFilter(ArrayList tracks, DataEvent event, boolean IsMC) {propagation(tracks, event, IsMC);} - private void propagation(ArrayList tracks, DataEvent event) { + private final int Niter = 10; + private final boolean IsVtxDefined = false; + + private void propagation(ArrayList tracks, DataEvent event, boolean IsMC) { try { - //If simulation read MC::Particle Bank ------------------------------------------------ - DataBank bankParticle = event.getBank("MC::Particle"); - double vxmc = bankParticle.getFloat("vx", 0)*10;//mm - double vymc = bankParticle.getFloat("vy", 0)*10;//mm - double vzmc = bankParticle.getFloat("vz", 0)*10;//mm - double pxmc = bankParticle.getFloat("px", 0)*1000;//MeV - double pymc = bankParticle.getFloat("py", 0)*1000;//MeV - double pzmc = bankParticle.getFloat("pz", 0)*1000;//MeV - double p_mc = java.lang.Math.sqrt(pxmc*pxmc+pymc*pymc+pzmc*pzmc); - //System.out.println("MC track: vz: " + vzmc*10 + " px: " + pxmc*1000 + " py: " + pymc*1000 + " pz: " + pzmc*1000 + "; p = " + p_mc*1000);//convert p to MeV, v to mm - - ArrayList sim_hits = new ArrayList<>(); - sim_hits.add(new Point3D(0, 0, vzmc)); - - DataBank bankMC = event.getBank("MC::True"); - for (int i = 0; i < bankMC.rows(); i++) { - if (bankMC.getInt("pid", i) == 2212) { - float x = bankMC.getFloat("avgX", i); - float y = bankMC.getFloat("avgY", i); - float z = bankMC.getFloat("avgZ", i); - // System.out.println("r_sim = " + Math.hypot(x, y)); - sim_hits.add(new Point3D(x, y, z)); + double vz_constraint; + if(IsMC) {//If simulation read MC::Particle Bank ------------------------------------------------ + DataBank bankParticle = event.getBank("MC::Particle"); + double vxmc = bankParticle.getFloat("vx", 0)*10;//mm + double vymc = bankParticle.getFloat("vy", 0)*10;//mm + double vzmc = bankParticle.getFloat("vz", 0)*10;//mm + double pxmc = bankParticle.getFloat("px", 0)*1000;//MeV + double pymc = bankParticle.getFloat("py", 0)*1000;//MeV + double pzmc = bankParticle.getFloat("pz", 0)*1000;//MeV + double p_mc = java.lang.Math.sqrt(pxmc*pxmc+pymc*pymc+pzmc*pzmc); + //System.out.println("MC track: vz: " + vzmc*10 + " px: " + pxmc*1000 + " py: " + pymc*1000 + " pz: " + pzmc*1000 + "; p = " + p_mc*1000);//convert p to MeV, v to mm + + ArrayList sim_hits = new ArrayList<>(); + sim_hits.add(new Point3D(0, 0, vzmc)); + + DataBank bankMC = event.getBank("MC::True"); + for (int i = 0; i < bankMC.rows(); i++) { + if (bankMC.getInt("pid", i) == 2212) { + float x = bankMC.getFloat("avgX", i); + float y = bankMC.getFloat("avgY", i); + float z = bankMC.getFloat("avgZ", i); + // System.out.println("r_sim = " + Math.hypot(x, y)); + sim_hits.add(new Point3D(x, y, z)); + } } + vz_constraint = vzmc; } - - /* - Writer hitsWriter = new FileWriter("hits.dat"); - for (Point3D p : sim_hits) { - hitsWriter.write("" + p.x() + ", " + p.y() + ", " + p.z() + '\n'); - } - hitsWriter.close(); - */ - - // Initialization --------------------------------------------------------------------- final double magfield = +50; final PDGParticle proton = PDGDatabase.getParticleById(2212); @@ -90,46 +86,62 @@ private void propagation(ArrayList tracks, DataEvent event) { //final double py0 = tracks.get(0).get_py(); final double pz0 = tracks.get(0).get_pz(); - final double p_init = java.lang.Math.sqrt(px0*px0+py0*py0+pz0*pz0); + //final double p_init = java.lang.Math.sqrt(px0*px0+py0*py0+pz0*pz0); double[] y = new double[]{x0, y0, z0, px0, py0, pz0}; - //System.out.println("y = " + x0 + ", " + y0 + ", " + z0 + ", " + px0 + ", " + py0 + ", " + pz0 + "; p = " + p_init); // EPAF: *the line below is for TEST ONLY!!!* //double[] y = new double[]{vxmc, vymc, vzmc, pxmc, pymc, pzmc}; - //System.out.println("y = " + vxmc + ", " + vymc + ", " + vzmc + ", " + pxmc + ", " + pymc + ", " + pzmc + "; p = " + java.lang.Math.sqrt(pxmc*pxmc+pymc*pymc+pzmc*pzmc)); - // Initialization hit - //System.out.println("tracks = " + tracks); ArrayList AHDC_hits = tracks.get(0).getHits(); ArrayList KF_hits = new ArrayList<>(); + //System.out.println(" px " + y[3] + " py " + y[4] +" pz " + y[5] +" vz " + y[2] + " number of hits: " + AHDC_hits.size() + " MC hits? " + sim_hits.size()); for (org.jlab.rec.ahdc.Hit.Hit AHDC_hit : AHDC_hits) { - //System.out.println("Superlayer = " + AHDC_hit.getSuperLayerId() + ", Layer " + AHDC_hit.getLayerId() + ", Wire " + AHDC_hit.getWireId() + ", Nwires " + AHDC_hit.getNbOfWires() + ", Radius " + AHDC_hit.getRadius() + ", DOCA " + AHDC_hit.getDoca()); Hit hit = new Hit(AHDC_hit.getSuperLayerId(), AHDC_hit.getLayerId(), AHDC_hit.getWireId(), AHDC_hit.getNbOfWires(), AHDC_hit.getRadius(), AHDC_hit.getDoca()); - + hit.setADC(AHDC_hit.getADC()); + hit.setHitIdx(AHDC_hit.getId()); + hit.setSign(0); + //System.out.println( " r = " + hit.r() + " hit.phi " + hit.phi() +" hit.doca = " + hit.getDoca() ); // Do delete hit with same radius - // boolean aleardyHaveR = false; - // for (Hit o: KF_hits){ - // if (o.r() == hit.r()){ - // aleardyHaveR = true; - // } + boolean phi_rollover = false; + boolean aleardyHaveR = false; + for (Hit o: KF_hits){ + if (o.r() == hit.r()){ + aleardyHaveR = true; + // //sign+ means (phi track - phi wire) > 0 + // if(o.phi()>hit.phi()){ + // if(Math.abs(o.phi()-hit.phi())< 2*Math.toRadians(360./o.getNumWires()) ){ + // o.setSign(-1); + // hit.setSign(+1); + // }else{ + // phi_rollover = true; + // hit.setSign(-1); + // o.setSign(+1); + // } + // }else{ + // if(Math.abs(o.phi()-hit.phi())< 2*Math.toRadians(360./o.getNumWires()) ){ + // hit.setSign(-1); + // o.setSign(+1); + // }else{ + // phi_rollover = true; + // o.setSign(-1); + // hit.setSign(+1); + // } + // } + // //System.out.println( " r = " + o.r() + " o.phi = " + o.phi() + " o.doca = " + o.getDoca()*o.getSign() + " hit.phi " + hit.phi() +" hit.doca = " + hit.getDoca()*hit.getSign() + " angle between wires: " + Math.toRadians(360./hit.getNumWires()) + " >= ? angle covered by docas: " + Math.atan( (o.getDoca()+hit.getDoca())/o.r() ) ); + } + } + if(!aleardyHaveR)KF_hits.add(hit); + // if (phi_rollover){ + // KF_hits.add(KF_hits.size()-1, hit); + // }else{ + // KF_hits.add(hit); // } - // if (!aleardyHaveR) - KF_hits.add(hit); - } - - - /* - Writer hitsWiresWriter = new FileWriter("hits_wires.dat"); - for (Hit h : KF_hits) { - hitsWiresWriter.write("" + h.getSuperLayer() + ", " + h.getLayer() + ", " + h.getWire() + ", " + h.getDoca() + ", " + h.getNumWires() + ", " + h.getR() + '\n'); } - hitsWiresWriter.close(); - */ - - //System.out.println("KF_hits = " + KF_hits); + double zbeam = 0; + if(IsVtxDefined)zbeam = vz_constraint;//test final ArrayList forwardIndicators = forwardIndicators(KF_hits, materialHashMap); - final ArrayList backwardIndicators = backwardIndicators(KF_hits, materialHashMap); - + final ArrayList backwardIndicators = backwardIndicators(KF_hits, materialHashMap, zbeam); + // Start propagation Stepper stepper = new Stepper(y); RungeKutta4 RK4 = new RungeKutta4(proton, numberOfVariables, B); @@ -141,87 +153,48 @@ private void propagation(ArrayList tracks, DataEvent event) { RealVector initialStateEstimate = new ArrayRealVector(stepper.y); //first 3 lines in cm^2; last 3 lines in MeV^2 RealMatrix initialErrorCovariance = MatrixUtils.createRealMatrix(new double[][]{{1.00, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.00, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 25.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.00, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.00, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 25.0}}); - KFitter kFitter = new KFitter(initialStateEstimate, initialErrorCovariance, stepper, propagator); - - /* - Stepper stepper_fisrt = new Stepper(y); - Writer writer_first = new FileWriter("track_first.dat"); - for (Indicator indicator : forwardIndicators) { - stepper_fisrt.initialize(indicator); - propagator.propagateAndWrite(stepper_fisrt, indicator, writer_first); - } - writer_first.close(); - - - - System.out.println("--------- BackWard propagation !! ---------"); - - Writer writer_back = new FileWriter("track_back.dat"); - for (Indicator indicator : backwardIndicators) { - stepper.initialize(indicator); - propagator.propagateAndWrite(stepper, indicator, writer_back); - } - writer_back.close(); - */ - - //Print out hit residuals *before* fit: - // for (Indicator indicator : forwardIndicators) { - // kFitter.predict(indicator); - // if (indicator.haveAHit()) { - // System.out.println(" Pre-fit: indicator R " + indicator.R + "; y = " + kFitter.getStateEstimationVector() + " p = " + kFitter.getMomentum() + " residual: " + kFitter.residual(indicator) + " sign " + kFitter.wire_sign(indicator) ); - // } - // } - - for (int k = 0; k < 10; k++) { - - //System.out.println("--------- ForWard propagation !! ---------"); - + kFitter.setVertexDefined(IsVtxDefined); + + for (int k = 0; k < Niter; k++) { + //System.out.println("--------- ForWard propagation !! ---------"); + //Reset error covariance: + //kFitter.ResetErrorCovariance(initialErrorCovariance); for (Indicator indicator : forwardIndicators) { kFitter.predict(indicator); - //System.out.println("indicator R " + indicator.R + " h " + indicator.h + "; y = " + kFitter.getStateEstimationVector() + " p = " + kFitter.getMomentum()); if (indicator.haveAHit()) { - //System.out.println("Superlayer = " + indicator.hit.getSuperLayer() + ", Layer " + indicator.hit.getLayer() + ", Wire " + indicator.hit.getWire() + ", Nwires " + indicator.hit.getNumWires() + ", Radius " + indicator.hit.getR() + ", DOCA " + indicator.hit.getDoca()); - kFitter.correct(indicator); - //System.out.println("y = " + kFitter.getStateEstimationVector() + " p = " + kFitter.getMomentum()); + if( k==0 && indicator.hit.getHitIdx()>0){ + for (org.jlab.rec.ahdc.Hit.Hit AHDC_hit : AHDC_hits){ + if(AHDC_hit.getId()==indicator.hit.getHitIdx())AHDC_hit.setResidualPrefit(kFitter.residual(indicator)); + } + } + kFitter.correct(indicator); } } //System.out.println("--------- BackWard propagation !! ---------"); - for (Indicator indicator : backwardIndicators) { kFitter.predict(indicator); - //System.out.println("indicator R " + indicator.R + " h " + indicator.h + "; y = " + kFitter.getStateEstimationVector() + " p = " + kFitter.getMomentum()); if (indicator.haveAHit()) { - //System.out.println("Superlayer = " + indicator.hit.getSuperLayer() + ", Layer " + indicator.hit.getLayer() + ", Wire " + indicator.hit.getWire() + ", Nwires " + indicator.hit.getNumWires() + ", Radius " + indicator.hit.getR() + ", DOCA " + indicator.hit.getDoca()); kFitter.correct(indicator); - //System.out.println("y = " + kFitter.getStateEstimationVector() + " p = " + kFitter.getMomentum()); } } } - // //Print out residuals *after* fit: - // for (Indicator indicator : forwardIndicators) { - // kFitter.predict(indicator); - // if (indicator.haveAHit()) { - // System.out.println(" Post-fit: indicator R " + indicator.R + "; y = " + kFitter.getStateEstimationVector() + " p = " + kFitter.getMomentum() + " residual: " + kFitter.residual(indicator) + " sign " + kFitter.wire_sign(indicator) ); - // } - // } - - /* - Writer writer_last = new FileWriter("track_last.dat"); - for (Indicator indicator : forwardIndicators) { - stepper.initialize(indicator); - propagator.propagateAndWrite(stepper, indicator, writer_last); - } - writer_last.close(); - */ - - RealVector x_out = kFitter.getStateEstimationVector(); tracks.get(0).setPositionAndMomentumForKF(x_out); - //System.out.println("y_final = " + x_out + " p_final = " + kFitter.getMomentum()); + //Residual calcuation post fit: + for (Indicator indicator : forwardIndicators) { + kFitter.predict(indicator); + if (indicator.haveAHit()) { + if( indicator.hit.getHitIdx()>0){ + for (org.jlab.rec.ahdc.Hit.Hit AHDC_hit : AHDC_hits){ + if(AHDC_hit.getId()==indicator.hit.getHitIdx())AHDC_hit.setResidual(kFitter.residual(indicator)); + } + } + } + } } catch (Exception e) { // e.printStackTrace(); } @@ -301,4 +274,17 @@ ArrayList backwardIndicators(ArrayList hitArrayList, HashMap backwardIndicators(ArrayList hitArrayList, HashMap materialHashMap, double vz) { + ArrayList backwardIndicators = new ArrayList<>(); + //R, h, defined in mm! + for (int i = hitArrayList.size() - 2; i >= 0; i--) { + backwardIndicators.add(new Indicator(hitArrayList.get(i).r(), 0.1, hitArrayList.get(i), false, materialHashMap.get("BONuS12Gas"))); + } + backwardIndicators.add(new Indicator(3.060, 1, null, false, materialHashMap.get("BONuS12Gas"))); + backwardIndicators.add(new Indicator(3.0, 0.001, null, false, materialHashMap.get("Kapton"))); + Hit hit = new Hit_beam(0, 0, 0, 0, 0, 0, 0, vz); + backwardIndicators.add(new Indicator(0.0, 0.2, hit, false, materialHashMap.get("deuteriumGas"))); + return backwardIndicators; + } } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java index 8a968ba512..1e9ace5a68 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java @@ -15,7 +15,6 @@ public class Track { private List _Clusters = new ArrayList<>(); private boolean _Used = false; private final ArrayList hits = new ArrayList<>(); - ; private double x0 = 0; private double y0 = 0; @@ -64,6 +63,15 @@ public void setPositionAndMomentum(HelixFitObject helixFitObject) { this.pz0 = helixFitObject.get_pz(); } + public void setPositionAndMomentumVec(double[] x) { + this.x0 = x[0]; + this.y0 = x[1]; + this.z0 = x[2]; + this.px0 = x[3]; + this.py0 = x[4]; + this.pz0 = x[5]; + } + public void setPositionAndMomentumForKF(RealVector x) { this.x0_kf = x.getEntry(0); this.y0_kf = x.getEntry(1); diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java index 9c118a09a2..d57a6b2bec 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java @@ -91,7 +91,9 @@ public boolean processDataEvent(DataEvent event) { HitReader hitRead = new HitReader(event, simulation); ArrayList AHDC_Hits = hitRead.get_AHDCHits(); - ArrayList TrueAHDC_Hits = hitRead.get_TrueAHDCHits(); + if(simulation){ + ArrayList TrueAHDC_Hits = hitRead.get_TrueAHDCHits(); + } //System.out.println("AHDC_Hits size " + AHDC_Hits.size()); // II) Create PreCluster @@ -183,12 +185,15 @@ public int compare(Hit a1, Hit a2) { HelixFitJava h = new HelixFitJava(); track.setPositionAndMomentum(h.HelixFit(nbOfPoints, szPos, 1)); + // double p = 150.0;//MeV/c + // double phi = Math.atan2(szPos[0][1], szPos[0][0]); + // double x_0[] = {0.0, 0.0, 0.0, p*Math.sin(phi), p*Math.cos(phi), 0.0}; + // track.setPositionAndMomentumVec(x_0); } // VI) Kalman Filter // System.out.println("AHDC_Tracks = " + AHDC_Tracks); - KalmanFilter kalmanFitter = new KalmanFilter(AHDC_Tracks, event); - + KalmanFilter kalmanFitter = new KalmanFilter(AHDC_Tracks, event, simulation); // VII) Write bank RecoBankWriter writer = new RecoBankWriter(); From 3b01ae6fa746246c375c9ef791e164091a531bd5 Mon Sep 17 00:00:00 2001 From: Whitney Armstrong Date: Thu, 27 Mar 2025 16:09:31 -0500 Subject: [PATCH 013/100] Petiroc timestamps2 (#512) * Added petiroc board timestamps * Adding CI stuff that is for gitlab modified: common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java modified: common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java modified: common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorDataDgtz.java modified: etc/bankdefs/hipo4/data.json --------- Co-authored-by: Whitney Armstrong --- .containers/coatjava.Dockerfile | 3 +- .containers/coatjava.def | 14 ++++++++ .gitlab-ci.yml | 14 ++++++++ README.md | 3 ++ .../jlab/detector/decode/CLASDecoder4.java | 2 ++ .../detector/decode/CodaEventDecoder.java | 32 +++++++++++++------ .../detector/decode/DetectorDataDgtz.java | 24 +++++++++----- etc/bankdefs/hipo4/data.json | 4 ++- 8 files changed, 76 insertions(+), 20 deletions(-) create mode 100644 .containers/coatjava.def diff --git a/.containers/coatjava.Dockerfile b/.containers/coatjava.Dockerfile index dbe73116a0..513e16c0a1 100644 --- a/.containers/coatjava.Dockerfile +++ b/.containers/coatjava.Dockerfile @@ -22,4 +22,5 @@ ARG REF_NAME=development # build coatjava RUN java --version && cd /opt && \ git clone https://code.jlab.org/hallb/alert/coatjava.git && cd coatjava && \ - git fetch origin && git checkout ${REF_NAME} && ./build-coatjava.sh --quiet + git fetch origin && git checkout ${REF_NAME} && ./build-coatjava.sh --quiet && \ + ./install-clara /opt/clara diff --git a/.containers/coatjava.def b/.containers/coatjava.def new file mode 100644 index 0000000000..8dc1962ac8 --- /dev/null +++ b/.containers/coatjava.def @@ -0,0 +1,14 @@ +Bootstrap: docker +From: codecr.jlab.org/hallb/alert/coatjava/coatjava:{{ REF_NAME }} + + +%environment + export CLAS12DIR=/opt/coatjava/coatjava + +%help + This is a clas12 coatjava container used to run coatjava on HPC systems + and do rapid development. + +%labels + Author Whitney Armstrong warmstrong@anl.gov + REF_NAME {{ REF_NAME }} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index da31aa64a8..db9ad01fa8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,6 +9,7 @@ workflow: variables: KUBERNETES_MEMORY_LIMIT: "8Gi" + REF_NAME: ${CI_COMMIT_REF_NAME} default: image: ubuntu:noble @@ -69,3 +70,16 @@ shared_for_alert_tests: project: hallb/alert/atof/shared_for_alert strategy: depend +coatjava:singularity: + image: eicweb.phy.anl.gov:4567/containers/image_recipes/ubuntu_dind:latest + tags: + - silicon + allow_failure: true + script: + - apptainer build --build-arg REF_NAME=${REF_NAME} coatjava.sif .containers/coatjava.def + - ls -lrth + artifacts: + paths: + - coatjava.sif + + diff --git a/README.md b/README.md index 932aa457cd..6d5f89bd5e 100644 --- a/README.md +++ b/README.md @@ -58,3 +58,6 @@ http://stackoverflow.com/questions/600079/how-do-i-clone-a-subdirectory-only-of- --> + +[Coatjava Apptainer](https://code.jlab.org/hallb/alert/coatjava/-/jobs/artifacts/development/raw/coatjava.sif?job=coatjava%3Asingularity) + diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java index a11ff73f98..b77bc9920a 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java @@ -333,6 +333,8 @@ public Bank getDataBankTDCPetiroc(String name, DetectorType type){ tdcBANK.putByte("order", i, (byte) tdcDGTZ.get(i).getDescriptor().getOrder()); tdcBANK.putInt("TDC", i, tdcDGTZ.get(i).getTDCData(0).getTime()); tdcBANK.putInt("ToT", i, tdcDGTZ.get(i).getTDCData(0).getToT()); + tdcBANK.putLong("timestamp", i, tdcDGTZ.get(i).getTDCData(0).getTimeStamp()); + tdcBANK.putInt("trigger", i, tdcDGTZ.get(i).getTrigger()); //System.err.println("event: " + tdcDGTZ.get(i).toString()); } return tdcBANK; diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java index 4d39ad1077..7b5dfd7069 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java @@ -1063,24 +1063,36 @@ public List getDataEntries_57657(Integer crate, EvioNode node int position = 0; while(position -> "bank" DetectorDataDgtz -> "tdc" TDCData + // there is a redundancy in timestamp: the same value is stored in TDCData and the DetectorDataDgz + // + bank.setTimeStamp(time_stamp); + bank.setTrigger(trig_num);; + TDCData tdc_data = new TDCData(tdc, tot); + tdc_data.setTimeStamp(time_stamp).setOrder(counter); + bank.addTDC(tdc_data); entries.add(bank); - position += 3; + position += 3; // channel,tdc,tot counter++; //System.err.println("event: " + bank.toString()); } diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorDataDgtz.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorDataDgtz.java index 375c322b3d..566715c30a 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorDataDgtz.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorDataDgtz.java @@ -14,12 +14,14 @@ */ public class DetectorDataDgtz implements Comparable { - private final List adcStore = new ArrayList<>(); - private final List tdcStore = new ArrayList<>(); - private final List vtpStore = new ArrayList<>(); - private final List scalerStore = new ArrayList<>(); - private Long timeStamp = 0L; + private final List adcStore = new ArrayList<>(); + private final List tdcStore = new ArrayList<>(); + private final List vtpStore = new ArrayList<>(); + private final List scalerStore = new ArrayList<>(); + private Long timeStamp = 0L; + private int trigger = 0; // Trigger number ( usually only 1 trigger due to rol2(?) ); + private final DetectorDescriptor descriptor = new DetectorDescriptor(); public DetectorDataDgtz(){ @@ -66,6 +68,9 @@ public long getTimeStamp(){ public DetectorDescriptor getDescriptor(){ return this.descriptor; } + + public int getTrigger() { return trigger;} + public DetectorDataDgtz setTrigger(int trig) { trigger = trig;return this;} @Override public String toString(){ @@ -330,9 +335,10 @@ public int compareTo(ADCData o) { */ public static class TDCData implements Comparable{ - private int tdcOrder = 0; // Used for sorting - private int tdcTime = 0; - private int tdcToT = 0; // Time over threshold + private int tdcOrder = 0; // Used for sorting + private int tdcTime = 0; + private int tdcToT = 0; // Time over threshold + private Long timeStamp = 0L; public TDCData() {} public TDCData(int time) { this.tdcTime = time;} @@ -340,9 +346,11 @@ public TDCData() {} public int getTime() { return this.tdcTime;} public int getToT() { return this.tdcToT;} public int getOrder() { return tdcOrder;} + public long getTimeStamp(){ return this.timeStamp; } public TDCData setOrder(int order) { tdcOrder = order;return this;} public TDCData setTime(short time) { tdcTime = time;return this;} public TDCData setToT(short ToT) { tdcToT = ToT;return this;} + public TDCData setTimeStamp(long time){ timeStamp = time;return this; } @Override public String toString(){ diff --git a/etc/bankdefs/hipo4/data.json b/etc/bankdefs/hipo4/data.json index d965ded0bc..07367082d8 100644 --- a/etc/bankdefs/hipo4/data.json +++ b/etc/bankdefs/hipo4/data.json @@ -108,7 +108,9 @@ { "name":"component" , "type":"S", "info":"signal (1-2)"}, { "name":"order" , "type":"B", "info":"order: 2 - TDCL , 3 - TDCR"}, { "name":"TDC" , "type":"I", "info":"TDC value"}, - { "name":"ToT" , "type":"I", "info":"Time Over Threshold"} + { "name":"ToT" , "type":"I", "info":"Time Over Threshold"}, + { "name":"timestamp" , "type":"L", "info":"timestamp"}, + { "name":"trigger" , "type":"I", "info":"trigger number"} ] }, { From 4934533b4e326f13aacda58fffb5f4f89325d9fb Mon Sep 17 00:00:00 2001 From: baltzell Date: Tue, 25 Mar 2025 14:19:08 -0400 Subject: [PATCH 014/100] bump version --- common-tools/clara-io/pom.xml | 4 ++-- common-tools/clas-analysis/pom.xml | 20 ++++++++--------- common-tools/clas-detector/pom.xml | 10 ++++----- common-tools/clas-geometry/pom.xml | 4 ++-- common-tools/clas-io/pom.xml | 8 +++---- common-tools/clas-jcsg/pom.xml | 8 +++---- 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 | 16 +++++++------- common-tools/clas-tracking/pom.xml | 6 +++--- common-tools/clas-utils/pom.xml | 6 +++--- common-tools/cnuphys/magfield/pom.xml | 2 +- common-tools/cnuphys/swimmer/pom.xml | 2 +- common-tools/coat-lib/deployDistribution.sh | 2 +- common-tools/coat-lib/pom.xml | 24 ++++++++++----------- common-tools/parent/pom.xml | 2 +- common-tools/pom.xml | 4 ++-- common-tools/swim-tools/pom.xml | 6 +++--- parent/pom.xml | 2 +- pom.xml | 4 ++-- reconstruction/alert/pom.xml | 10 ++++----- reconstruction/band/pom.xml | 4 ++-- reconstruction/bg/pom.xml | 8 +++---- reconstruction/cnd/pom.xml | 2 +- reconstruction/cvt/pom.xml | 6 +++--- reconstruction/dc/pom.xml | 14 ++++++------ reconstruction/eb/pom.xml | 10 ++++----- reconstruction/ec/pom.xml | 6 +++--- reconstruction/fmt/pom.xml | 6 +++--- reconstruction/ft/pom.xml | 4 ++-- reconstruction/htcc/pom.xml | 4 ++-- reconstruction/ltcc/pom.xml | 4 ++-- reconstruction/mc/pom.xml | 4 ++-- reconstruction/mltn/pom.xml | 6 +++--- reconstruction/pom.xml | 4 ++-- reconstruction/postproc/pom.xml | 8 +++---- reconstruction/raster/pom.xml | 4 ++-- reconstruction/rich/pom.xml | 6 +++--- reconstruction/rtpc/pom.xml | 6 +++--- reconstruction/swaps/pom.xml | 8 +++---- reconstruction/tof/pom.xml | 4 ++-- reconstruction/urwell/pom.xml | 6 +++--- reconstruction/vtx/pom.xml | 6 +++--- 44 files changed, 141 insertions(+), 141 deletions(-) diff --git a/common-tools/clara-io/pom.xml b/common-tools/clara-io/pom.xml index 829ad4a1bd..bf2c1ba1c6 100644 --- a/common-tools/clara-io/pom.xml +++ b/common-tools/clara-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clara-io - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/common-tools/clas-analysis/pom.xml b/common-tools/clas-analysis/pom.xml index fd3f5efb02..f45de2ed87 100644 --- a/common-tools/clas-analysis/pom.xml +++ b/common-tools/clas-analysis/pom.xml @@ -3,63 +3,63 @@ 4.0.0 org.jlab.clas clas-analysis - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-utils - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-physics - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-io - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-geometry - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-jcsg - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas swim-tools - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-detector - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/common-tools/clas-detector/pom.xml b/common-tools/clas-detector/pom.xml index 635bc38466..e066534092 100644 --- a/common-tools/clas-detector/pom.xml +++ b/common-tools/clas-detector/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-detector - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-utils - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -29,13 +29,13 @@ org.jlab.clas clas-io - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-geometry - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/common-tools/clas-geometry/pom.xml b/common-tools/clas-geometry/pom.xml index 6dc61e0065..bc43d31c34 100644 --- a/common-tools/clas-geometry/pom.xml +++ b/common-tools/clas-geometry/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-geometry - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/common-tools/clas-io/pom.xml b/common-tools/clas-io/pom.xml index 3b1e1e0e21..423ff45b44 100644 --- a/common-tools/clas-io/pom.xml +++ b/common-tools/clas-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-io - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -90,13 +90,13 @@ org.jlab.clas clas-utils - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-logging - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT compile diff --git a/common-tools/clas-jcsg/pom.xml b/common-tools/clas-jcsg/pom.xml index 7a059f995c..9fa486bb4d 100644 --- a/common-tools/clas-jcsg/pom.xml +++ b/common-tools/clas-jcsg/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-jcsg - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -27,12 +27,12 @@ org.jlab.clas clas-geometry - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-detector - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT java3d diff --git a/common-tools/clas-logging/pom.xml b/common-tools/clas-logging/pom.xml index 0066ae526e..c43cf60ce9 100644 --- a/common-tools/clas-logging/pom.xml +++ b/common-tools/clas-logging/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-logging - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/common-tools/clas-math/pom.xml b/common-tools/clas-math/pom.xml index f4630287b2..d92d25dbdf 100644 --- a/common-tools/clas-math/pom.xml +++ b/common-tools/clas-math/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-math - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/common-tools/clas-physics/pom.xml b/common-tools/clas-physics/pom.xml index a40eb684fb..29e2072462 100644 --- a/common-tools/clas-physics/pom.xml +++ b/common-tools/clas-physics/pom.xml @@ -4,14 +4,14 @@ org.jlab.clas clas-physics - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/common-tools/clas-reco/pom.xml b/common-tools/clas-reco/pom.xml index 49da337693..a46c9cfc06 100644 --- a/common-tools/clas-reco/pom.xml +++ b/common-tools/clas-reco/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -42,37 +42,37 @@ org.jlab.clas clas-math - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-io - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-logging - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-physics - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-utils - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-detector - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/common-tools/clas-tracking/pom.xml b/common-tools/clas-tracking/pom.xml index 54afb47497..9899c35db9 100644 --- a/common-tools/clas-tracking/pom.xml +++ b/common-tools/clas-tracking/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-tracking - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -22,7 +22,7 @@ org.jlab.clas swim-tools - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar diff --git a/common-tools/clas-utils/pom.xml b/common-tools/clas-utils/pom.xml index 8a5af26906..27eaf448c4 100644 --- a/common-tools/clas-utils/pom.xml +++ b/common-tools/clas-utils/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-utils - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-logging - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.apache.commons diff --git a/common-tools/cnuphys/magfield/pom.xml b/common-tools/cnuphys/magfield/pom.xml index 7457f062fe..b9bb595106 100644 --- a/common-tools/cnuphys/magfield/pom.xml +++ b/common-tools/cnuphys/magfield/pom.xml @@ -23,7 +23,7 @@ org.jlab.clas clas-math - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/common-tools/cnuphys/swimmer/pom.xml b/common-tools/cnuphys/swimmer/pom.xml index 1ce598917b..11c157cac7 100644 --- a/common-tools/cnuphys/swimmer/pom.xml +++ b/common-tools/cnuphys/swimmer/pom.xml @@ -35,7 +35,7 @@ org.jlab.clas clas-math - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/common-tools/coat-lib/deployDistribution.sh b/common-tools/coat-lib/deployDistribution.sh index 82f60669c1..59442fe697 100755 --- a/common-tools/coat-lib/deployDistribution.sh +++ b/common-tools/coat-lib/deployDistribution.sh @@ -8,7 +8,7 @@ cd `dirname $0` # Script is exporting existing Jar files to repository #------------------------------------------------------------------------------------------------- -VERSION=11.1.2 +VERSION=11.2.0 mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file \ -Dfile=target/coat-libs-${VERSION}-SNAPSHOT.jar \ diff --git a/common-tools/coat-lib/pom.xml b/common-tools/coat-lib/pom.xml index 19adba8240..0e499590ec 100644 --- a/common-tools/coat-lib/pom.xml +++ b/common-tools/coat-lib/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jlab.clas coat-libs - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT pom @@ -94,67 +94,67 @@ org.jlab.clas clas-io - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clara-io - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-utils - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-jcsg - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-detector - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-analysis - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-geometry - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-physics - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas swim-tools - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-tracking - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/common-tools/parent/pom.xml b/common-tools/parent/pom.xml index 2b2f55a848..870d579c2f 100644 --- a/common-tools/parent/pom.xml +++ b/common-tools/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas common-tools - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT pom diff --git a/common-tools/pom.xml b/common-tools/pom.xml index 818a5f5b0d..bc7f6cb477 100644 --- a/common-tools/pom.xml +++ b/common-tools/pom.xml @@ -2,14 +2,14 @@ 4.0.0 org.jlab.clas common-tools - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/common-tools/swim-tools/pom.xml b/common-tools/swim-tools/pom.xml index ea39341ec5..806fe88e23 100644 --- a/common-tools/swim-tools/pom.xml +++ b/common-tools/swim-tools/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas swim-tools - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/parent/pom.xml b/parent/pom.xml index 7ec68aacdb..ff460c983a 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas clas12rec - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT pom diff --git a/pom.xml b/pom.xml index dfa7482c60..f070c1565f 100644 --- a/pom.xml +++ b/pom.xml @@ -2,14 +2,14 @@ 4.0.0 org.jlab.clas clas12 - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT pom org.jlab.clas clas12rec parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index a6e4c5cf61..7986e0d5b7 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -13,31 +13,31 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-io - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT compile org.jlab.clas clas-tracking - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT compile org.jlab.clas clas-geometry - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT compile diff --git a/reconstruction/band/pom.xml b/reconstruction/band/pom.xml index 6d8fe0fb4f..bbc895415d 100644 --- a/reconstruction/band/pom.xml +++ b/reconstruction/band/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/bg/pom.xml b/reconstruction/bg/pom.xml index 195842c21e..08dfc2ef58 100644 --- a/reconstruction/bg/pom.xml +++ b/reconstruction/bg/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-analysis - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/cnd/pom.xml b/reconstruction/cnd/pom.xml index 0e5c074050..ffdf9ce607 100644 --- a/reconstruction/cnd/pom.xml +++ b/reconstruction/cnd/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/cvt/pom.xml b/reconstruction/cvt/pom.xml index 9c8d67d3d5..ed523a7f9c 100644 --- a/reconstruction/cvt/pom.xml +++ b/reconstruction/cvt/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -47,7 +47,7 @@ org.jlab.clas clas-tracking - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/dc/pom.xml b/reconstruction/dc/pom.xml index 9f352b167e..4c8f111064 100644 --- a/reconstruction/dc/pom.xml +++ b/reconstruction/dc/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -28,25 +28,25 @@ org.jlab.clas clas-tracking - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-jcsg - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-analysis - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -75,13 +75,13 @@ org.jlab.clas swim-tools - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-math - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/eb/pom.xml b/reconstruction/eb/pom.xml index 08a26dcc77..75cfc6003b 100644 --- a/reconstruction/eb/pom.xml +++ b/reconstruction/eb/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -21,25 +21,25 @@ org.jlab.clas clas-utils - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-io - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-analysis - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/ec/pom.xml b/reconstruction/ec/pom.xml index b70658b6aa..a8d670dd81 100644 --- a/reconstruction/ec/pom.xml +++ b/reconstruction/ec/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-analysis - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/fmt/pom.xml b/reconstruction/fmt/pom.xml index 8aa1df07eb..fc5e041def 100644 --- a/reconstruction/fmt/pom.xml +++ b/reconstruction/fmt/pom.xml @@ -15,21 +15,21 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-jcsg - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas swim-tools - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/ft/pom.xml b/reconstruction/ft/pom.xml index 9a18c45343..caa4df7190 100644 --- a/reconstruction/ft/pom.xml +++ b/reconstruction/ft/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/htcc/pom.xml b/reconstruction/htcc/pom.xml index 3412c49c2b..056ea51a03 100644 --- a/reconstruction/htcc/pom.xml +++ b/reconstruction/htcc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/ltcc/pom.xml b/reconstruction/ltcc/pom.xml index 6454000c7e..6782d2e91d 100644 --- a/reconstruction/ltcc/pom.xml +++ b/reconstruction/ltcc/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/mc/pom.xml b/reconstruction/mc/pom.xml index f590eceb3b..cb1816605f 100644 --- a/reconstruction/mc/pom.xml +++ b/reconstruction/mc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/mltn/pom.xml b/reconstruction/mltn/pom.xml index 95bf0ab6d0..c882e24cc2 100644 --- a/reconstruction/mltn/pom.xml +++ b/reconstruction/mltn/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -34,13 +34,13 @@ org.jlab.clas clas-io - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/pom.xml b/reconstruction/pom.xml index 76ed7aa839..bd3ae57c8b 100644 --- a/reconstruction/pom.xml +++ b/reconstruction/pom.xml @@ -3,14 +3,14 @@ org.jlab.clas reconstruction - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/postproc/pom.xml b/reconstruction/postproc/pom.xml index 6c561dfefb..64ad7beebe 100644 --- a/reconstruction/postproc/pom.xml +++ b/reconstruction/postproc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-analysis - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/raster/pom.xml b/reconstruction/raster/pom.xml index 2c248ac363..e84fdb317a 100644 --- a/reconstruction/raster/pom.xml +++ b/reconstruction/raster/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/rich/pom.xml b/reconstruction/rich/pom.xml index 58a9573c34..01067f10fb 100644 --- a/reconstruction/rich/pom.xml +++ b/reconstruction/rich/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-jcsg - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/rtpc/pom.xml b/reconstruction/rtpc/pom.xml index 66340c0618..af5901ae94 100644 --- a/reconstruction/rtpc/pom.xml +++ b/reconstruction/rtpc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -21,12 +21,12 @@ org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-tracking - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT compile diff --git a/reconstruction/swaps/pom.xml b/reconstruction/swaps/pom.xml index e09381c4dc..e63cc64089 100644 --- a/reconstruction/swaps/pom.xml +++ b/reconstruction/swaps/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-detector - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-io - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-reco - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/tof/pom.xml b/reconstruction/tof/pom.xml index ce99a611c0..6f1db04b2d 100644 --- a/reconstruction/tof/pom.xml +++ b/reconstruction/tof/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/urwell/pom.xml b/reconstruction/urwell/pom.xml index ccb5251a2c..a95dbd7f84 100644 --- a/reconstruction/urwell/pom.xml +++ b/reconstruction/urwell/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT org.jlab.clas clas-analysis - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT diff --git a/reconstruction/vtx/pom.xml b/reconstruction/vtx/pom.xml index 98c454538c..68a7ac2b47 100644 --- a/reconstruction/vtx/pom.xml +++ b/reconstruction/vtx/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT @@ -33,13 +33,13 @@ org.jlab.clas swim-tools - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar org.jlab.clas clas-tracking - 11.1.2-SNAPSHOT + 11.2.0-SNAPSHOT jar From 9c2f6cc27d7ac4cc7a94f3d4596009b6cd80b26d Mon Sep 17 00:00:00 2001 From: Raffaella De Vita Date: Fri, 28 Mar 2025 09:21:22 -0400 Subject: [PATCH 015/100] version bump --- common-tools/clara-io/pom.xml | 4 ++-- common-tools/clas-analysis/pom.xml | 20 ++++++++--------- common-tools/clas-detector/pom.xml | 10 ++++----- common-tools/clas-geometry/pom.xml | 4 ++-- common-tools/clas-io/pom.xml | 8 +++---- common-tools/clas-jcsg/pom.xml | 8 +++---- 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 | 16 +++++++------- common-tools/clas-tracking/pom.xml | 6 +++--- common-tools/clas-utils/pom.xml | 6 +++--- common-tools/cnuphys/magfield/pom.xml | 2 +- common-tools/cnuphys/swimmer/pom.xml | 2 +- common-tools/coat-lib/deployDistribution.sh | 2 +- common-tools/coat-lib/pom.xml | 24 ++++++++++----------- common-tools/parent/pom.xml | 2 +- common-tools/pom.xml | 4 ++-- common-tools/swim-tools/pom.xml | 6 +++--- parent/pom.xml | 2 +- pom.xml | 4 ++-- reconstruction/alert/pom.xml | 10 ++++----- reconstruction/band/pom.xml | 4 ++-- reconstruction/bg/pom.xml | 8 +++---- reconstruction/cnd/pom.xml | 2 +- reconstruction/cvt/pom.xml | 6 +++--- reconstruction/dc/pom.xml | 14 ++++++------ reconstruction/eb/pom.xml | 10 ++++----- reconstruction/ec/pom.xml | 6 +++--- reconstruction/fmt/pom.xml | 6 +++--- reconstruction/ft/pom.xml | 4 ++-- reconstruction/htcc/pom.xml | 4 ++-- reconstruction/ltcc/pom.xml | 4 ++-- reconstruction/mc/pom.xml | 4 ++-- reconstruction/mltn/pom.xml | 6 +++--- reconstruction/pom.xml | 4 ++-- reconstruction/postproc/pom.xml | 8 +++---- reconstruction/raster/pom.xml | 4 ++-- reconstruction/rich/pom.xml | 6 +++--- reconstruction/rtpc/pom.xml | 6 +++--- reconstruction/swaps/pom.xml | 8 +++---- reconstruction/tof/pom.xml | 4 ++-- reconstruction/urwell/pom.xml | 6 +++--- reconstruction/vtx/pom.xml | 6 +++--- 44 files changed, 141 insertions(+), 141 deletions(-) diff --git a/common-tools/clara-io/pom.xml b/common-tools/clara-io/pom.xml index bf2c1ba1c6..85e0f6ac18 100644 --- a/common-tools/clara-io/pom.xml +++ b/common-tools/clara-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clara-io - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/common-tools/clas-analysis/pom.xml b/common-tools/clas-analysis/pom.xml index f45de2ed87..225df2e94b 100644 --- a/common-tools/clas-analysis/pom.xml +++ b/common-tools/clas-analysis/pom.xml @@ -3,63 +3,63 @@ 4.0.0 org.jlab.clas clas-analysis - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-utils - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-physics - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-io - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-geometry - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-jcsg - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas swim-tools - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-detector - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/common-tools/clas-detector/pom.xml b/common-tools/clas-detector/pom.xml index e066534092..daa1561020 100644 --- a/common-tools/clas-detector/pom.xml +++ b/common-tools/clas-detector/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-detector - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-utils - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -29,13 +29,13 @@ org.jlab.clas clas-io - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-geometry - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/common-tools/clas-geometry/pom.xml b/common-tools/clas-geometry/pom.xml index bc43d31c34..dae95ea2d5 100644 --- a/common-tools/clas-geometry/pom.xml +++ b/common-tools/clas-geometry/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-geometry - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/common-tools/clas-io/pom.xml b/common-tools/clas-io/pom.xml index 423ff45b44..4f4946d3fb 100644 --- a/common-tools/clas-io/pom.xml +++ b/common-tools/clas-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-io - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -90,13 +90,13 @@ org.jlab.clas clas-utils - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-logging - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT compile diff --git a/common-tools/clas-jcsg/pom.xml b/common-tools/clas-jcsg/pom.xml index 9fa486bb4d..cc9bf43107 100644 --- a/common-tools/clas-jcsg/pom.xml +++ b/common-tools/clas-jcsg/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-jcsg - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -27,12 +27,12 @@ org.jlab.clas clas-geometry - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-detector - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT java3d diff --git a/common-tools/clas-logging/pom.xml b/common-tools/clas-logging/pom.xml index c43cf60ce9..2f0c27ec5a 100644 --- a/common-tools/clas-logging/pom.xml +++ b/common-tools/clas-logging/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-logging - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/common-tools/clas-math/pom.xml b/common-tools/clas-math/pom.xml index d92d25dbdf..04f13f0714 100644 --- a/common-tools/clas-math/pom.xml +++ b/common-tools/clas-math/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-math - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/common-tools/clas-physics/pom.xml b/common-tools/clas-physics/pom.xml index 29e2072462..784bcd1ecb 100644 --- a/common-tools/clas-physics/pom.xml +++ b/common-tools/clas-physics/pom.xml @@ -4,14 +4,14 @@ org.jlab.clas clas-physics - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/common-tools/clas-reco/pom.xml b/common-tools/clas-reco/pom.xml index a46c9cfc06..b9980570f3 100644 --- a/common-tools/clas-reco/pom.xml +++ b/common-tools/clas-reco/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -42,37 +42,37 @@ org.jlab.clas clas-math - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-io - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-logging - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-physics - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-utils - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-detector - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/common-tools/clas-tracking/pom.xml b/common-tools/clas-tracking/pom.xml index 9899c35db9..485426782a 100644 --- a/common-tools/clas-tracking/pom.xml +++ b/common-tools/clas-tracking/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-tracking - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -22,7 +22,7 @@ org.jlab.clas swim-tools - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar diff --git a/common-tools/clas-utils/pom.xml b/common-tools/clas-utils/pom.xml index 27eaf448c4..4aa2cccecf 100644 --- a/common-tools/clas-utils/pom.xml +++ b/common-tools/clas-utils/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-utils - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-logging - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.apache.commons diff --git a/common-tools/cnuphys/magfield/pom.xml b/common-tools/cnuphys/magfield/pom.xml index b9bb595106..b666ba7272 100644 --- a/common-tools/cnuphys/magfield/pom.xml +++ b/common-tools/cnuphys/magfield/pom.xml @@ -23,7 +23,7 @@ org.jlab.clas clas-math - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/common-tools/cnuphys/swimmer/pom.xml b/common-tools/cnuphys/swimmer/pom.xml index 11c157cac7..de6f825263 100644 --- a/common-tools/cnuphys/swimmer/pom.xml +++ b/common-tools/cnuphys/swimmer/pom.xml @@ -35,7 +35,7 @@ org.jlab.clas clas-math - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/common-tools/coat-lib/deployDistribution.sh b/common-tools/coat-lib/deployDistribution.sh index 59442fe697..d21d3eeae0 100755 --- a/common-tools/coat-lib/deployDistribution.sh +++ b/common-tools/coat-lib/deployDistribution.sh @@ -8,7 +8,7 @@ cd `dirname $0` # Script is exporting existing Jar files to repository #------------------------------------------------------------------------------------------------- -VERSION=11.2.0 +VERSION=12.0.0 mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file \ -Dfile=target/coat-libs-${VERSION}-SNAPSHOT.jar \ diff --git a/common-tools/coat-lib/pom.xml b/common-tools/coat-lib/pom.xml index 0e499590ec..aa9ae7cadc 100644 --- a/common-tools/coat-lib/pom.xml +++ b/common-tools/coat-lib/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jlab.clas coat-libs - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT pom @@ -94,67 +94,67 @@ org.jlab.clas clas-io - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clara-io - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-utils - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-jcsg - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-detector - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-analysis - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-geometry - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-physics - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas swim-tools - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-tracking - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/common-tools/parent/pom.xml b/common-tools/parent/pom.xml index 870d579c2f..ea3c155514 100644 --- a/common-tools/parent/pom.xml +++ b/common-tools/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas common-tools - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT pom diff --git a/common-tools/pom.xml b/common-tools/pom.xml index bc7f6cb477..5cac22d24d 100644 --- a/common-tools/pom.xml +++ b/common-tools/pom.xml @@ -2,14 +2,14 @@ 4.0.0 org.jlab.clas common-tools - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/common-tools/swim-tools/pom.xml b/common-tools/swim-tools/pom.xml index 806fe88e23..140e56b606 100644 --- a/common-tools/swim-tools/pom.xml +++ b/common-tools/swim-tools/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas swim-tools - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/parent/pom.xml b/parent/pom.xml index ff460c983a..4f17f7d55e 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas clas12rec - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT pom diff --git a/pom.xml b/pom.xml index f070c1565f..e4054f11b3 100644 --- a/pom.xml +++ b/pom.xml @@ -2,14 +2,14 @@ 4.0.0 org.jlab.clas clas12 - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT pom org.jlab.clas clas12rec parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index 7986e0d5b7..b8c8017381 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -13,31 +13,31 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-io - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT compile org.jlab.clas clas-tracking - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT compile org.jlab.clas clas-geometry - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT compile diff --git a/reconstruction/band/pom.xml b/reconstruction/band/pom.xml index bbc895415d..6956d88842 100644 --- a/reconstruction/band/pom.xml +++ b/reconstruction/band/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/bg/pom.xml b/reconstruction/bg/pom.xml index 08dfc2ef58..f681c5f4d0 100644 --- a/reconstruction/bg/pom.xml +++ b/reconstruction/bg/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-analysis - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/cnd/pom.xml b/reconstruction/cnd/pom.xml index ffdf9ce607..47d1910ba0 100644 --- a/reconstruction/cnd/pom.xml +++ b/reconstruction/cnd/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/cvt/pom.xml b/reconstruction/cvt/pom.xml index ed523a7f9c..2dba1ea565 100644 --- a/reconstruction/cvt/pom.xml +++ b/reconstruction/cvt/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -47,7 +47,7 @@ org.jlab.clas clas-tracking - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/dc/pom.xml b/reconstruction/dc/pom.xml index 4c8f111064..c95cf8ca4e 100644 --- a/reconstruction/dc/pom.xml +++ b/reconstruction/dc/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -28,25 +28,25 @@ org.jlab.clas clas-tracking - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-jcsg - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-analysis - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -75,13 +75,13 @@ org.jlab.clas swim-tools - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-math - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/eb/pom.xml b/reconstruction/eb/pom.xml index 75cfc6003b..8547bcd164 100644 --- a/reconstruction/eb/pom.xml +++ b/reconstruction/eb/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -21,25 +21,25 @@ org.jlab.clas clas-utils - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-io - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-analysis - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/ec/pom.xml b/reconstruction/ec/pom.xml index a8d670dd81..ecfa557382 100644 --- a/reconstruction/ec/pom.xml +++ b/reconstruction/ec/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-analysis - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/fmt/pom.xml b/reconstruction/fmt/pom.xml index fc5e041def..f10cf89b1b 100644 --- a/reconstruction/fmt/pom.xml +++ b/reconstruction/fmt/pom.xml @@ -15,21 +15,21 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-jcsg - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas swim-tools - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/ft/pom.xml b/reconstruction/ft/pom.xml index caa4df7190..b14f8a3c1f 100644 --- a/reconstruction/ft/pom.xml +++ b/reconstruction/ft/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/htcc/pom.xml b/reconstruction/htcc/pom.xml index 056ea51a03..d8dcaf4b4b 100644 --- a/reconstruction/htcc/pom.xml +++ b/reconstruction/htcc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/ltcc/pom.xml b/reconstruction/ltcc/pom.xml index 6782d2e91d..28103f0261 100644 --- a/reconstruction/ltcc/pom.xml +++ b/reconstruction/ltcc/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/mc/pom.xml b/reconstruction/mc/pom.xml index cb1816605f..0672b27e3e 100644 --- a/reconstruction/mc/pom.xml +++ b/reconstruction/mc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/mltn/pom.xml b/reconstruction/mltn/pom.xml index c882e24cc2..a20898e6a3 100644 --- a/reconstruction/mltn/pom.xml +++ b/reconstruction/mltn/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -34,13 +34,13 @@ org.jlab.clas clas-io - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/pom.xml b/reconstruction/pom.xml index bd3ae57c8b..2aa05751f5 100644 --- a/reconstruction/pom.xml +++ b/reconstruction/pom.xml @@ -3,14 +3,14 @@ org.jlab.clas reconstruction - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/postproc/pom.xml b/reconstruction/postproc/pom.xml index 64ad7beebe..523ca3640f 100644 --- a/reconstruction/postproc/pom.xml +++ b/reconstruction/postproc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-analysis - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/raster/pom.xml b/reconstruction/raster/pom.xml index e84fdb317a..3e0f0c4139 100644 --- a/reconstruction/raster/pom.xml +++ b/reconstruction/raster/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/rich/pom.xml b/reconstruction/rich/pom.xml index 01067f10fb..aa5fee8843 100644 --- a/reconstruction/rich/pom.xml +++ b/reconstruction/rich/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-jcsg - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/rtpc/pom.xml b/reconstruction/rtpc/pom.xml index af5901ae94..c2dafb0291 100644 --- a/reconstruction/rtpc/pom.xml +++ b/reconstruction/rtpc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -21,12 +21,12 @@ org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-tracking - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT compile diff --git a/reconstruction/swaps/pom.xml b/reconstruction/swaps/pom.xml index e63cc64089..8300485ceb 100644 --- a/reconstruction/swaps/pom.xml +++ b/reconstruction/swaps/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-detector - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-io - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-reco - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/tof/pom.xml b/reconstruction/tof/pom.xml index 6f1db04b2d..23d3e269ec 100644 --- a/reconstruction/tof/pom.xml +++ b/reconstruction/tof/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/urwell/pom.xml b/reconstruction/urwell/pom.xml index a95dbd7f84..650a8b4f37 100644 --- a/reconstruction/urwell/pom.xml +++ b/reconstruction/urwell/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT org.jlab.clas clas-analysis - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT diff --git a/reconstruction/vtx/pom.xml b/reconstruction/vtx/pom.xml index 68a7ac2b47..e9834febd5 100644 --- a/reconstruction/vtx/pom.xml +++ b/reconstruction/vtx/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT @@ -33,13 +33,13 @@ org.jlab.clas swim-tools - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar org.jlab.clas clas-tracking - 11.2.0-SNAPSHOT + 12.0.0-SNAPSHOT jar From e5ce2ab31abbdccaca42fda5ca72bc8c1210c317 Mon Sep 17 00:00:00 2001 From: Raffaella De Vita Date: Fri, 28 Mar 2025 12:24:22 -0400 Subject: [PATCH 016/100] create a method to decode evio events in a single line to simplify usage in mon12 and ced --- .../jlab/detector/decode/CLASDecoder4.java | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java index b77bc9920a..b78ca63d31 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java @@ -436,6 +436,27 @@ public Bank getDataBankUndecodedSCALER(String name, DetectorType type){ return scalerBANK; } + public Event getDecodedEvent(EvioDataEvent rawEvent, int run, int counter, double torus, double solenoid) { + + Event decodedEvent = this.getDataEvent(rawEvent); + + Bank header = this.createHeaderBank(run, counter, (float) torus, (float) solenoid); + if(header!=null) decodedEvent.write(header); + + Bank trigger = this.createTriggerBank(); + if(trigger!=null) decodedEvent.write(trigger); + + Bank onlineHelicity = this.createOnlineHelicityBank(); + if(onlineHelicity!=null) decodedEvent.write(onlineHelicity); + + Bank decodedHelicity = this.createHelicityDecoderBank(rawEvent); + if (decodedHelicity!=null) decodedEvent.write(decodedHelicity); + + this.extractPulses(decodedEvent); + + return decodedEvent; + } + public Event getDataEvent(DataEvent rawEvent){ this.initEvent(rawEvent); return getDataEvent(); @@ -841,16 +862,7 @@ public static void main(String[] args){ while(reader.hasEvent()==true){ EvioDataEvent event = (EvioDataEvent) reader.getNextEvent(); - Event decodedEvent = decoder.getDataEvent(event); - - Bank header = decoder.createHeaderBank( nrun, counter, (float) torus, (float) solenoid); - if(header!=null) decodedEvent.write(header); - Bank trigger = decoder.createTriggerBank(); - if(trigger!=null) decodedEvent.write(trigger); - Bank onlineHelicity = decoder.createOnlineHelicityBank(); - if(onlineHelicity!=null) decodedEvent.write(onlineHelicity); - Bank decodedHelicity = decoder.createHelicityDecoderBank(event); - if (decodedHelicity!=null) decodedEvent.write(decodedHelicity); + Event decodedEvent = decoder.getDecodedEvent(event, nrun, counter, torus, solenoid); Bank epics = decoder.createEpicsBank(); @@ -858,8 +870,6 @@ public static void main(String[] args){ decodedEvent.read(rawRunConf); decodedEvent.read(helicityAdc); - decoder.extractPulses(decodedEvent); - helicityReadings.add(HelicityState.createFromFadcBank(helicityAdc, rawRunConf, decoder.detectorDecoder.scalerManager)); From ed6fb2b913904dd4d1abac77b783ff82d52dadf5 Mon Sep 17 00:00:00 2001 From: raffaelladevita Date: Fri, 28 Mar 2025 18:01:59 -0400 Subject: [PATCH 017/100] new DCRB firmware (#509) * implemented decoding of new DCRB banks with ToT and order labeling of DC hit to use the first in time * removed anused code * printingg exception from DC banks decoding --------- Co-authored-by: Nathan Baltzell --- .../java/org/jlab/detector/banks/RawBank.java | 6 +- .../jlab/detector/decode/CLASDecoder4.java | 5 +- .../detector/decode/CodaEventDecoder.java | 58 +++++++++++++++++-- .../detector/decode/DetectorDataDgtz.java | 10 +++- .../detector/decode/DetectorEventDecoder.java | 47 +++++++++++++++ etc/bankdefs/hipo4/data.json | 3 +- 6 files changed, 117 insertions(+), 12 deletions(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/banks/RawBank.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/banks/RawBank.java index fffc360b58..19482d6005 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/banks/RawBank.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/banks/RawBank.java @@ -74,9 +74,9 @@ public static enum OrderType { BGADDED_NOISE1 ( 70), // background hits retained by level-1 denoising BGADDED_NOISE2 ( 80), // background hits retained by level-2 denoising BGADDED_NOISE3 ( 90), // background hits retained by level-3 denoising - USER1 (100), - USER2 (110), - USER3 (120); + DECREMOVED (100), // hits removed during decoding + USER1 (110), + USER2 (120); private final int rawOrderId; private OrderType(int id){ rawOrderId = id; } public int getTypeId() { return rawOrderId; } diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java index b78ca63d31..9db665354f 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java @@ -139,6 +139,7 @@ public void initEvent(DataEvent event){ detectorDecoder.translate(dataList); detectorDecoder.fitPulses(dataList); + detectorDecoder.filterTDCs(dataList); if(this.decoderDebugMode>0){ System.out.println("\n>>>>>>>>> TRANSLATED data"); for(DetectorDataDgtz data : dataList){ @@ -308,8 +309,10 @@ public Bank getDataBankTDC(String name, DetectorType type){ tdcBANK.putByte("sector", i, (byte) tdcDGTZ.get(i).getDescriptor().getSector()); tdcBANK.putByte("layer", i, (byte) tdcDGTZ.get(i).getDescriptor().getLayer()); tdcBANK.putShort("component", i, (short) tdcDGTZ.get(i).getDescriptor().getComponent()); - tdcBANK.putByte("order", i, (byte) tdcDGTZ.get(i).getDescriptor().getOrder()); + tdcBANK.putByte("order", i, (byte) (tdcDGTZ.get(i).getDescriptor().getOrder()+tdcDGTZ.get(i).getTDCData(0).getType().getTypeId())); tdcBANK.putInt("TDC", i, tdcDGTZ.get(i).getTDCData(0).getTime()); + if(name == "DC::tdc") + tdcBANK.putShort("ToT", i, (short) tdcDGTZ.get(i).getTDCData(0).getToT()); } return tdcBANK; } diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java index 7b5dfd7069..c8c01bde21 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java @@ -280,10 +280,13 @@ else if(node.getTag()==57640){ return this.getDataEntries_57640(crate, node, event); } else if(node.getTag()==57622){ - // This is regular integrated pulse mode, used for FTOF - // FTCAL and EC/PCAL + // This is regular DCRB bank with TDCs only return this.getDataEntries_57622(crate, node, event); } + else if(node.getTag()==57648){ + // This is DCRB bank with TDCs and widths + return this.getDataEntries_57648(crate, node, event); + } else if(node.getTag()==57636){ // RICH TDC data return this.getDataEntries_57636(crate, node, event); @@ -954,9 +957,56 @@ public List getDataEntries_57622(Integer crate, EvioNode node } } } catch (EvioException ex) { - //Logger.getLogger(EvioRawDataSource.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(CodaEventDecoder.class.getName()).log(Level.SEVERE, null, ex); } catch (IndexOutOfBoundsException ex){ - //System.out.println("[ERROR] ----> ERROR DECODING COMPOSITE DATA FOR ONE EVENT"); + Logger.getLogger(CodaEventDecoder.class.getName()).log(Level.SEVERE, null, ex); + } + + } + return entries; + } + + /** + * Bank TAG=57648 used for DC (Drift Chambers) TDC and ToT values. + * @param crate + * @param node + * @param event + * @return + */ + public List getDataEntries_57648(Integer crate, EvioNode node, EvioDataEvent event){ + List entries = new ArrayList<>(); + if(node.getTag()==57648){ + try { + ByteBuffer compBuffer = node.getByteData(true); + CompositeData compData = new CompositeData(compBuffer.array(),event.getByteOrder()); + //List cdatatypes = compData.getTypes(); + List cdataitems = compData.getItems(); + + int totalSize = cdataitems.size(); + int position = 0; + while( (position + 4) < totalSize){ + Byte slot = (Byte) cdataitems.get(position); + //Integer trig = (Integer) cdataitems.get(position+1); + Long time = (Long) cdataitems.get(position+2); + Integer nchannels = (Integer) cdataitems.get(position+3); + int counter = 0; + position = position + 4; + while(counter{ - private int tdcOrder = 0; // Used for sorting - private int tdcTime = 0; - private int tdcToT = 0; // Time over threshold + private int tdcOrder = 0; // Used for sorting + private int tdcTime = 0; + private int tdcToT = 0; // Time over threshold private Long timeStamp = 0L; + private OrderType tdcType = OrderType.NOMINAL; public TDCData() {} public TDCData(int time) { this.tdcTime = time;} @@ -347,10 +349,12 @@ public TDCData() {} public int getToT() { return this.tdcToT;} public int getOrder() { return tdcOrder;} public long getTimeStamp(){ return this.timeStamp; } + public OrderType getType() { return tdcType;} public TDCData setOrder(int order) { tdcOrder = order;return this;} public TDCData setTime(short time) { tdcTime = time;return this;} public TDCData setToT(short ToT) { tdcToT = ToT;return this;} public TDCData setTimeStamp(long time){ timeStamp = time;return this; } + public TDCData setType(OrderType type) { tdcType = type; return this;} @Override public String toString(){ diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorEventDecoder.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorEventDecoder.java index 09a4ad7bf5..d99b4544c7 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorEventDecoder.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorEventDecoder.java @@ -1,7 +1,12 @@ package org.jlab.detector.decode; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Comparator; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import org.jlab.detector.banks.RawBank.OrderType; import org.jlab.detector.base.DetectorType; import org.jlab.detector.calib.utils.ConstantsManager; import org.jlab.detector.decode.DetectorDataDgtz.ADCData; @@ -21,6 +26,7 @@ public class DetectorEventDecoder { List keysTrans = null; List tablesFitter = null; List keysFitter = null; + List keysFilter = null; private int runNumber = 10; @@ -109,6 +115,9 @@ public final void initDecoder(){ }); fitterManager.init(keysFitter, tablesFitter); + // Data filter list + keysFilter = Arrays.asList(new String[]{"DC"}); + scalerManager.init(Arrays.asList(new String[]{"/runcontrol/fcup","/runcontrol/slm","/runcontrol/hwp", "/runcontrol/helicity","/daq/config/scalers/dsc1"})); } @@ -211,4 +220,42 @@ public void fitPulses(List detectorData){ } } } + + + public void filterTDCs(List detectorData){ + int maxMultiplicity = 1; + for(String table : keysFilter){ + Map> filteredData = new HashMap<>(); + for(DetectorDataDgtz data : detectorData){ + if(data.getDescriptor().getType()==DetectorType.getType(table)) { + int key = data.getDescriptor().getHashCode(); + if(!filteredData.containsKey(key)) + filteredData.put(key, new ArrayList<>()); + filteredData.get(key).add(data); + } + } + for(int key : filteredData.keySet()) { + filteredData.get(key).sort(new TDCComparator()); + if(filteredData.get(key).size()>maxMultiplicity) + for(int i=maxMultiplicity; i { + + // override the compare() method + public int compare(DetectorDataDgtz s1, DetectorDataDgtz s2) + { + if(s1.getTDCSize()>0 && s2.getTDCSize()>0) + return s1.getTDCData(0).getTime()0) + return 1; + else if(s2.getTDCSize()>0) + return -1; + else + return 0; + } + } } diff --git a/etc/bankdefs/hipo4/data.json b/etc/bankdefs/hipo4/data.json index 07367082d8..9f42279e5d 100644 --- a/etc/bankdefs/hipo4/data.json +++ b/etc/bankdefs/hipo4/data.json @@ -212,7 +212,8 @@ { "name":"layer" , "type":"B", "info":"layer (1..36)"}, { "name":"component" , "type":"S", "info":"wire number (1..112)"}, { "name":"order" , "type":"B", "info":"order: 2 - TDCL , 3 - TDCR"}, - { "name":"TDC" , "type":"I", "info":"TDC value"} + { "name":"TDC" , "type":"I", "info":"TDC value"}, + { "name":"ToT" , "type":"S", "info":"Time Over Threshold"} ] }, { From 881cce5dd250af1f832ed487052e336739a6c062 Mon Sep 17 00:00:00 2001 From: Christopher Dilks Date: Fri, 28 Mar 2025 18:12:13 -0400 Subject: [PATCH 018/100] fix: remove `jdtls` files --- common-tools/cnuphys/apache/.classpath | 6 ------ common-tools/cnuphys/apache/.project | 17 ----------------- .../.settings/org.eclipse.jdt.core.prefs | 12 ------------ .../cnuphys/magfield/src/main/java/.classpath | 7 ------- .../cnuphys/magfield/src/main/java/.project | 17 ----------------- .../src/main/java/cnuphys/bin/.classpath | 7 ------- .../magfield/src/main/java/cnuphys/bin/.project | 17 ----------------- common-tools/cnuphys/numRec/.classpath | 7 ------- common-tools/cnuphys/numRec/.project | 17 ----------------- common-tools/cnuphys/numRec/bin/.classpath | 6 ------ common-tools/cnuphys/numRec/bin/.project | 17 ----------------- common-tools/cnuphys/numRec/src/.classpath | 6 ------ common-tools/cnuphys/numRec/src/.project | 17 ----------------- .../cnuphys/snr/src/main/java/.classpath | 6 ------ common-tools/cnuphys/snr/src/main/java/.project | 17 ----------------- .../snr/src/main/java/cnuphys/bin/.classpath | 6 ------ .../snr/src/main/java/cnuphys/bin/.project | 17 ----------------- common-tools/cnuphys/splot/.classpath | 8 -------- common-tools/cnuphys/splot/.project | 17 ----------------- .../cnuphys/splot/src/main/java/.classpath | 12 ------------ .../cnuphys/splot/src/main/java/.project | 17 ----------------- .../.settings/org.eclipse.jdt.core.prefs | 11 ----------- .../cnuphys/swimmer/src/main/java/.classpath | 14 -------------- .../cnuphys/swimmer/src/main/java/.project | 17 ----------------- .../src/main/java/cnuphys/bin/.classpath | 14 -------------- .../swimmer/src/main/java/cnuphys/bin/.project | 17 ----------------- reconstruction/htcc/src/main/java/.classpath | 11 ----------- reconstruction/htcc/src/main/java/.project | 17 ----------------- 28 files changed, 354 deletions(-) delete mode 100644 common-tools/cnuphys/apache/.classpath delete mode 100644 common-tools/cnuphys/apache/.project delete mode 100644 common-tools/cnuphys/magfield/.settings/org.eclipse.jdt.core.prefs delete mode 100644 common-tools/cnuphys/magfield/src/main/java/.classpath delete mode 100644 common-tools/cnuphys/magfield/src/main/java/.project delete mode 100644 common-tools/cnuphys/magfield/src/main/java/cnuphys/bin/.classpath delete mode 100644 common-tools/cnuphys/magfield/src/main/java/cnuphys/bin/.project delete mode 100644 common-tools/cnuphys/numRec/.classpath delete mode 100644 common-tools/cnuphys/numRec/.project delete mode 100644 common-tools/cnuphys/numRec/bin/.classpath delete mode 100644 common-tools/cnuphys/numRec/bin/.project delete mode 100644 common-tools/cnuphys/numRec/src/.classpath delete mode 100644 common-tools/cnuphys/numRec/src/.project delete mode 100644 common-tools/cnuphys/snr/src/main/java/.classpath delete mode 100644 common-tools/cnuphys/snr/src/main/java/.project delete mode 100644 common-tools/cnuphys/snr/src/main/java/cnuphys/bin/.classpath delete mode 100644 common-tools/cnuphys/snr/src/main/java/cnuphys/bin/.project delete mode 100644 common-tools/cnuphys/splot/.classpath delete mode 100644 common-tools/cnuphys/splot/.project delete mode 100644 common-tools/cnuphys/splot/src/main/java/.classpath delete mode 100644 common-tools/cnuphys/splot/src/main/java/.project delete mode 100644 common-tools/cnuphys/swimmer/.settings/org.eclipse.jdt.core.prefs delete mode 100644 common-tools/cnuphys/swimmer/src/main/java/.classpath delete mode 100644 common-tools/cnuphys/swimmer/src/main/java/.project delete mode 100644 common-tools/cnuphys/swimmer/src/main/java/cnuphys/bin/.classpath delete mode 100644 common-tools/cnuphys/swimmer/src/main/java/cnuphys/bin/.project delete mode 100644 reconstruction/htcc/src/main/java/.classpath delete mode 100644 reconstruction/htcc/src/main/java/.project diff --git a/common-tools/cnuphys/apache/.classpath b/common-tools/cnuphys/apache/.classpath deleted file mode 100644 index 6ae56430f7..0000000000 --- a/common-tools/cnuphys/apache/.classpath +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/common-tools/cnuphys/apache/.project b/common-tools/cnuphys/apache/.project deleted file mode 100644 index c79ffc7af2..0000000000 --- a/common-tools/cnuphys/apache/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - apache - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/common-tools/cnuphys/magfield/.settings/org.eclipse.jdt.core.prefs b/common-tools/cnuphys/magfield/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 6d08f8e4e5..0000000000 --- a/common-tools/cnuphys/magfield/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,12 +0,0 @@ -#Thu Oct 18 15:20:29 EDT 2012 -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.6 diff --git a/common-tools/cnuphys/magfield/src/main/java/.classpath b/common-tools/cnuphys/magfield/src/main/java/.classpath deleted file mode 100644 index 737dc4026a..0000000000 --- a/common-tools/cnuphys/magfield/src/main/java/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/common-tools/cnuphys/magfield/src/main/java/.project b/common-tools/cnuphys/magfield/src/main/java/.project deleted file mode 100644 index 65d79e0096..0000000000 --- a/common-tools/cnuphys/magfield/src/main/java/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - magfield - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/common-tools/cnuphys/magfield/src/main/java/cnuphys/bin/.classpath b/common-tools/cnuphys/magfield/src/main/java/cnuphys/bin/.classpath deleted file mode 100644 index 737dc4026a..0000000000 --- a/common-tools/cnuphys/magfield/src/main/java/cnuphys/bin/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/common-tools/cnuphys/magfield/src/main/java/cnuphys/bin/.project b/common-tools/cnuphys/magfield/src/main/java/cnuphys/bin/.project deleted file mode 100644 index 65d79e0096..0000000000 --- a/common-tools/cnuphys/magfield/src/main/java/cnuphys/bin/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - magfield - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/common-tools/cnuphys/numRec/.classpath b/common-tools/cnuphys/numRec/.classpath deleted file mode 100644 index 4ce1143c36..0000000000 --- a/common-tools/cnuphys/numRec/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/common-tools/cnuphys/numRec/.project b/common-tools/cnuphys/numRec/.project deleted file mode 100644 index e9bd6eb16c..0000000000 --- a/common-tools/cnuphys/numRec/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - numericalRec - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/common-tools/cnuphys/numRec/bin/.classpath b/common-tools/cnuphys/numRec/bin/.classpath deleted file mode 100644 index 233be1d2c4..0000000000 --- a/common-tools/cnuphys/numRec/bin/.classpath +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/common-tools/cnuphys/numRec/bin/.project b/common-tools/cnuphys/numRec/bin/.project deleted file mode 100644 index 848f89238f..0000000000 --- a/common-tools/cnuphys/numRec/bin/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - numRecip - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/common-tools/cnuphys/numRec/src/.classpath b/common-tools/cnuphys/numRec/src/.classpath deleted file mode 100644 index 233be1d2c4..0000000000 --- a/common-tools/cnuphys/numRec/src/.classpath +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/common-tools/cnuphys/numRec/src/.project b/common-tools/cnuphys/numRec/src/.project deleted file mode 100644 index 848f89238f..0000000000 --- a/common-tools/cnuphys/numRec/src/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - numRecip - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/common-tools/cnuphys/snr/src/main/java/.classpath b/common-tools/cnuphys/snr/src/main/java/.classpath deleted file mode 100644 index c1248cd1ab..0000000000 --- a/common-tools/cnuphys/snr/src/main/java/.classpath +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/common-tools/cnuphys/snr/src/main/java/.project b/common-tools/cnuphys/snr/src/main/java/.project deleted file mode 100644 index 95191682a3..0000000000 --- a/common-tools/cnuphys/snr/src/main/java/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - snr - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/common-tools/cnuphys/snr/src/main/java/cnuphys/bin/.classpath b/common-tools/cnuphys/snr/src/main/java/cnuphys/bin/.classpath deleted file mode 100644 index c1248cd1ab..0000000000 --- a/common-tools/cnuphys/snr/src/main/java/cnuphys/bin/.classpath +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/common-tools/cnuphys/snr/src/main/java/cnuphys/bin/.project b/common-tools/cnuphys/snr/src/main/java/cnuphys/bin/.project deleted file mode 100644 index 95191682a3..0000000000 --- a/common-tools/cnuphys/snr/src/main/java/cnuphys/bin/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - snr - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/common-tools/cnuphys/splot/.classpath b/common-tools/cnuphys/splot/.classpath deleted file mode 100644 index 748dc76710..0000000000 --- a/common-tools/cnuphys/splot/.classpath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/common-tools/cnuphys/splot/.project b/common-tools/cnuphys/splot/.project deleted file mode 100644 index 1d5b581255..0000000000 --- a/common-tools/cnuphys/splot/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - splot - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/common-tools/cnuphys/splot/src/main/java/.classpath b/common-tools/cnuphys/splot/src/main/java/.classpath deleted file mode 100644 index 8320dcd5ac..0000000000 --- a/common-tools/cnuphys/splot/src/main/java/.classpath +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/common-tools/cnuphys/splot/src/main/java/.project b/common-tools/cnuphys/splot/src/main/java/.project deleted file mode 100644 index 1d5b581255..0000000000 --- a/common-tools/cnuphys/splot/src/main/java/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - splot - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/common-tools/cnuphys/swimmer/.settings/org.eclipse.jdt.core.prefs b/common-tools/cnuphys/swimmer/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7341ab1683..0000000000 --- a/common-tools/cnuphys/swimmer/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/common-tools/cnuphys/swimmer/src/main/java/.classpath b/common-tools/cnuphys/swimmer/src/main/java/.classpath deleted file mode 100644 index 74825a682b..0000000000 --- a/common-tools/cnuphys/swimmer/src/main/java/.classpath +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/common-tools/cnuphys/swimmer/src/main/java/.project b/common-tools/cnuphys/swimmer/src/main/java/.project deleted file mode 100644 index 049cf6453d..0000000000 --- a/common-tools/cnuphys/swimmer/src/main/java/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - swimmer - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/common-tools/cnuphys/swimmer/src/main/java/cnuphys/bin/.classpath b/common-tools/cnuphys/swimmer/src/main/java/cnuphys/bin/.classpath deleted file mode 100644 index 74825a682b..0000000000 --- a/common-tools/cnuphys/swimmer/src/main/java/cnuphys/bin/.classpath +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/common-tools/cnuphys/swimmer/src/main/java/cnuphys/bin/.project b/common-tools/cnuphys/swimmer/src/main/java/cnuphys/bin/.project deleted file mode 100644 index 049cf6453d..0000000000 --- a/common-tools/cnuphys/swimmer/src/main/java/cnuphys/bin/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - swimmer - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/reconstruction/htcc/src/main/java/.classpath b/reconstruction/htcc/src/main/java/.classpath deleted file mode 100644 index 3da7f1474e..0000000000 --- a/reconstruction/htcc/src/main/java/.classpath +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/reconstruction/htcc/src/main/java/.project b/reconstruction/htcc/src/main/java/.project deleted file mode 100644 index b4155c2226..0000000000 --- a/reconstruction/htcc/src/main/java/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - HTCCReco - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - From 56f30ae6c6b49a2438ddda54f4f2dd838a65fc89 Mon Sep 17 00:00:00 2001 From: Christopher Dilks Date: Fri, 28 Mar 2025 18:13:10 -0400 Subject: [PATCH 019/100] fix: ignore `jdtls` files --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index 77c0fd6ff3..900361e56b 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,12 @@ hs_err_pid* *.iml .idea +# eclipse JDT language server +.classpath +.factorypath +.project +.settings + # no log files: *.log *.evio From 339ee45018f5bb908208b50b649397f67fba1e90 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Sun, 30 Mar 2025 08:43:46 -0400 Subject: [PATCH 020/100] Use pulse time and hide MVTFitter --- .../detector/decode/DetectorEventDecoder.java | 2 +- .../org/jlab/detector/pulse/ModeAHDC.java | 53 ++++--------------- 2 files changed, 12 insertions(+), 43 deletions(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorEventDecoder.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorEventDecoder.java index d99b4544c7..da36a07577 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorEventDecoder.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorEventDecoder.java @@ -168,7 +168,7 @@ public void fitPulses(List detectorData){ //custom MM fitter if( ( (table.equals("BMT"))&&(data.getDescriptor().getType().getName().equals("BMT")) ) || ( (table.equals("FMT"))&&(data.getDescriptor().getType().getName().equals("FMT")) ) - || ( (table.equals("AHDC"))&&(data.getDescriptor().getType().getName().equals("AHDC")) ) + //|| ( (table.equals("AHDC"))&&(data.getDescriptor().getType().getName().equals("AHDC")) ) || ( (table.equals("FTTRK"))&&(data.getDescriptor().getType().getName().equals("FTTRK")) ) ){ IndexedTable daq = fitterManager.getConstants(runNumber, table); short adcOffset = (short) daq.getDoubleValue("adc_offset", 0, 0, 0); diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java index d35b7731cb..f628908ab7 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java @@ -12,7 +12,7 @@ /** * A new extraction method dedicated to the AHDC signal waveform * - * Some blocks of code are inspired by MVTFitter.java + * Some blocks of code are inspired by MVTFitter.java and Bonus12 (`createBonusBank()`) * * @author ftouchte */ @@ -25,15 +25,15 @@ public class ModeAHDC extends HipoExtractor { * * @param pars CCDB row * @param id link to row in source bank + * @param timestamp ... + * @param time time (exprimed in bin) of the first channel of the AHDC pulse (after or not zero suppress; if ZS=0, time == 0) * @param samples ADC samples */ @Override - public List extract(NamedEntry pars, int id, long par1, long par2, short... samples){ + public List extract(NamedEntry pars, int id, long timestamp, long time, short... samples){ // Settings parameters (they can be initialised by a CCDB) float samplingTime = 44; - int sparseSample = 0; - short adcOffset = 0; - long timeStamp = 0; + short adcOffset = 0; ///< pedestal of the pulse float fineTimeStampResolution = 0; float amplitudeFractionCFA = 0.5f; @@ -42,11 +42,9 @@ public List extract(NamedEntry pars, int id, long par1, long par2, short. // Calculation intermediaries int binMax = 0; //Bin of the max ADC over the pulse - int binOffset = 0; //Offset due to sparse sample float adcMax = 0; //Max value of ADC over the pulse (fitted) float timeMax =0; //Time of the max ADC over the pulse (fitted) float integral = 0; //Sum of ADCs over the pulse (not fitted) - long timestamp = 0; short[] samplesCorr; //Waveform after offset (pedestal) correction int binNumber = 0; //Number of bins in one waveform @@ -58,7 +56,7 @@ public List extract(NamedEntry pars, int id, long par1, long par2, short. /// ///////////////////////// // Begin waveform correction /// //////////////////////// - //waveformCorrection(samples,adcOffset,samplingTime,sparseSample, binMax, adcMax, integral, samplesCorr[], binOffset, timeMax); + //waveformCorrection(samples,adcOffset,samplingTime, binMax, adcMax, integral, samplesCorr[], time, timeMax); /** * This method subtracts the pedestal (noise) from samples and stores it in : samplesCorr * It also computes a first value for : adcMax, binMax, timeMax and integral @@ -66,9 +64,8 @@ public List extract(NamedEntry pars, int id, long par1, long par2, short. * @param samples ADC samples * @param adcOffset pedestal or noise level * @param samplingTime time between two adc bins - * @param sparseSample used to define binOffset */ - //private void waveformCorrection(short[] samples, short adcOffset, float samplingTime, int sparseSample, int binMax, int adcMax, int integral, short samplesCorr[], int binOffset, int timeMax){ + //private void waveformCorrection(short[] samples, short adcOffset, float samplingTime, int binMax, int adcMax, int integral, short samplesCorr[], int time, int timeMax){ binNumber = samples.length; binMax = 0; if (binNumber >= 5) { @@ -102,8 +99,7 @@ public List extract(NamedEntry pars, int id, long par1, long par2, short. } binMax = (binMax + binMax2)/2; } - binOffset = sparseSample*binMax; - timeMax = (binMax + binOffset)*samplingTime; + timeMax = (binMax + time)*samplingTime; //} /// ///////////////////////// @@ -151,7 +147,7 @@ public List extract(NamedEntry pars, int id, long par1, long par2, short. if (binRise + 1 <= binNumber-1) slopeRise = samplesCorr[binRise+1] - samplesCorr[binRise]; float fittedBinRise = (slopeRise == 0) ? binRise : binRise + (threshold - samplesCorr[binRise])/slopeRise; - leadingEdgeTime = (fittedBinRise + binOffset)*samplingTime; // binOffset is determined in wavefromCorrection() // must be the same for all time ? // or must be defined using fittedBinRise*sparseSample + leadingEdgeTime = (fittedBinRise + time)*samplingTime; // trailingEdgeTime int binFall = binMax; @@ -168,7 +164,7 @@ public List extract(NamedEntry pars, int id, long par1, long par2, short. if (binFall - 1 >= 0) slopeFall = samplesCorr[binFall] - samplesCorr[binFall-1]; float fittedBinFall = (slopeFall == 0) ? binFall : binFall-1 + (threshold - samplesCorr[binFall-1])/slopeFall; - trailingEdgeTime = (fittedBinFall + binOffset)*samplingTime; + trailingEdgeTime = (fittedBinFall + time)*samplingTime; // timeOverThreshold timeOverThreshold = trailingEdgeTime - leadingEdgeTime; @@ -213,29 +209,10 @@ public List extract(NamedEntry pars, int id, long par1, long par2, short. if (binZero + 1 <= binNumber) slopeCFD = signal[binZero+1] - signal[binZero]; float fittedBinZero = (slopeCFD == 0) ? binZero : binZero + (0 - signal[binZero])/slopeCFD; - constantFractionTime = (fittedBinZero + binOffset)*samplingTime; + constantFractionTime = (fittedBinZero + time)*samplingTime; //} - /// ///////////////////////// - // Begin fineTimeStampCorrection - /// //////////////////////// - //fineTimeStampCorrection(timeStamp,fineTimeStampResolution); - /** - * From MVTFitter.java - * Make fine timestamp correction (using dream (=electronic chip) clock) - * @param timeStamp timing informations (used to make fine corrections) - * @param fineTimeStampResolution precision of dream clock (usually 8) - */ - //private void fineTimeStampCorrection (long timeStamp, float fineTimeStampResolution) { - //this.timestamp = timeStamp; - String binaryTimeStamp = Long.toBinaryString(timeStamp); //get 64 bit timestamp in binary format - if (binaryTimeStamp.length()>=3){ - byte fineTimeStamp = Byte.parseByte(binaryTimeStamp.substring(binaryTimeStamp.length()-3,binaryTimeStamp.length()),2); //fineTimeStamp : keep and convert last 3 bits of binary timestamp - timeMax += (float) ((fineTimeStamp+0.5) * fineTimeStampResolution); //fineTimeStampCorrection - // Question : I wonder if I have to do the same thing of all time quantities that the extract() methods compute. - } - //} // output Pulse pulse = new Pulse(); pulse.id = id; @@ -248,19 +225,11 @@ public List extract(NamedEntry pars, int id, long par1, long par2, short. pulse.timeOverThreshold = timeOverThreshold; pulse.constantFractionTime = constantFractionTime; //pulse.binMax = binMax; - //pulse.binOffset = binOffset; pulse.pedestal = adcOffset; List output = new ArrayList<>(); output.add(pulse); return output; } - /** - * Fit the max of the pulse using parabolic fit, this method updates the timeMax and adcMax values - * @param samplingTime time between 2 ADC bins - */ - private void fitParabolic(float samplingTime) { - - } @Override public void update(int n, IndexedTable it, DataEvent event, String wfBankName, String adcBankName) { From 989b5735409f7a19d36c1f54ca81514c08c1819b Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Sun, 30 Mar 2025 08:47:36 -0400 Subject: [PATCH 021/100] Change samplingTime --- .../src/main/java/org/jlab/detector/pulse/ModeAHDC.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java index f628908ab7..bd6ba45fde 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java @@ -32,7 +32,7 @@ public class ModeAHDC extends HipoExtractor { @Override public List extract(NamedEntry pars, int id, long timestamp, long time, short... samples){ // Settings parameters (they can be initialised by a CCDB) - float samplingTime = 44; + float samplingTime = 50.0; short adcOffset = 0; ///< pedestal of the pulse float fineTimeStampResolution = 0; From 8c2346b94da8339103ddf05853d76b7b8cf2158e Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Sun, 30 Mar 2025 12:24:41 -0400 Subject: [PATCH 022/100] Fix issue --- .../src/main/java/org/jlab/detector/pulse/ModeAHDC.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java index bd6ba45fde..80395d2b58 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/ModeAHDC.java @@ -32,7 +32,7 @@ public class ModeAHDC extends HipoExtractor { @Override public List extract(NamedEntry pars, int id, long timestamp, long time, short... samples){ // Settings parameters (they can be initialised by a CCDB) - float samplingTime = 50.0; + float samplingTime = 50.0f; short adcOffset = 0; ///< pedestal of the pulse float fineTimeStampResolution = 0; From 70d225eefa197be47b3cff87c2636886df10a0e4 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Sun, 30 Mar 2025 17:03:45 -0400 Subject: [PATCH 023/100] version bump --- common-tools/clara-io/pom.xml | 4 ++-- common-tools/clas-analysis/pom.xml | 20 ++++++++--------- common-tools/clas-detector/pom.xml | 10 ++++----- common-tools/clas-geometry/pom.xml | 4 ++-- common-tools/clas-io/pom.xml | 8 +++---- common-tools/clas-jcsg/pom.xml | 8 +++---- 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 | 16 +++++++------- common-tools/clas-tracking/pom.xml | 6 +++--- common-tools/clas-utils/pom.xml | 6 +++--- common-tools/cnuphys/magfield/pom.xml | 2 +- common-tools/cnuphys/swimmer/pom.xml | 2 +- common-tools/coat-lib/deployDistribution.sh | 2 +- common-tools/coat-lib/pom.xml | 24 ++++++++++----------- common-tools/parent/pom.xml | 2 +- common-tools/pom.xml | 4 ++-- common-tools/swim-tools/pom.xml | 6 +++--- parent/pom.xml | 2 +- pom.xml | 4 ++-- reconstruction/alert/pom.xml | 10 ++++----- reconstruction/band/pom.xml | 4 ++-- reconstruction/bg/pom.xml | 8 +++---- reconstruction/cnd/pom.xml | 2 +- reconstruction/cvt/pom.xml | 6 +++--- reconstruction/dc/pom.xml | 14 ++++++------ reconstruction/eb/pom.xml | 10 ++++----- reconstruction/ec/pom.xml | 6 +++--- reconstruction/fmt/pom.xml | 6 +++--- reconstruction/ft/pom.xml | 4 ++-- reconstruction/htcc/pom.xml | 4 ++-- reconstruction/ltcc/pom.xml | 4 ++-- reconstruction/mc/pom.xml | 4 ++-- reconstruction/mltn/pom.xml | 6 +++--- reconstruction/pom.xml | 4 ++-- reconstruction/postproc/pom.xml | 8 +++---- reconstruction/raster/pom.xml | 4 ++-- reconstruction/rich/pom.xml | 6 +++--- reconstruction/rtpc/pom.xml | 6 +++--- reconstruction/swaps/pom.xml | 8 +++---- reconstruction/tof/pom.xml | 4 ++-- reconstruction/urwell/pom.xml | 6 +++--- reconstruction/vtx/pom.xml | 6 +++--- 44 files changed, 141 insertions(+), 141 deletions(-) diff --git a/common-tools/clara-io/pom.xml b/common-tools/clara-io/pom.xml index 85e0f6ac18..4655074b88 100644 --- a/common-tools/clara-io/pom.xml +++ b/common-tools/clara-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clara-io - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/common-tools/clas-analysis/pom.xml b/common-tools/clas-analysis/pom.xml index 225df2e94b..1d6ea9031e 100644 --- a/common-tools/clas-analysis/pom.xml +++ b/common-tools/clas-analysis/pom.xml @@ -3,63 +3,63 @@ 4.0.0 org.jlab.clas clas-analysis - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-utils - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-physics - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-io - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas swim-tools - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-detector - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/common-tools/clas-detector/pom.xml b/common-tools/clas-detector/pom.xml index daa1561020..f8ec3304fb 100644 --- a/common-tools/clas-detector/pom.xml +++ b/common-tools/clas-detector/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-detector - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-utils - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -29,13 +29,13 @@ org.jlab.clas clas-io - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/common-tools/clas-geometry/pom.xml b/common-tools/clas-geometry/pom.xml index dae95ea2d5..308912accb 100644 --- a/common-tools/clas-geometry/pom.xml +++ b/common-tools/clas-geometry/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-geometry - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/common-tools/clas-io/pom.xml b/common-tools/clas-io/pom.xml index 4f4946d3fb..d9d85f77a8 100644 --- a/common-tools/clas-io/pom.xml +++ b/common-tools/clas-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-io - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -90,13 +90,13 @@ org.jlab.clas clas-utils - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-logging - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT compile diff --git a/common-tools/clas-jcsg/pom.xml b/common-tools/clas-jcsg/pom.xml index cc9bf43107..583fd9a1fa 100644 --- a/common-tools/clas-jcsg/pom.xml +++ b/common-tools/clas-jcsg/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-jcsg - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -27,12 +27,12 @@ org.jlab.clas clas-geometry - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-detector - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT java3d diff --git a/common-tools/clas-logging/pom.xml b/common-tools/clas-logging/pom.xml index 2f0c27ec5a..d3548b1a32 100644 --- a/common-tools/clas-logging/pom.xml +++ b/common-tools/clas-logging/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-logging - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/common-tools/clas-math/pom.xml b/common-tools/clas-math/pom.xml index 04f13f0714..127660462a 100644 --- a/common-tools/clas-math/pom.xml +++ b/common-tools/clas-math/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-math - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/common-tools/clas-physics/pom.xml b/common-tools/clas-physics/pom.xml index 784bcd1ecb..71ebc4db78 100644 --- a/common-tools/clas-physics/pom.xml +++ b/common-tools/clas-physics/pom.xml @@ -4,14 +4,14 @@ org.jlab.clas clas-physics - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/common-tools/clas-reco/pom.xml b/common-tools/clas-reco/pom.xml index b9980570f3..2fbc765629 100644 --- a/common-tools/clas-reco/pom.xml +++ b/common-tools/clas-reco/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -42,37 +42,37 @@ org.jlab.clas clas-math - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-io - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-logging - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-physics - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-utils - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-detector - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/common-tools/clas-tracking/pom.xml b/common-tools/clas-tracking/pom.xml index 485426782a..14af5e6a8a 100644 --- a/common-tools/clas-tracking/pom.xml +++ b/common-tools/clas-tracking/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-tracking - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -22,7 +22,7 @@ org.jlab.clas swim-tools - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar diff --git a/common-tools/clas-utils/pom.xml b/common-tools/clas-utils/pom.xml index 4aa2cccecf..8606193c04 100644 --- a/common-tools/clas-utils/pom.xml +++ b/common-tools/clas-utils/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-utils - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-logging - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.apache.commons diff --git a/common-tools/cnuphys/magfield/pom.xml b/common-tools/cnuphys/magfield/pom.xml index b666ba7272..716b81d3d6 100644 --- a/common-tools/cnuphys/magfield/pom.xml +++ b/common-tools/cnuphys/magfield/pom.xml @@ -23,7 +23,7 @@ org.jlab.clas clas-math - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/common-tools/cnuphys/swimmer/pom.xml b/common-tools/cnuphys/swimmer/pom.xml index de6f825263..701aec7e85 100644 --- a/common-tools/cnuphys/swimmer/pom.xml +++ b/common-tools/cnuphys/swimmer/pom.xml @@ -35,7 +35,7 @@ org.jlab.clas clas-math - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/common-tools/coat-lib/deployDistribution.sh b/common-tools/coat-lib/deployDistribution.sh index d21d3eeae0..0ba9881890 100755 --- a/common-tools/coat-lib/deployDistribution.sh +++ b/common-tools/coat-lib/deployDistribution.sh @@ -8,7 +8,7 @@ cd `dirname $0` # Script is exporting existing Jar files to repository #------------------------------------------------------------------------------------------------- -VERSION=12.0.0 +VERSION=12.0.1t mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file \ -Dfile=target/coat-libs-${VERSION}-SNAPSHOT.jar \ diff --git a/common-tools/coat-lib/pom.xml b/common-tools/coat-lib/pom.xml index aa9ae7cadc..7022cba272 100644 --- a/common-tools/coat-lib/pom.xml +++ b/common-tools/coat-lib/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jlab.clas coat-libs - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT pom @@ -94,67 +94,67 @@ org.jlab.clas clas-io - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clara-io - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-utils - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-detector - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-physics - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas swim-tools - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-tracking - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/common-tools/parent/pom.xml b/common-tools/parent/pom.xml index ea3c155514..233bc82357 100644 --- a/common-tools/parent/pom.xml +++ b/common-tools/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas common-tools - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT pom diff --git a/common-tools/pom.xml b/common-tools/pom.xml index 5cac22d24d..9c7236d6c0 100644 --- a/common-tools/pom.xml +++ b/common-tools/pom.xml @@ -2,14 +2,14 @@ 4.0.0 org.jlab.clas common-tools - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/common-tools/swim-tools/pom.xml b/common-tools/swim-tools/pom.xml index 140e56b606..ef3ea08e74 100644 --- a/common-tools/swim-tools/pom.xml +++ b/common-tools/swim-tools/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas swim-tools - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/parent/pom.xml b/parent/pom.xml index 4f17f7d55e..866c403634 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas clas12rec - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT pom diff --git a/pom.xml b/pom.xml index e4054f11b3..a4d40c561c 100644 --- a/pom.xml +++ b/pom.xml @@ -2,14 +2,14 @@ 4.0.0 org.jlab.clas clas12 - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT pom org.jlab.clas clas12rec parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index b8c8017381..366b085ee5 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -13,31 +13,31 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-io - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT compile org.jlab.clas clas-tracking - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT compile org.jlab.clas clas-geometry - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT compile diff --git a/reconstruction/band/pom.xml b/reconstruction/band/pom.xml index 6956d88842..8795e19aff 100644 --- a/reconstruction/band/pom.xml +++ b/reconstruction/band/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/bg/pom.xml b/reconstruction/bg/pom.xml index f681c5f4d0..58129ffdbe 100644 --- a/reconstruction/bg/pom.xml +++ b/reconstruction/bg/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/cnd/pom.xml b/reconstruction/cnd/pom.xml index 47d1910ba0..3b8b3712a1 100644 --- a/reconstruction/cnd/pom.xml +++ b/reconstruction/cnd/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/cvt/pom.xml b/reconstruction/cvt/pom.xml index 2dba1ea565..58b7e06a7f 100644 --- a/reconstruction/cvt/pom.xml +++ b/reconstruction/cvt/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -47,7 +47,7 @@ org.jlab.clas clas-tracking - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/dc/pom.xml b/reconstruction/dc/pom.xml index c95cf8ca4e..e1d60bc008 100644 --- a/reconstruction/dc/pom.xml +++ b/reconstruction/dc/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -28,25 +28,25 @@ org.jlab.clas clas-tracking - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -75,13 +75,13 @@ org.jlab.clas swim-tools - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-math - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/eb/pom.xml b/reconstruction/eb/pom.xml index 8547bcd164..48b03d607b 100644 --- a/reconstruction/eb/pom.xml +++ b/reconstruction/eb/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -21,25 +21,25 @@ org.jlab.clas clas-utils - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-io - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/ec/pom.xml b/reconstruction/ec/pom.xml index ecfa557382..d7a4535c35 100644 --- a/reconstruction/ec/pom.xml +++ b/reconstruction/ec/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/fmt/pom.xml b/reconstruction/fmt/pom.xml index f10cf89b1b..e6e973f607 100644 --- a/reconstruction/fmt/pom.xml +++ b/reconstruction/fmt/pom.xml @@ -15,21 +15,21 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas swim-tools - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/ft/pom.xml b/reconstruction/ft/pom.xml index b14f8a3c1f..8b771b8026 100644 --- a/reconstruction/ft/pom.xml +++ b/reconstruction/ft/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/htcc/pom.xml b/reconstruction/htcc/pom.xml index d8dcaf4b4b..a2b697d6ff 100644 --- a/reconstruction/htcc/pom.xml +++ b/reconstruction/htcc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/ltcc/pom.xml b/reconstruction/ltcc/pom.xml index 28103f0261..b6aae818ca 100644 --- a/reconstruction/ltcc/pom.xml +++ b/reconstruction/ltcc/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/mc/pom.xml b/reconstruction/mc/pom.xml index 0672b27e3e..ebc1cf3c4a 100644 --- a/reconstruction/mc/pom.xml +++ b/reconstruction/mc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/mltn/pom.xml b/reconstruction/mltn/pom.xml index a20898e6a3..d4ebf5cc87 100644 --- a/reconstruction/mltn/pom.xml +++ b/reconstruction/mltn/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -34,13 +34,13 @@ org.jlab.clas clas-io - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/pom.xml b/reconstruction/pom.xml index 2aa05751f5..e636255c75 100644 --- a/reconstruction/pom.xml +++ b/reconstruction/pom.xml @@ -3,14 +3,14 @@ org.jlab.clas reconstruction - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/postproc/pom.xml b/reconstruction/postproc/pom.xml index 523ca3640f..98c91b4982 100644 --- a/reconstruction/postproc/pom.xml +++ b/reconstruction/postproc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/raster/pom.xml b/reconstruction/raster/pom.xml index 3e0f0c4139..99c05ceda1 100644 --- a/reconstruction/raster/pom.xml +++ b/reconstruction/raster/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/rich/pom.xml b/reconstruction/rich/pom.xml index aa5fee8843..8d03b1128d 100644 --- a/reconstruction/rich/pom.xml +++ b/reconstruction/rich/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/rtpc/pom.xml b/reconstruction/rtpc/pom.xml index c2dafb0291..fb63378d97 100644 --- a/reconstruction/rtpc/pom.xml +++ b/reconstruction/rtpc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -21,12 +21,12 @@ org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-tracking - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT compile diff --git a/reconstruction/swaps/pom.xml b/reconstruction/swaps/pom.xml index 8300485ceb..0851f48dd0 100644 --- a/reconstruction/swaps/pom.xml +++ b/reconstruction/swaps/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-detector - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-io - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-reco - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/tof/pom.xml b/reconstruction/tof/pom.xml index 23d3e269ec..8cdbfde992 100644 --- a/reconstruction/tof/pom.xml +++ b/reconstruction/tof/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/urwell/pom.xml b/reconstruction/urwell/pom.xml index 650a8b4f37..871a35057b 100644 --- a/reconstruction/urwell/pom.xml +++ b/reconstruction/urwell/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT diff --git a/reconstruction/vtx/pom.xml b/reconstruction/vtx/pom.xml index e9834febd5..8aaa56821a 100644 --- a/reconstruction/vtx/pom.xml +++ b/reconstruction/vtx/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT @@ -33,13 +33,13 @@ org.jlab.clas swim-tools - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar org.jlab.clas clas-tracking - 12.0.0-SNAPSHOT + 12.0.1t-SNAPSHOT jar From d07bcb62a63d9df1621dfc36302fcc05567cafda Mon Sep 17 00:00:00 2001 From: baltzell Date: Tue, 1 Apr 2025 16:37:40 -0400 Subject: [PATCH 024/100] default to clondaq7, add where missing --- .../java/org/jlab/io/ui/ConnectionDialog.java | 4 +-- .../org/jlab/io/ui/ConnectionDialogHipo.java | 25 ++----------------- 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/common-tools/clas-io/src/main/java/org/jlab/io/ui/ConnectionDialog.java b/common-tools/clas-io/src/main/java/org/jlab/io/ui/ConnectionDialog.java index 4c9333409e..d1c3c08677 100644 --- a/common-tools/clas-io/src/main/java/org/jlab/io/ui/ConnectionDialog.java +++ b/common-tools/clas-io/src/main/java/org/jlab/io/ui/ConnectionDialog.java @@ -42,8 +42,8 @@ public class ConnectionDialog extends BasicDialog { private static String[] hostNames = new String[]{"clondaq2","clondaq3","clondaq4","clondaq5","clondaq6","clondaq7"}; private static String[] hostIP = new String[]{"129.57.167.109","129.57.167.226","129.57.167.227","129.57.167.41","129.57.167.60","129.57.167.20"}; - private static String defaultHost = "clondaq6"; - private static String defaultIP = "129.57.167.60"; + private static String defaultHost = "clondaq7"; + private static String defaultIP = "129.57.167.20"; Map connectionHosts = new LinkedHashMap(); diff --git a/common-tools/clas-io/src/main/java/org/jlab/io/ui/ConnectionDialogHipo.java b/common-tools/clas-io/src/main/java/org/jlab/io/ui/ConnectionDialogHipo.java index 49b9756414..353cf8dd95 100644 --- a/common-tools/clas-io/src/main/java/org/jlab/io/ui/ConnectionDialogHipo.java +++ b/common-tools/clas-io/src/main/java/org/jlab/io/ui/ConnectionDialogHipo.java @@ -1,28 +1,17 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package org.jlab.io.ui; import java.awt.Component; -import java.awt.FlowLayout; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.ButtonGroup; import javax.swing.JComboBox; -import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; import javax.swing.border.Border; -import org.jlab.utils.FileUtils; /** * @@ -41,8 +30,8 @@ public class ConnectionDialogHipo extends BasicDialog { private JRadioButton _directConnect; private JRadioButton _connectToDAQ; - private static String[] hostNames = new String[]{"clondaq2","clondaq3","clondaq4","clondaq5","clondaq6"}; - private static String[] hostIP = new String[]{"129.57.167.109","129.57.167.226","129.57.167.227","129.57.167.41","129.57.167.60"}; + private static String[] hostNames = new String[]{"clondaq2","clondaq3","clondaq4","clondaq5","clondaq6","clondaq7"}; + private static String[] hostIP = new String[]{"129.57.167.109","129.57.167.226","129.57.167.227","129.57.167.41","129.57.167.60","129.57.167.20"}; Map connectionHosts = new LinkedHashMap(); @@ -66,7 +55,6 @@ public ConnectionDialogHipo() { this.connectionHosts.put(hostNames[i],hostIP[i]); } } - @Override protected Component createCenterComponent() { @@ -89,17 +77,9 @@ protected Component createCenterComponent() { panel.add(Box.createVerticalStrut(6)); panel.add(_connectToDAQ); - - - - - Border emptyBorder = BorderFactory .createEtchedBorder();//4, 4, 4, 4); - //CommonBorder cborder = new CommonBorder("Connect to ET"); - - //panel.setBorder(BorderFactory.createCompoundBorder(emptyBorder)); panel.setBorder(BorderFactory.createTitledBorder(emptyBorder, "Connect to Host")); return panel; } @@ -142,7 +122,6 @@ public int getConnectionType() { else if (_connectToDAQ.isSelected()) { return CONNECTDAQ; } - return -1; } From c1a4ca29324e7a690de605a7117249bf49cf0199 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Thu, 3 Apr 2025 12:34:34 -0400 Subject: [PATCH 025/100] Load calibration constants for AHDC and ATOF --- .../constants/CalibrationConstantsLoader.java | 183 ++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java b/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java new file mode 100644 index 0000000000..b9503f34e2 --- /dev/null +++ b/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java @@ -0,0 +1,183 @@ +package org.jlab.rec.alert.constants; + +import org.jlab.detector.calib.utils.ConstantsManager; +import org.jlab.detector.calib.utils.DatabaseConstantProvider; +import org.jlab.utils.groups.IndexedTable; + +import java.util.HashMap; +import java.util.Map; +import java.lang.Integer; +import java.lang.Double; + +/** + * This class loads constants from CCDB + * + * inspired by the one of the BAND subsystem + * + * @author ftouchte + */ + +public class CalibrationConstantsLoader { + + public CalibrationConstantsLoader() { + // TODO Auto-generated constructor stub + } + public static boolean CSTLOADED = false; + + // Maps for constants from database + // AHDC + public static Map AHDC_TIME_OFFSETS = new HashMap(); ///< AHDC Parameters for timing offsets + public static Map AHDC_TIME_TO_DISTANCE = new HashMap(); ///< AHDC Parameters for time to distance + + // ATOF + public static Map ATOF_EFFECTIVE_VELOCITY = new HashMap(); ///< ATOF Parameters for effective velocity + public static Map ATOF_TIME_WALK = new HashMap(); ///< ATOF Parameters for time walk + public static Map ATOF_ATTENUATION_LENGTH = new HashMap(); ///< ATOF Parameters for attenuation lenght + public static Map ATOF_TIME_OFFSETS = new HashMap(); ///< ATOF Parameters for timing offsets + + public static synchronized void Load(int runno, String var, ConstantsManager manager) { + + //System.out.println("*Loading calibration constants*"); + manager.setVariation(var); + + IndexedTable ahdc_timeOffsets = manager.getConstants(runno, "/calibration/alert/ahdc/time_offsets"); + IndexedTable ahdc_time2distance = manager.getConstants(runno, "/calibration/alert/ahdc/time_to_distance"); + IndexedTable atof_effectiveVelocity = manager.getConstants(runno, "/calibration/alert/atof/effective_velocity"); + IndexedTable atof_timeWalk = manager.getConstants(runno, "/calibration/alert/atof/time_walk"); + IndexedTable atof_attenuationLength = manager.getConstants(runno, "/calibration/alert/atof/attenuation"); + IndexedTable atof_timeOffsets = manager.getConstants(runno, "/calibration/alert/atof/time_offsets"); + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // AHDC time offsets + for( int i = 0; i < ahdc_timeOffsets.getRowCount(); i++){ + int sector = Integer.parseInt((String)ahdc_timeOffsets.getValueAt(i, 0)); + int layer = Integer.parseInt((String)ahdc_timeOffsets.getValueAt(i, 1)); + int component = Integer.parseInt((String)ahdc_timeOffsets.getValueAt(i, 2)); + double t0 = ahdc_timeOffsets.getDoubleValue("t0", sector, layer, component); + double dt0 = ahdc_timeOffsets.getDoubleValue("dt0", sector, layer, component); + double extra1 = ahdc_timeOffsets.getDoubleValue("extra1", sector, layer, component); + double extra2 = ahdc_timeOffsets.getDoubleValue("extra2", sector, layer, component); + double chi2ndf = ahdc_timeOffsets.getDoubleValue("chi2ndf", sector, layer, component); + // Put in map + int key = sector*10000 + layer*100 + component; + double params[] = {t0, dt0, extra1, extra2, chi2ndf}; + AHDC_TIME_OFFSETS.put(Integer.valueOf(key), params); + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // AHDC time to distance + for( int i = 0; i < ahdc_time2distance.getRowCount(); i++){ + int sector = Integer.parseInt((String)ahdc_time2distance.getValueAt(i, 0)); + int layer = Integer.parseInt((String)ahdc_time2distance.getValueAt(i, 1)); + int component = Integer.parseInt((String)ahdc_time2distance.getValueAt(i, 2)); + double p0 = ahdc_time2distance.getDoubleValue("p0", sector, layer, component); + double p1 = ahdc_time2distance.getDoubleValue("p1", sector, layer, component); + double p2 = ahdc_time2distance.getDoubleValue("p2", sector, layer, component); + double p3 = ahdc_time2distance.getDoubleValue("p3", sector, layer, component); + double p4 = ahdc_time2distance.getDoubleValue("p4", sector, layer, component); + double p5 = ahdc_time2distance.getDoubleValue("p5", sector, layer, component); + double dp0 = ahdc_time2distance.getDoubleValue("dp0", sector, layer, component); + double dp1 = ahdc_time2distance.getDoubleValue("dp1", sector, layer, component); + double dp2 = ahdc_time2distance.getDoubleValue("dp2", sector, layer, component); + double dp3 = ahdc_time2distance.getDoubleValue("dp3", sector, layer, component); + double dp4 = ahdc_time2distance.getDoubleValue("dp4", sector, layer, component); + double dp5 = ahdc_time2distance.getDoubleValue("dp5", sector, layer, component); + double chi2ndf = ahdc_time2distance.getDoubleValue("chi2ndf", sector, layer, component); + // Put in map + int key = sector*10000 + layer*100 + component; + double params[] = {p0, p1, p2, p3, p4, p5, dp0, dp1, dp2, dp3, dp4, dp5, chi2ndf}; + AHDC_TIME_TO_DISTANCE.put(Integer.valueOf(key), params); + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // ATOF effective velocity + for( int i = 0; i < atof_effectiveVelocity.getRowCount(); i++){ + int sector = Integer.parseInt((String)atof_effectiveVelocity.getValueAt(i, 0)); + int layer = Integer.parseInt((String)atof_effectiveVelocity.getValueAt(i, 1)); + int component = Integer.parseInt((String)atof_effectiveVelocity.getValueAt(i, 2)); + double veff = atof_effectiveVelocity.getDoubleValue("veff", sector, layer, component); + double dveff = atof_effectiveVelocity.getDoubleValue("dveff", sector, layer, component); + double extra1 = atof_effectiveVelocity.getDoubleValue("extra1", sector, layer, component); + double extra2 = atof_effectiveVelocity.getDoubleValue("extra2", sector, layer, component); + // Put in map + int key = sector*10000 + layer*100 + component; + double params[] = {veff, dveff, extra1, extra2}; + ATOF_EFFECTIVE_VELOCITY.put(Integer.valueOf(key), params); + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // ATOF time walk + for( int i = 0; i < atof_timeWalk.getRowCount(); i++){ + int sector = Integer.parseInt((String)atof_timeWalk.getValueAt(i, 0)); + int layer = Integer.parseInt((String)atof_timeWalk.getValueAt(i, 1)); + int component = Integer.parseInt((String)atof_timeWalk.getValueAt(i, 2)); + double tw0 = atof_timeWalk.getDoubleValue("tw0", sector, layer, component); + double tw1 = atof_timeWalk.getDoubleValue("tw1", sector, layer, component); + double tw2 = atof_timeWalk.getDoubleValue("tw2", sector, layer, component); + double tw3 = atof_timeWalk.getDoubleValue("tw3", sector, layer, component); + double dtw0 = atof_timeWalk.getDoubleValue("dtw0", sector, layer, component); + double dtw1 = atof_timeWalk.getDoubleValue("dtw1", sector, layer, component); + double dtw2 = atof_timeWalk.getDoubleValue("dtw2", sector, layer, component); + double dtw3 = atof_timeWalk.getDoubleValue("dtw3", sector, layer, component); + double chi2ndf = atof_timeWalk.getDoubleValue("chi2ndf", sector, layer, component); + // Put in map + int key = sector*10000 + layer*100 + component; + double params[] = {tw0, tw1, tw2, tw3, dtw0, dtw1, dtw2, dtw3, chi2ndf}; + ATOF_TIME_WALK.put(Integer.valueOf(key), params); + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // ATOF attenuation length + for( int i = 0; i < atof_attenuationLength.getRowCount(); i++){ + int sector = Integer.parseInt((String)atof_attenuationLength.getValueAt(i, 0)); + int layer = Integer.parseInt((String)atof_attenuationLength.getValueAt(i, 1)); + int component = Integer.parseInt((String)atof_attenuationLength.getValueAt(i, 2)); + double attlen = atof_attenuationLength.getDoubleValue("attlen", sector, layer, component); + double dattlen = atof_attenuationLength.getDoubleValue("dattlen", sector, layer, component); + double extra1 = atof_attenuationLength.getDoubleValue("extra1", sector, layer, component); + double extra2 = atof_attenuationLength.getDoubleValue("extra2", sector, layer, component); + // Put in map + int key = sector*10000 + layer*100 + component; + double params[] = {attlen, dattlen, extra1, extra2}; + ATOF_ATTENUATION_LENGTH.put(Integer.valueOf(key), params); + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // ATOF time offsets + for( int i = 0; i < atof_timeOffsets.getRowCount(); i++){ + int sector = Integer.parseInt((String)atof_timeOffsets.getValueAt(i, 0)); + int layer = Integer.parseInt((String)atof_timeOffsets.getValueAt(i, 1)); + int component = Integer.parseInt((String)atof_timeOffsets.getValueAt(i, 2)); + double t0 = atof_timeOffsets.getDoubleValue("t0", sector, layer, component); + double upstream_downstream = atof_timeOffsets.getDoubleValue("upstream_downstream", sector, layer, component); + double wedge_bar = atof_timeOffsets.getDoubleValue("wedge" , sector, layer, component); + double extra1 = atof_timeOffsets.getDoubleValue("extra1", sector, layer, component); + double extra2 = atof_timeOffsets.getDoubleValue("extra2", sector, layer, component); + // Put in map + int key = sector*10000 + layer*100 + component; + double params[] = {t0, upstream_downstream, wedge_bar, extra1, extra2}; + ATOF_TIME_OFFSETS.put(Integer.valueOf(key), params); + } + + + CSTLOADED = true; + + } + + + private static DatabaseConstantProvider DB; + + public static final DatabaseConstantProvider getDB() { + return DB; + } + + + public static final void setDB(DatabaseConstantProvider dB) { + DB = dB; + } + + public static void main (String arg[]) { + // CalibrationConstantsLoader.Load(10,"default"); + } +} From 3aedccc7e4fe7a98f23d381de76c374f2e80249f Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Thu, 3 Apr 2025 13:17:37 -0400 Subject: [PATCH 026/100] Correct atof calibration constant name --- .../java/org/jlab/rec/constants/CalibrationConstantsLoader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java b/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java index b9503f34e2..830310b948 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java @@ -151,7 +151,7 @@ public static synchronized void Load(int runno, String var, ConstantsManager man int component = Integer.parseInt((String)atof_timeOffsets.getValueAt(i, 2)); double t0 = atof_timeOffsets.getDoubleValue("t0", sector, layer, component); double upstream_downstream = atof_timeOffsets.getDoubleValue("upstream_downstream", sector, layer, component); - double wedge_bar = atof_timeOffsets.getDoubleValue("wedge" , sector, layer, component); + double wedge_bar = atof_timeOffsets.getDoubleValue("wedge_bar", sector, layer, component); double extra1 = atof_timeOffsets.getDoubleValue("extra1", sector, layer, component); double extra2 = atof_timeOffsets.getDoubleValue("extra2", sector, layer, component); // Put in map From 2879144a5fbbb3067c86b288f63e9017da8801d9 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Thu, 3 Apr 2025 15:02:56 -0400 Subject: [PATCH 027/100] Compute doca from time2distance calibration --- .../java/org/jlab/rec/ahdc/Hit/HitReader.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 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 91e7a1daad..cc6b86e88f 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 @@ -5,6 +5,7 @@ import org.jlab.io.base.DataBank; import org.jlab.io.base.DataEvent; import org.jlab.detector.banks.RawDataBank; +import org.jlab.rec.alert.constants.CalibrationConstantsLoader; public class HitReader { @@ -31,10 +32,30 @@ public void fetch_AHDCHits(DataEvent event) { int number = bankDGTZ.getByte("layer", i); int layer = number % 10; int superlayer = (int) (number % 100) / 10; + int sector = bankDGTZ.getInt("sector", i); int wire = bankDGTZ.getShort("component", i); double adc = bankDGTZ.getInt("ADC", i); - double doca = bankDGTZ.getShort("ped", i) / 1000.0; - + double leadingEdgeTime = bankDGTZ.getFloat("leadingEdgeTime", i); + + // use calibration constants + int key_value = sector*10000 + layer*100 + wire; + double[] timeOffsets = CalibrationConstantsLoader.AHDC_TIME_OFFSETS.get( key_value ); + double[] time2distance = CalibrationConstantsLoader.AHDC_TIME_TO_DISTANCE.get( key_value ); // the time to distance table has only one row, should select the right key_value, is 0 ? is 11001 ? need to be tested ! + double t0 = timeOffsets[0]; + double p0 = time2distance[0]; + double p1 = time2distance[1]; + double p2 = time2distance[2]; + double p3 = time2distance[3]; + double p4 = time2distance[4]; + double p5 = time2distance[5]; + + double time = leadingEdgeTime - t0; + // we may prevent time to be too small or too big + // CONDITION TO BE ADDED + // we should also use a flag to prevent to read the ccdb if reconstructed event if from simulation + // TO BE DONE + //double doca = bankDGTZ.getShort("ped", i) / 1000.0; + double doca = p0 + p1*Math.pow(time,1.0) + p2*Math.pow(time,2.0) + p3*Math.pow(time,3.0) + p4*Math.pow(time,4.0) + p5*Math.pow(time, 5.0); hits.add(new Hit(id, superlayer, layer, wire, doca, adc)); } } From 4f16d92a7458d7f9a9e514d3293800f7d1ca5dae Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Thu, 3 Apr 2025 15:59:28 -0400 Subject: [PATCH 028/100] Add a time in the AHDC::Hits bank --- etc/bankdefs/hipo4/alert.json | 8 ++++++-- .../alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java | 8 +++++++- .../src/main/java/org/jlab/rec/ahdc/Hit/HitReader.java | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/etc/bankdefs/hipo4/alert.json b/etc/bankdefs/hipo4/alert.json index 7999d13c2b..f4e1573f19 100644 --- a/etc/bankdefs/hipo4/alert.json +++ b/etc/bankdefs/hipo4/alert.json @@ -180,15 +180,19 @@ }, { "name": "Doca", "type": "D", - "info": "distance od closest approch (mm)" + "info": "distance od closest approch (mm) is actually the distance from time2distance calibration" }, { "name": "residual", "type": "D", - "info": "residual (mm)" + "info": "residual (mm) is distance from time2distance calibration minus the distance of closest approach computed at the Kalman Filter stage" }, { "name": "residual_prefit", "type": "D", "info": "residual pre-fit (mm)" + }, { + "name": "time", + "type": "D", + "info": "time (ns) is leadingEdgeTime from AHDC::adc minus t0 from calibration" } ] }, { diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java index 9182365273..109e8920a0 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java @@ -10,6 +10,7 @@ public class Hit implements Comparable { private final int wireId; private final double doca; private final double adc; + private final double time; private double phi; private double radius; @@ -21,13 +22,14 @@ public class Hit implements Comparable { private double residual; //updated constructor with ADC - public Hit(int _Id, int _Super_layer, int _Layer, int _Wire, double _Doca, double _ADC) { + public Hit(int _Id, int _Super_layer, int _Layer, int _Wire, double _Doca, double _ADC, double _Time) { this.id = _Id; this.superLayerId = _Super_layer; this.layerId = _Layer; this.wireId = _Wire; this.doca = _Doca; this.adc = _ADC; + this.time = _Time; wirePosition(); this.residual_prefit = 0.0; this.residual = 0.0; @@ -155,4 +157,8 @@ public void setResidual(double resid) { public void setResidualPrefit(double resid) { this.residual_prefit = resid; } + + public double getTime() { + return time; + } } 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 cc6b86e88f..5c3d949680 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 @@ -56,7 +56,7 @@ public void fetch_AHDCHits(DataEvent event) { // TO BE DONE //double doca = bankDGTZ.getShort("ped", i) / 1000.0; double doca = p0 + p1*Math.pow(time,1.0) + p2*Math.pow(time,2.0) + p3*Math.pow(time,3.0) + p4*Math.pow(time,4.0) + p5*Math.pow(time, 5.0); - hits.add(new Hit(id, superlayer, layer, wire, doca, adc)); + hits.add(new Hit(id, superlayer, layer, wire, doca, adc, time)); } } this.set_AHDCHits(hits); From b11c8acad2f9085ab685e3677984075ae2374a25 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Thu, 3 Apr 2025 18:23:54 -0400 Subject: [PATCH 029/100] Try to load ccdb tables --- .../src/main/java/org/jlab/rec/service/AHDCEngine.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java index d57a6b2bec..2165e58426 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java @@ -22,6 +22,7 @@ import org.jlab.rec.ahdc.PreCluster.PreClusterFinder; import org.jlab.rec.ahdc.Track.Track; import org.jlab.rec.ahdc.Mode; +import org.jlab.rec.alert.constants.CalibrationConstantsLoader; import java.io.File; import java.util.*; @@ -64,6 +65,7 @@ public boolean init() { return true; } + int Run = -1; @Override public boolean processDataEvent(DataEvent event) { @@ -82,6 +84,14 @@ public boolean processDataEvent(DataEvent event) { System.err.println("RTPCEngine: got run <= 0 in RUN::config, skipping event."); return false; } + int newRun = Run; + newRun = runNo; + // Load the constants + //------------------- + if(Run!=newRun) { + CalibrationConstantsLoader.Load(newRun,"default",this.getConstantsManager()); + Run = newRun; + } } magfield = 50 * magfieldfactor; From 73a864a0ebaa47b0e067ad01ef0ff4b8cfcabc81 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Fri, 4 Apr 2025 11:10:32 -0400 Subject: [PATCH 030/100] ALERT CCDB successfully loaded --- .../main/java/org/jlab/rec/ahdc/Hit/HitReader.java | 10 +++++++--- .../rec/constants/CalibrationConstantsLoader.java | 3 +++ .../main/java/org/jlab/rec/service/AHDCEngine.java | 11 +++++++++++ 3 files changed, 21 insertions(+), 3 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 5c3d949680..72b1542e41 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 @@ -7,6 +7,10 @@ import org.jlab.detector.banks.RawDataBank; import org.jlab.rec.alert.constants.CalibrationConstantsLoader; +//import java.util.Arrays; // tmp +//import java.util.HashMap; +//import java.util.Map; + public class HitReader { private ArrayList _AHDCHits; @@ -38,9 +42,9 @@ public void fetch_AHDCHits(DataEvent event) { double leadingEdgeTime = bankDGTZ.getFloat("leadingEdgeTime", i); // use calibration constants - int key_value = sector*10000 + layer*100 + wire; - double[] timeOffsets = CalibrationConstantsLoader.AHDC_TIME_OFFSETS.get( key_value ); - double[] time2distance = CalibrationConstantsLoader.AHDC_TIME_TO_DISTANCE.get( key_value ); // the time to distance table has only one row, should select the right key_value, is 0 ? is 11001 ? need to be tested ! + int key_value = sector*10000 + number*100 + wire; + double[] timeOffsets = CalibrationConstantsLoader.AHDC_TIME_OFFSETS.get( key_value ); + double[] time2distance = CalibrationConstantsLoader.AHDC_TIME_TO_DISTANCE.get( 10101 ); // the time to distance table has only one row ! (10101 is its only key) double t0 = timeOffsets[0]; double p0 = time2distance[0]; double p1 = time2distance[1]; diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java b/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java index 830310b948..03148087c2 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java @@ -67,6 +67,9 @@ public static synchronized void Load(int runno, String var, ConstantsManager man //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // AHDC time to distance + // Caution, this table has only one row + // the corresponding identifers are (sector, layer, component) == (1,1,1) + // but it applies for all AHDC wires ! for( int i = 0; i < ahdc_time2distance.getRowCount(); i++){ int sector = Integer.parseInt((String)ahdc_time2distance.getValueAt(i, 0)); int layer = Integer.parseInt((String)ahdc_time2distance.getValueAt(i, 1)); diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java index 2165e58426..550450be64 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java @@ -61,6 +61,17 @@ public boolean init() { if (mode == Mode.AI_Track_Finding) { model = new Model(); } + + // Requires calibration constants + String[] alertTables = new String[] { + "/calibration/alert/ahdc/time_offsets", + "/calibration/alert/ahdc/time_to_distance", + "/calibration/alert/atof/effective_velocity", + "/calibration/alert/atof/time_walk", + "/calibration/alert/atof/attenuation", + "/calibration/alert/atof/time_offsets" + }; + requireConstants(Arrays.asList(alertTables)); return true; } From 32abeed6b00e5e33b2b7303e1b89719888dae271 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Fri, 4 Apr 2025 14:10:22 -0400 Subject: [PATCH 031/100] Delete unnecessary comments --- .../alert/src/main/java/org/jlab/rec/ahdc/Hit/HitReader.java | 4 ---- 1 file changed, 4 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 72b1542e41..1db2ded4a1 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 @@ -7,10 +7,6 @@ import org.jlab.detector.banks.RawDataBank; import org.jlab.rec.alert.constants.CalibrationConstantsLoader; -//import java.util.Arrays; // tmp -//import java.util.HashMap; -//import java.util.Map; - public class HitReader { private ArrayList _AHDCHits; From 4659ff492e8a83f5901b72cd78b779328155d4e0 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 4 Apr 2025 18:42:41 -0400 Subject: [PATCH 032/100] remove duplicate call --- .../src/main/java/org/jlab/detector/decode/CodaEventDecoder.java | 1 - 1 file changed, 1 deletion(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java index c8c01bde21..6de2e5cfa4 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java @@ -85,7 +85,6 @@ public List getDataEntries(EvioDataEvent event){ rawEntries.addAll(scalerEntries); this.getDataEntries_EPICS(event); - this.getDataEntries_HelicityDecoder(event); return rawEntries; } From ea196cab3304564c1e4242e9c2f1965b76b21875 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 4 Apr 2025 18:51:09 -0400 Subject: [PATCH 033/100] catch what looks like v2 firmware and ignore it --- .../detector/decode/CodaEventDecoder.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java index 6de2e5cfa4..44c2306b12 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java @@ -1207,18 +1207,30 @@ public HelicityDecoderData getDataEntries_HelicityDecoder(EvioDataEvent event){ i_data_offset++; } // find the trigger time word. if(i_data_offset>=intData.length){ - System.err.println("ERROR: HelicityDecoder data is corrupted. Trigger time word not found."); + System.err.println("ERROR: HelicityDecoder EVIO data is corrupted. Trigger time word not found."); return null; } long timeStamp = (intData[i_data_offset]&0x00ffffff) + (((long)(intData[i_data_offset+1]&0x00ffffffL))<<24); i_data_offset+=2; // Next word should be "DECODER DATA", with 0x18 in the top 5 bits. - if(((int) (( ((long)intData[i_data_offset]) & 0x00000000ffffffffL ) >> 27)) != 0x18){ - System.err.println("ERROR: HelicityDecoder data is corrupted. DECODER BANK not found."); + try { + if(((int) (( ((long)intData[i_data_offset]) & 0x00000000ffffffffL ) >> 27)) != 0x18){ + System.err.println("ERROR: HelicityDecoder EVIO data is corrupted."); + return null; + } + } + catch (ArrayIndexOutOfBoundsException e) { + System.err.println("ERROR: HelicityDecoder EVIO data looks like v2 firmware(?), ignoring it."); return null; } - int num_data_words = intData[i_data_offset]&0x07ffffff; - if(num_data_words < 14){ - System.err.println("ERROR: HelicityDecoder data is corrupted. Not enough data words."); + try { + int num_data_words = intData[i_data_offset]&0x07ffffff; + if(num_data_words < 14){ + System.err.println("ERROR: HelicityDecoder EVIO data is corrupted. Not enough data words."); + return null; + } + } + catch (ArrayIndexOutOfBoundsException e) { + System.err.println("ERROR: HelicityDecoder EVIO data looks like v2 firmware(?), ignoring it."); return null; } i_data_offset ++; // Point to the first word in the data block. From 6b02fd2aba97a2e3b3582d7b17e5a259e9c1be94 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 4 Apr 2025 18:54:57 -0400 Subject: [PATCH 034/100] cleanup IDE complaints --- .../org/jlab/detector/decode/CodaEventDecoder.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java index 44c2306b12..bef9ba4504 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CodaEventDecoder.java @@ -68,7 +68,7 @@ public List getDataEntries(EvioDataEvent event){ // zero out the trigger bits, but let the others properties inherit // from the previous event, in the case where there's no HEAD bank: this.setTriggerBits(0); - List rawEntries = new ArrayList(); + List rawEntries = new ArrayList<>(); List branches = this.getEventBranches(event); this.setTimeStamp(event); for(EvioTreeBranch branch : branches){ @@ -644,7 +644,6 @@ public List getDataEntries_57601(Integer crate, EvioNode node System.out.println("Exception in CRATE = " + crate + " RUN = " + this.runNumber + " EVENT = " + this.eventNumber + " LENGTH = " + compBuffer.array().length); this.printByteBuffer(compBuffer, 120, 20); -// Logger.getLogger(CodaEventDecoder.class.getName()).log(Level.SEVERE, null, ex); } } return entries; @@ -747,7 +746,7 @@ public List getDataEntries_57640(Integer crate, EvioNode node int nSamples = nBytes*8/12; short[] samples = new short[ nSamples ]; - int s = 0; + int s; for( int b=0;b getDataEntries_57641(Integer crate, EvioNode node for( int ch=0; ch getDataEntries_57641(Integer crate, EvioNode node int nSamples = nBytes*8/12; short[] samples = new short[ nSamples ]; - int s = 0; + int s; for( int b=0;b Date: Sun, 6 Apr 2025 18:47:52 -0500 Subject: [PATCH 035/100] Alert engine for combined ATOF/AHDC reconstruction (#529) * Moved ATOF Track projections to ALERTEngine since it will need a track * Added many todo comments in code. * Cleaned up various if statements for clarity. * moved services to proper project directory structure that is picked up by javadocs --------- Co-authored-by: Whitney Armstrong --- .gitlab-ci.yml | 18 + build-javadocs.sh | 4 +- pom.xml | 6 + .../main/java/org/jlab/rec/ahdc/AI/Model.java | 5 + .../jlab/rec/ahdc/Cluster/ClusterFinder.java | 6 + .../org/jlab/rec/ahdc/Distance/Distance.java | 5 + .../jlab/rec/ahdc/HelixFit/HelixFitJava.java | 8 +- .../rec/ahdc/HelixFit/HelixFitObject.java | 2 +- .../jlab/rec/ahdc/PreCluster/PreCluster.java | 5 + .../jlab/rec/alert/banks/RecoBankWriter.java | 81 +++++ .../rec/alert/projections/TrackProjector.java | 188 +++++------ .../java/org/jlab/rec/service/AHDCEngine.java | 286 ---------------- .../org/jlab/service/ahdc/AHDCEngine.java | 309 ++++++++++++++++++ .../org/jlab/service/alert/ALERTEngine.java | 177 ++++++++++ .../service => service/atof}/ATOFEngine.java | 30 +- 15 files changed, 735 insertions(+), 395 deletions(-) create mode 100644 reconstruction/alert/src/main/java/org/jlab/rec/alert/banks/RecoBankWriter.java delete mode 100644 reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java create mode 100644 reconstruction/alert/src/main/java/org/jlab/service/ahdc/AHDCEngine.java create mode 100644 reconstruction/alert/src/main/java/org/jlab/service/alert/ALERTEngine.java rename reconstruction/alert/src/main/java/org/jlab/{rec/service => service/atof}/ATOFEngine.java (77%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index db9ad01fa8..51bd6a7da6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -72,6 +72,7 @@ shared_for_alert_tests: coatjava:singularity: image: eicweb.phy.anl.gov:4567/containers/image_recipes/ubuntu_dind:latest + needs: ["coatjava_build"] tags: - silicon allow_failure: true @@ -82,4 +83,21 @@ coatjava:singularity: paths: - coatjava.sif +create-pages: + image: codecr.jlab.org/hallb/alert/coatjava/coatjava:development + script: + - export MAVEN_OPTS=" -Dfile.encoding=UTF-8" + - echo "${CI_COMMIT_REF_NAME}" + - ls -lrth + - mvn --version + - java --version + - ls -lrth + - pwd + - ls -lrth docs/javadoc + - ./build-javadocs.sh + - ls -lrth + - ls -lrth docs/ + - ls -lrth docs/javadoc + - mv docs/javadoc public + pages: true # specifies that this is a Pages job and publishes the default public directory diff --git a/build-javadocs.sh b/build-javadocs.sh index bfdfe87abd..4932f9ee9d 100755 --- a/build-javadocs.sh +++ b/build-javadocs.sh @@ -5,8 +5,10 @@ set -e +export MAVEN_OPTS=" -Dfile.encoding=UTF-8" + ##### generate documentation -mvn javadoc:javadoc -Ddoclint=none +mvn javadoc:javadoc -Ddoclint=none ##### collect documentation diff --git a/pom.xml b/pom.xml index a4d40c561c..684e11dd46 100644 --- a/pom.xml +++ b/pom.xml @@ -1,10 +1,16 @@ + + UTF-8 + UTF-8 + + 4.0.0 org.jlab.clas clas12 12.0.1t-SNAPSHOT pom + org.jlab.clas clas12rec diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/Model.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/Model.java index 3f196db93c..83813a8561 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/Model.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/AI/Model.java @@ -16,6 +16,11 @@ import java.io.IOException; import java.nio.file.Paths; +/** Model of What. + * + * + * \todo fix class name + */ public class Model { private ZooModel model; diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Cluster/ClusterFinder.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Cluster/ClusterFinder.java index 7a1421815a..87a4446b1c 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Cluster/ClusterFinder.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Cluster/ClusterFinder.java @@ -5,6 +5,11 @@ import java.util.ArrayList; import java.util.List; +/** ClusterFinder + * + * \todo description of what it does and how it works + * + */ public class ClusterFinder { private final ArrayList _AHDCClusters = new ArrayList<>(); @@ -55,6 +60,7 @@ private void find_associate_cluster(PreCluster precluster, List AHDC } public void findCluster(List AHDC_precluster_list) { + /// \todo parameters should be exposed int window = 30; int minimal_distance = 10; diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Distance/Distance.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Distance/Distance.java index 51b9a1bbe9..0d9d10ce87 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Distance/Distance.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Distance/Distance.java @@ -7,6 +7,11 @@ import java.util.Arrays; import java.util.List; +/** Distance. + * + * \todo What is this class and what does it do? + * + */ public class Distance { private ArrayList _AHDCTracks; diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/HelixFit/HelixFitJava.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/HelixFit/HelixFitJava.java index 55a50a4c78..7f853b3747 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/HelixFit/HelixFitJava.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/HelixFit/HelixFitJava.java @@ -1,8 +1,14 @@ package org.jlab.rec.ahdc.HelixFit; - +/** Helix Fit. + * + * This appears to be some code translation. + */ public class HelixFitJava { + /** \todo What does this method do + * \what does its name even mean? + */ void rwsmav(double r[], double a[], double v[], int n) { // Author: Martin Poppe. r[n] = a[n,n]*v[n] diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/HelixFit/HelixFitObject.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/HelixFit/HelixFitObject.java index 4a9ad42c90..3e8591a13b 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/HelixFit/HelixFitObject.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/HelixFit/HelixFitObject.java @@ -1,6 +1,6 @@ package org.jlab.rec.ahdc.HelixFit; -/** +/** Helix track model. * * @author davidpayette */ diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/PreCluster/PreCluster.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/PreCluster/PreCluster.java index 77140769c8..0045641849 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/PreCluster/PreCluster.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/PreCluster/PreCluster.java @@ -4,6 +4,11 @@ import java.util.ArrayList; +/** PreCluster. + * + * \todo What is a pre cluster? + * + */ public class PreCluster implements Comparable { private int _Id; diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/alert/banks/RecoBankWriter.java b/reconstruction/alert/src/main/java/org/jlab/rec/alert/banks/RecoBankWriter.java new file mode 100644 index 0000000000..4f19cf05b3 --- /dev/null +++ b/reconstruction/alert/src/main/java/org/jlab/rec/alert/banks/RecoBankWriter.java @@ -0,0 +1,81 @@ +package org.jlab.rec.alert.banks; + +import java.util.ArrayList; +import org.jlab.io.base.DataBank; +import org.jlab.io.base.DataEvent; +import org.jlab.rec.alert.projections.TrackProjection; + +/** + * The ALERT {@code RecoBankWriter} writes the banks needed for the ALERT + * reconstruction: track projections. + * + * @author Noemie Pilleux + * @author Whit Armstrong + */ +public class RecoBankWriter { + + /** + * Writes the bank of track projections. + * + * @param event the {@link DataEvent} in which to add the bank + * @param projections the {@link ArrayList} of {@link TrackProjection} + * containing the track projection info to be added to the bank + * + * @return {@link DataBank} the bank with all the projected tracks in the + * event. + * + */ + public static DataBank fillProjectionsBank(DataEvent event, ArrayList projections) { + + DataBank bank = event.createBank("ALERT::Projections", projections.size()); + + if (bank == null) { + System.err.println("COULD NOT CREATE A ALERT::Projections BANK!!!!!!"); + return null; + } + for (int i = 0; i < projections.size(); i++) { + TrackProjection projection = projections.get(i); + bank.setShort("id", i, (short) (i + 1)); + bank.setShort("trackID", i, (short) projection.getTrackID()); + bank.setFloat("x_at_bar", i, (float) projection.getBarIntersect().x()); + bank.setFloat("y_at_bar", i, (float) projection.getBarIntersect().y()); + bank.setFloat("z_at_bar", i, (float) projection.getBarIntersect().z()); + bank.setFloat("L_at_bar", i, (float) projection.getBarPathLength()); + bank.setFloat("L_in_bar", i, (float) projection.getBarInPathLength()); + bank.setFloat("x_at_wedge", i, (float) projection.getWedgeIntersect().x()); + bank.setFloat("y_at_wedge", i, (float) projection.getWedgeIntersect().y()); + bank.setFloat("z_at_wedge", i, (float) projection.getWedgeIntersect().z()); + bank.setFloat("L_at_wedge", i, (float) projection.getWedgePathLength()); + bank.setFloat("L_in_wedge", i, (float) projection.getWedgeInPathLength()); + } + return bank; + } + + /** + * Appends the alert match banks to an event. + * + * @param event the {@link DataEvent} in which to append the banks + * @param projections the {@link ArrayList} of {@link TrackProjection} containing the + * track projections info to be added + * + * @return 0 if it worked, 1 if it failed + * + */ + public int appendMatchBanks(DataEvent event, ArrayList projections) { + + DataBank projbank = this.fillProjectionsBank(event, projections); + if (projbank != null) { + event.appendBank(projbank); + } else { + return 1; + } + return 0; + } + + /** + * @param args the command line arguments + */ + public static void main(String[] args) { + } + +} diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/alert/projections/TrackProjector.java b/reconstruction/alert/src/main/java/org/jlab/rec/alert/projections/TrackProjector.java index 4807be813f..2daab87097 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/alert/projections/TrackProjector.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/alert/projections/TrackProjector.java @@ -91,49 +91,51 @@ public void projectTracks(DataEvent event) {//, CalibrationConstantsLoader ccdb) projections.clear(); String track_bank_name = "AHDC::Track"; - if (event == null) { // check if there is an event - //System.out.print(" no event \n"); - } else if (event.hasBank(track_bank_name) == false) { - // check if there are ahdc tracks in the event - //System.out.print("no tracks \n"); - } else { - DataBank bank = event.getBank(track_bank_name); - int nt = bank.rows(); // number of tracks - TrackProjection projection = new TrackProjection(); - for (int i = 0; i < nt; i++) { - double x = bank.getFloat("x", i); - double y = bank.getFloat("y", i); - double z = bank.getFloat("z", i); - double px = bank.getFloat("px", i); - double py = bank.getFloat("py", i); - double pz = bank.getFloat("pz", i); - int id = nt + 1;//To be replaced by track id if it is added to the out bank - - int q = -1; //need the charge sign from tracking - - Units units = Units.MM; //can be MM or CM. - - double xb = 0; - double yb = 0; - - //momenta must be in GeV for the helix class - Helix helix = new Helix(x, y, z, px / 1000., py / 1000., pz / 1000., q, b, xb, yb, units); - - //Intersection points with the middle of the bar or wedge - projection.setBarIntersect(helix.getHelixPointAtR(Parameters.BAR_MIDDLE_RADIUS)); - projection.setWedgeIntersect(helix.getHelixPointAtR(Parameters.WEDGE_MIDDLE_RADIUS)); - - double rVertex = Math.sqrt(x * x + y * y); - - //Path length to the middle of the bar or wedge - projection.setBarPathLength((float) helix.getPathLength(rVertex, Parameters.BAR_MIDDLE_RADIUS)); - projection.setWedgePathLength((float) helix.getPathLength(rVertex, Parameters.WEDGE_MIDDLE_RADIUS)); - //Path length from the inner radius to the middle radius - projection.setBarInPathLength((float) helix.getPathLength(Parameters.BAR_INNER_RADIUS, Parameters.BAR_MIDDLE_RADIUS)); - projection.setWedgeInPathLength((float) helix.getPathLength(Parameters.WEDGE_INNER_RADIUS, Parameters.WEDGE_MIDDLE_RADIUS)); - projection.setTrackID(id); - projections.add(projection); - } + + // check if there is an event + if (event == null) return; + //System.out.print(" no event \n"); + + // check if there are ahdc tracks in the event + if (event.hasBank(track_bank_name) == false) return; + //System.out.print("no tracks \n"); + + DataBank bank = event.getBank(track_bank_name); + int nt = bank.rows(); // number of tracks + TrackProjection projection = new TrackProjection(); + for (int i = 0; i < nt; i++) { + double x = bank.getFloat("x", i); + double y = bank.getFloat("y", i); + double z = bank.getFloat("z", i); + double px = bank.getFloat("px", i); + double py = bank.getFloat("py", i); + double pz = bank.getFloat("pz", i); + int id = nt + 1;//To be replaced by track id if it is added to the out bank + + int q = -1; //need the charge sign from tracking + + Units units = Units.MM; //can be MM or CM. + + double xb = 0; + double yb = 0; + + //momenta must be in GeV for the helix class + Helix helix = new Helix(x, y, z, px / 1000., py / 1000., pz / 1000., q, b, xb, yb, units); + + //Intersection points with the middle of the bar or wedge + projection.setBarIntersect(helix.getHelixPointAtR(Parameters.BAR_MIDDLE_RADIUS)); + projection.setWedgeIntersect(helix.getHelixPointAtR(Parameters.WEDGE_MIDDLE_RADIUS)); + + double rVertex = Math.sqrt(x * x + y * y); + + //Path length to the middle of the bar or wedge + projection.setBarPathLength((float) helix.getPathLength(rVertex, Parameters.BAR_MIDDLE_RADIUS)); + projection.setWedgePathLength((float) helix.getPathLength(rVertex, Parameters.WEDGE_MIDDLE_RADIUS)); + //Path length from the inner radius to the middle radius + projection.setBarInPathLength((float) helix.getPathLength(Parameters.BAR_INNER_RADIUS, Parameters.BAR_MIDDLE_RADIUS)); + projection.setWedgeInPathLength((float) helix.getPathLength(Parameters.WEDGE_INNER_RADIUS, Parameters.WEDGE_MIDDLE_RADIUS)); + projection.setTrackID(id); + projections.add(projection); } } @@ -148,56 +150,56 @@ public void projectMCTracks(DataEvent event) {//, CalibrationConstantsLoader ccd projections.clear(); String track_bank_name = "MC::Particle"; - if (event == null) { // check if there is an event - //System.out.print(" no event \n"); - } else if (event.hasBank(track_bank_name) == false) { - // check if there are ahdc tracks in the event - //System.out.print("no tracks \n"); - } else { - DataBank bank = event.getBank(track_bank_name); - int nt = bank.rows(); // number of tracks - TrackProjection projection = new TrackProjection(); - - for (int i = 0; i < nt; i++) { - - double x = bank.getFloat("vx", i); - double y = bank.getFloat("vy", i); - double z = bank.getFloat("vz", i); - double px = bank.getFloat("px", i); - double py = bank.getFloat("py", i); - double pz = bank.getFloat("pz", i); - int id = bank.getShort("id", i); - //Put everything in MM - x = x * 10; - y = y * 10; - z = z * 10; - - Units units = Units.MM; - - int q = -1; //need the charge sign from tracking - - double xb = 0; - double yb = 0; - - //momenta must be in GeV for the helix class - Helix helix = new Helix(x, y, z, px, py, pz, q, b, xb, yb, units); - - //Intersection points with the middle of the bar or wedge - projection.setBarIntersect(helix.getHelixPointAtR(Parameters.BAR_MIDDLE_RADIUS)); - projection.setWedgeIntersect(helix.getHelixPointAtR(Parameters.WEDGE_MIDDLE_RADIUS)); - - double rVertex = Math.sqrt(x * x + y * y); - - //Path length to the middle of the bar or wedge - projection.setBarPathLength((float) helix.getPathLength(rVertex, Parameters.BAR_MIDDLE_RADIUS)); - projection.setWedgePathLength((float) helix.getPathLength(rVertex, Parameters.WEDGE_MIDDLE_RADIUS)); - //Path length from the inner radius to the middle radius - projection.setBarInPathLength((float) helix.getPathLength(Parameters.BAR_INNER_RADIUS, Parameters.BAR_MIDDLE_RADIUS)); - projection.setWedgeInPathLength((float) helix.getPathLength(Parameters.WEDGE_INNER_RADIUS, Parameters.WEDGE_MIDDLE_RADIUS)); - - projection.setTrackID(id); - projections.add(projection); - } + if (event == null) return; + //System.out.print(" no event \n"); + + // check if there are ahdc tracks in the event + if (event.hasBank(track_bank_name) == false) return; + //System.out.print("no tracks \n"); + + DataBank bank = event.getBank(track_bank_name); + int nt = bank.rows(); // number of tracks + TrackProjection projection = new TrackProjection(); + + for (int i = 0; i < nt; i++) { + + double x = bank.getFloat("vx", i); + double y = bank.getFloat("vy", i); + double z = bank.getFloat("vz", i); + double px = bank.getFloat("px", i); + double py = bank.getFloat("py", i); + double pz = bank.getFloat("pz", i); + int id = bank.getShort("id", i); + //Put everything in MM + x = x * 10; + y = y * 10; + z = z * 10; + + Units units = Units.MM; + + int q = -1; //need the charge sign from tracking + + double xb = 0; + double yb = 0; + + //momenta must be in GeV for the helix class + Helix helix = new Helix(x, y, z, px, py, pz, q, b, xb, yb, units); + + //Intersection points with the middle of the bar or wedge + projection.setBarIntersect(helix.getHelixPointAtR(Parameters.BAR_MIDDLE_RADIUS)); + projection.setWedgeIntersect(helix.getHelixPointAtR(Parameters.WEDGE_MIDDLE_RADIUS)); + + double rVertex = Math.sqrt(x * x + y * y); + + //Path length to the middle of the bar or wedge + projection.setBarPathLength((float) helix.getPathLength(rVertex, Parameters.BAR_MIDDLE_RADIUS)); + projection.setWedgePathLength((float) helix.getPathLength(rVertex, Parameters.WEDGE_MIDDLE_RADIUS)); + //Path length from the inner radius to the middle radius + projection.setBarInPathLength((float) helix.getPathLength(Parameters.BAR_INNER_RADIUS, Parameters.BAR_MIDDLE_RADIUS)); + projection.setWedgeInPathLength((float) helix.getPathLength(Parameters.WEDGE_INNER_RADIUS, Parameters.WEDGE_MIDDLE_RADIUS)); + + projection.setTrackID(id); + projections.add(projection); } } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java deleted file mode 100644 index 550450be64..0000000000 --- a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java +++ /dev/null @@ -1,286 +0,0 @@ -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; -import org.jlab.io.hipo.HipoDataSync; -import org.jlab.rec.ahdc.AI.*; -import org.jlab.rec.ahdc.Banks.RecoBankWriter; -import org.jlab.rec.ahdc.Cluster.Cluster; -import org.jlab.rec.ahdc.Cluster.ClusterFinder; -import org.jlab.rec.ahdc.Distance.Distance; -import org.jlab.rec.ahdc.HelixFit.HelixFitJava; -import org.jlab.rec.ahdc.Hit.Hit; -import org.jlab.rec.ahdc.Hit.HitReader; -import org.jlab.rec.ahdc.Hit.TrueHit; -import org.jlab.rec.ahdc.HoughTransform.HoughTransform; -import org.jlab.rec.ahdc.KalmanFilter.KalmanFilter; -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; -import org.jlab.rec.ahdc.Mode; -import org.jlab.rec.alert.constants.CalibrationConstantsLoader; - -import java.io.File; -import java.util.*; - -public class AHDCEngine extends ReconstructionEngine { - - private boolean simulation; - private String findingMethod; - private HashMap materialMap; - private Model model; - - private Mode mode = Mode.CV_Track_Finding; - - public AHDCEngine() { - super("ALERT", "ouillon", "1.0.1"); - } - - @Override - public boolean init() { - simulation = false; - findingMethod = "distance"; - - if (materialMap == null) { - materialMap = MaterialMap.generateMaterials(); - } - - if(this.getEngineConfigString("Mode")!=null) { - if (Objects.equals(this.getEngineConfigString("Mode"), Mode.AI_Track_Finding.name())) - mode = Mode.AI_Track_Finding; - - if (Objects.equals(this.getEngineConfigString("Mode"), Mode.CV_Track_Finding.name())) - mode = Mode.CV_Track_Finding; - - } - - if (mode == Mode.AI_Track_Finding) { - model = new Model(); - } - - // Requires calibration constants - String[] alertTables = new String[] { - "/calibration/alert/ahdc/time_offsets", - "/calibration/alert/ahdc/time_to_distance", - "/calibration/alert/atof/effective_velocity", - "/calibration/alert/atof/time_walk", - "/calibration/alert/atof/attenuation", - "/calibration/alert/atof/time_offsets" - }; - requireConstants(Arrays.asList(alertTables)); - - return true; - } - - int Run = -1; - - @Override - public boolean processDataEvent(DataEvent event) { - - int runNo = 10; - int eventNo = 777; - double magfield = 50.0; - double magfieldfactor = 1; - - if (event.hasBank("RUN::config")) { - DataBank bank = event.getBank("RUN::config"); - runNo = bank.getInt("run", 0); - eventNo = bank.getInt("event", 0); - magfieldfactor = bank.getFloat("solenoid", 0); - if (runNo <= 0) { - System.err.println("RTPCEngine: got run <= 0 in RUN::config, skipping event."); - return false; - } - int newRun = Run; - newRun = runNo; - // Load the constants - //------------------- - if(Run!=newRun) { - CalibrationConstantsLoader.Load(newRun,"default",this.getConstantsManager()); - Run = newRun; - } - } - - magfield = 50 * magfieldfactor; - - if (event.hasBank("AHDC::adc")) { - // I) Read raw hit - HitReader hitRead = new HitReader(event, simulation); - - ArrayList AHDC_Hits = hitRead.get_AHDCHits(); - if(simulation){ - ArrayList TrueAHDC_Hits = hitRead.get_TrueAHDCHits(); - } - //System.out.println("AHDC_Hits size " + AHDC_Hits.size()); - - // II) Create PreCluster - ArrayList AHDC_PreClusters = new ArrayList<>(); - PreClusterFinder preclusterfinder = new PreClusterFinder(); - preclusterfinder.findPreCluster(AHDC_Hits); - AHDC_PreClusters = preclusterfinder.get_AHDCPreClusters(); - //System.out.println("AHDC_PreClusters size " + AHDC_PreClusters.size()); - - // III) Create Cluster - ClusterFinder clusterfinder = new ClusterFinder(); - clusterfinder.findCluster(AHDC_PreClusters); - ArrayList AHDC_Clusters = clusterfinder.get_AHDCClusters(); - //System.out.println("AHDC_Clusters size " + AHDC_Clusters.size()); - - // IV) Track Finder - ArrayList AHDC_Tracks = new ArrayList<>(); - ArrayList predictions = new ArrayList<>(); - - // If there is too much hits, we rely on to the conventional track finding - if (AHDC_Hits.size() > 300) mode = Mode.CV_Track_Finding; - - if (mode == Mode.CV_Track_Finding) { - if (findingMethod.equals("distance")) { - // IV) a) Distance method - //System.out.println("using distance"); - Distance distance = new Distance(); - distance.find_track(AHDC_Clusters); - AHDC_Tracks = distance.get_AHDCTracks(); - } else if (findingMethod.equals("hough")) { - // IV) b) Hough Transform method - //System.out.println("using hough"); - HoughTransform houghtransform = new HoughTransform(); - houghtransform.find_tracks(AHDC_Clusters); - AHDC_Tracks = houghtransform.get_AHDCTracks(); - } - } - if (mode == Mode.AI_Track_Finding) { - // AI --------------------------------------------------------------------------------- - AHDC_Hits.sort(new Comparator() { - @Override - public int compare(Hit a1, Hit a2) { - return Double.compare(a1.getRadius(), a2.getRadius()); - } - }); - PreClustering preClustering = new PreClustering(); - ArrayList preClustersAI = preClustering.find_preclusters_for_AI(AHDC_Hits); - ArrayList preclusterSuperlayers = preClustering.merge_preclusters(preClustersAI); - TrackConstruction trackConstruction = new TrackConstruction(); - ArrayList> tracks = new ArrayList<>(); - boolean sucess = trackConstruction.get_all_possible_track(preclusterSuperlayers, tracks); - - if (!sucess) { - System.err.println("Too much tracks candidates, exit"); - return false; - } - - try { - AIPrediction aiPrediction = new AIPrediction(); - predictions = aiPrediction.prediction(tracks, model.getModel()); - } catch (Exception e) { - throw new RuntimeException(e); - } - - for (TrackPrediction t : predictions) { - if (t.getPrediction() > 0.2) - AHDC_Tracks.add(new Track(t.getClusters())); - } - } - // ------------------------------------------------------------------------------------ - - - //Temporary track method ONLY for MC with no background; - //AHDC_Tracks.add(new Track(AHDC_Hits)); - - // V) Global fit - for (Track track : AHDC_Tracks) { - int nbOfPoints = track.get_Clusters().size(); - - double[][] szPos = new double[nbOfPoints][3]; - - int j = 0; - for (Cluster cluster : track.get_Clusters()) { - szPos[j][0] = cluster.get_X(); - szPos[j][1] = cluster.get_Y(); - szPos[j][2] = cluster.get_Z(); - j++; - } - - HelixFitJava h = new HelixFitJava(); - track.setPositionAndMomentum(h.HelixFit(nbOfPoints, szPos, 1)); - // double p = 150.0;//MeV/c - // double phi = Math.atan2(szPos[0][1], szPos[0][0]); - // double x_0[] = {0.0, 0.0, 0.0, p*Math.sin(phi), p*Math.cos(phi), 0.0}; - // track.setPositionAndMomentumVec(x_0); - } - - // VI) Kalman Filter - // System.out.println("AHDC_Tracks = " + AHDC_Tracks); - KalmanFilter kalmanFitter = new KalmanFilter(AHDC_Tracks, event, simulation); - // VII) Write bank - RecoBankWriter writer = new RecoBankWriter(); - - DataBank recoHitsBank = writer.fillAHDCHitsBank(event, AHDC_Hits); - DataBank recoPreClusterBank = writer.fillPreClustersBank(event, AHDC_PreClusters); - DataBank recoClusterBank = writer.fillClustersBank(event, AHDC_Clusters); - DataBank recoTracksBank = writer.fillAHDCTrackBank(event, AHDC_Tracks); - DataBank recoKFTracksBank = writer.fillAHDCKFTrackBank(event, AHDC_Tracks); - DataBank AIPredictionBanks = writer.fillAIPrediction(event, predictions); - - event.appendBank(recoHitsBank); - event.appendBank(recoPreClusterBank); - event.appendBank(recoClusterBank); - event.appendBank(recoTracksBank); - event.appendBank(recoKFTracksBank); - event.appendBank(AIPredictionBanks); - - if (simulation) { - DataBank recoMCBank = writer.fillAHDCMCTrackBank(event); - event.appendBank(recoMCBank); - } - - - } - return true; - } - - public static void main(String[] args) { - - double starttime = System.nanoTime(); - - int nEvent = 0; - int maxEvent = 10; - int myEvent = 3; - String inputFile = "merged_10.hipo"; - String outputFile = "output.hipo"; - - if (new File(outputFile).delete()) System.out.println("output.hipo is delete."); - - System.err.println(" \n[PROCESSING FILE] : " + inputFile); - - AHDCEngine en = new AHDCEngine(); - - HipoDataSource reader = new HipoDataSource(); - HipoDataSync writer = new HipoDataSync(); - - en.init(); - - reader.open(inputFile); - writer.open(outputFile); - - while (reader.hasEvent() && nEvent < maxEvent) { - nEvent++; - // if (nEvent % 100 == 0) System.out.println("nEvent = " + nEvent); - DataEvent event = reader.getNextEvent(); - - // if (nEvent != myEvent) continue; - // System.out.println("*********** NEXT EVENT ************"); - // event.show(); - - en.processDataEvent(event); - writer.writeEvent(event); - - } - writer.close(); - - System.out.println("finished " + (System.nanoTime() - starttime) * Math.pow(10, -9)); - } -} 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 new file mode 100644 index 0000000000..e3f3bc3349 --- /dev/null +++ b/reconstruction/alert/src/main/java/org/jlab/service/ahdc/AHDCEngine.java @@ -0,0 +1,309 @@ +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; +import org.jlab.io.hipo.HipoDataSync; +import org.jlab.rec.ahdc.AI.*; +import org.jlab.rec.ahdc.Banks.RecoBankWriter; +import org.jlab.rec.ahdc.Cluster.Cluster; +import org.jlab.rec.ahdc.Cluster.ClusterFinder; +import org.jlab.rec.ahdc.Distance.Distance; +import org.jlab.rec.ahdc.HelixFit.HelixFitJava; +import org.jlab.rec.ahdc.Hit.Hit; +import org.jlab.rec.ahdc.Hit.HitReader; +import org.jlab.rec.ahdc.Hit.TrueHit; +import org.jlab.rec.ahdc.HoughTransform.HoughTransform; +import org.jlab.rec.ahdc.KalmanFilter.KalmanFilter; +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; +import org.jlab.rec.ahdc.Mode; +import org.jlab.rec.alert.constants.CalibrationConstantsLoader; + +import java.io.File; +import java.util.*; + +/** AHDCEngine reconstruction service. + * + * AHDC Reconstruction using only AHDC information. + * + * Reconstruction utilizing other detectors (i.e. ATOF) are + * implemented in ALERTEngine. + * + */ +public class AHDCEngine extends ReconstructionEngine { + + private boolean simulation; + + /** + * String name for track seedsfinding method. + * Options are: + * - "distance" + * - "hough" + * + * \todo remove bool use_AI_for_trackfinding and use option string above. + */ + private String findingMethod; + + /// Material Map used by Kalman filter + private HashMap materialMap; + + /// \todo better name... Model of what? + private Model model; + + /// \todo better name... mode for what? + private Mode mode = Mode.CV_Track_Finding; + + public AHDCEngine() { + super("ALERT", "ouillon", "1.0.1"); + } + + @Override + public boolean init() { + simulation = false; + findingMethod = "distance"; + + if (materialMap == null) { + materialMap = MaterialMap.generateMaterials(); + } + + if(this.getEngineConfigString("Mode")!=null) { + if (Objects.equals(this.getEngineConfigString("Mode"), Mode.AI_Track_Finding.name())) + mode = Mode.AI_Track_Finding; + + if (Objects.equals(this.getEngineConfigString("Mode"), Mode.CV_Track_Finding.name())) + mode = Mode.CV_Track_Finding; + } + + if (mode == Mode.AI_Track_Finding) { + model = new Model(); + } + + // Requires calibration constants + String[] alertTables = new String[] { + "/calibration/alert/ahdc/time_offsets", + "/calibration/alert/ahdc/time_to_distance", + "/calibration/alert/atof/effective_velocity", + "/calibration/alert/atof/time_walk", + "/calibration/alert/atof/attenuation", + "/calibration/alert/atof/time_offsets" + }; + requireConstants(Arrays.asList(alertTables)); + + return true; + } + + int Run = -1; + + @Override + public boolean processDataEvent(DataEvent event) { + + int runNo = 10; // needed here? + int eventNo = 777; // same + + double magfield = 50.0; // what is this? + double magfieldfactor = 1; // why is this here? + + if (event.hasBank("RUN::config")) { + DataBank bank = event.getBank("RUN::config"); + runNo = bank.getInt("run", 0); + eventNo = bank.getInt("event", 0); + magfieldfactor = bank.getFloat("solenoid", 0); + if (runNo <= 0) { + System.err.println("AHDCEngine: got run <= 0 in RUN::config, skipping event."); + return false; + } + int newRun = Run; + newRun = runNo; + // Load the constants + //------------------- + if(Run!=newRun) { + CalibrationConstantsLoader.Load(newRun,"default",this.getConstantsManager()); + Run = newRun; + } + } + + /// What is this? + magfield = 50 * magfieldfactor; + + if (event.hasBank("AHDC::adc")) { + // I) Read raw hit + HitReader hitRead = new HitReader(event, simulation); + + ArrayList AHDC_Hits = hitRead.get_AHDCHits(); + if(simulation){ + ArrayList TrueAHDC_Hits = hitRead.get_TrueAHDCHits(); + } + //System.out.println("AHDC_Hits size " + AHDC_Hits.size()); + + // II) Create PreCluster + ArrayList AHDC_PreClusters = new ArrayList<>(); + PreClusterFinder preclusterfinder = new PreClusterFinder(); + preclusterfinder.findPreCluster(AHDC_Hits); + AHDC_PreClusters = preclusterfinder.get_AHDCPreClusters(); + //System.out.println("AHDC_PreClusters size " + AHDC_PreClusters.size()); + + // III) Create Cluster + ClusterFinder clusterfinder = new ClusterFinder(); + clusterfinder.findCluster(AHDC_PreClusters); + ArrayList AHDC_Clusters = clusterfinder.get_AHDCClusters(); + //System.out.println("AHDC_Clusters size " + AHDC_Clusters.size()); + + // IV) Track Finder + ArrayList AHDC_Tracks = new ArrayList<>(); + ArrayList predictions = new ArrayList<>(); + + // If there is too much hits, we rely on to the conventional track finding + if (AHDC_Hits.size() > 300) mode = Mode.CV_Track_Finding; + + if (mode == Mode.CV_Track_Finding) { + if (findingMethod.equals("distance")) { + // IV) a) Distance method + //System.out.println("using distance"); + Distance distance = new Distance(); + distance.find_track(AHDC_Clusters); + AHDC_Tracks = distance.get_AHDCTracks(); + } else if (findingMethod.equals("hough")) { + // IV) b) Hough Transform method + //System.out.println("using hough"); + HoughTransform houghtransform = new HoughTransform(); + houghtransform.find_tracks(AHDC_Clusters); + AHDC_Tracks = houghtransform.get_AHDCTracks(); + } + } + if (mode == Mode.AI_Track_Finding) { + // AI --------------------------------------------------------------------------------- + AHDC_Hits.sort(new Comparator() { + @Override + public int compare(Hit a1, Hit a2) { + return Double.compare(a1.getRadius(), a2.getRadius()); + } + }); + PreClustering preClustering = new PreClustering(); + ArrayList preClustersAI = preClustering.find_preclusters_for_AI(AHDC_Hits); + ArrayList preclusterSuperlayers = preClustering.merge_preclusters(preClustersAI); + TrackConstruction trackConstruction = new TrackConstruction(); + ArrayList> tracks = new ArrayList<>(); + boolean sucess = trackConstruction.get_all_possible_track(preclusterSuperlayers, tracks); + + if (!sucess) { + System.err.println("Too much tracks candidates, exit"); + return false; + } + + try { + AIPrediction aiPrediction = new AIPrediction(); + predictions = aiPrediction.prediction(tracks, model.getModel()); + } catch (Exception e) { + throw new RuntimeException(e); + } + + for (TrackPrediction t : predictions) { + if (t.getPrediction() > 0.2) + AHDC_Tracks.add(new Track(t.getClusters())); + } + } + // ------------------------------------------------------------------------------------ + + + //Temporary track method ONLY for MC with no background; + //AHDC_Tracks.add(new Track(AHDC_Hits)); + + // V) Global fit + for (Track track : AHDC_Tracks) { + int nbOfPoints = track.get_Clusters().size(); + + double[][] szPos = new double[nbOfPoints][3]; + + int j = 0; + for (Cluster cluster : track.get_Clusters()) { + szPos[j][0] = cluster.get_X(); + szPos[j][1] = cluster.get_Y(); + szPos[j][2] = cluster.get_Z(); + j++; + } + + HelixFitJava h = new HelixFitJava(); + track.setPositionAndMomentum(h.HelixFit(nbOfPoints, szPos, 1)); + // double p = 150.0;//MeV/c + // double phi = Math.atan2(szPos[0][1], szPos[0][0]); + // double x_0[] = {0.0, 0.0, 0.0, p*Math.sin(phi), + // p*Math.cos(phi), 0.0}; track.setPositionAndMomentumVec(x_0); + } + + // VI) Kalman Filter + // System.out.println("AHDC_Tracks = " + AHDC_Tracks); + KalmanFilter kalmanFitter = new KalmanFilter(AHDC_Tracks, event, simulation); + // VII) Write bank + RecoBankWriter writer = new RecoBankWriter(); + + DataBank recoHitsBank = writer.fillAHDCHitsBank(event, AHDC_Hits); + DataBank recoPreClusterBank = writer.fillPreClustersBank(event, AHDC_PreClusters); + DataBank recoClusterBank = writer.fillClustersBank(event, AHDC_Clusters); + DataBank recoTracksBank = writer.fillAHDCTrackBank(event, AHDC_Tracks); + DataBank recoKFTracksBank = writer.fillAHDCKFTrackBank(event, AHDC_Tracks); + DataBank AIPredictionBanks = writer.fillAIPrediction(event, predictions); + + event.appendBank(recoHitsBank); + event.appendBank(recoPreClusterBank); + event.appendBank(recoClusterBank); + event.appendBank(recoTracksBank); + event.appendBank(recoKFTracksBank); + event.appendBank(AIPredictionBanks); + + if (simulation) { + DataBank recoMCBank = writer.fillAHDCMCTrackBank(event); + event.appendBank(recoMCBank); + } + + + } + return true; + } + + public static void main(String[] args) { + + double starttime = System.nanoTime(); + + int nEvent = 0; + int maxEvent = 10; + int myEvent = 3; + String inputFile = "merged_10.hipo"; + String outputFile = "output.hipo"; + + if (new File(outputFile).delete()) System.out.println("output.hipo is delete."); + + System.err.println(" \n[PROCESSING FILE] : " + inputFile); + + AHDCEngine en = new AHDCEngine(); + + HipoDataSource reader = new HipoDataSource(); + HipoDataSync writer = new HipoDataSync(); + + en.init(); + + reader.open(inputFile); + writer.open(outputFile); + + while (reader.hasEvent() && nEvent < maxEvent) { + nEvent++; + // if (nEvent % 100 == 0) System.out.println("nEvent = " + nEvent); + DataEvent event = reader.getNextEvent(); + + // if (nEvent != myEvent) continue; + // System.out.println("*********** NEXT EVENT ************"); + // event.show(); + + en.processDataEvent(event); + writer.writeEvent(event); + + } + writer.close(); + + System.out.println("finished " + (System.nanoTime() - starttime) * Math.pow(10, -9)); + } +} 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 new file mode 100644 index 0000000000..b6e6851ec8 --- /dev/null +++ b/reconstruction/alert/src/main/java/org/jlab/service/alert/ALERTEngine.java @@ -0,0 +1,177 @@ +package org.jlab.service.alert; + +import java.util.ArrayList; +import java.util.concurrent.atomic.AtomicInteger; +import java.io.File; +import java.util.*; + +import org.jlab.io.base.DataBank; +import org.jlab.io.base.DataEvent; +import org.jlab.io.hipo.HipoDataSource; +import org.jlab.io.hipo.HipoDataSync; + +import org.jlab.clas.reco.ReconstructionEngine; +import org.jlab.clas.tracking.kalmanfilter.Material; +import org.jlab.clas.swimtools.Swim; + +import org.jlab.rec.alert.banks.RecoBankWriter; +import org.jlab.rec.alert.projections.TrackProjector; + + +/** + *

ALERTEngine reconstruction service.

+ * + * @author Whit Armstrong + * @author Noemie Pilleux + * @since 2025-04-03 + */ +public class ALERTEngine extends ReconstructionEngine { + + /** + * ALERT Engine output bank writer. + * + * @see RecoBankWriter + * + *

Output banks

+ *
    + *
  • Track Projection @see TrackProjector
  • + *
+ * + */ + private RecoBankWriter rbc; + + /** + * Current run number being processed. + * TODO: why atomic here and nowhere else? + */ + private final AtomicInteger run = new AtomicInteger(0); + + private double b; //Magnetic field + + public void setB(double B) { + this.b = B; + } + public double getB() { + return b; + } + + /** + * ALERTEngine service c'tor. + */ + public ALERTEngine() { + super("ALERT", "whit,ouillon,pilleux", "0.1"); + } + + /** + * ALERTEngine initialization. + * Creates the RecoBankWriter and checks for various yaml flags. + * TODO: document flags + */ + @Override + public boolean init() { + + rbc = new RecoBankWriter(); + + + if(this.getEngineConfigString("Mode")!=null) { + //if (Objects.equals(this.getEngineConfigString("Mode"), Mode.AI_Track_Finding.name())) + // mode = Mode.AI_Track_Finding; + } + return true; + } + + /** + * Process Event. + * Main method called to process event data. + * + *
    + *
  • Check for AHDC and ATOF banks
  • + *
  • Project track to ATOF
  • + *
+ */ + @Override + public boolean processDataEvent(DataEvent event) { + + if (!event.hasBank("AHDC::adc")) + return false; + if (!event.hasBank("ATOF::tdc")) + return false; + + if (!event.hasBank("RUN::config")) { + return true; + } + + DataBank bank = event.getBank("RUN::config"); + + int newRun = bank.getInt("run", 0); + if (newRun == 0) { + return true; + } + + if (run.get() == 0 || (run.get() != 0 && run.get() != newRun)) { + run.set(newRun); + } + + //Do we need to read the event vx,vy,vz? + //If not, this part can be moved in the initialization of the engine. + double eventVx=0,eventVy=0,eventVz=0; //They should be in CM + //Track Projector Initialisation with b field + Swim swim = new Swim(); + float magField[] = new float[3]; + swim.BfieldLab(eventVx, eventVy, eventVz, magField); + this.b = Math.sqrt(Math.pow(magField[0],2) + Math.pow(magField[1],2) + Math.pow(magField[2],2)); + + TrackProjector projector = new TrackProjector(); + projector.setB(this.b); + projector.projectTracks(event); + rbc.appendMatchBanks(event, projector.getProjections()); + + return true; + } + + /** + * ALERTEngine main. + * TODO: needs good test. + */ + public static void main(String[] args) { + + double starttime = System.nanoTime(); + + int nEvent = 0; + int maxEvent = 1000; + int myEvent = 3; + String inputFile = "alert_out_update.hipo"; + String outputFile = "output.hipo"; + + if (new File(outputFile).delete()) System.out.println("output.hipo is delete."); + + System.err.println(" \n[PROCESSING FILE] : " + inputFile); + + ALERTEngine en = new ALERTEngine(); + + HipoDataSource reader = new HipoDataSource(); + HipoDataSync writer = new HipoDataSync(); + + en.init(); + + reader.open(inputFile); + writer.open(outputFile); + + while (reader.hasEvent() && nEvent < maxEvent) { + nEvent++; + // if (nEvent % 100 == 0) System.out.println("nEvent = " + nEvent); + DataEvent event = reader.getNextEvent(); + + // if (nEvent != myEvent) continue; + // System.out.println("*********** NEXT EVENT ************"); + // event.show(); + + en.processDataEvent(event); + writer.writeEvent(event); + + } + writer.close(); + + System.out.println("finished " + (System.nanoTime() - starttime) * Math.pow(10, -9)); + } +} diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/service/ATOFEngine.java b/reconstruction/alert/src/main/java/org/jlab/service/atof/ATOFEngine.java similarity index 77% rename from reconstruction/alert/src/main/java/org/jlab/rec/service/ATOFEngine.java rename to reconstruction/alert/src/main/java/org/jlab/service/atof/ATOFEngine.java index 19f27e5aa8..c409355a04 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/service/ATOFEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/service/atof/ATOFEngine.java @@ -18,7 +18,7 @@ import org.jlab.rec.atof.hit.ATOFHit; import org.jlab.rec.atof.hit.BarHit; import org.jlab.rec.atof.hit.HitFinder; -import org.jlab.rec.alert.projections.TrackProjector; +//import org.jlab.rec.alert.projections.TrackProjector; /** * Service to return reconstructed ATOF hits and clusters @@ -69,18 +69,22 @@ public boolean processDataEvent(DataEvent event) { run.set(newRun); } - //Do we need to read the event vx,vy,vz? - //If not, this part can be moved in the initialization of the engine. - double eventVx=0,eventVy=0,eventVz=0; //They should be in CM - //Track Projector Initialisation with b field - Swim swim = new Swim(); - float magField[] = new float[3]; - swim.BfieldLab(eventVx, eventVy, eventVz, magField); - this.b = Math.sqrt(Math.pow(magField[0],2) + Math.pow(magField[1],2) + Math.pow(magField[2],2)); - TrackProjector projector = new TrackProjector(); - projector.setB(this.b); - projector.projectTracks(event); - rbc.appendMatchBanks(event, projector.getProjections()); + ////Do we need to read the event vx,vy,vz? + ////If not, this part can be moved in the initialization of the engine. + //double eventVx=0,eventVy=0,eventVz=0; //They should be in CM + ////Track Projector Initialisation with b field + //Swim swim = new Swim(); + //float magField[] = new float[3]; + //swim.BfieldLab(eventVx, eventVy, eventVz, magField); + //this.b = Math.sqrt(Math.pow(magField[0],2) + Math.pow(magField[1],2) + Math.pow(magField[2],2)); + + ///// \todo move this to ALERTEngine + //TrackProjector projector = new TrackProjector(); + //projector.setB(this.b); + //projector.projectTracks(event); + //rbc.appendMatchBanks(event, projector.getProjections()); + + // Why do we have to "find" hits? //Hit finder init HitFinder hitfinder = new HitFinder(); hitfinder.findHits(event, ATOF); From 080c330a0d74961ab93f4222a8c4d9d59638be13 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 07:50:24 +0000 Subject: [PATCH 036/100] build(deps): bump com.github.spotbugs:spotbugs-maven-plugin Bumps [com.github.spotbugs:spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) from 4.8.6.6 to 4.9.3.0. - [Release notes](https://github.com/spotbugs/spotbugs-maven-plugin/releases) - [Commits](https://github.com/spotbugs/spotbugs-maven-plugin/compare/spotbugs-maven-plugin-4.8.6.6...spotbugs-maven-plugin-4.9.3.0) --- updated-dependencies: - dependency-name: com.github.spotbugs:spotbugs-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- common-tools/cnuphys/parent/pom.xml | 2 +- parent/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common-tools/cnuphys/parent/pom.xml b/common-tools/cnuphys/parent/pom.xml index 7fe07ee342..0b2ed202a4 100644 --- a/common-tools/cnuphys/parent/pom.xml +++ b/common-tools/cnuphys/parent/pom.xml @@ -38,7 +38,7 @@ com.github.spotbugs spotbugs-maven-plugin - 4.8.6.6 + 4.9.3.0 spotbugs-exclude.xml diff --git a/parent/pom.xml b/parent/pom.xml index 866c403634..990988cd1b 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -115,7 +115,7 @@ com.github.spotbugs spotbugs-maven-plugin - 4.8.6.6 + 4.9.3.0 spotbugs-exclude.xml From 3af243f02a03e3613f02605fcc1372a94f79b7dc Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Mon, 7 Apr 2025 14:42:19 -0400 Subject: [PATCH 037/100] Apply cuts on AHDC hits to be processed --- .../java/org/jlab/rec/ahdc/Hit/HitReader.java | 45 ++++++++++--------- 1 file changed, 24 insertions(+), 21 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 1db2ded4a1..60f900acc1 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 @@ -36,27 +36,30 @@ public void fetch_AHDCHits(DataEvent event) { int wire = bankDGTZ.getShort("component", i); double adc = bankDGTZ.getInt("ADC", i); double leadingEdgeTime = bankDGTZ.getFloat("leadingEdgeTime", i); - - // use calibration constants - int key_value = sector*10000 + number*100 + wire; - double[] timeOffsets = CalibrationConstantsLoader.AHDC_TIME_OFFSETS.get( key_value ); - double[] time2distance = CalibrationConstantsLoader.AHDC_TIME_TO_DISTANCE.get( 10101 ); // the time to distance table has only one row ! (10101 is its only key) - double t0 = timeOffsets[0]; - double p0 = time2distance[0]; - double p1 = time2distance[1]; - double p2 = time2distance[2]; - double p3 = time2distance[3]; - double p4 = time2distance[4]; - double p5 = time2distance[5]; - - double time = leadingEdgeTime - t0; - // we may prevent time to be too small or too big - // CONDITION TO BE ADDED - // we should also use a flag to prevent to read the ccdb if reconstructed event if from simulation - // TO BE DONE - //double doca = bankDGTZ.getShort("ped", i) / 1000.0; - double doca = p0 + p1*Math.pow(time,1.0) + p2*Math.pow(time,2.0) + p3*Math.pow(time,3.0) + p4*Math.pow(time,4.0) + p5*Math.pow(time, 5.0); - hits.add(new Hit(id, superlayer, layer, wire, doca, adc, time)); + double timeOverThreshold = bankDGTZ.getFloat("timeOverThreshold", i); + // Temporary cuts + if ((adc >= 50) && (leadingEdgeTime >= 8*50.0) && (leadingEdgeTime <= 16*50.0) && (timeOverThreshold >= 6*50.0) && (timeOverThreshold <= 14*50.0)) { + // use calibration constants + int key_value = sector*10000 + number*100 + wire; + double[] timeOffsets = CalibrationConstantsLoader.AHDC_TIME_OFFSETS.get( key_value ); + double[] time2distance = CalibrationConstantsLoader.AHDC_TIME_TO_DISTANCE.get( 10101 ); // the time to distance table has only one row ! (10101 is its only key) + double t0 = timeOffsets[0]; + double p0 = time2distance[0]; + double p1 = time2distance[1]; + double p2 = time2distance[2]; + double p3 = time2distance[3]; + double p4 = time2distance[4]; + double p5 = time2distance[5]; + + double time = leadingEdgeTime - t0; + // we may prevent time to be too small or too big + // CONDITION TO BE ADDED + // we should also use a flag to prevent to read the ccdb if reconstructed event if from simulation + // TO BE DONE + //double doca = bankDGTZ.getShort("ped", i) / 1000.0; + double doca = p0 + p1*Math.pow(time,1.0) + p2*Math.pow(time,2.0) + p3*Math.pow(time,3.0) + p4*Math.pow(time,4.0) + p5*Math.pow(time, 5.0); + hits.add(new Hit(id, superlayer, layer, wire, doca, adc, time)); + } } } this.set_AHDCHits(hits); From 73f888466e231e1cb48520368cab61c847e96c8d Mon Sep 17 00:00:00 2001 From: Christopher Dilks Date: Mon, 7 Apr 2025 23:34:23 -0400 Subject: [PATCH 038/100] ci: use OpenJDK 24 on runner Is there any reason we should hold this back? The generated `javadoc` website is nicer when 23+, compared to 17, since it generates a navigation sidebar. Alternatively, limit this change to the `generate_documentation` job. --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 5ec80c4110..e2a112333c 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -21,7 +21,7 @@ defaults: shell: bash env: - java_version: 17 + java_version: 24 java_distribution: zulu groovy_version: 4.x From 912a3f6bc87064a6e268a7f6c558894842ac815f Mon Sep 17 00:00:00 2001 From: Christopher Dilks Date: Tue, 8 Apr 2025 01:26:00 -0400 Subject: [PATCH 039/100] fix: restrict to javadoc job --- .github/workflows/maven.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index e2a112333c..7670f00160 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -21,8 +21,9 @@ defaults: shell: bash env: - java_version: 24 + java_version: 17 java_distribution: zulu + javadoc_version: 24 # newer for better javadoc groovy_version: 4.x jobs: @@ -170,7 +171,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: ${{ env.java_version }} + java-version: ${{ env.javadoc_version }} distribution: ${{ env.java_distribution }} - name: build run: ./build-coatjava.sh From 8d9424c0ba062eca9a46adfcc68ee1d49ec1bb9b Mon Sep 17 00:00:00 2001 From: Christopher Dilks Date: Tue, 8 Apr 2025 01:29:34 -0400 Subject: [PATCH 040/100] doc: clarify comment --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 7670f00160..cb4d228333 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -23,7 +23,7 @@ defaults: env: java_version: 17 java_distribution: zulu - javadoc_version: 24 # newer for better javadoc + javadoc_version: 24 # newer than `java_version` for better javadoc groovy_version: 4.x jobs: From 14a3b5c98c6c40071f504ae857edff48985552b6 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Tue, 8 Apr 2025 13:37:20 -0400 Subject: [PATCH 041/100] Write time in AHDC::Hits bank --- .../src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java | 1 + .../java/org/jlab/rec/constants/CalibrationConstantsLoader.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java index 16e880dcb2..729374a06b 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java @@ -26,6 +26,7 @@ public DataBank fillAHDCHitsBank(DataEvent event, ArrayList hitList) { bank.setDouble("Doca", i, hitList.get(i).getDoca()); bank.setDouble("residual", i, hitList.get(i).getResidual()); bank.setDouble("residual_prefit", i, hitList.get(i).getResidualPrefit()); + bank.setDouble("time", i, hitList.get(i).getTime()); } return bank; diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java b/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java index 03148087c2..69b777eaa3 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java @@ -63,6 +63,7 @@ public static synchronized void Load(int runno, String var, ConstantsManager man int key = sector*10000 + layer*100 + component; double params[] = {t0, dt0, extra1, extra2, chi2ndf}; AHDC_TIME_OFFSETS.put(Integer.valueOf(key), params); + //System.out.println("t0 : " + t0 + " dt0 : " + dt0 + " extra1 : " + extra1 + " extra2 : " + extra2 + " chi2ndf : " + chi2ndf); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -91,6 +92,7 @@ public static synchronized void Load(int runno, String var, ConstantsManager man int key = sector*10000 + layer*100 + component; double params[] = {p0, p1, p2, p3, p4, p5, dp0, dp1, dp2, dp3, dp4, dp5, chi2ndf}; AHDC_TIME_TO_DISTANCE.put(Integer.valueOf(key), params); + //System.out.println("p0 : " + p0 + " p1 : " + p1 + " p2 : " + p2 + " p3 : " + p3 + " p4 : " + p4 + " p5 : " + p5); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// From a31270a2fd7cdb6bbbdf16995924b05913087fb9 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 7 Apr 2025 14:21:35 -0400 Subject: [PATCH 042/100] fix indentation --- .../main/java/org/jlab/detector/pulse/HipoExtractor.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/HipoExtractor.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/HipoExtractor.java index 146b087449..6ab098d145 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/HipoExtractor.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/pulse/HipoExtractor.java @@ -129,8 +129,8 @@ protected List getPulses(int n, IndexedTable it, DataBank wfBank) { for (int i=0; i p = it==null ? extract(null, i, timestamp, time, samples) : extract(it.getNamedEntry(getIndices(wfBank,i)), i, timestamp, time, samples); if (p!=null && !p.isEmpty()) { @@ -149,8 +149,8 @@ protected List getPulses(int n, IndexedTable it, Bank wfBank) { samples[j] = wfBank.getShort(String.format("s%d",j+1), i); // FIXME: Can speed this up (but looks like not for DataBank?): //samples[j] = wfBank.getShort(String.format(5+j,j+1), i); - int time = wfBank.getInt("time",i); - long timestamp = wfBank.getLong("timestamp",i); + int time = wfBank.getInt("time",i); + long timestamp = wfBank.getLong("timestamp",i); List p = it==null ? extract(null, i, timestamp, time, samples) : extract(it.getNamedEntry(getIndices(wfBank,i)), i, timestamp, time, samples); if (p!=null && !p.isEmpty()) { From b07c9b48db8e24d3c8dd8b075949910370ffb629 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 7 Apr 2025 14:22:03 -0400 Subject: [PATCH 043/100] reduce to 30 samples --- .../jlab/detector/decode/CLASDecoder4.java | 2 +- etc/bankdefs/hipo4/data.json | 34 ------------------- 2 files changed, 1 insertion(+), 35 deletions(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java index 9db665354f..aa366ed859 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java @@ -249,7 +249,7 @@ public List getEntriesSCALER(DetectorType type, } public void extractPulses(Event event) { - ahdcExtractor.update(64, null, event, schemaFactory, "AHDC::wf", "AHDC::adc"); + ahdcExtractor.update(30, null, event, schemaFactory, "AHDC::wf", "AHDC::adc"); } public Bank getDataBankWF(String name, DetectorType type) { diff --git a/etc/bankdefs/hipo4/data.json b/etc/bankdefs/hipo4/data.json index 9f42279e5d..826813894d 100644 --- a/etc/bankdefs/hipo4/data.json +++ b/etc/bankdefs/hipo4/data.json @@ -40,40 +40,6 @@ { "name":"s28" , "type":"S", "info":""}, { "name":"s29" , "type":"S", "info":""}, { "name":"s30" , "type":"S", "info":""}, - { "name":"s31" , "type":"S", "info":""}, - { "name":"s32" , "type":"S", "info":""}, - { "name":"s33" , "type":"S", "info":""}, - { "name":"s34" , "type":"S", "info":""}, - { "name":"s35" , "type":"S", "info":""}, - { "name":"s36" , "type":"S", "info":""}, - { "name":"s37" , "type":"S", "info":""}, - { "name":"s38" , "type":"S", "info":""}, - { "name":"s39" , "type":"S", "info":""}, - { "name":"s40" , "type":"S", "info":""}, - { "name":"s41" , "type":"S", "info":""}, - { "name":"s42" , "type":"S", "info":""}, - { "name":"s43" , "type":"S", "info":""}, - { "name":"s44" , "type":"S", "info":""}, - { "name":"s45" , "type":"S", "info":""}, - { "name":"s46" , "type":"S", "info":""}, - { "name":"s47" , "type":"S", "info":""}, - { "name":"s48" , "type":"S", "info":""}, - { "name":"s49" , "type":"S", "info":""}, - { "name":"s50" , "type":"S", "info":""}, - { "name":"s51" , "type":"S", "info":""}, - { "name":"s52" , "type":"S", "info":""}, - { "name":"s53" , "type":"S", "info":""}, - { "name":"s54" , "type":"S", "info":""}, - { "name":"s55" , "type":"S", "info":""}, - { "name":"s56" , "type":"S", "info":""}, - { "name":"s57" , "type":"S", "info":""}, - { "name":"s58" , "type":"S", "info":""}, - { "name":"s59" , "type":"S", "info":""}, - { "name":"s60" , "type":"S", "info":""}, - { "name":"s61" , "type":"S", "info":""}, - { "name":"s62" , "type":"S", "info":""}, - { "name":"s63" , "type":"S", "info":""}, - { "name":"s64" , "type":"S", "info":""}, { "name":"time" , "type":"I", "info":"for fine time correction"} ] }, From c90518e011b403aa1a48f3ed0cafa34ee70884ce Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 8 Apr 2025 19:28:50 -0400 Subject: [PATCH 044/100] bump version --- common-tools/clara-io/pom.xml | 4 ++-- common-tools/clas-analysis/pom.xml | 20 ++++++++--------- common-tools/clas-detector/pom.xml | 10 ++++----- common-tools/clas-geometry/pom.xml | 4 ++-- common-tools/clas-io/pom.xml | 8 +++---- common-tools/clas-jcsg/pom.xml | 8 +++---- 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 | 16 +++++++------- common-tools/clas-tracking/pom.xml | 6 +++--- common-tools/clas-utils/pom.xml | 6 +++--- common-tools/cnuphys/magfield/pom.xml | 2 +- common-tools/cnuphys/swimmer/pom.xml | 2 +- common-tools/coat-lib/deployDistribution.sh | 2 +- common-tools/coat-lib/pom.xml | 24 ++++++++++----------- common-tools/parent/pom.xml | 2 +- common-tools/pom.xml | 4 ++-- common-tools/swim-tools/pom.xml | 6 +++--- parent/pom.xml | 2 +- pom.xml | 4 ++-- reconstruction/alert/pom.xml | 10 ++++----- reconstruction/band/pom.xml | 4 ++-- reconstruction/bg/pom.xml | 8 +++---- reconstruction/cnd/pom.xml | 2 +- reconstruction/cvt/pom.xml | 6 +++--- reconstruction/dc/pom.xml | 14 ++++++------ reconstruction/eb/pom.xml | 10 ++++----- reconstruction/ec/pom.xml | 6 +++--- reconstruction/fmt/pom.xml | 6 +++--- reconstruction/ft/pom.xml | 4 ++-- reconstruction/htcc/pom.xml | 4 ++-- reconstruction/ltcc/pom.xml | 4 ++-- reconstruction/mc/pom.xml | 4 ++-- reconstruction/mltn/pom.xml | 6 +++--- reconstruction/pom.xml | 4 ++-- reconstruction/postproc/pom.xml | 8 +++---- reconstruction/raster/pom.xml | 4 ++-- reconstruction/rich/pom.xml | 6 +++--- reconstruction/rtpc/pom.xml | 6 +++--- reconstruction/swaps/pom.xml | 8 +++---- reconstruction/tof/pom.xml | 4 ++-- reconstruction/urwell/pom.xml | 6 +++--- reconstruction/vtx/pom.xml | 6 +++--- 44 files changed, 141 insertions(+), 141 deletions(-) diff --git a/common-tools/clara-io/pom.xml b/common-tools/clara-io/pom.xml index 4655074b88..7ca89d5d64 100644 --- a/common-tools/clara-io/pom.xml +++ b/common-tools/clara-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clara-io - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/common-tools/clas-analysis/pom.xml b/common-tools/clas-analysis/pom.xml index 1d6ea9031e..df54c86642 100644 --- a/common-tools/clas-analysis/pom.xml +++ b/common-tools/clas-analysis/pom.xml @@ -3,63 +3,63 @@ 4.0.0 org.jlab.clas clas-analysis - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-utils - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-physics - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-io - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas swim-tools - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-detector - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/common-tools/clas-detector/pom.xml b/common-tools/clas-detector/pom.xml index f8ec3304fb..f2a611eed0 100644 --- a/common-tools/clas-detector/pom.xml +++ b/common-tools/clas-detector/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-detector - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-utils - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -29,13 +29,13 @@ org.jlab.clas clas-io - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/common-tools/clas-geometry/pom.xml b/common-tools/clas-geometry/pom.xml index 308912accb..ea71b031ec 100644 --- a/common-tools/clas-geometry/pom.xml +++ b/common-tools/clas-geometry/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-geometry - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/common-tools/clas-io/pom.xml b/common-tools/clas-io/pom.xml index d9d85f77a8..14ed29896d 100644 --- a/common-tools/clas-io/pom.xml +++ b/common-tools/clas-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-io - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -90,13 +90,13 @@ org.jlab.clas clas-utils - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-logging - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT compile diff --git a/common-tools/clas-jcsg/pom.xml b/common-tools/clas-jcsg/pom.xml index 583fd9a1fa..b2e9ffe3e5 100644 --- a/common-tools/clas-jcsg/pom.xml +++ b/common-tools/clas-jcsg/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-jcsg - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -27,12 +27,12 @@ org.jlab.clas clas-geometry - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-detector - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT java3d diff --git a/common-tools/clas-logging/pom.xml b/common-tools/clas-logging/pom.xml index d3548b1a32..ebcf47b6df 100644 --- a/common-tools/clas-logging/pom.xml +++ b/common-tools/clas-logging/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-logging - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT
diff --git a/common-tools/clas-math/pom.xml b/common-tools/clas-math/pom.xml index 127660462a..86c6ea0a60 100644 --- a/common-tools/clas-math/pom.xml +++ b/common-tools/clas-math/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-math - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/common-tools/clas-physics/pom.xml b/common-tools/clas-physics/pom.xml index 71ebc4db78..9c44616c65 100644 --- a/common-tools/clas-physics/pom.xml +++ b/common-tools/clas-physics/pom.xml @@ -4,14 +4,14 @@ org.jlab.clas clas-physics - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/common-tools/clas-reco/pom.xml b/common-tools/clas-reco/pom.xml index 2fbc765629..244b269c42 100644 --- a/common-tools/clas-reco/pom.xml +++ b/common-tools/clas-reco/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -42,37 +42,37 @@ org.jlab.clas clas-math - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-io - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-logging - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-physics - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-utils - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-detector - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/common-tools/clas-tracking/pom.xml b/common-tools/clas-tracking/pom.xml index 14af5e6a8a..397c394169 100644 --- a/common-tools/clas-tracking/pom.xml +++ b/common-tools/clas-tracking/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-tracking - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -22,7 +22,7 @@ org.jlab.clas swim-tools - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar diff --git a/common-tools/clas-utils/pom.xml b/common-tools/clas-utils/pom.xml index 8606193c04..0b65335597 100644 --- a/common-tools/clas-utils/pom.xml +++ b/common-tools/clas-utils/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-utils - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-logging - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.apache.commons diff --git a/common-tools/cnuphys/magfield/pom.xml b/common-tools/cnuphys/magfield/pom.xml index 716b81d3d6..1f20d0d8f3 100644 --- a/common-tools/cnuphys/magfield/pom.xml +++ b/common-tools/cnuphys/magfield/pom.xml @@ -23,7 +23,7 @@ org.jlab.clas clas-math - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/common-tools/cnuphys/swimmer/pom.xml b/common-tools/cnuphys/swimmer/pom.xml index 701aec7e85..e6d512065d 100644 --- a/common-tools/cnuphys/swimmer/pom.xml +++ b/common-tools/cnuphys/swimmer/pom.xml @@ -35,7 +35,7 @@ org.jlab.clas clas-math - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/common-tools/coat-lib/deployDistribution.sh b/common-tools/coat-lib/deployDistribution.sh index 0ba9881890..a7ba381bb7 100755 --- a/common-tools/coat-lib/deployDistribution.sh +++ b/common-tools/coat-lib/deployDistribution.sh @@ -8,7 +8,7 @@ cd `dirname $0` # Script is exporting existing Jar files to repository #------------------------------------------------------------------------------------------------- -VERSION=12.0.1t +VERSION=12.0.2t mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file \ -Dfile=target/coat-libs-${VERSION}-SNAPSHOT.jar \ diff --git a/common-tools/coat-lib/pom.xml b/common-tools/coat-lib/pom.xml index 7022cba272..612aa14bac 100644 --- a/common-tools/coat-lib/pom.xml +++ b/common-tools/coat-lib/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jlab.clas coat-libs - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT pom @@ -94,67 +94,67 @@ org.jlab.clas clas-io - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clara-io - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-utils - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-detector - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-physics - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas swim-tools - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-tracking - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/common-tools/parent/pom.xml b/common-tools/parent/pom.xml index 233bc82357..fb12b63008 100644 --- a/common-tools/parent/pom.xml +++ b/common-tools/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas common-tools - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT pom diff --git a/common-tools/pom.xml b/common-tools/pom.xml index 9c7236d6c0..8cd4e5220b 100644 --- a/common-tools/pom.xml +++ b/common-tools/pom.xml @@ -2,14 +2,14 @@ 4.0.0 org.jlab.clas common-tools - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/common-tools/swim-tools/pom.xml b/common-tools/swim-tools/pom.xml index ef3ea08e74..a02534cb5b 100644 --- a/common-tools/swim-tools/pom.xml +++ b/common-tools/swim-tools/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas swim-tools - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/parent/pom.xml b/parent/pom.xml index 990988cd1b..1827466ef4 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas clas12rec - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT pom diff --git a/pom.xml b/pom.xml index 684e11dd46..7606408c85 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ 4.0.0 org.jlab.clas clas12 - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT pom @@ -15,7 +15,7 @@ org.jlab.clas clas12rec parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index 366b085ee5..27f5dd04d7 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -13,31 +13,31 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-io - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT compile org.jlab.clas clas-tracking - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT compile org.jlab.clas clas-geometry - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT compile diff --git a/reconstruction/band/pom.xml b/reconstruction/band/pom.xml index 8795e19aff..4ad0f0d1cd 100644 --- a/reconstruction/band/pom.xml +++ b/reconstruction/band/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/bg/pom.xml b/reconstruction/bg/pom.xml index 58129ffdbe..ab507554b9 100644 --- a/reconstruction/bg/pom.xml +++ b/reconstruction/bg/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/cnd/pom.xml b/reconstruction/cnd/pom.xml index 3b8b3712a1..268347ce06 100644 --- a/reconstruction/cnd/pom.xml +++ b/reconstruction/cnd/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/cvt/pom.xml b/reconstruction/cvt/pom.xml index 58b7e06a7f..e23a719af7 100644 --- a/reconstruction/cvt/pom.xml +++ b/reconstruction/cvt/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -47,7 +47,7 @@ org.jlab.clas clas-tracking - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/dc/pom.xml b/reconstruction/dc/pom.xml index e1d60bc008..9e6bf683d5 100644 --- a/reconstruction/dc/pom.xml +++ b/reconstruction/dc/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -28,25 +28,25 @@ org.jlab.clas clas-tracking - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -75,13 +75,13 @@ org.jlab.clas swim-tools - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-math - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/eb/pom.xml b/reconstruction/eb/pom.xml index 48b03d607b..164f609129 100644 --- a/reconstruction/eb/pom.xml +++ b/reconstruction/eb/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -21,25 +21,25 @@ org.jlab.clas clas-utils - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-io - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/ec/pom.xml b/reconstruction/ec/pom.xml index d7a4535c35..1ec425e2ba 100644 --- a/reconstruction/ec/pom.xml +++ b/reconstruction/ec/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/fmt/pom.xml b/reconstruction/fmt/pom.xml index e6e973f607..506f90a6c3 100644 --- a/reconstruction/fmt/pom.xml +++ b/reconstruction/fmt/pom.xml @@ -15,21 +15,21 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas swim-tools - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/ft/pom.xml b/reconstruction/ft/pom.xml index 8b771b8026..02257e8199 100644 --- a/reconstruction/ft/pom.xml +++ b/reconstruction/ft/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/htcc/pom.xml b/reconstruction/htcc/pom.xml index a2b697d6ff..f2b03f3967 100644 --- a/reconstruction/htcc/pom.xml +++ b/reconstruction/htcc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/ltcc/pom.xml b/reconstruction/ltcc/pom.xml index b6aae818ca..68034b0fa6 100644 --- a/reconstruction/ltcc/pom.xml +++ b/reconstruction/ltcc/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/mc/pom.xml b/reconstruction/mc/pom.xml index ebc1cf3c4a..4ef3ce6e25 100644 --- a/reconstruction/mc/pom.xml +++ b/reconstruction/mc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/mltn/pom.xml b/reconstruction/mltn/pom.xml index d4ebf5cc87..8600ca0731 100644 --- a/reconstruction/mltn/pom.xml +++ b/reconstruction/mltn/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -34,13 +34,13 @@ org.jlab.clas clas-io - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/pom.xml b/reconstruction/pom.xml index e636255c75..6fc382e21b 100644 --- a/reconstruction/pom.xml +++ b/reconstruction/pom.xml @@ -3,14 +3,14 @@ org.jlab.clas reconstruction - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/postproc/pom.xml b/reconstruction/postproc/pom.xml index 98c91b4982..e5dd75fe88 100644 --- a/reconstruction/postproc/pom.xml +++ b/reconstruction/postproc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/raster/pom.xml b/reconstruction/raster/pom.xml index 99c05ceda1..d618a838c6 100644 --- a/reconstruction/raster/pom.xml +++ b/reconstruction/raster/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/rich/pom.xml b/reconstruction/rich/pom.xml index 8d03b1128d..017d323f38 100644 --- a/reconstruction/rich/pom.xml +++ b/reconstruction/rich/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/rtpc/pom.xml b/reconstruction/rtpc/pom.xml index fb63378d97..c1ae590eb3 100644 --- a/reconstruction/rtpc/pom.xml +++ b/reconstruction/rtpc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -21,12 +21,12 @@ org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-tracking - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT compile diff --git a/reconstruction/swaps/pom.xml b/reconstruction/swaps/pom.xml index 0851f48dd0..042851b8a4 100644 --- a/reconstruction/swaps/pom.xml +++ b/reconstruction/swaps/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-detector - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-io - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-reco - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/tof/pom.xml b/reconstruction/tof/pom.xml index 8cdbfde992..6dcab02120 100644 --- a/reconstruction/tof/pom.xml +++ b/reconstruction/tof/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/urwell/pom.xml b/reconstruction/urwell/pom.xml index 871a35057b..1f57be45a7 100644 --- a/reconstruction/urwell/pom.xml +++ b/reconstruction/urwell/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT diff --git a/reconstruction/vtx/pom.xml b/reconstruction/vtx/pom.xml index 8aaa56821a..f9f82ef1f6 100644 --- a/reconstruction/vtx/pom.xml +++ b/reconstruction/vtx/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT @@ -33,13 +33,13 @@ org.jlab.clas swim-tools - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar org.jlab.clas clas-tracking - 12.0.1t-SNAPSHOT + 12.0.2t-SNAPSHOT jar From 2f0322b45d0957ca5821549238604bb5a4f91fea Mon Sep 17 00:00:00 2001 From: MathieuOuillon Date: Tue, 8 Apr 2025 13:17:06 -0400 Subject: [PATCH 045/100] Change geometry for the hits to match reality. (90 shift + conterclock) --- .../detector/alert/AHDC/AlertDCFactory.java | 56 +++++++++---------- .../main/java/org/jlab/rec/ahdc/Hit/Hit.java | 4 +- .../org/jlab/rec/ahdc/KalmanFilter/Hit.java | 24 ++++---- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java index 0a9bd13026..05c5ced61d 100644 --- a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java +++ b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java @@ -132,13 +132,13 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye for (int wireId = 0; wireId < numWires; wireId++) { // The point given by (wx, wy, wz) is the midpoint of the current wire. - double wx = -R_layer * Math.sin(alphaW_layer * wireId); - double wy = -R_layer * Math.cos(alphaW_layer * wireId); + double wx = R_layer * Math.cos(alphaW_layer * wireId); + double wy = R_layer * Math.sin(alphaW_layer * wireId); // Find the interesection of the current wire with the end-plate // planes by construciting a long line that passes through the midpoint - double wx_end = -R_layer * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double wy_end = -R_layer * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); + double wx_end = R_layer * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); + double wy_end = R_layer * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); Line3D line = new Line3D(wx, wy, 0, wx_end, wy_end, zl); Point3D lPoint = new Point3D(); @@ -150,31 +150,31 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye // Do not change the code above. It is for signal wires positioning // Construct the cell around the signal wires created above top - double px_0 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId); - double py_0 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId); - double px_1 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2); - double py_1 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2); - double px_2 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2); - double py_2 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2); - double px_3 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId); - double py_3 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId); - double px_4 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2); - double py_4 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2); - double px_5 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2); - double py_5 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2); + double px_0 = (R_layer + 2) * Math.cos(alphaW_layer * wireId); + double py_0 = (R_layer + 2) * Math.sin(alphaW_layer * wireId); + double px_1 = (R_layer + 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2); + double py_1 = (R_layer + 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2); + double px_2 = (R_layer - 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2); + double py_2 = (R_layer - 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2); + double px_3 = (R_layer - 2) * Math.cos(alphaW_layer * wireId); + double py_3 = (R_layer - 2) * Math.sin(alphaW_layer * wireId); + double px_4 = (R_layer - 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2); + double py_4 = (R_layer - 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2); + double px_5 = (R_layer + 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2); + double py_5 = (R_layer + 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2); // bottom (do not forget to add the +20 deg. twist respect to the "straight" version) - double px_6 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double py_6 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double px_7 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double py_7 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double px_8 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double py_8 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double px_9 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double py_9 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double px_10 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double py_10 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double px_11 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double py_11 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double px_6 = (R_layer + 2) * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); + double py_6 = (R_layer + 2) * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); + double px_7 = (R_layer + 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double py_7 = (R_layer + 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double px_8 = (R_layer - 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double py_8 = (R_layer - 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double px_9 = (R_layer - 2) * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); + double py_9 = (R_layer - 2) * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); + double px_10 = (R_layer - 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double py_10 = (R_layer - 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double px_11 = (R_layer + 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double py_11 = (R_layer + 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); // Group into points with (x,y,z) coordinates List firstF = new ArrayList<>(); diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java index 109e8920a0..4347da8eb2 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java @@ -68,8 +68,8 @@ private void wirePosition() { R_layer = R_layer + DR_layer * (this.layerId-1); double alphaW_layer = Math.toRadians(round / (numWires)); //should it be at z = 0? in which case, we need to account for the positive or negative stereo angle... - double wx = -R_layer * Math.sin(alphaW_layer * (this.wireId-1) + 0.5*thster * (Math.pow(-1, this.superLayerId-1))); - double wy = -R_layer * Math.cos(alphaW_layer * (this.wireId-1) + 0.5*thster * (Math.pow(-1, this.superLayerId-1))); + double wx = R_layer * Math.cos(alphaW_layer * (this.wireId-1) + 0.5*thster * (Math.pow(-1, this.superLayerId-1))); + double wy = R_layer * Math.sin(alphaW_layer * (this.wireId-1) + 0.5*thster * (Math.pow(-1, this.superLayerId-1))); //System.out.println(" superlayer " + this.superLayerId + " layer " + this.layerId + " wire " + this.wireId + " R_layer " + R_layer + " wx " + wx + " wy " + wy); diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java index a07e4299df..b97c982950 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java @@ -88,11 +88,11 @@ public Hit(int superLayer, int layer, int wire, int numWire, double r, double do R_layer = R_layer + DR_layer * (this.layer-1);//OK double alphaW_layer = Math.toRadians(round / (numWires));//OK - double wx = -R_layer * Math.sin(alphaW_layer * (this.wire-1));//OK - double wy = -R_layer * Math.cos(alphaW_layer * (this.wire-1));//OK + double wx = R_layer * Math.cos(alphaW_layer * (this.wire-1));//OK + double wy = R_layer * Math.sin(alphaW_layer * (this.wire-1));//OK - double wx_end = -R_layer * Math.sin(alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)));//OK - double wy_end = -R_layer * Math.cos(alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)));//OK + double wx_end = R_layer * Math.cos(alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)));//OK + double wy_end = R_layer * Math.sin(alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)));//OK this.phi = Math.atan2( (wy+wy_end)*0.5, (wx+wx_end)*0.5 ); //System.out.println(" superlayer " + this.superLayer + " layer " + this.layer + " wire " + this.wire + " wx " + wx + " wy " + wy + " wx_end " + wx_end + " wy_end " + wy_end + " phi " + this.phi); @@ -113,11 +113,11 @@ public Hit(int superLayer, int layer, int wire, int numWire, double r, double do //calculate the "virtual" left and right wires accounting for the DOCA double deltaphi = Math.asin(this.doca/R_layer); - double wx_plus = -R_layer * Math.sin( alphaW_layer * (this.wire-1) - deltaphi );//OK - double wy_plus = -R_layer * Math.cos( alphaW_layer * (this.wire-1) - deltaphi );//OK + double wx_plus = R_layer * Math.cos( alphaW_layer * (this.wire-1) - deltaphi );//OK + double wy_plus = R_layer * Math.sin( alphaW_layer * (this.wire-1) - deltaphi );//OK - double wx_plus_end = -R_layer * Math.sin( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) - deltaphi );//OK - double wy_plus_end = -R_layer * Math.cos( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) - deltaphi );//OK + double wx_plus_end = R_layer * Math.cos( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) - deltaphi );//OK + double wy_plus_end = R_layer * Math.sin( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) - deltaphi );//OK line = new Line3D(wx_plus, wy_plus, -zl/2, wx_plus_end, wy_plus_end, zl/2); lPoint = new Point3D(); @@ -128,11 +128,11 @@ public Hit(int superLayer, int layer, int wire, int numWire, double r, double do wireLine = new Line3D(lPoint, rPoint); this.line3D_plus = wireLine; - double wx_minus = -R_layer * Math.sin( alphaW_layer * (this.wire-1) + deltaphi );//OK - double wy_minus = -R_layer * Math.cos( alphaW_layer * (this.wire-1) + deltaphi );//OK + double wx_minus = R_layer * Math.cos( alphaW_layer * (this.wire-1) + deltaphi );//OK + double wy_minus = R_layer * Math.sin( alphaW_layer * (this.wire-1) + deltaphi );//OK - double wx_minus_end = -R_layer * Math.sin( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) + deltaphi );//OK - double wy_minus_end = -R_layer * Math.cos( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) + deltaphi );//OK + double wx_minus_end = R_layer * Math.cos( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) + deltaphi );//OK + double wy_minus_end = R_layer * Math.sin( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) + deltaphi );//OK line = new Line3D(wx_minus, wy_minus, -zl/2, wx_minus_end, wy_minus_end, zl/2); lPoint = new Point3D(); From 4969105ec314f44d5afb9d1c1d72c791d850b645 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 8 Apr 2025 21:29:29 -0400 Subject: [PATCH 046/100] add all rg-l banks to all schema for now --- etc/bankdefs/util/bankSplit.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/etc/bankdefs/util/bankSplit.py b/etc/bankdefs/util/bankSplit.py index 7d93505028..00280d19e6 100755 --- a/etc/bankdefs/util/bankSplit.py +++ b/etc/bankdefs/util/bankSplit.py @@ -107,6 +107,14 @@ def create(dirname, banklist): level3 = list(dst) level3.extend(["DC::tdc", "ECAL::adc", "ECAL::clusters", "FTOF::tdc", "FTOF::adc", "HitBasedTrkg::HBClusters", "HitBasedTrkg::HBTracks", "HTCC::adc", "RF::adc", "RF::tdc", "RUN::rf", "TimeBasedTrkg::TBClusters", "TimeBasedTrkg::TBTracks"]) +import glob +rgl = glob.glob('./etc/bankdefs/hipo4/singles/full/ALERT*.json') +rgl.extend(glob.glob('./etc/bankdefs/hipo4/singles/full/AHDC*.json')) +rgl.extend(glob.glob('./etc/bankdefs/hipo4/singles/full/ATOF*.json')) +calib.extend(rgl) +mon.extend(rgl) +dst.extend(rgl) + create("dst/", set(dst)) create("dsthb/", set(dsthb)) create("calib/", set(calib)) From b2babd87941c60388702b2b0263ca5d61ffa313d Mon Sep 17 00:00:00 2001 From: baltzell Date: Wed, 9 Apr 2025 10:23:24 -0400 Subject: [PATCH 047/100] initialize AHDC geometry, currently only for test coverage --- .../src/main/java/org/jlab/service/ahdc/AHDCEngine.java | 5 +++++ 1 file changed, 5 insertions(+) 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 e3f3bc3349..56d306a852 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 @@ -26,6 +26,8 @@ import java.io.File; import java.util.*; +import org.jlab.detector.calib.utils.DatabaseConstantProvider; +import org.jlab.geom.detector.alert.AHDC.AlertDCFactory; /** AHDCEngine reconstruction service. * @@ -64,6 +66,9 @@ public AHDCEngine() { @Override public boolean init() { + + (new AlertDCFactory()).createDetectorCLAS(new DatabaseConstantProvider()); + simulation = false; findingMethod = "distance"; From a21aa3da161dd4c153e7cb89bd92eadceb714c9e Mon Sep 17 00:00:00 2001 From: baltzell Date: Wed, 9 Apr 2025 10:23:50 -0400 Subject: [PATCH 048/100] add RG-L engines to defaults --- .../src/main/java/org/jlab/clas/reco/EngineProcessor.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java index ff1fc6ab2a..157d4e0214 100644 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java @@ -164,6 +164,9 @@ public void initAll(){ "org.jlab.service.eb.EBTBEngine", "org.jlab.rec.rich.RICHEBEngine", "org.jlab.service.rtpc.RTPCEngine", + "org.jlab.service.ahdc.AHDCEngine", + "org.jlab.service.atof.ATOFEngine", + "org.jlab.service.alert.ALERTEngine", "org.jlab.service.mc.TruthMatch" }; From 1dfa2233c689ce76e3edb9690db0ed57bbc4933b Mon Sep 17 00:00:00 2001 From: Mathieu Ouillon Date: Wed, 9 Apr 2025 15:54:54 -0400 Subject: [PATCH 049/100] fix: geometry order of points that define the wire cell to satify a Concave Componment requierment for ALERT --- .../detector/alert/AHDC/AlertDCFactory.java | 17 +++++++++-------- .../detector/alert/AHDC/ConcaveComponent.java | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java index 05c5ced61d..7181ef613a 100644 --- a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java +++ b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java @@ -195,18 +195,19 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye Point3D p_11 = new Point3D(px_11, py_11, zl); // defining a cell around a wireLine, must be counter-clockwise! firstF.add(p_0); - firstF.add(p_1); - firstF.add(p_2); - firstF.add(p_3); - firstF.add(p_4); firstF.add(p_5); + firstF.add(p_4); + firstF.add(p_3); + firstF.add(p_2); + firstF.add(p_1); secondF.add(p_6); - secondF.add(p_7); - secondF.add(p_8); - secondF.add(p_9); - secondF.add(p_10); secondF.add(p_11); + secondF.add(p_10); + secondF.add(p_9); + secondF.add(p_8); + secondF.add(p_7); + // Create the cell and signal wire inside // PrismaticComponent(int componentId, List firstFace, List secondFace) diff --git a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/ConcaveComponent.java b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/ConcaveComponent.java index 3ac6568837..e8ec777999 100644 --- a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/ConcaveComponent.java +++ b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/ConcaveComponent.java @@ -60,7 +60,7 @@ protected ConcaveComponent(int componentId, List firstFace, List 0.001) { // System.err.println("PrismaticComponent: #" + componentId + " " + n.dot(direction) + " > 0"); // for (Point3D point : firstFace) System.err.println("\t" + point); - throw new IllegalArgumentException("the first face is not counter-clockwise: componentId=" + componentId); + throw new IllegalArgumentException("the first face is not counter-clockwise: componentId=" + componentId); } u = secondFace.get(1).vectorFrom(secondFace.get(0)); v = secondFace.get(2).vectorFrom(secondFace.get(0)); From 6fbfa00428f0587b019f282de3c7fe1c9f7d8c12 Mon Sep 17 00:00:00 2001 From: baltzell Date: Wed, 9 Apr 2025 18:04:47 -0400 Subject: [PATCH 050/100] bump version --- common-tools/clara-io/pom.xml | 4 ++-- common-tools/clas-analysis/pom.xml | 20 ++++++++--------- common-tools/clas-detector/pom.xml | 10 ++++----- common-tools/clas-geometry/pom.xml | 4 ++-- common-tools/clas-io/pom.xml | 8 +++---- common-tools/clas-jcsg/pom.xml | 8 +++---- 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 | 16 +++++++------- common-tools/clas-tracking/pom.xml | 6 +++--- common-tools/clas-utils/pom.xml | 6 +++--- common-tools/cnuphys/magfield/pom.xml | 2 +- common-tools/cnuphys/swimmer/pom.xml | 2 +- common-tools/coat-lib/deployDistribution.sh | 2 +- common-tools/coat-lib/pom.xml | 24 ++++++++++----------- common-tools/parent/pom.xml | 2 +- common-tools/pom.xml | 4 ++-- common-tools/swim-tools/pom.xml | 6 +++--- parent/pom.xml | 2 +- pom.xml | 4 ++-- reconstruction/alert/pom.xml | 10 ++++----- reconstruction/band/pom.xml | 4 ++-- reconstruction/bg/pom.xml | 8 +++---- reconstruction/cnd/pom.xml | 2 +- reconstruction/cvt/pom.xml | 6 +++--- reconstruction/dc/pom.xml | 14 ++++++------ reconstruction/eb/pom.xml | 10 ++++----- reconstruction/ec/pom.xml | 6 +++--- reconstruction/fmt/pom.xml | 6 +++--- reconstruction/ft/pom.xml | 4 ++-- reconstruction/htcc/pom.xml | 4 ++-- reconstruction/ltcc/pom.xml | 4 ++-- reconstruction/mc/pom.xml | 4 ++-- reconstruction/mltn/pom.xml | 6 +++--- reconstruction/pom.xml | 4 ++-- reconstruction/postproc/pom.xml | 8 +++---- reconstruction/raster/pom.xml | 4 ++-- reconstruction/rich/pom.xml | 6 +++--- reconstruction/rtpc/pom.xml | 6 +++--- reconstruction/swaps/pom.xml | 8 +++---- reconstruction/tof/pom.xml | 4 ++-- reconstruction/urwell/pom.xml | 6 +++--- reconstruction/vtx/pom.xml | 6 +++--- 44 files changed, 141 insertions(+), 141 deletions(-) diff --git a/common-tools/clara-io/pom.xml b/common-tools/clara-io/pom.xml index 7ca89d5d64..e5ca4378d7 100644 --- a/common-tools/clara-io/pom.xml +++ b/common-tools/clara-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clara-io - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/common-tools/clas-analysis/pom.xml b/common-tools/clas-analysis/pom.xml index df54c86642..5c7f8bdfe5 100644 --- a/common-tools/clas-analysis/pom.xml +++ b/common-tools/clas-analysis/pom.xml @@ -3,63 +3,63 @@ 4.0.0 org.jlab.clas clas-analysis - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-utils - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-physics - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-io - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas swim-tools - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-detector - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/common-tools/clas-detector/pom.xml b/common-tools/clas-detector/pom.xml index f2a611eed0..fcb86c2c0c 100644 --- a/common-tools/clas-detector/pom.xml +++ b/common-tools/clas-detector/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-detector - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-utils - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -29,13 +29,13 @@ org.jlab.clas clas-io - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/common-tools/clas-geometry/pom.xml b/common-tools/clas-geometry/pom.xml index ea71b031ec..93d4069aa5 100644 --- a/common-tools/clas-geometry/pom.xml +++ b/common-tools/clas-geometry/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-geometry - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/common-tools/clas-io/pom.xml b/common-tools/clas-io/pom.xml index 14ed29896d..5b16e66648 100644 --- a/common-tools/clas-io/pom.xml +++ b/common-tools/clas-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-io - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -90,13 +90,13 @@ org.jlab.clas clas-utils - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-logging - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT compile diff --git a/common-tools/clas-jcsg/pom.xml b/common-tools/clas-jcsg/pom.xml index b2e9ffe3e5..380ec557c2 100644 --- a/common-tools/clas-jcsg/pom.xml +++ b/common-tools/clas-jcsg/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-jcsg - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -27,12 +27,12 @@ org.jlab.clas clas-geometry - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-detector - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT java3d diff --git a/common-tools/clas-logging/pom.xml b/common-tools/clas-logging/pom.xml index ebcf47b6df..f270c43b8f 100644 --- a/common-tools/clas-logging/pom.xml +++ b/common-tools/clas-logging/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-logging - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/common-tools/clas-math/pom.xml b/common-tools/clas-math/pom.xml index 86c6ea0a60..f99625c103 100644 --- a/common-tools/clas-math/pom.xml +++ b/common-tools/clas-math/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-math - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/common-tools/clas-physics/pom.xml b/common-tools/clas-physics/pom.xml index 9c44616c65..30095fa940 100644 --- a/common-tools/clas-physics/pom.xml +++ b/common-tools/clas-physics/pom.xml @@ -4,14 +4,14 @@ org.jlab.clas clas-physics - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/common-tools/clas-reco/pom.xml b/common-tools/clas-reco/pom.xml index 244b269c42..2878d114ce 100644 --- a/common-tools/clas-reco/pom.xml +++ b/common-tools/clas-reco/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -42,37 +42,37 @@ org.jlab.clas clas-math - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-io - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-logging - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-physics - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-utils - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-detector - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/common-tools/clas-tracking/pom.xml b/common-tools/clas-tracking/pom.xml index 397c394169..bab40fa710 100644 --- a/common-tools/clas-tracking/pom.xml +++ b/common-tools/clas-tracking/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-tracking - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -22,7 +22,7 @@ org.jlab.clas swim-tools - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar diff --git a/common-tools/clas-utils/pom.xml b/common-tools/clas-utils/pom.xml index 0b65335597..4f8ff95eea 100644 --- a/common-tools/clas-utils/pom.xml +++ b/common-tools/clas-utils/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-utils - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-logging - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.apache.commons diff --git a/common-tools/cnuphys/magfield/pom.xml b/common-tools/cnuphys/magfield/pom.xml index 1f20d0d8f3..b086b74c9c 100644 --- a/common-tools/cnuphys/magfield/pom.xml +++ b/common-tools/cnuphys/magfield/pom.xml @@ -23,7 +23,7 @@ org.jlab.clas clas-math - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/common-tools/cnuphys/swimmer/pom.xml b/common-tools/cnuphys/swimmer/pom.xml index e6d512065d..151610e2dc 100644 --- a/common-tools/cnuphys/swimmer/pom.xml +++ b/common-tools/cnuphys/swimmer/pom.xml @@ -35,7 +35,7 @@ org.jlab.clas clas-math - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/common-tools/coat-lib/deployDistribution.sh b/common-tools/coat-lib/deployDistribution.sh index a7ba381bb7..362c1e4ded 100755 --- a/common-tools/coat-lib/deployDistribution.sh +++ b/common-tools/coat-lib/deployDistribution.sh @@ -8,7 +8,7 @@ cd `dirname $0` # Script is exporting existing Jar files to repository #------------------------------------------------------------------------------------------------- -VERSION=12.0.2t +VERSION=12.0.3t mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file \ -Dfile=target/coat-libs-${VERSION}-SNAPSHOT.jar \ diff --git a/common-tools/coat-lib/pom.xml b/common-tools/coat-lib/pom.xml index 612aa14bac..9591dcc8b3 100644 --- a/common-tools/coat-lib/pom.xml +++ b/common-tools/coat-lib/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jlab.clas coat-libs - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT pom @@ -94,67 +94,67 @@ org.jlab.clas clas-io - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clara-io - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-utils - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-detector - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-physics - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas swim-tools - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-tracking - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/common-tools/parent/pom.xml b/common-tools/parent/pom.xml index fb12b63008..5aefb5b5fd 100644 --- a/common-tools/parent/pom.xml +++ b/common-tools/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas common-tools - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT pom diff --git a/common-tools/pom.xml b/common-tools/pom.xml index 8cd4e5220b..9dff1ca382 100644 --- a/common-tools/pom.xml +++ b/common-tools/pom.xml @@ -2,14 +2,14 @@ 4.0.0 org.jlab.clas common-tools - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/common-tools/swim-tools/pom.xml b/common-tools/swim-tools/pom.xml index a02534cb5b..5d34134f0e 100644 --- a/common-tools/swim-tools/pom.xml +++ b/common-tools/swim-tools/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas swim-tools - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/parent/pom.xml b/parent/pom.xml index 1827466ef4..b5c1d6c50f 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas clas12rec - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT pom diff --git a/pom.xml b/pom.xml index 7606408c85..373627eae8 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ 4.0.0 org.jlab.clas clas12 - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT pom @@ -15,7 +15,7 @@ org.jlab.clas clas12rec parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index 27f5dd04d7..858a47c750 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -13,31 +13,31 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-io - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT compile org.jlab.clas clas-tracking - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT compile org.jlab.clas clas-geometry - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT compile diff --git a/reconstruction/band/pom.xml b/reconstruction/band/pom.xml index 4ad0f0d1cd..bc8a83f562 100644 --- a/reconstruction/band/pom.xml +++ b/reconstruction/band/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/bg/pom.xml b/reconstruction/bg/pom.xml index ab507554b9..745d6c1cd4 100644 --- a/reconstruction/bg/pom.xml +++ b/reconstruction/bg/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/cnd/pom.xml b/reconstruction/cnd/pom.xml index 268347ce06..ab6c92c449 100644 --- a/reconstruction/cnd/pom.xml +++ b/reconstruction/cnd/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/cvt/pom.xml b/reconstruction/cvt/pom.xml index e23a719af7..935818b6df 100644 --- a/reconstruction/cvt/pom.xml +++ b/reconstruction/cvt/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -47,7 +47,7 @@ org.jlab.clas clas-tracking - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/dc/pom.xml b/reconstruction/dc/pom.xml index 9e6bf683d5..6fe2aefd4b 100644 --- a/reconstruction/dc/pom.xml +++ b/reconstruction/dc/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -28,25 +28,25 @@ org.jlab.clas clas-tracking - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -75,13 +75,13 @@ org.jlab.clas swim-tools - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-math - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/eb/pom.xml b/reconstruction/eb/pom.xml index 164f609129..88583f874a 100644 --- a/reconstruction/eb/pom.xml +++ b/reconstruction/eb/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -21,25 +21,25 @@ org.jlab.clas clas-utils - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-io - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/ec/pom.xml b/reconstruction/ec/pom.xml index 1ec425e2ba..36368baeb1 100644 --- a/reconstruction/ec/pom.xml +++ b/reconstruction/ec/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/fmt/pom.xml b/reconstruction/fmt/pom.xml index 506f90a6c3..64b0268937 100644 --- a/reconstruction/fmt/pom.xml +++ b/reconstruction/fmt/pom.xml @@ -15,21 +15,21 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas swim-tools - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/ft/pom.xml b/reconstruction/ft/pom.xml index 02257e8199..be4afe678a 100644 --- a/reconstruction/ft/pom.xml +++ b/reconstruction/ft/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/htcc/pom.xml b/reconstruction/htcc/pom.xml index f2b03f3967..d062d7440e 100644 --- a/reconstruction/htcc/pom.xml +++ b/reconstruction/htcc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/ltcc/pom.xml b/reconstruction/ltcc/pom.xml index 68034b0fa6..a057073ac8 100644 --- a/reconstruction/ltcc/pom.xml +++ b/reconstruction/ltcc/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/mc/pom.xml b/reconstruction/mc/pom.xml index 4ef3ce6e25..14b4be68d5 100644 --- a/reconstruction/mc/pom.xml +++ b/reconstruction/mc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/mltn/pom.xml b/reconstruction/mltn/pom.xml index 8600ca0731..c9d02ea88a 100644 --- a/reconstruction/mltn/pom.xml +++ b/reconstruction/mltn/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -34,13 +34,13 @@ org.jlab.clas clas-io - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/pom.xml b/reconstruction/pom.xml index 6fc382e21b..f84b0da94e 100644 --- a/reconstruction/pom.xml +++ b/reconstruction/pom.xml @@ -3,14 +3,14 @@ org.jlab.clas reconstruction - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/postproc/pom.xml b/reconstruction/postproc/pom.xml index e5dd75fe88..e506402f2f 100644 --- a/reconstruction/postproc/pom.xml +++ b/reconstruction/postproc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/raster/pom.xml b/reconstruction/raster/pom.xml index d618a838c6..88d5a9c065 100644 --- a/reconstruction/raster/pom.xml +++ b/reconstruction/raster/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/rich/pom.xml b/reconstruction/rich/pom.xml index 017d323f38..e5a3e615fc 100644 --- a/reconstruction/rich/pom.xml +++ b/reconstruction/rich/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/rtpc/pom.xml b/reconstruction/rtpc/pom.xml index c1ae590eb3..5b64ac8ec5 100644 --- a/reconstruction/rtpc/pom.xml +++ b/reconstruction/rtpc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -21,12 +21,12 @@ org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-tracking - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT compile diff --git a/reconstruction/swaps/pom.xml b/reconstruction/swaps/pom.xml index 042851b8a4..f9a499b2c5 100644 --- a/reconstruction/swaps/pom.xml +++ b/reconstruction/swaps/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-detector - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-io - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-reco - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/tof/pom.xml b/reconstruction/tof/pom.xml index 6dcab02120..e46df9fd91 100644 --- a/reconstruction/tof/pom.xml +++ b/reconstruction/tof/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/urwell/pom.xml b/reconstruction/urwell/pom.xml index 1f57be45a7..a772febfbc 100644 --- a/reconstruction/urwell/pom.xml +++ b/reconstruction/urwell/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT diff --git a/reconstruction/vtx/pom.xml b/reconstruction/vtx/pom.xml index f9f82ef1f6..5c1fc5df6c 100644 --- a/reconstruction/vtx/pom.xml +++ b/reconstruction/vtx/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT @@ -33,13 +33,13 @@ org.jlab.clas swim-tools - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar org.jlab.clas clas-tracking - 12.0.2t-SNAPSHOT + 12.0.3t-SNAPSHOT jar From a854a60d50fdc7a324f8aa7ad721cd1aa1daaaa4 Mon Sep 17 00:00:00 2001 From: Eric Fuchey Date: Wed, 9 Apr 2025 18:40:28 -0400 Subject: [PATCH 051/100] Looping on all track candidates in Kalman filter instead of the first track only, to address: https://github.com/JeffersonLab/coatjava/issues/553 Added simulation flag self-configuration in AHDC Engine processing; Initialized AHDC Kalman Filter vertex constraint to 0 to avoid a nonsensical value if the vertex constraint is enabled but no vertex constraint is available. Ensured this constraint will not be fetched from MC banks if MC banks are not available. --- .../rec/ahdc/KalmanFilter/KalmanFilter.java | 168 +++++++++--------- .../org/jlab/service/ahdc/AHDCEngine.java | 4 + 2 files changed, 88 insertions(+), 84 deletions(-) diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java index 85d23fedef..23bff6acb8 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java @@ -39,7 +39,7 @@ public class KalmanFilter { private void propagation(ArrayList tracks, DataEvent event, boolean IsMC) { try { - double vz_constraint; + double vz_constraint = 0; if(IsMC) {//If simulation read MC::Particle Bank ------------------------------------------------ DataBank bankParticle = event.getBank("MC::Particle"); double vxmc = bankParticle.getFloat("vx", 0)*10;//mm @@ -77,24 +77,23 @@ private void propagation(ArrayList tracks, DataEvent event, boolean IsMC) // Initialization material map HashMap materialHashMap = materialGeneration(); - // Initialization State Vector - final double x0 = 0.0; - final double y0 = 0.0; - final double z0 = tracks.get(0).get_Z0(); - //final - double px0 = tracks.get(0).get_px(); - //final - double py0 = tracks.get(0).get_py(); - final double pz0 = tracks.get(0).get_pz(); - //final double p_init = java.lang.Math.sqrt(px0*px0+py0*py0+pz0*pz0); - double[] y = new double[]{x0, y0, z0, px0, py0, pz0}; - // EPAF: *the line below is for TEST ONLY!!!* - //double[] y = new double[]{vxmc, vymc, vzmc, pxmc, pymc, pzmc}; - // Initialization hit - ArrayList AHDC_hits = tracks.get(0).getHits(); - ArrayList KF_hits = new ArrayList<>(); - //System.out.println(" px " + y[3] + " py " + y[4] +" pz " + y[5] +" vz " + y[2] + " number of hits: " + AHDC_hits.size() + " MC hits? " + sim_hits.size()); - for (org.jlab.rec.ahdc.Hit.Hit AHDC_hit : AHDC_hits) { + for (Track track : tracks) { + // Initialization State Vector + final double x0 = 0.0; + final double y0 = 0.0; + final double z0 = track.get_Z0(); + //final + double px0 = track.get_px(); + //final + double py0 = track.get_py(); + final double pz0 = track.get_pz(); + //final double p_init = java.lang.Math.sqrt(px0*px0+py0*py0+pz0*pz0); + double[] y = new double[]{x0, y0, z0, px0, py0, pz0}; + // Initialization hit + ArrayList AHDC_hits = track.getHits(); + ArrayList KF_hits = new ArrayList<>(); + //System.out.println(" px " + y[3] + " py " + y[4] +" pz " + y[5] +" vz " + y[2] + " number of hits: " + AHDC_hits.size() + " MC hits? " + sim_hits.size()); + for (org.jlab.rec.ahdc.Hit.Hit AHDC_hit : AHDC_hits) { Hit hit = new Hit(AHDC_hit.getSuperLayerId(), AHDC_hit.getLayerId(), AHDC_hit.getWireId(), AHDC_hit.getNbOfWires(), AHDC_hit.getRadius(), AHDC_hit.getDoca()); hit.setADC(AHDC_hit.getADC()); hit.setHitIdx(AHDC_hit.getId()); @@ -104,30 +103,30 @@ private void propagation(ArrayList tracks, DataEvent event, boolean IsMC) boolean phi_rollover = false; boolean aleardyHaveR = false; for (Hit o: KF_hits){ - if (o.r() == hit.r()){ - aleardyHaveR = true; - // //sign+ means (phi track - phi wire) > 0 - // if(o.phi()>hit.phi()){ - // if(Math.abs(o.phi()-hit.phi())< 2*Math.toRadians(360./o.getNumWires()) ){ - // o.setSign(-1); - // hit.setSign(+1); - // }else{ - // phi_rollover = true; - // hit.setSign(-1); - // o.setSign(+1); - // } - // }else{ - // if(Math.abs(o.phi()-hit.phi())< 2*Math.toRadians(360./o.getNumWires()) ){ - // hit.setSign(-1); - // o.setSign(+1); - // }else{ - // phi_rollover = true; - // o.setSign(-1); - // hit.setSign(+1); - // } - // } - // //System.out.println( " r = " + o.r() + " o.phi = " + o.phi() + " o.doca = " + o.getDoca()*o.getSign() + " hit.phi " + hit.phi() +" hit.doca = " + hit.getDoca()*hit.getSign() + " angle between wires: " + Math.toRadians(360./hit.getNumWires()) + " >= ? angle covered by docas: " + Math.atan( (o.getDoca()+hit.getDoca())/o.r() ) ); - } + if (o.r() == hit.r()){ + aleardyHaveR = true; + // //sign+ means (phi track - phi wire) > 0 + // if(o.phi()>hit.phi()){ + // if(Math.abs(o.phi()-hit.phi())< 2*Math.toRadians(360./o.getNumWires()) ){ + // o.setSign(-1); + // hit.setSign(+1); + // }else{ + // phi_rollover = true; + // hit.setSign(-1); + // o.setSign(+1); + // } + // }else{ + // if(Math.abs(o.phi()-hit.phi())< 2*Math.toRadians(360./o.getNumWires()) ){ + // hit.setSign(-1); + // o.setSign(+1); + // }else{ + // phi_rollover = true; + // o.setSign(-1); + // hit.setSign(+1); + // } + // } + // //System.out.println( " r = " + o.r() + " o.phi = " + o.phi() + " o.doca = " + o.getDoca()*o.getSign() + " hit.phi " + hit.phi() +" hit.doca = " + hit.getDoca()*hit.getSign() + " angle between wires: " + Math.toRadians(360./hit.getNumWires()) + " >= ? angle covered by docas: " + Math.atan( (o.getDoca()+hit.getDoca())/o.r() ) ); + } } if(!aleardyHaveR)KF_hits.add(hit); // if (phi_rollover){ @@ -135,66 +134,67 @@ private void propagation(ArrayList tracks, DataEvent event, boolean IsMC) // }else{ // KF_hits.add(hit); // } - } + } - double zbeam = 0; - if(IsVtxDefined)zbeam = vz_constraint;//test - final ArrayList forwardIndicators = forwardIndicators(KF_hits, materialHashMap); - final ArrayList backwardIndicators = backwardIndicators(KF_hits, materialHashMap, zbeam); + double zbeam = 0; + if(IsVtxDefined)zbeam = vz_constraint;//test + final ArrayList forwardIndicators = forwardIndicators(KF_hits, materialHashMap); + final ArrayList backwardIndicators = backwardIndicators(KF_hits, materialHashMap, zbeam); - // Start propagation - Stepper stepper = new Stepper(y); - RungeKutta4 RK4 = new RungeKutta4(proton, numberOfVariables, B); - Propagator propagator = new Propagator(RK4); - - // ---------------------------------------------------------------------------------------- - - // Initialization of the Kalman Fitter - RealVector initialStateEstimate = new ArrayRealVector(stepper.y); - //first 3 lines in cm^2; last 3 lines in MeV^2 - RealMatrix initialErrorCovariance = MatrixUtils.createRealMatrix(new double[][]{{1.00, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.00, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 25.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.00, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.00, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 25.0}}); - KFitter kFitter = new KFitter(initialStateEstimate, initialErrorCovariance, stepper, propagator); - kFitter.setVertexDefined(IsVtxDefined); + // Start propagation + Stepper stepper = new Stepper(y); + RungeKutta4 RK4 = new RungeKutta4(proton, numberOfVariables, B); + Propagator propagator = new Propagator(RK4); + + // ---------------------------------------------------------------------------------------- + + // Initialization of the Kalman Fitter + RealVector initialStateEstimate = new ArrayRealVector(stepper.y); + //first 3 lines in cm^2; last 3 lines in MeV^2 + RealMatrix initialErrorCovariance = MatrixUtils.createRealMatrix(new double[][]{{1.00, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.00, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 25.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.00, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.00, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 25.0}}); + KFitter kFitter = new KFitter(initialStateEstimate, initialErrorCovariance, stepper, propagator); + kFitter.setVertexDefined(IsVtxDefined); - for (int k = 0; k < Niter; k++) { + for (int k = 0; k < Niter; k++) { //System.out.println("--------- ForWard propagation !! ---------"); //Reset error covariance: //kFitter.ResetErrorCovariance(initialErrorCovariance); for (Indicator indicator : forwardIndicators) { - kFitter.predict(indicator); - if (indicator.haveAHit()) { - if( k==0 && indicator.hit.getHitIdx()>0){ - for (org.jlab.rec.ahdc.Hit.Hit AHDC_hit : AHDC_hits){ - if(AHDC_hit.getId()==indicator.hit.getHitIdx())AHDC_hit.setResidualPrefit(kFitter.residual(indicator)); - } - } - kFitter.correct(indicator); + kFitter.predict(indicator); + if (indicator.haveAHit()) { + if( k==0 && indicator.hit.getHitIdx()>0){ + for (org.jlab.rec.ahdc.Hit.Hit AHDC_hit : AHDC_hits){ + if(AHDC_hit.getId()==indicator.hit.getHitIdx())AHDC_hit.setResidualPrefit(kFitter.residual(indicator)); + } } + kFitter.correct(indicator); + } } //System.out.println("--------- BackWard propagation !! ---------"); for (Indicator indicator : backwardIndicators) { - kFitter.predict(indicator); - if (indicator.haveAHit()) { - kFitter.correct(indicator); - } + kFitter.predict(indicator); + if (indicator.haveAHit()) { + kFitter.correct(indicator); + } } - } + } - RealVector x_out = kFitter.getStateEstimationVector(); - tracks.get(0).setPositionAndMomentumForKF(x_out); + RealVector x_out = kFitter.getStateEstimationVector(); + track.setPositionAndMomentumForKF(x_out); - //Residual calcuation post fit: - for (Indicator indicator : forwardIndicators) { + //Residual calcuation post fit: + for (Indicator indicator : forwardIndicators) { kFitter.predict(indicator); if (indicator.haveAHit()) { - if( indicator.hit.getHitIdx()>0){ - for (org.jlab.rec.ahdc.Hit.Hit AHDC_hit : AHDC_hits){ - if(AHDC_hit.getId()==indicator.hit.getHitIdx())AHDC_hit.setResidual(kFitter.residual(indicator)); - } + if( indicator.hit.getHitIdx()>0){ + for (org.jlab.rec.ahdc.Hit.Hit AHDC_hit : AHDC_hits){ + if(AHDC_hit.getId()==indicator.hit.getHitIdx())AHDC_hit.setResidual(kFitter.residual(indicator)); } + } } - } + } + }//end of loop on track candidates } catch (Exception e) { // e.printStackTrace(); } 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 56d306a852..16ff67a657 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 @@ -113,6 +113,10 @@ public boolean processDataEvent(DataEvent event) { double magfield = 50.0; // what is this? double magfieldfactor = 1; // why is this here? + if(event.hasBank("MC::Particle")){ + simulation = true; + } + if (event.hasBank("RUN::config")) { DataBank bank = event.getBank("RUN::config"); runNo = bank.getInt("run", 0); From b1d6e4c38d54faa934c2aede88b2e7656f6c301b Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Thu, 10 Apr 2025 10:43:26 -0400 Subject: [PATCH 052/100] Add new entries in AHDC::Track, KFTrack and Hits --- etc/bankdefs/hipo4/alert.json | 68 +++++++++++++++++++ .../jlab/rec/ahdc/Banks/RecoBankWriter.java | 17 +++++ .../main/java/org/jlab/rec/ahdc/Hit/Hit.java | 15 +++- .../java/org/jlab/rec/ahdc/Track/Track.java | 58 +++++++++++++++- 4 files changed, 154 insertions(+), 4 deletions(-) diff --git a/etc/bankdefs/hipo4/alert.json b/etc/bankdefs/hipo4/alert.json index f4e1573f19..49644a1e34 100644 --- a/etc/bankdefs/hipo4/alert.json +++ b/etc/bankdefs/hipo4/alert.json @@ -193,6 +193,10 @@ "name": "time", "type": "D", "info": "time (ns) is leadingEdgeTime from AHDC::adc minus t0 from calibration" + }, { + "name": "trackId", + "type": "I", + "info": "track id, is -1 if not associated to a Track" } ] }, { @@ -238,6 +242,10 @@ "info": "Reco Tracks", "entries": [ { + "name": "trackId", + "type": "I", + "info": "track id" + }, { "name": "x", "type": "F", "info": "x position in mm" @@ -261,6 +269,34 @@ "name": "pz", "type": "F", "info": "pz in MeV" + }, { + "name": "n_hits", + "type": "I", + "info": "number of hits" + }, { + "name": "sum_adc", + "type": "I", + "info": "Sum of adc (adc)" + }, { + "name": "path", + "type": "F", + "info": "Length of the track (mm)" + }, { + "name": "dEdx", + "type": "F", + "info": "Deposited energy per path (adc/mm)" + }, { + "name": "p_drift", + "type": "F", + "info": "Momentum in the drift region (MeV)" + }, { + "name": "chi2", + "type": "F", + "info": "Sum of squared residuals (mm^2)" + }, { + "name": "sum_residuals", + "type": "F", + "info": "Sum of residuals (mm)" } ] }, { @@ -270,6 +306,10 @@ "info": "Reco Kalman Filter Tracks", "entries": [ { + "name": "trackId", + "type": "I", + "info": "track id" + }, { "name": "x", "type": "F", "info": "x position in mm" @@ -293,6 +333,34 @@ "name": "pz", "type": "F", "info": "pz in MeV" + }, { + "name": "n_hits", + "type": "I", + "info": "number of hits" + }, { + "name": "sum_adc", + "type": "I", + "info": "Sum of adc (adc)" + }, { + "name": "path", + "type": "F", + "info": "Length of the track (mm)" + }, { + "name": "dEdx", + "type": "F", + "info": "Deposited energy per path (adc/mm)" + }, { + "name": "p_drift", + "type": "F", + "info": "Momentum in the drift region (MeV)" + }, { + "name": "chi2", + "type": "F", + "info": "Sum of squared residuals (mm^2)" + }, { + "name": "sum_residuals", + "type": "F", + "info": "Sum of residuals (mm)" } ] }, { diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java index 729374a06b..41c5881cdf 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java @@ -27,6 +27,7 @@ public DataBank fillAHDCHitsBank(DataEvent event, ArrayList hitList) { bank.setDouble("residual", i, hitList.get(i).getResidual()); bank.setDouble("residual_prefit", i, hitList.get(i).getResidualPrefit()); bank.setDouble("time", i, hitList.get(i).getTime()); + bank.setInt("trackId", i, hitList.get(i).getTrackId()); } return bank; @@ -97,12 +98,20 @@ public DataBank fillAHDCTrackBank(DataEvent event, ArrayList tracks) { double py = track.get_py(); double pz = track.get_pz(); + bank.setInt("trackId", row, (int) track.get_trackId()); bank.setFloat("x", row, (float) x); bank.setFloat("y", row, (float) y); bank.setFloat("z", row, (float) z); bank.setFloat("px", row, (float) px); bank.setFloat("py", row, (float) py); bank.setFloat("pz", row, (float) pz); + bank.setInt("n_hits", row, (int) track.get_n_hits()); + bank.setInt("sum_adc", row, (int) track.get_sum_adc()); + bank.setFloat("path", row, (float) track.get_path()); + bank.setFloat("dEdx", row, (float) track.get_dEdx()); + bank.setFloat("p_drift", row, (float) track.get_p_drift()); + bank.setFloat("chi2", row, (float) track.get_chi2()); + bank.setFloat("sum_residuals", row, (float) track.get_sum_residuals()); row++; } @@ -125,12 +134,20 @@ public DataBank fillAHDCKFTrackBank(DataEvent event, ArrayList tracks) { double py = track.getPy0_kf(); double pz = track.getPz0_kf(); + bank.setInt("trackId", row, (int) track.get_trackId()); bank.setFloat("x", row, (float) x); bank.setFloat("y", row, (float) y); bank.setFloat("z", row, (float) z); bank.setFloat("px", row, (float) px); bank.setFloat("py", row, (float) py); bank.setFloat("pz", row, (float) pz); + bank.setInt("n_hits", row, (int) track.get_n_hits_kf()); + bank.setInt("sum_adc", row, (int) track.get_sum_adc_kf()); + bank.setFloat("path", row, (float) track.get_path_kf()); + bank.setFloat("dEdx", row, (float) track.get_dEdx_kf()); + bank.setFloat("p_drift", row, (float) track.get_p_drift_kf()); + bank.setFloat("chi2", row, (float) track.get_chi2_kf()); + bank.setFloat("sum_residuals", row, (float) track.get_sum_residuals_kf()); row++; } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java index 4347da8eb2..1cfe7a7162 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java @@ -20,6 +20,7 @@ public class Hit implements Comparable { private double y; private double residual_prefit; private double residual; + private int trackId; //updated constructor with ADC public Hit(int _Id, int _Super_layer, int _Layer, int _Wire, double _Doca, double _ADC, double _Time) { @@ -33,6 +34,7 @@ public Hit(int _Id, int _Super_layer, int _Layer, int _Wire, double _Doca, doubl wirePosition(); this.residual_prefit = 0.0; this.residual = 0.0; + this.trackId = -1; // not defined yet } private void wirePosition() { @@ -68,8 +70,8 @@ private void wirePosition() { R_layer = R_layer + DR_layer * (this.layerId-1); double alphaW_layer = Math.toRadians(round / (numWires)); //should it be at z = 0? in which case, we need to account for the positive or negative stereo angle... - double wx = R_layer * Math.cos(alphaW_layer * (this.wireId-1) + 0.5*thster * (Math.pow(-1, this.superLayerId-1))); - double wy = R_layer * Math.sin(alphaW_layer * (this.wireId-1) + 0.5*thster * (Math.pow(-1, this.superLayerId-1))); + double wx = -R_layer * Math.sin(alphaW_layer * (this.wireId-1) + 0.5*thster * (Math.pow(-1, this.superLayerId-1))); + double wy = -R_layer * Math.cos(alphaW_layer * (this.wireId-1) + 0.5*thster * (Math.pow(-1, this.superLayerId-1))); //System.out.println(" superlayer " + this.superLayerId + " layer " + this.layerId + " wire " + this.wireId + " R_layer " + R_layer + " wx " + wx + " wy " + wy); @@ -161,4 +163,13 @@ public void setResidualPrefit(double resid) { public double getTime() { return time; } + + public int getTrackId() { + return trackId; + } + + public void setTrackId(int _trackId) { + this.trackId = _trackId; + } + } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java index 1e9ace5a68..e6f8a47bfc 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java @@ -15,20 +15,36 @@ public class Track { private List _Clusters = new ArrayList<>(); private boolean _Used = false; private final ArrayList hits = new ArrayList<>(); - + + private int trackId = -1; ///< id of the track + // AHDC::Track private double x0 = 0; private double y0 = 0; private double z0 = 0; private double px0 = 0; private double py0 = 0; private double pz0 = 0; - + private double dEdx = 0; ///< deposited energy per path length (adc/mm) + private double p_drift = 0; ///< momentum in the drift region (MeV) + private int n_hits = 0; ///< number of hits + private double path = 0; ///< length of the track (mm) + private int sum_adc = 0; ///< sum of adc (adc) + private double chi2 = 0; ///< sum of residuals^2 (mm^2) + private double sum_residuals = 0; ///< sum of residuals (mm) + // AHDC::KFTrack private double x0_kf = 0; private double y0_kf = 0; private double z0_kf = 0; private double px0_kf = 0; private double py0_kf = 0; private double pz0_kf = 0; + private double dEdx_kf = 0; ///< deposited energy per path length (adc/mm) + private double p_drift_kf = 0; ///< momentum in the drift region (MeV) + private int n_hits_kf = 0; ///< number of hits + private double path_kf = 0; ///< length of the track (mm) + private int sum_adc_kf = 0; ///< sum of adc (adc) + private double chi2_kf = 0; ///< sum of residuals^2 (mm^2) + private double sum_residuals_kf = 0; ///< sum of residuals (mm) public Track(List clusters) { this._Clusters = clusters; @@ -161,4 +177,42 @@ public double getPy0_kf() { public double getPz0_kf() { return pz0_kf; } + + public void set_trackId(int _trackId) { trackId = _trackId;} + public int get_trackId() {return trackId;} + // AHDC::Track + public void set_dEdx(double _dEdx) { dEdx = _dEdx;} + public void set_p_drift(double _p_drift) { p_drift = _p_drift;} + public void set_n_hits(int _n_hits) { n_hits = _n_hits;} + public void set_path(double _path) { path = _path;} + public void set_sum_adc(int _sum_adc) { sum_adc = _sum_adc;} + public void set_chi2(double _chi2) { chi2 = _chi2;} + public void set_sum_residuals(double _sum_residuals) { sum_residuals = _sum_residuals;} + + public double get_dEdx() {return dEdx;} + public double get_p_drift() {return p_drift;} + public int get_n_hits() {return n_hits;} + public double get_path() {return path;} + public int get_sum_adc() {return sum_adc;} + public double get_chi2() {return chi2;} + public double get_sum_residuals() {return sum_residuals;} + + // AHDC::KFTrack + + public void set_dEdx_kf(double _dEdx_kf) { dEdx_kf = _dEdx_kf;} + public void set_p_drift_kf(double _p_drift_kf) { p_drift_kf = _p_drift_kf;} + public void set_n_hits_kf(int _n_hits_kf) { n_hits_kf = _n_hits_kf;} + public void set_path_kf(double _path_kf) { path_kf = _path_kf;} + public void set_sum_adc_kf(int _sum_adc_kf) { sum_adc_kf = _sum_adc_kf;} + public void set_chi2_kf(double _chi2_kf) { chi2_kf = _chi2_kf;} + public void set_sum_residuals_kf(double _sum_residuals_kf) { sum_residuals_kf = _sum_residuals_kf;} + + public double get_dEdx_kf() {return dEdx_kf;} + public double get_p_drift_kf() {return p_drift_kf;} + public int get_n_hits_kf() {return n_hits_kf;} + public double get_path_kf() {return path_kf;} + public int get_sum_adc_kf() {return sum_adc_kf;} + public double get_chi2_kf() {return chi2_kf;} + public double get_sum_residuals_kf() {return sum_residuals_kf;} + } From 35999857e002f785e6e602b8c681fc6e2ffae827 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Thu, 10 Apr 2025 11:15:00 -0400 Subject: [PATCH 053/100] Fill attributes of AHDC::Tracks, KFTrack, Hits --- .../jlab/rec/ahdc/Banks/RecoBankWriter.java | 8 ++-- .../rec/ahdc/KalmanFilter/KalmanFilter.java | 21 +++++++++- .../java/org/jlab/rec/ahdc/Track/Track.java | 42 +++++++------------ 3 files changed, 38 insertions(+), 33 deletions(-) diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java index 41c5881cdf..5f7bc96736 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java @@ -141,13 +141,13 @@ public DataBank fillAHDCKFTrackBank(DataEvent event, ArrayList tracks) { bank.setFloat("px", row, (float) px); bank.setFloat("py", row, (float) py); bank.setFloat("pz", row, (float) pz); - bank.setInt("n_hits", row, (int) track.get_n_hits_kf()); - bank.setInt("sum_adc", row, (int) track.get_sum_adc_kf()); + bank.setInt("n_hits", row, (int) track.get_n_hits()); + bank.setInt("sum_adc", row, (int) track.get_sum_adc()); bank.setFloat("path", row, (float) track.get_path_kf()); bank.setFloat("dEdx", row, (float) track.get_dEdx_kf()); bank.setFloat("p_drift", row, (float) track.get_p_drift_kf()); - bank.setFloat("chi2", row, (float) track.get_chi2_kf()); - bank.setFloat("sum_residuals", row, (float) track.get_sum_residuals_kf()); + bank.setFloat("chi2", row, (float) track.get_chi2()); + bank.setFloat("sum_residuals", row, (float) track.get_sum_residuals()); row++; } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java index 23bff6acb8..7dca755a9e 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java @@ -76,8 +76,10 @@ private void propagation(ArrayList tracks, DataEvent event, boolean IsMC) // Initialization material map HashMap materialHashMap = materialGeneration(); - + int trackId = 0; for (Track track : tracks) { + trackId++; + track.set_trackId(trackId); // Initialization State Vector final double x0 = 0.0; final double y0 = 0.0; @@ -93,11 +95,15 @@ private void propagation(ArrayList tracks, DataEvent event, boolean IsMC) ArrayList AHDC_hits = track.getHits(); ArrayList KF_hits = new ArrayList<>(); //System.out.println(" px " + y[3] + " py " + y[4] +" pz " + y[5] +" vz " + y[2] + " number of hits: " + AHDC_hits.size() + " MC hits? " + sim_hits.size()); + track.set_n_hits(AHDC_hits.size()); for (org.jlab.rec.ahdc.Hit.Hit AHDC_hit : AHDC_hits) { Hit hit = new Hit(AHDC_hit.getSuperLayerId(), AHDC_hit.getLayerId(), AHDC_hit.getWireId(), AHDC_hit.getNbOfWires(), AHDC_hit.getRadius(), AHDC_hit.getDoca()); hit.setADC(AHDC_hit.getADC()); hit.setHitIdx(AHDC_hit.getId()); hit.setSign(0); + // set track id + AHDC_hit.setTrackId(trackId); + //System.out.println( " r = " + hit.r() + " hit.phi " + hit.phi() +" hit.doca = " + hit.getDoca() ); // Do delete hit with same radius boolean phi_rollover = false; @@ -194,6 +200,19 @@ private void propagation(ArrayList tracks, DataEvent event, boolean IsMC) } } } + // At this stage, all relevants AHDC hits are filled + // Compute sum_adc, sum_residuals and chi2 + int sum_adc = 0; + double sum_residuals = 0; + double chi2 = 0; + for (org.jlab.rec.ahdc.Hit.Hit AHDC_hit : AHDC_hits) { + sum_adc += AHDC_hit.getADC(); + sum_residuals += AHDC_hit.getResidual(); + chi2 += Math.pow(AHDC_hit.getResidual(),2.0); + } + track.set_sum_adc(sum_adc); + track.set_sum_residuals(sum_residuals); + track.set_chi2(chi2); }//end of loop on track candidates } catch (Exception e) { // e.printStackTrace(); diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java index e6f8a47bfc..b2807ebb66 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java @@ -17,6 +17,10 @@ public class Track { private final ArrayList hits = new ArrayList<>(); private int trackId = -1; ///< id of the track + private int n_hits = 0; ///< number of hits + private int sum_adc = 0; ///< sum of adc (adc) + private double sum_residuals = 0; ///< sum of residuals (mm) + private double chi2 = 0; ///< sum of residuals^2 (mm^2) // AHDC::Track private double x0 = 0; private double y0 = 0; @@ -26,11 +30,7 @@ public class Track { private double pz0 = 0; private double dEdx = 0; ///< deposited energy per path length (adc/mm) private double p_drift = 0; ///< momentum in the drift region (MeV) - private int n_hits = 0; ///< number of hits private double path = 0; ///< length of the track (mm) - private int sum_adc = 0; ///< sum of adc (adc) - private double chi2 = 0; ///< sum of residuals^2 (mm^2) - private double sum_residuals = 0; ///< sum of residuals (mm) // AHDC::KFTrack private double x0_kf = 0; private double y0_kf = 0; @@ -40,11 +40,7 @@ public class Track { private double pz0_kf = 0; private double dEdx_kf = 0; ///< deposited energy per path length (adc/mm) private double p_drift_kf = 0; ///< momentum in the drift region (MeV) - private int n_hits_kf = 0; ///< number of hits private double path_kf = 0; ///< length of the track (mm) - private int sum_adc_kf = 0; ///< sum of adc (adc) - private double chi2_kf = 0; ///< sum of residuals^2 (mm^2) - private double sum_residuals_kf = 0; ///< sum of residuals (mm) public Track(List clusters) { this._Clusters = clusters; @@ -177,42 +173,32 @@ public double getPy0_kf() { public double getPz0_kf() { return pz0_kf; } - + + // Same for Track and KFTrack public void set_trackId(int _trackId) { trackId = _trackId;} - public int get_trackId() {return trackId;} - // AHDC::Track - public void set_dEdx(double _dEdx) { dEdx = _dEdx;} - public void set_p_drift(double _p_drift) { p_drift = _p_drift;} public void set_n_hits(int _n_hits) { n_hits = _n_hits;} - public void set_path(double _path) { path = _path;} public void set_sum_adc(int _sum_adc) { sum_adc = _sum_adc;} public void set_chi2(double _chi2) { chi2 = _chi2;} public void set_sum_residuals(double _sum_residuals) { sum_residuals = _sum_residuals;} - - public double get_dEdx() {return dEdx;} - public double get_p_drift() {return p_drift;} + public int get_trackId() {return trackId;} public int get_n_hits() {return n_hits;} - public double get_path() {return path;} public int get_sum_adc() {return sum_adc;} public double get_chi2() {return chi2;} public double get_sum_residuals() {return sum_residuals;} + // AHDC::Track + public void set_dEdx(double _dEdx) { dEdx = _dEdx;} + public void set_p_drift(double _p_drift) { p_drift = _p_drift;} + public void set_path(double _path) { path = _path;} + public double get_dEdx() {return dEdx;} + public double get_p_drift() {return p_drift;} + public double get_path() {return path;} // AHDC::KFTrack - public void set_dEdx_kf(double _dEdx_kf) { dEdx_kf = _dEdx_kf;} public void set_p_drift_kf(double _p_drift_kf) { p_drift_kf = _p_drift_kf;} - public void set_n_hits_kf(int _n_hits_kf) { n_hits_kf = _n_hits_kf;} public void set_path_kf(double _path_kf) { path_kf = _path_kf;} - public void set_sum_adc_kf(int _sum_adc_kf) { sum_adc_kf = _sum_adc_kf;} - public void set_chi2_kf(double _chi2_kf) { chi2_kf = _chi2_kf;} - public void set_sum_residuals_kf(double _sum_residuals_kf) { sum_residuals_kf = _sum_residuals_kf;} - public double get_dEdx_kf() {return dEdx_kf;} public double get_p_drift_kf() {return p_drift_kf;} - public int get_n_hits_kf() {return n_hits_kf;} public double get_path_kf() {return path_kf;} - public int get_sum_adc_kf() {return sum_adc_kf;} - public double get_chi2_kf() {return chi2_kf;} - public double get_sum_residuals_kf() {return sum_residuals_kf;} } From 9ce6bd4d9216074a3aa3885e6c3b65f451c46fee Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 11 Apr 2025 11:11:55 -0400 Subject: [PATCH 054/100] bump version --- common-tools/clara-io/pom.xml | 4 ++-- common-tools/clas-analysis/pom.xml | 20 ++++++++--------- common-tools/clas-detector/pom.xml | 10 ++++----- common-tools/clas-geometry/pom.xml | 4 ++-- common-tools/clas-io/pom.xml | 8 +++---- common-tools/clas-jcsg/pom.xml | 8 +++---- 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 | 16 +++++++------- common-tools/clas-tracking/pom.xml | 6 +++--- common-tools/clas-utils/pom.xml | 6 +++--- common-tools/cnuphys/magfield/pom.xml | 2 +- common-tools/cnuphys/swimmer/pom.xml | 2 +- common-tools/coat-lib/deployDistribution.sh | 2 +- common-tools/coat-lib/pom.xml | 24 ++++++++++----------- common-tools/parent/pom.xml | 2 +- common-tools/pom.xml | 4 ++-- common-tools/swim-tools/pom.xml | 6 +++--- parent/pom.xml | 2 +- pom.xml | 4 ++-- reconstruction/alert/pom.xml | 10 ++++----- reconstruction/band/pom.xml | 4 ++-- reconstruction/bg/pom.xml | 8 +++---- reconstruction/cnd/pom.xml | 2 +- reconstruction/cvt/pom.xml | 6 +++--- reconstruction/dc/pom.xml | 14 ++++++------ reconstruction/eb/pom.xml | 10 ++++----- reconstruction/ec/pom.xml | 6 +++--- reconstruction/fmt/pom.xml | 6 +++--- reconstruction/ft/pom.xml | 4 ++-- reconstruction/htcc/pom.xml | 4 ++-- reconstruction/ltcc/pom.xml | 4 ++-- reconstruction/mc/pom.xml | 4 ++-- reconstruction/mltn/pom.xml | 6 +++--- reconstruction/pom.xml | 4 ++-- reconstruction/postproc/pom.xml | 8 +++---- reconstruction/raster/pom.xml | 4 ++-- reconstruction/rich/pom.xml | 6 +++--- reconstruction/rtpc/pom.xml | 6 +++--- reconstruction/swaps/pom.xml | 8 +++---- reconstruction/tof/pom.xml | 4 ++-- reconstruction/urwell/pom.xml | 6 +++--- reconstruction/vtx/pom.xml | 6 +++--- 44 files changed, 141 insertions(+), 141 deletions(-) diff --git a/common-tools/clara-io/pom.xml b/common-tools/clara-io/pom.xml index e5ca4378d7..5546246b49 100644 --- a/common-tools/clara-io/pom.xml +++ b/common-tools/clara-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clara-io - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/common-tools/clas-analysis/pom.xml b/common-tools/clas-analysis/pom.xml index 5c7f8bdfe5..6632f2ba1a 100644 --- a/common-tools/clas-analysis/pom.xml +++ b/common-tools/clas-analysis/pom.xml @@ -3,63 +3,63 @@ 4.0.0 org.jlab.clas clas-analysis - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-utils - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-physics - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-io - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas swim-tools - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-detector - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/common-tools/clas-detector/pom.xml b/common-tools/clas-detector/pom.xml index fcb86c2c0c..224e135c66 100644 --- a/common-tools/clas-detector/pom.xml +++ b/common-tools/clas-detector/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-detector - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-utils - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -29,13 +29,13 @@ org.jlab.clas clas-io - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/common-tools/clas-geometry/pom.xml b/common-tools/clas-geometry/pom.xml index 93d4069aa5..ba4fcdf68b 100644 --- a/common-tools/clas-geometry/pom.xml +++ b/common-tools/clas-geometry/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-geometry - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/common-tools/clas-io/pom.xml b/common-tools/clas-io/pom.xml index 5b16e66648..67f9a54e3b 100644 --- a/common-tools/clas-io/pom.xml +++ b/common-tools/clas-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-io - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -90,13 +90,13 @@ org.jlab.clas clas-utils - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-logging - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT compile diff --git a/common-tools/clas-jcsg/pom.xml b/common-tools/clas-jcsg/pom.xml index 380ec557c2..02735e2881 100644 --- a/common-tools/clas-jcsg/pom.xml +++ b/common-tools/clas-jcsg/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-jcsg - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -27,12 +27,12 @@ org.jlab.clas clas-geometry - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-detector - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT java3d diff --git a/common-tools/clas-logging/pom.xml b/common-tools/clas-logging/pom.xml index f270c43b8f..2bdfb280ce 100644 --- a/common-tools/clas-logging/pom.xml +++ b/common-tools/clas-logging/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-logging - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/common-tools/clas-math/pom.xml b/common-tools/clas-math/pom.xml index f99625c103..570d147aed 100644 --- a/common-tools/clas-math/pom.xml +++ b/common-tools/clas-math/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-math - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/common-tools/clas-physics/pom.xml b/common-tools/clas-physics/pom.xml index 30095fa940..5ad14d0153 100644 --- a/common-tools/clas-physics/pom.xml +++ b/common-tools/clas-physics/pom.xml @@ -4,14 +4,14 @@ org.jlab.clas clas-physics - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/common-tools/clas-reco/pom.xml b/common-tools/clas-reco/pom.xml index 2878d114ce..614f64e098 100644 --- a/common-tools/clas-reco/pom.xml +++ b/common-tools/clas-reco/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -42,37 +42,37 @@ org.jlab.clas clas-math - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-io - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-logging - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-physics - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-utils - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-detector - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/common-tools/clas-tracking/pom.xml b/common-tools/clas-tracking/pom.xml index bab40fa710..b31f82df5e 100644 --- a/common-tools/clas-tracking/pom.xml +++ b/common-tools/clas-tracking/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-tracking - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -22,7 +22,7 @@ org.jlab.clas swim-tools - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar diff --git a/common-tools/clas-utils/pom.xml b/common-tools/clas-utils/pom.xml index 4f8ff95eea..42e56f9ec1 100644 --- a/common-tools/clas-utils/pom.xml +++ b/common-tools/clas-utils/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-utils - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-logging - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.apache.commons diff --git a/common-tools/cnuphys/magfield/pom.xml b/common-tools/cnuphys/magfield/pom.xml index b086b74c9c..3f1ef42a20 100644 --- a/common-tools/cnuphys/magfield/pom.xml +++ b/common-tools/cnuphys/magfield/pom.xml @@ -23,7 +23,7 @@ org.jlab.clas clas-math - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/common-tools/cnuphys/swimmer/pom.xml b/common-tools/cnuphys/swimmer/pom.xml index 151610e2dc..3d11997e4f 100644 --- a/common-tools/cnuphys/swimmer/pom.xml +++ b/common-tools/cnuphys/swimmer/pom.xml @@ -35,7 +35,7 @@ org.jlab.clas clas-math - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/common-tools/coat-lib/deployDistribution.sh b/common-tools/coat-lib/deployDistribution.sh index 362c1e4ded..7cb9e417a9 100755 --- a/common-tools/coat-lib/deployDistribution.sh +++ b/common-tools/coat-lib/deployDistribution.sh @@ -8,7 +8,7 @@ cd `dirname $0` # Script is exporting existing Jar files to repository #------------------------------------------------------------------------------------------------- -VERSION=12.0.3t +VERSION=12.0.4t mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file \ -Dfile=target/coat-libs-${VERSION}-SNAPSHOT.jar \ diff --git a/common-tools/coat-lib/pom.xml b/common-tools/coat-lib/pom.xml index 9591dcc8b3..f4375508a0 100644 --- a/common-tools/coat-lib/pom.xml +++ b/common-tools/coat-lib/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jlab.clas coat-libs - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT pom @@ -94,67 +94,67 @@ org.jlab.clas clas-io - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clara-io - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-utils - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-detector - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-physics - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas swim-tools - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-tracking - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/common-tools/parent/pom.xml b/common-tools/parent/pom.xml index 5aefb5b5fd..396ca44ad3 100644 --- a/common-tools/parent/pom.xml +++ b/common-tools/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas common-tools - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT pom diff --git a/common-tools/pom.xml b/common-tools/pom.xml index 9dff1ca382..c24371cbd6 100644 --- a/common-tools/pom.xml +++ b/common-tools/pom.xml @@ -2,14 +2,14 @@ 4.0.0 org.jlab.clas common-tools - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/common-tools/swim-tools/pom.xml b/common-tools/swim-tools/pom.xml index 5d34134f0e..4ba16e930a 100644 --- a/common-tools/swim-tools/pom.xml +++ b/common-tools/swim-tools/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas swim-tools - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/parent/pom.xml b/parent/pom.xml index b5c1d6c50f..a3b7757c93 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas clas12rec - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT pom diff --git a/pom.xml b/pom.xml index 373627eae8..a275888961 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ 4.0.0 org.jlab.clas clas12 - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT pom @@ -15,7 +15,7 @@ org.jlab.clas clas12rec parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index 858a47c750..cd7c60646e 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -13,31 +13,31 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-io - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT compile org.jlab.clas clas-tracking - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT compile org.jlab.clas clas-geometry - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT compile diff --git a/reconstruction/band/pom.xml b/reconstruction/band/pom.xml index bc8a83f562..148e983130 100644 --- a/reconstruction/band/pom.xml +++ b/reconstruction/band/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/bg/pom.xml b/reconstruction/bg/pom.xml index 745d6c1cd4..72a3889ab3 100644 --- a/reconstruction/bg/pom.xml +++ b/reconstruction/bg/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/cnd/pom.xml b/reconstruction/cnd/pom.xml index ab6c92c449..9ce5c627ef 100644 --- a/reconstruction/cnd/pom.xml +++ b/reconstruction/cnd/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/cvt/pom.xml b/reconstruction/cvt/pom.xml index 935818b6df..e01720e1d4 100644 --- a/reconstruction/cvt/pom.xml +++ b/reconstruction/cvt/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -47,7 +47,7 @@ org.jlab.clas clas-tracking - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/dc/pom.xml b/reconstruction/dc/pom.xml index 6fe2aefd4b..f880fcd39c 100644 --- a/reconstruction/dc/pom.xml +++ b/reconstruction/dc/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -28,25 +28,25 @@ org.jlab.clas clas-tracking - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -75,13 +75,13 @@ org.jlab.clas swim-tools - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-math - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/eb/pom.xml b/reconstruction/eb/pom.xml index 88583f874a..95967772f8 100644 --- a/reconstruction/eb/pom.xml +++ b/reconstruction/eb/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -21,25 +21,25 @@ org.jlab.clas clas-utils - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-io - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/ec/pom.xml b/reconstruction/ec/pom.xml index 36368baeb1..c1ac0c625e 100644 --- a/reconstruction/ec/pom.xml +++ b/reconstruction/ec/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/fmt/pom.xml b/reconstruction/fmt/pom.xml index 64b0268937..9e4d2384dc 100644 --- a/reconstruction/fmt/pom.xml +++ b/reconstruction/fmt/pom.xml @@ -15,21 +15,21 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas swim-tools - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/ft/pom.xml b/reconstruction/ft/pom.xml index be4afe678a..94ce99880c 100644 --- a/reconstruction/ft/pom.xml +++ b/reconstruction/ft/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/htcc/pom.xml b/reconstruction/htcc/pom.xml index d062d7440e..52a7cb1a24 100644 --- a/reconstruction/htcc/pom.xml +++ b/reconstruction/htcc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/ltcc/pom.xml b/reconstruction/ltcc/pom.xml index a057073ac8..f089a00c63 100644 --- a/reconstruction/ltcc/pom.xml +++ b/reconstruction/ltcc/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/mc/pom.xml b/reconstruction/mc/pom.xml index 14b4be68d5..142290b998 100644 --- a/reconstruction/mc/pom.xml +++ b/reconstruction/mc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/mltn/pom.xml b/reconstruction/mltn/pom.xml index c9d02ea88a..d1bcf98449 100644 --- a/reconstruction/mltn/pom.xml +++ b/reconstruction/mltn/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -34,13 +34,13 @@ org.jlab.clas clas-io - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/pom.xml b/reconstruction/pom.xml index f84b0da94e..5c135ae851 100644 --- a/reconstruction/pom.xml +++ b/reconstruction/pom.xml @@ -3,14 +3,14 @@ org.jlab.clas reconstruction - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/postproc/pom.xml b/reconstruction/postproc/pom.xml index e506402f2f..a0959c0c4d 100644 --- a/reconstruction/postproc/pom.xml +++ b/reconstruction/postproc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/raster/pom.xml b/reconstruction/raster/pom.xml index 88d5a9c065..ac7f5443bf 100644 --- a/reconstruction/raster/pom.xml +++ b/reconstruction/raster/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/rich/pom.xml b/reconstruction/rich/pom.xml index e5a3e615fc..64c0a527f5 100644 --- a/reconstruction/rich/pom.xml +++ b/reconstruction/rich/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/rtpc/pom.xml b/reconstruction/rtpc/pom.xml index 5b64ac8ec5..3bfeee6662 100644 --- a/reconstruction/rtpc/pom.xml +++ b/reconstruction/rtpc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -21,12 +21,12 @@ org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-tracking - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT compile diff --git a/reconstruction/swaps/pom.xml b/reconstruction/swaps/pom.xml index f9a499b2c5..fd621b13c3 100644 --- a/reconstruction/swaps/pom.xml +++ b/reconstruction/swaps/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-detector - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-io - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-reco - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/tof/pom.xml b/reconstruction/tof/pom.xml index e46df9fd91..741a59c7d9 100644 --- a/reconstruction/tof/pom.xml +++ b/reconstruction/tof/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/urwell/pom.xml b/reconstruction/urwell/pom.xml index a772febfbc..66504ba3a9 100644 --- a/reconstruction/urwell/pom.xml +++ b/reconstruction/urwell/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT diff --git a/reconstruction/vtx/pom.xml b/reconstruction/vtx/pom.xml index 5c1fc5df6c..92620f964b 100644 --- a/reconstruction/vtx/pom.xml +++ b/reconstruction/vtx/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT @@ -33,13 +33,13 @@ org.jlab.clas swim-tools - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar org.jlab.clas clas-tracking - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT jar From b2aa46a2024bb5f64d52c82475329a52ff32a489 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 07:14:06 +0000 Subject: [PATCH 055/100] build(deps): bump org.jacoco:jacoco-maven-plugin from 0.8.12 to 0.8.13 Bumps [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco) from 0.8.12 to 0.8.13. - [Release notes](https://github.com/jacoco/jacoco/releases) - [Commits](https://github.com/jacoco/jacoco/compare/v0.8.12...v0.8.13) --- updated-dependencies: - dependency-name: org.jacoco:jacoco-maven-plugin dependency-version: 0.8.13 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- parent/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/parent/pom.xml b/parent/pom.xml index a3b7757c93..c0d16d1a38 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -56,7 +56,7 @@ org.jacoco jacoco-maven-plugin - 0.8.12 + 0.8.13 @@ -177,7 +177,7 @@ org.jacoco jacoco-maven-plugin - 0.8.12 + 0.8.13 From d9d4ea67aeb63e5a529d0734e7c52c3804d96671 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 07:13:57 +0000 Subject: [PATCH 056/100] build(deps): bump org.apache.maven.plugins:maven-compiler-plugin Bumps [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.13.0 to 3.14.0. - [Release notes](https://github.com/apache/maven-compiler-plugin/releases) - [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.13.0...maven-compiler-plugin-3.14.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-compiler-plugin dependency-version: 3.14.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- common-tools/cnuphys/parent/pom.xml | 2 +- parent/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common-tools/cnuphys/parent/pom.xml b/common-tools/cnuphys/parent/pom.xml index 0b2ed202a4..4d23938672 100644 --- a/common-tools/cnuphys/parent/pom.xml +++ b/common-tools/cnuphys/parent/pom.xml @@ -46,7 +46,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.13.0 + 3.14.0 UTF-8 17 diff --git a/parent/pom.xml b/parent/pom.xml index c0d16d1a38..e86c088389 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -134,7 +134,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.13.0 + 3.14.0 17 UTF-8 From f1f822fd7ff6ac412be9f24a9bfb161ee1de9665 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Fri, 11 Apr 2025 09:56:54 -0400 Subject: [PATCH 057/100] Normalise bank name in alert.json --- etc/bankdefs/hipo4/alert.json | 42 +++++++++++++++++------------------ 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/etc/bankdefs/hipo4/alert.json b/etc/bankdefs/hipo4/alert.json index 49644a1e34..6689f5e3dd 100644 --- a/etc/bankdefs/hipo4/alert.json +++ b/etc/bankdefs/hipo4/alert.json @@ -156,13 +156,13 @@ } ] },{ - "name": "AHDC::Hits", + "name": "AHDC::hits", "group": 23000, "item": 23, "info": "Raw Hits", "entries": [ { - "name": "ID", + "name": "id", "type": "S", "info": "hit id" }, { @@ -178,7 +178,7 @@ "type": "I", "info": "wire number" }, { - "name": "Doca", + "name": "doca", "type": "D", "info": "distance od closest approch (mm) is actually the distance from time2distance calibration" }, { @@ -194,55 +194,55 @@ "type": "D", "info": "time (ns) is leadingEdgeTime from AHDC::adc minus t0 from calibration" }, { - "name": "trackId", + "name": "trackid", "type": "I", "info": "track id, is -1 if not associated to a Track" } ] }, { - "name": "AHDC::PreClusters", + "name": "AHDC::preclusters", "group": 23000, "item": 24, "info": "Pre Clusters info", "entries": [ { - "name": "X", + "name": "x", "type": "F", - "info": "X info (mm)" + "info": "x info (mm)" }, { - "name": "Y", + "name": "y", "type": "F", - "info": "Y info (mm)" + "info": "y info (mm)" } ] }, { - "name": "AHDC::Clusters", + "name": "AHDC::clusters", "group": 23000, "item": 25, "info": "Clusters info", "entries": [ { - "name": "X", + "name": "x", "type": "F", - "info": "X info (mm)" + "info": "x info (mm)" }, { - "name": "Y", + "name": "y", "type": "F", - "info": "Y info (mm)" + "info": "y info (mm)" }, { - "name": "Z", + "name": "z", "type": "F", - "info": "Z info (mm)" + "info": "z info (mm)" } ] }, { - "name": "AHDC::Track", + "name": "AHDC::track", "group": 23000, "item": 21, "info": "Reco Tracks", "entries": [ { - "name": "trackId", + "name": "trackid", "type": "I", "info": "track id" }, { @@ -300,13 +300,13 @@ } ] }, { - "name": "AHDC::KFTrack", + "name": "AHDC::kftrack", "group": 23000, "item": 26, "info": "Reco Kalman Filter Tracks", "entries": [ { - "name": "trackId", + "name": "trackid", "type": "I", "info": "track id" }, { @@ -364,7 +364,7 @@ } ] }, { - "name": "AHDC::MC", + "name": "AHDC::mc", "group": 23000, "item": 22, "info": "MC Tracks", From 4ccc31af5e60b3c80c4a348157fe463a55bc1dd9 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Fri, 11 Apr 2025 10:22:37 -0400 Subject: [PATCH 058/100] Bank names are nomalized for AHDC --- etc/bankdefs/util/bankSplit.py | 2 +- .../jlab/rec/ahdc/Banks/RecoBankWriter.java | 32 +++++++++---------- .../java/org/jlab/rec/ahdc/Track/Track.java | 8 ++--- .../rec/alert/projections/TrackProjector.java | 2 +- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/etc/bankdefs/util/bankSplit.py b/etc/bankdefs/util/bankSplit.py index 00280d19e6..a2197bd766 100755 --- a/etc/bankdefs/util/bankSplit.py +++ b/etc/bankdefs/util/bankSplit.py @@ -65,7 +65,7 @@ def create(dirname, banklist): raster = ["RASTER::position"] rich = ["RICH::tdc","RICH::Ring","RICH::Particle"] rtpc = ["RTPC::hits","RTPC::tracks","RTPC::KFtracks"] -alert = ["AHDC::Track", "AHDC::MC", "AHDC::Hits", "AHDC::PreClusters", "AHDC::Clusters", "AHDC::KFTrack", "AHDC_AI::Prediction"] +alert = ["AHDC::track", "AHDC::mc", "AHDC::hits", "AHDC::preclusters", "AHDC::clusters", "AHDC::kftrack", "AHDC_AI::Prediction"] dets = band + raster + rich + rtpc + alert # additions for the calibration schema: diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java index 5f7bc96736..e87bec1e00 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java @@ -15,19 +15,19 @@ public class RecoBankWriter { public DataBank fillAHDCHitsBank(DataEvent event, ArrayList hitList) { if (hitList == null || hitList.size() == 0) return null; - DataBank bank = event.createBank("AHDC::Hits", hitList.size()); + DataBank bank = event.createBank("AHDC::hits", hitList.size()); for (int i = 0; i < hitList.size(); i++) { - bank.setShort("ID", i, (short) hitList.get(i).getId()); + bank.setShort("id", i, (short) hitList.get(i).getId()); bank.setByte("layer", i, (byte) hitList.get(i).getLayerId()); bank.setByte("superlayer", i, (byte) hitList.get(i).getSuperLayerId()); bank.setInt("wire", i, hitList.get(i).getWireId()); - bank.setDouble("Doca", i, hitList.get(i).getDoca()); + bank.setDouble("doca", i, hitList.get(i).getDoca()); bank.setDouble("residual", i, hitList.get(i).getResidual()); bank.setDouble("residual_prefit", i, hitList.get(i).getResidualPrefit()); bank.setDouble("time", i, hitList.get(i).getTime()); - bank.setInt("trackId", i, hitList.get(i).getTrackId()); + bank.setInt("trackid", i, hitList.get(i).getTrackId()); } return bank; @@ -36,11 +36,11 @@ public DataBank fillAHDCHitsBank(DataEvent event, ArrayList hitList) { public DataBank fillPreClustersBank(DataEvent event, ArrayList preClusters) { if (preClusters == null || preClusters.size() == 0) return null; - DataBank bank = event.createBank("AHDC::PreClusters", preClusters.size()); + DataBank bank = event.createBank("AHDC::preclusters", preClusters.size()); for (int i = 0; i < preClusters.size(); i++) { - bank.setFloat("X", i, (float) preClusters.get(i).get_X()); - bank.setFloat("Y", i, (float) preClusters.get(i).get_Y()); + bank.setFloat("x", i, (float) preClusters.get(i).get_X()); + bank.setFloat("y", i, (float) preClusters.get(i).get_Y()); } return bank; @@ -49,12 +49,12 @@ public DataBank fillPreClustersBank(DataEvent event, ArrayList preCl public DataBank fillClustersBank(DataEvent event, ArrayList clusters) { if (clusters == null || clusters.size() == 0) return null; - DataBank bank = event.createBank("AHDC::Clusters", clusters.size()); + DataBank bank = event.createBank("AHDC::clusters", clusters.size()); for (int i = 0; i < clusters.size(); i++) { - bank.setFloat("X", i, (float) clusters.get(i).get_X()); - bank.setFloat("Y", i, (float) clusters.get(i).get_Y()); - bank.setFloat("Z", i, (float) clusters.get(i).get_Z()); + bank.setFloat("x", i, (float) clusters.get(i).get_X()); + bank.setFloat("y", i, (float) clusters.get(i).get_Y()); + bank.setFloat("z", i, (float) clusters.get(i).get_Z()); } return bank; @@ -72,7 +72,7 @@ public DataBank fillAHDCMCTrackBank(DataEvent event) { double pz_mc = particle.getFloat("pz", 0) * 1000; int row = 0; - DataBank bank = event.createBank("AHDC::MC", row + 1); + DataBank bank = event.createBank("AHDC::mc", row + 1); bank.setFloat("x", row, (float) x_mc); bank.setFloat("y", row, (float) y_mc); bank.setFloat("z", row, (float) z_mc); @@ -85,7 +85,7 @@ public DataBank fillAHDCMCTrackBank(DataEvent event) { public DataBank fillAHDCTrackBank(DataEvent event, ArrayList tracks) { - DataBank bank = event.createBank("AHDC::Track", tracks.size()); + DataBank bank = event.createBank("AHDC::track", tracks.size()); int row = 0; @@ -98,7 +98,7 @@ public DataBank fillAHDCTrackBank(DataEvent event, ArrayList tracks) { double py = track.get_py(); double pz = track.get_pz(); - bank.setInt("trackId", row, (int) track.get_trackId()); + bank.setInt("trackid", row, (int) track.get_trackId()); bank.setFloat("x", row, (float) x); bank.setFloat("y", row, (float) y); bank.setFloat("z", row, (float) z); @@ -121,7 +121,7 @@ public DataBank fillAHDCTrackBank(DataEvent event, ArrayList tracks) { public DataBank fillAHDCKFTrackBank(DataEvent event, ArrayList tracks) { - DataBank bank = event.createBank("AHDC::KFTrack", tracks.size()); + DataBank bank = event.createBank("AHDC::kftrack", tracks.size()); int row = 0; @@ -134,7 +134,7 @@ public DataBank fillAHDCKFTrackBank(DataEvent event, ArrayList tracks) { double py = track.getPy0_kf(); double pz = track.getPz0_kf(); - bank.setInt("trackId", row, (int) track.get_trackId()); + bank.setInt("trackid", row, (int) track.get_trackId()); bank.setFloat("x", row, (float) x); bank.setFloat("y", row, (float) y); bank.setFloat("z", row, (float) z); diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java index b2807ebb66..ea1548a083 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Track/Track.java @@ -21,7 +21,7 @@ public class Track { private int sum_adc = 0; ///< sum of adc (adc) private double sum_residuals = 0; ///< sum of residuals (mm) private double chi2 = 0; ///< sum of residuals^2 (mm^2) - // AHDC::Track + // AHDC::track private double x0 = 0; private double y0 = 0; private double z0 = 0; @@ -31,7 +31,7 @@ public class Track { private double dEdx = 0; ///< deposited energy per path length (adc/mm) private double p_drift = 0; ///< momentum in the drift region (MeV) private double path = 0; ///< length of the track (mm) - // AHDC::KFTrack + // AHDC::kftrack private double x0_kf = 0; private double y0_kf = 0; private double z0_kf = 0; @@ -185,7 +185,7 @@ public double getPz0_kf() { public int get_sum_adc() {return sum_adc;} public double get_chi2() {return chi2;} public double get_sum_residuals() {return sum_residuals;} - // AHDC::Track + // AHDC::track public void set_dEdx(double _dEdx) { dEdx = _dEdx;} public void set_p_drift(double _p_drift) { p_drift = _p_drift;} public void set_path(double _path) { path = _path;} @@ -193,7 +193,7 @@ public double getPz0_kf() { public double get_p_drift() {return p_drift;} public double get_path() {return path;} - // AHDC::KFTrack + // AHDC::kftrack public void set_dEdx_kf(double _dEdx_kf) { dEdx_kf = _dEdx_kf;} public void set_p_drift_kf(double _p_drift_kf) { p_drift_kf = _p_drift_kf;} public void set_path_kf(double _path_kf) { path_kf = _path_kf;} diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/alert/projections/TrackProjector.java b/reconstruction/alert/src/main/java/org/jlab/rec/alert/projections/TrackProjector.java index 2daab87097..ca4a487a91 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/alert/projections/TrackProjector.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/alert/projections/TrackProjector.java @@ -90,7 +90,7 @@ public void setB(Double B) { public void projectTracks(DataEvent event) {//, CalibrationConstantsLoader ccdb) { projections.clear(); - String track_bank_name = "AHDC::Track"; + String track_bank_name = "AHDC::track"; // check if there is an event if (event == null) return; From 37689aa39f06dd05fbf4fd9cf2cb3919e63ce042 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Fri, 11 Apr 2025 10:50:40 -0400 Subject: [PATCH 059/100] Start normalisation of ATOF bank name --- etc/bankdefs/hipo4/alert.json | 4 ++-- .../src/main/java/org/jlab/rec/atof/banks/RecoBankWriter.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/etc/bankdefs/hipo4/alert.json b/etc/bankdefs/hipo4/alert.json index 6689f5e3dd..33005e51af 100644 --- a/etc/bankdefs/hipo4/alert.json +++ b/etc/bankdefs/hipo4/alert.json @@ -114,11 +114,11 @@ "type": "S", "info": "hit id" }, { - "name": "N_bar", + "name": "n_bar", "type": "I", "info": "number of hits from the bars" }, { - "name": "N_wedge", + "name": "n_wedge", "type": "I", "info": "number of hits from the wedges" },{ diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/atof/banks/RecoBankWriter.java b/reconstruction/alert/src/main/java/org/jlab/rec/atof/banks/RecoBankWriter.java index b903b71f57..18ca0285cb 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/atof/banks/RecoBankWriter.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/atof/banks/RecoBankWriter.java @@ -78,8 +78,8 @@ public static DataBank fillATOFClusterBank(DataEvent event, ArrayList Date: Fri, 11 Apr 2025 14:54:30 +0000 Subject: [PATCH 060/100] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- etc/bankdefs/hipo4/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/etc/bankdefs/hipo4/README.md b/etc/bankdefs/hipo4/README.md index cf2881f836..7b6dc5abd4 100644 --- a/etc/bankdefs/hipo4/README.md +++ b/etc/bankdefs/hipo4/README.md @@ -399,11 +399,11 @@ | Item ID | Name | Description | | --- | --- | --- | -| 21 | `AHDC::Track` | Reco Tracks | -| 22 | `AHDC::MC` | MC Tracks | -| 23 | `AHDC::Hits` | Raw Hits | -| 24 | `AHDC::PreClusters` | Pre Clusters info | -| 25 | `AHDC::Clusters` | Clusters info | -| 26 | `AHDC::KFTrack` | Reco Kalman Filter Tracks | +| 21 | `AHDC::track` | Reco Tracks | +| 22 | `AHDC::mc` | MC Tracks | +| 23 | `AHDC::hits` | Raw Hits | +| 24 | `AHDC::preclusters` | Pre Clusters info | +| 25 | `AHDC::clusters` | Clusters info | +| 26 | `AHDC::kftrack` | Reco Kalman Filter Tracks | | 30 | `AHDC_AI::Prediction` | Prediction given by AI | | 31 | `ALERT::Projections` | Track Projections to ATOF | From d5e89615e702b5c922ab79c0036f134f7b0dbd9a Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Fri, 11 Apr 2025 13:46:40 -0400 Subject: [PATCH 061/100] Update bank names for ALERT rojections and AI Submit for review --- etc/bankdefs/hipo4/alert.json | 36 +++++++++---------- etc/bankdefs/util/bankSplit.py | 2 +- .../jlab/rec/ahdc/Banks/RecoBankWriter.java | 26 +++++++------- .../jlab/rec/alert/banks/RecoBankWriter.java | 14 ++++---- .../jlab/rec/atof/banks/RecoBankWriter.java | 14 ++++---- .../jlab/rec/atof/cluster/ATOFCluster.java | 10 +++--- 6 files changed, 51 insertions(+), 51 deletions(-) diff --git a/etc/bankdefs/hipo4/alert.json b/etc/bankdefs/hipo4/alert.json index 33005e51af..dd57254c5c 100644 --- a/etc/bankdefs/hipo4/alert.json +++ b/etc/bankdefs/hipo4/alert.json @@ -1,6 +1,6 @@ [ { - "name": "ALERT::Projections", + "name": "ALERT::projections", "group": 23000, "item": 31, "info": "Track Projections to ATOF", @@ -10,7 +10,7 @@ "type": "S", "info": "projection id" },{ - "name": "trackID", + "name": "trackid", "type": "S", "info": "id of the track that was projected" }, { @@ -26,11 +26,11 @@ "type": "F", "info": "z position at atof bar (middle surface) in mm" },{ - "name": "L_at_bar", + "name": "l_at_bar", "type": "F", "info": "path length at atof bar (inner surface) in mm" },{ - "name": "L_in_bar", + "name": "l_in_bar", "type": "F", "info": "path length inside atof bar in mm" },{ @@ -46,11 +46,11 @@ "type": "F", "info": "z position at atof wedge (middle surface) in mm" },{ - "name": "L_at_wedge", + "name": "l_at_wedge", "type": "F", "info": "path length at atof wedge (inner surface) in mm" },{ - "name": "L_in_wedge", + "name": "l_in_wedge", "type": "F", "info": "path length inside atof wedge in mm" } @@ -397,22 +397,22 @@ ] }, { - "name": "AHDC_AI::Prediction", + "name": "AHDC::ai:prediction", "group": 23000, "item": 30, "info": "Prediction given by AI", "entries": [ - {"name": "X1", "type": "F", "info": "X1 position of the 1th superprecluster (mm)"}, - {"name": "Y1", "type": "F", "info": "Y1 position of the 1th superprecluster (mm)"}, - {"name": "X2", "type": "F", "info": "X2 position of the 2nd superprecluster (mm)"}, - {"name": "Y2", "type": "F", "info": "Y2 position of the 2nd superprecluster (mm)"}, - {"name": "X3", "type": "F", "info": "X3 position of the 3rd superprecluster (mm)"}, - {"name": "Y3", "type": "F", "info": "Y3 position of the 3rd superprecluster (mm)"}, - {"name": "X4", "type": "F", "info": "X4 position of the 4th superprecluster (mm)"}, - {"name": "Y4", "type": "F", "info": "Y4 position of the 4th superprecluster (mm)"}, - {"name": "X5", "type": "F", "info": "X5 position of the 5th superprecluster (mm)"}, - {"name": "Y5", "type": "F", "info": "Y5 position of the 5th superprecluster (mm)"}, - {"name": "Pred", "type": "F", "info": "Prediction of the model: 0 mean bad track; 1 mean good track"} + {"name": "x1", "type": "F", "info": "X1 position of the 1th superprecluster (mm)"}, + {"name": "y1", "type": "F", "info": "Y1 position of the 1th superprecluster (mm)"}, + {"name": "x2", "type": "F", "info": "X2 position of the 2nd superprecluster (mm)"}, + {"name": "y2", "type": "F", "info": "Y2 position of the 2nd superprecluster (mm)"}, + {"name": "x3", "type": "F", "info": "X3 position of the 3rd superprecluster (mm)"}, + {"name": "y3", "type": "F", "info": "Y3 position of the 3rd superprecluster (mm)"}, + {"name": "x4", "type": "F", "info": "X4 position of the 4th superprecluster (mm)"}, + {"name": "y4", "type": "F", "info": "Y4 position of the 4th superprecluster (mm)"}, + {"name": "x5", "type": "F", "info": "X5 position of the 5th superprecluster (mm)"}, + {"name": "y5", "type": "F", "info": "Y5 position of the 5th superprecluster (mm)"}, + {"name": "pred", "type": "F", "info": "Prediction of the model: 0 mean bad track; 1 mean good track"} ] } ] diff --git a/etc/bankdefs/util/bankSplit.py b/etc/bankdefs/util/bankSplit.py index a2197bd766..33f03ca036 100755 --- a/etc/bankdefs/util/bankSplit.py +++ b/etc/bankdefs/util/bankSplit.py @@ -65,7 +65,7 @@ def create(dirname, banklist): raster = ["RASTER::position"] rich = ["RICH::tdc","RICH::Ring","RICH::Particle"] rtpc = ["RTPC::hits","RTPC::tracks","RTPC::KFtracks"] -alert = ["AHDC::track", "AHDC::mc", "AHDC::hits", "AHDC::preclusters", "AHDC::clusters", "AHDC::kftrack", "AHDC_AI::Prediction"] +alert = ["AHDC::track", "AHDC::mc", "AHDC::hits", "AHDC::preclusters", "AHDC::clusters", "AHDC::kftrack", "AHDC::ai:prediction"] dets = band + raster + rich + rtpc + alert # additions for the calibration schema: diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java index e87bec1e00..38a701cd3b 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Banks/RecoBankWriter.java @@ -157,23 +157,23 @@ public DataBank fillAHDCKFTrackBank(DataEvent event, ArrayList tracks) { public DataBank fillAIPrediction(DataEvent event, ArrayList predictions) { - DataBank bank = event.createBank("AHDC_AI::Prediction", predictions.size()); + DataBank bank = event.createBank("AHDC::ai:prediction", predictions.size()); int row = 0; for (TrackPrediction track : predictions) { - bank.setFloat("X1", row, (float) track.getSuperpreclusters().get(0).getX()); - bank.setFloat("Y1", row, (float) track.getSuperpreclusters().get(0).getY()); - bank.setFloat("X2", row, (float) track.getSuperpreclusters().get(1).getX()); - bank.setFloat("Y2", row, (float) track.getSuperpreclusters().get(1).getY()); - bank.setFloat("X3", row, (float) track.getSuperpreclusters().get(2).getX()); - bank.setFloat("Y3", row, (float) track.getSuperpreclusters().get(2).getY()); - bank.setFloat("X4", row, (float) track.getSuperpreclusters().get(3).getX()); - bank.setFloat("Y4", row, (float) track.getSuperpreclusters().get(3).getY()); - bank.setFloat("X5", row, (float) track.getSuperpreclusters().get(4).getX()); - bank.setFloat("Y5", row, (float) track.getSuperpreclusters().get(4).getY()); - - bank.setFloat("Pred", row, track.getPrediction()); + bank.setFloat("x1", row, (float) track.getSuperpreclusters().get(0).getX()); + bank.setFloat("y1", row, (float) track.getSuperpreclusters().get(0).getY()); + bank.setFloat("x2", row, (float) track.getSuperpreclusters().get(1).getX()); + bank.setFloat("y2", row, (float) track.getSuperpreclusters().get(1).getY()); + bank.setFloat("x3", row, (float) track.getSuperpreclusters().get(2).getX()); + bank.setFloat("y3", row, (float) track.getSuperpreclusters().get(2).getY()); + bank.setFloat("x4", row, (float) track.getSuperpreclusters().get(3).getX()); + bank.setFloat("y4", row, (float) track.getSuperpreclusters().get(3).getY()); + bank.setFloat("x5", row, (float) track.getSuperpreclusters().get(4).getX()); + bank.setFloat("y5", row, (float) track.getSuperpreclusters().get(4).getY()); + + bank.setFloat("pred", row, track.getPrediction()); row++; } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/alert/banks/RecoBankWriter.java b/reconstruction/alert/src/main/java/org/jlab/rec/alert/banks/RecoBankWriter.java index 4f19cf05b3..787654a7fa 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/alert/banks/RecoBankWriter.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/alert/banks/RecoBankWriter.java @@ -27,26 +27,26 @@ public class RecoBankWriter { */ public static DataBank fillProjectionsBank(DataEvent event, ArrayList projections) { - DataBank bank = event.createBank("ALERT::Projections", projections.size()); + DataBank bank = event.createBank("ALERT::projections", projections.size()); if (bank == null) { - System.err.println("COULD NOT CREATE A ALERT::Projections BANK!!!!!!"); + System.err.println("COULD NOT CREATE A ALERT::projections BANK!!!!!!"); return null; } for (int i = 0; i < projections.size(); i++) { TrackProjection projection = projections.get(i); bank.setShort("id", i, (short) (i + 1)); - bank.setShort("trackID", i, (short) projection.getTrackID()); + bank.setShort("trackid", i, (short) projection.getTrackID()); bank.setFloat("x_at_bar", i, (float) projection.getBarIntersect().x()); bank.setFloat("y_at_bar", i, (float) projection.getBarIntersect().y()); bank.setFloat("z_at_bar", i, (float) projection.getBarIntersect().z()); - bank.setFloat("L_at_bar", i, (float) projection.getBarPathLength()); - bank.setFloat("L_in_bar", i, (float) projection.getBarInPathLength()); + bank.setFloat("l_at_bar", i, (float) projection.getBarPathLength()); + bank.setFloat("l_in_bar", i, (float) projection.getBarInPathLength()); bank.setFloat("x_at_wedge", i, (float) projection.getWedgeIntersect().x()); bank.setFloat("y_at_wedge", i, (float) projection.getWedgeIntersect().y()); bank.setFloat("z_at_wedge", i, (float) projection.getWedgeIntersect().z()); - bank.setFloat("L_at_wedge", i, (float) projection.getWedgePathLength()); - bank.setFloat("L_in_wedge", i, (float) projection.getWedgeInPathLength()); + bank.setFloat("l_at_wedge", i, (float) projection.getWedgePathLength()); + bank.setFloat("l_in_wedge", i, (float) projection.getWedgeInPathLength()); } return bank; } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/atof/banks/RecoBankWriter.java b/reconstruction/alert/src/main/java/org/jlab/rec/atof/banks/RecoBankWriter.java index 18ca0285cb..6209275942 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/atof/banks/RecoBankWriter.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/atof/banks/RecoBankWriter.java @@ -105,26 +105,26 @@ public static DataBank fillATOFClusterBank(DataEvent event, ArrayList projections) { - DataBank bank = event.createBank("ALERT::Projections", projections.size()); + DataBank bank = event.createBank("ALERT::projections", projections.size()); if (bank == null) { - System.err.println("COULD NOT CREATE A ALERT::Projections BANK!!!!!!"); + System.err.println("COULD NOT CREATE A ALERT::projections BANK!!!!!!"); return null; } for (int i = 0; i < projections.size(); i++) { TrackProjection projection = projections.get(i); bank.setShort("id", i, (short) (i + 1)); - bank.setShort("trackID", i, (short) projection.getTrackID()); + bank.setShort("trackid", i, (short) projection.getTrackID()); bank.setFloat("x_at_bar", i, (float) projection.getBarIntersect().x()); bank.setFloat("y_at_bar", i, (float) projection.getBarIntersect().y()); bank.setFloat("z_at_bar", i, (float) projection.getBarIntersect().z()); - bank.setFloat("L_at_bar", i, (float) projection.getBarPathLength()); - bank.setFloat("L_in_bar", i, (float) projection.getBarInPathLength()); + bank.setFloat("l_at_bar", i, (float) projection.getBarPathLength()); + bank.setFloat("l_in_bar", i, (float) projection.getBarInPathLength()); bank.setFloat("x_at_wedge", i, (float) projection.getWedgeIntersect().x()); bank.setFloat("y_at_wedge", i, (float) projection.getWedgeIntersect().y()); bank.setFloat("z_at_wedge", i, (float) projection.getWedgeIntersect().z()); - bank.setFloat("L_at_wedge", i, (float) projection.getWedgePathLength()); - bank.setFloat("L_in_wedge", i, (float) projection.getWedgeInPathLength()); + bank.setFloat("l_at_wedge", i, (float) projection.getWedgePathLength()); + bank.setFloat("l_in_wedge", i, (float) projection.getWedgeInPathLength()); } return bank; } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/atof/cluster/ATOFCluster.java b/reconstruction/alert/src/main/java/org/jlab/rec/atof/cluster/ATOFCluster.java index e04ccee1e3..bf16716823 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/atof/cluster/ATOFCluster.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/atof/cluster/ATOFCluster.java @@ -193,7 +193,7 @@ public int matchTrack(DataEvent event) { //This cluster point in space Point3D cluster = new Point3D(this.x, this.y, this.z); //Bank to be read - String track_bank_name = "ALERT::Projections"; + String track_bank_name = "ALERT::projections"; //Checking if there is an event if (event == null) { return 1; @@ -228,9 +228,9 @@ public int matchTrack(DataEvent event) { xt = track_bank.getFloat("x_at_wedge", i); yt = track_bank.getFloat("y_at_wedge", i); zt = track_bank.getFloat("z_at_wedge", i); - path = track_bank.getFloat("L_at_wedge", i); + path = track_bank.getFloat("l_at_wedge", i); //A wedge hit traveled through the whole bar and then through a portion of the wedge - inpath = track_bank.getFloat("L_in_wedge", i) + track_bank.getFloat("L_at_wedge", i) - track_bank.getFloat("L_at_bar", i); + inpath = track_bank.getFloat("l_in_wedge", i) + track_bank.getFloat("l_at_wedge", i) - track_bank.getFloat("l_at_bar", i); } case "bar" -> { sigma_phi = Parameters.SIGMA_PHI_TRACK_MATCHING_BAR; @@ -238,8 +238,8 @@ public int matchTrack(DataEvent event) { xt = track_bank.getFloat("x_at_bar", i); yt = track_bank.getFloat("y_at_bar", i); zt = track_bank.getFloat("z_at_bar", i); - path = track_bank.getFloat("L_at_bar", i); - inpath = track_bank.getFloat("L_in_bar", i); + path = track_bank.getFloat("l_at_bar", i); + inpath = track_bank.getFloat("l_in_bar", i); } case "bar up", "bar down" -> { System.out.print("Impossible to match track and hit; hit type is a single up or down bar hit. \n"); From c7bc9af794190b384198eb523ec631f51d537a2c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 11 Apr 2025 17:58:48 +0000 Subject: [PATCH 062/100] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- etc/bankdefs/hipo4/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/bankdefs/hipo4/README.md b/etc/bankdefs/hipo4/README.md index 7b6dc5abd4..920739f6cf 100644 --- a/etc/bankdefs/hipo4/README.md +++ b/etc/bankdefs/hipo4/README.md @@ -405,5 +405,5 @@ | 24 | `AHDC::preclusters` | Pre Clusters info | | 25 | `AHDC::clusters` | Clusters info | | 26 | `AHDC::kftrack` | Reco Kalman Filter Tracks | -| 30 | `AHDC_AI::Prediction` | Prediction given by AI | -| 31 | `ALERT::Projections` | Track Projections to ATOF | +| 30 | `AHDC::ai:prediction` | Prediction given by AI | +| 31 | `ALERT::projections` | Track Projections to ATOF | From 678809c11372fe445646817f6f606c59b6f8c5cd Mon Sep 17 00:00:00 2001 From: baltzell Date: Fri, 11 Apr 2025 16:29:36 -0400 Subject: [PATCH 063/100] add an rg-l single-event test --- reconstruction/alert/pom.xml | 6 +++ .../org/jlab/service/alert/AlertTest.java | 42 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 reconstruction/alert/src/test/java/org/jlab/service/alert/AlertTest.java diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index cd7c60646e..66fde4038b 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -28,6 +28,12 @@ 12.0.4t-SNAPSHOT compile + + org.jlab.clas + clas-analysis + 12.0.3t-SNAPSHOT + compile + org.jlab.clas clas-tracking diff --git a/reconstruction/alert/src/test/java/org/jlab/service/alert/AlertTest.java b/reconstruction/alert/src/test/java/org/jlab/service/alert/AlertTest.java new file mode 100644 index 0000000000..1b2dff287f --- /dev/null +++ b/reconstruction/alert/src/test/java/org/jlab/service/alert/AlertTest.java @@ -0,0 +1,42 @@ +package org.jlab.service.alert; + +import org.junit.Test; +import static org.junit.Assert.assertEquals; + +import org.jlab.io.base.DataEvent; +import org.jlab.detector.base.DetectorType; +import org.jlab.jnp.hipo4.data.SchemaFactory; +import org.jlab.logging.DefaultLogger; +import org.jlab.utils.system.ClasUtilsFile; +import org.jlab.analysis.physics.TestEvent; + +/** + * + * @author baltzell + */ +public class AlertTest { + + @Test + public void testECReconstruction() { + DefaultLogger.debug(); + System.setProperty("CLAS12DIR", "../../"); + String dir = ClasUtilsFile.getResourceDir("CLAS12DIR", "etc/bankdefs/hipo4"); + SchemaFactory schemaFactory = new SchemaFactory(); + schemaFactory.initFromDirectory(dir); + + DataEvent event = TestEvent.get(DetectorType.ECAL); + + ALERTEngine engine = new ALERTEngine(); + engine.init(); + engine.processDataEvent(event); + + event.show(); + event.getBank("ECAL::hits").show(); + event.getBank("ECAL::clusters").show(); + + assertEquals(event.hasBank("FAKE::Bank"), false); + assertEquals(event.hasBank("AHDC::wf"), true); + assertEquals(event.getBank("AHDC::hits").rows(), 3); + } + +} From 9464397101d2f73dfe4db80d6fad74c7ca8c841f Mon Sep 17 00:00:00 2001 From: baltzell Date: Fri, 11 Apr 2025 16:33:25 -0400 Subject: [PATCH 064/100] make it runnable --- .../service/alert/{AlertTest.java => AHDCTest.java} | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) rename reconstruction/alert/src/test/java/org/jlab/service/alert/{AlertTest.java => AHDCTest.java} (85%) diff --git a/reconstruction/alert/src/test/java/org/jlab/service/alert/AlertTest.java b/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java similarity index 85% rename from reconstruction/alert/src/test/java/org/jlab/service/alert/AlertTest.java rename to reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java index 1b2dff287f..77f91ef97d 100644 --- a/reconstruction/alert/src/test/java/org/jlab/service/alert/AlertTest.java +++ b/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java @@ -14,17 +14,17 @@ * * @author baltzell */ -public class AlertTest { +public class AHDCTest { @Test - public void testECReconstruction() { - DefaultLogger.debug(); + public static void run() { System.setProperty("CLAS12DIR", "../../"); + DefaultLogger.debug(); String dir = ClasUtilsFile.getResourceDir("CLAS12DIR", "etc/bankdefs/hipo4"); SchemaFactory schemaFactory = new SchemaFactory(); schemaFactory.initFromDirectory(dir); - DataEvent event = TestEvent.get(DetectorType.ECAL); + DataEvent event = TestEvent.get(DetectorType.AHDC); ALERTEngine engine = new ALERTEngine(); engine.init(); @@ -39,4 +39,8 @@ public void testECReconstruction() { assertEquals(event.getBank("AHDC::hits").rows(), 3); } + public static void main(String[] args) { + run(); + } + } From 86865a22249d3de9a0393ed3aedd0b5f85806927 Mon Sep 17 00:00:00 2001 From: baltzell Date: Fri, 11 Apr 2025 17:01:02 -0400 Subject: [PATCH 065/100] add test event --- etc/data/test/ahdc.hipo | Bin 0 -> 13088 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 etc/data/test/ahdc.hipo diff --git a/etc/data/test/ahdc.hipo b/etc/data/test/ahdc.hipo new file mode 100644 index 0000000000000000000000000000000000000000..bda0486a65cf39d10ca2067f9af2052d621e705e GIT binary patch literal 13088 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 MX9XfD!gkH|zlO&ymH+?% literal 0 HcmV?d00001 From 0d506d750138c9f79bc49f3d401d532c83539e14 Mon Sep 17 00:00:00 2001 From: baltzell Date: Fri, 11 Apr 2025 17:19:41 -0400 Subject: [PATCH 066/100] register output banks --- .../alert/src/main/java/org/jlab/service/ahdc/AHDCEngine.java | 2 ++ 1 file changed, 2 insertions(+) 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 16ff67a657..d4b2937307 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 @@ -99,6 +99,8 @@ public boolean init() { }; requireConstants(Arrays.asList(alertTables)); + this.registerOutputBank("AHDC::hits","AHDC::preclusters","AHDC::clusters","AHDC::track","AHDC::kftrack","AHDC::mc","AHDC::ai:prediction"); + return true; } From 603817d28575107e62067b1d64b48004421461bb Mon Sep 17 00:00:00 2001 From: baltzell Date: Fri, 11 Apr 2025 17:19:59 -0400 Subject: [PATCH 067/100] switch engines --- .../alert/src/test/java/org/jlab/service/alert/AHDCTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java b/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java index 77f91ef97d..dc18330397 100644 --- a/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java +++ b/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java @@ -9,6 +9,7 @@ import org.jlab.logging.DefaultLogger; import org.jlab.utils.system.ClasUtilsFile; import org.jlab.analysis.physics.TestEvent; +import org.jlab.service.ahdc.AHDCEngine; /** * @@ -26,7 +27,7 @@ public static void run() { DataEvent event = TestEvent.get(DetectorType.AHDC); - ALERTEngine engine = new ALERTEngine(); + AHDCEngine engine = new AHDCEngine(); engine.init(); engine.processDataEvent(event); From d6670a7e69ab7030de2b62c45668fe0bcae68897 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo <119527892+ftouchte@users.noreply.github.com> Date: Fri, 11 Apr 2025 17:42:06 -0400 Subject: [PATCH 068/100] Update AHDCTest.java --- .../src/test/java/org/jlab/service/alert/AHDCTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java b/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java index dc18330397..b6261c9976 100644 --- a/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java +++ b/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java @@ -14,6 +14,7 @@ /** * * @author baltzell + * @author ftouchte */ public class AHDCTest { @@ -32,12 +33,12 @@ public static void run() { engine.processDataEvent(event); event.show(); - event.getBank("ECAL::hits").show(); - event.getBank("ECAL::clusters").show(); + event.getBank("AHDC::hits").show(); + event.getBank("AHDC::clusters").show(); assertEquals(event.hasBank("FAKE::Bank"), false); assertEquals(event.hasBank("AHDC::wf"), true); - assertEquals(event.getBank("AHDC::hits").rows(), 3); + assertEquals(event.getBank("AHDC::hits").rows(), 10); } public static void main(String[] args) { From ec15414a44859a87d9c6027762f64d7f2a1ebda5 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Fri, 11 Apr 2025 17:58:55 -0400 Subject: [PATCH 069/100] add header info to test event --- etc/data/test/ahdc.hipo | Bin 13088 -> 18096 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/etc/data/test/ahdc.hipo b/etc/data/test/ahdc.hipo index bda0486a65cf39d10ca2067f9af2052d621e705e..25ce56c19b41c7f46cfeb3a49631782a54eda6cc 100644 GIT binary patch delta 4371 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 bqOusC+{Hkgn4IxMoRD86Av2&#m0tV-QB#Aa From 8ba6bba93cd5687751a981dbb48a03090ea6d74a Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Fri, 11 Apr 2025 18:03:24 -0400 Subject: [PATCH 070/100] Make test pass --- .../alert/src/test/java/org/jlab/service/alert/AHDCTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java b/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java index b6261c9976..e5277210ad 100644 --- a/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java +++ b/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java @@ -38,7 +38,7 @@ public static void run() { assertEquals(event.hasBank("FAKE::Bank"), false); assertEquals(event.hasBank("AHDC::wf"), true); - assertEquals(event.getBank("AHDC::hits").rows(), 10); + assertEquals(event.getBank("AHDC::hits").rows(), 25); } public static void main(String[] args) { From 21dce648e918e80fe64430bd1e338f7a15ea78e9 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Fri, 11 Apr 2025 18:08:50 -0400 Subject: [PATCH 071/100] Fix test --- .../alert/src/test/java/org/jlab/service/alert/AHDCTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java b/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java index e5277210ad..3fa950672f 100644 --- a/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java +++ b/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java @@ -19,7 +19,7 @@ public class AHDCTest { @Test - public static void run() { + public void run() { System.setProperty("CLAS12DIR", "../../"); DefaultLogger.debug(); String dir = ClasUtilsFile.getResourceDir("CLAS12DIR", "etc/bankdefs/hipo4"); @@ -42,7 +42,8 @@ public static void run() { } public static void main(String[] args) { - run(); + AHDCTest t = new AHDCTest(); + t.run(); } } From ac0adcbd4f6214a2b00824f2e4bb613725b07476 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo Date: Fri, 11 Apr 2025 18:22:19 -0400 Subject: [PATCH 072/100] Fix version number --- reconstruction/alert/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index 66fde4038b..aff1ae38b7 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -31,7 +31,7 @@ org.jlab.clas clas-analysis - 12.0.3t-SNAPSHOT + 12.0.4t-SNAPSHOT compile From 396094a65f2ea38e49a0ddcc11abf7bb1e182cb0 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Sat, 12 Apr 2025 15:25:48 -0400 Subject: [PATCH 073/100] Revert "fix: geometry order of points that define the wire cell to satify a Concave Componment requierment for ALERT" This reverts commit 1dfa2233c689ce76e3edb9690db0ed57bbc4933b. --- .../detector/alert/AHDC/AlertDCFactory.java | 17 ++++++++--------- .../detector/alert/AHDC/ConcaveComponent.java | 2 +- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java index 7181ef613a..05c5ced61d 100644 --- a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java +++ b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java @@ -195,19 +195,18 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye Point3D p_11 = new Point3D(px_11, py_11, zl); // defining a cell around a wireLine, must be counter-clockwise! firstF.add(p_0); - firstF.add(p_5); - firstF.add(p_4); - firstF.add(p_3); - firstF.add(p_2); firstF.add(p_1); + firstF.add(p_2); + firstF.add(p_3); + firstF.add(p_4); + firstF.add(p_5); secondF.add(p_6); - secondF.add(p_11); - secondF.add(p_10); - secondF.add(p_9); - secondF.add(p_8); secondF.add(p_7); - + secondF.add(p_8); + secondF.add(p_9); + secondF.add(p_10); + secondF.add(p_11); // Create the cell and signal wire inside // PrismaticComponent(int componentId, List firstFace, List secondFace) diff --git a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/ConcaveComponent.java b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/ConcaveComponent.java index e8ec777999..3ac6568837 100644 --- a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/ConcaveComponent.java +++ b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/ConcaveComponent.java @@ -60,7 +60,7 @@ protected ConcaveComponent(int componentId, List firstFace, List 0.001) { // System.err.println("PrismaticComponent: #" + componentId + " " + n.dot(direction) + " > 0"); // for (Point3D point : firstFace) System.err.println("\t" + point); - throw new IllegalArgumentException("the first face is not counter-clockwise: componentId=" + componentId); + throw new IllegalArgumentException("the first face is not counter-clockwise: componentId=" + componentId); } u = secondFace.get(1).vectorFrom(secondFace.get(0)); v = secondFace.get(2).vectorFrom(secondFace.get(0)); From e24508aa8b33c4b0fe1dcba4e640e7ea43eb7d6a Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Sat, 12 Apr 2025 15:25:53 -0400 Subject: [PATCH 074/100] Revert "Change geometry for the hits to match reality. (90 shift + conterclock)" This reverts commit 2f0322b45d0957ca5821549238604bb5a4f91fea. --- .../detector/alert/AHDC/AlertDCFactory.java | 56 +++++++++---------- .../org/jlab/rec/ahdc/KalmanFilter/Hit.java | 24 ++++---- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java index 05c5ced61d..0a9bd13026 100644 --- a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java +++ b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java @@ -132,13 +132,13 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye for (int wireId = 0; wireId < numWires; wireId++) { // The point given by (wx, wy, wz) is the midpoint of the current wire. - double wx = R_layer * Math.cos(alphaW_layer * wireId); - double wy = R_layer * Math.sin(alphaW_layer * wireId); + double wx = -R_layer * Math.sin(alphaW_layer * wireId); + double wy = -R_layer * Math.cos(alphaW_layer * wireId); // Find the interesection of the current wire with the end-plate // planes by construciting a long line that passes through the midpoint - double wx_end = R_layer * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double wy_end = R_layer * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); + double wx_end = -R_layer * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); + double wy_end = -R_layer * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); Line3D line = new Line3D(wx, wy, 0, wx_end, wy_end, zl); Point3D lPoint = new Point3D(); @@ -150,31 +150,31 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye // Do not change the code above. It is for signal wires positioning // Construct the cell around the signal wires created above top - double px_0 = (R_layer + 2) * Math.cos(alphaW_layer * wireId); - double py_0 = (R_layer + 2) * Math.sin(alphaW_layer * wireId); - double px_1 = (R_layer + 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2); - double py_1 = (R_layer + 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2); - double px_2 = (R_layer - 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2); - double py_2 = (R_layer - 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2); - double px_3 = (R_layer - 2) * Math.cos(alphaW_layer * wireId); - double py_3 = (R_layer - 2) * Math.sin(alphaW_layer * wireId); - double px_4 = (R_layer - 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2); - double py_4 = (R_layer - 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2); - double px_5 = (R_layer + 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2); - double py_5 = (R_layer + 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2); + double px_0 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId); + double py_0 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId); + double px_1 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2); + double py_1 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2); + double px_2 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2); + double py_2 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2); + double px_3 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId); + double py_3 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId); + double px_4 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2); + double py_4 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2); + double px_5 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2); + double py_5 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2); // bottom (do not forget to add the +20 deg. twist respect to the "straight" version) - double px_6 = (R_layer + 2) * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double py_6 = (R_layer + 2) * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double px_7 = (R_layer + 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double py_7 = (R_layer + 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double px_8 = (R_layer - 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double py_8 = (R_layer - 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double px_9 = (R_layer - 2) * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double py_9 = (R_layer - 2) * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double px_10 = (R_layer - 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double py_10 = (R_layer - 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double px_11 = (R_layer + 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double py_11 = (R_layer + 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double px_6 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); + double py_6 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); + double px_7 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double py_7 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double px_8 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double py_8 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double px_9 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); + double py_9 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); + double px_10 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double py_10 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double px_11 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double py_11 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); // Group into points with (x,y,z) coordinates List firstF = new ArrayList<>(); diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java index b97c982950..a07e4299df 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java @@ -88,11 +88,11 @@ public Hit(int superLayer, int layer, int wire, int numWire, double r, double do R_layer = R_layer + DR_layer * (this.layer-1);//OK double alphaW_layer = Math.toRadians(round / (numWires));//OK - double wx = R_layer * Math.cos(alphaW_layer * (this.wire-1));//OK - double wy = R_layer * Math.sin(alphaW_layer * (this.wire-1));//OK + double wx = -R_layer * Math.sin(alphaW_layer * (this.wire-1));//OK + double wy = -R_layer * Math.cos(alphaW_layer * (this.wire-1));//OK - double wx_end = R_layer * Math.cos(alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)));//OK - double wy_end = R_layer * Math.sin(alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)));//OK + double wx_end = -R_layer * Math.sin(alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)));//OK + double wy_end = -R_layer * Math.cos(alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)));//OK this.phi = Math.atan2( (wy+wy_end)*0.5, (wx+wx_end)*0.5 ); //System.out.println(" superlayer " + this.superLayer + " layer " + this.layer + " wire " + this.wire + " wx " + wx + " wy " + wy + " wx_end " + wx_end + " wy_end " + wy_end + " phi " + this.phi); @@ -113,11 +113,11 @@ public Hit(int superLayer, int layer, int wire, int numWire, double r, double do //calculate the "virtual" left and right wires accounting for the DOCA double deltaphi = Math.asin(this.doca/R_layer); - double wx_plus = R_layer * Math.cos( alphaW_layer * (this.wire-1) - deltaphi );//OK - double wy_plus = R_layer * Math.sin( alphaW_layer * (this.wire-1) - deltaphi );//OK + double wx_plus = -R_layer * Math.sin( alphaW_layer * (this.wire-1) - deltaphi );//OK + double wy_plus = -R_layer * Math.cos( alphaW_layer * (this.wire-1) - deltaphi );//OK - double wx_plus_end = R_layer * Math.cos( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) - deltaphi );//OK - double wy_plus_end = R_layer * Math.sin( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) - deltaphi );//OK + double wx_plus_end = -R_layer * Math.sin( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) - deltaphi );//OK + double wy_plus_end = -R_layer * Math.cos( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) - deltaphi );//OK line = new Line3D(wx_plus, wy_plus, -zl/2, wx_plus_end, wy_plus_end, zl/2); lPoint = new Point3D(); @@ -128,11 +128,11 @@ public Hit(int superLayer, int layer, int wire, int numWire, double r, double do wireLine = new Line3D(lPoint, rPoint); this.line3D_plus = wireLine; - double wx_minus = R_layer * Math.cos( alphaW_layer * (this.wire-1) + deltaphi );//OK - double wy_minus = R_layer * Math.sin( alphaW_layer * (this.wire-1) + deltaphi );//OK + double wx_minus = -R_layer * Math.sin( alphaW_layer * (this.wire-1) + deltaphi );//OK + double wy_minus = -R_layer * Math.cos( alphaW_layer * (this.wire-1) + deltaphi );//OK - double wx_minus_end = R_layer * Math.cos( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) + deltaphi );//OK - double wy_minus_end = R_layer * Math.sin( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) + deltaphi );//OK + double wx_minus_end = -R_layer * Math.sin( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) + deltaphi );//OK + double wy_minus_end = -R_layer * Math.cos( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) + deltaphi );//OK line = new Line3D(wx_minus, wy_minus, -zl/2, wx_minus_end, wy_minus_end, zl/2); lPoint = new Point3D(); From 699fd151c9d47aa4252e7b0f2593be7c30c86654 Mon Sep 17 00:00:00 2001 From: Raffaella De Vita Date: Mon, 14 Apr 2025 20:15:27 -0400 Subject: [PATCH 075/100] redefine AHDC wires to have the first wire at phi~0 and wire number increasing with phi --- .../detector/alert/AHDC/AlertDCFactory.java | 85 ++++++++++--------- 1 file changed, 45 insertions(+), 40 deletions(-) diff --git a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java index 0a9bd13026..5544de1780 100644 --- a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java +++ b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java @@ -125,20 +125,25 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye double alphaW_layer = Math.toRadians(round / (numWires)); // shift the wire end point +-20deg in XY plan - double thster = Math.toRadians(20.0d); + double thster = Math.toRadians(-20.0d); double zl = 300.0d; // Create AHDC sense wires - for (int wireId = 0; wireId < numWires; wireId++) { + for (int iw = 0; iw < numWires; iw++) { - // The point given by (wx, wy, wz) is the midpoint of the current wire. - double wx = -R_layer * Math.sin(alphaW_layer * wireId); - double wy = -R_layer * Math.cos(alphaW_layer * wireId); + int wireId = iw + 1 + (int) (numWires/2); + if(wireId>numWires) wireId -= numWires; + + double wirePhiIndex = (numWires/2) + iw - 0.5*(layerId-1); // start at phi=180 + + // The point given by (wx, wy, wz) is the origin of the current wire. + double wx = R_layer * Math.cos(alphaW_layer * wirePhiIndex); + double wy = R_layer * Math.sin(alphaW_layer * wirePhiIndex); // Find the interesection of the current wire with the end-plate // planes by construciting a long line that passes through the midpoint - double wx_end = -R_layer * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double wy_end = -R_layer * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); + double wx_end = R_layer * Math.cos(alphaW_layer * wirePhiIndex + thster * (Math.pow(-1, superlayerId))); + double wy_end = R_layer * Math.sin(alphaW_layer * wirePhiIndex + thster * (Math.pow(-1, superlayerId))); Line3D line = new Line3D(wx, wy, 0, wx_end, wy_end, zl); Point3D lPoint = new Point3D(); @@ -150,31 +155,31 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye // Do not change the code above. It is for signal wires positioning // Construct the cell around the signal wires created above top - double px_0 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId); - double py_0 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId); - double px_1 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2); - double py_1 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2); - double px_2 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2); - double py_2 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2); - double px_3 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId); - double py_3 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId); - double px_4 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2); - double py_4 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2); - double px_5 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2); - double py_5 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2); + double px_0 = (R_layer + 2) * Math.cos(alphaW_layer * wirePhiIndex); + double py_0 = (R_layer + 2) * Math.sin(alphaW_layer * wirePhiIndex); + double px_1 = (R_layer + 2) * Math.cos(alphaW_layer * wirePhiIndex + alphaW_layer / 2); + double py_1 = (R_layer + 2) * Math.sin(alphaW_layer * wirePhiIndex + alphaW_layer / 2); + double px_2 = (R_layer - 2) * Math.cos(alphaW_layer * wirePhiIndex + alphaW_layer / 2); + double py_2 = (R_layer - 2) * Math.sin(alphaW_layer * wirePhiIndex + alphaW_layer / 2); + double px_3 = (R_layer - 2) * Math.cos(alphaW_layer * wirePhiIndex); + double py_3 = (R_layer - 2) * Math.sin(alphaW_layer * wirePhiIndex); + double px_4 = (R_layer - 2) * Math.cos(alphaW_layer * wirePhiIndex - alphaW_layer / 2); + double py_4 = (R_layer - 2) * Math.sin(alphaW_layer * wirePhiIndex - alphaW_layer / 2); + double px_5 = (R_layer + 2) * Math.cos(alphaW_layer * wirePhiIndex - alphaW_layer / 2); + double py_5 = (R_layer + 2) * Math.sin(alphaW_layer * wirePhiIndex - alphaW_layer / 2); // bottom (do not forget to add the +20 deg. twist respect to the "straight" version) - double px_6 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double py_6 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double px_7 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double py_7 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double px_8 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double py_8 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double px_9 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double py_9 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId + thster * (Math.pow(-1, superlayerId))); - double px_10 = -(R_layer - 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double py_10 = -(R_layer - 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double px_11 = -(R_layer + 2) * Math.sin(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); - double py_11 = -(R_layer + 2) * Math.cos(alphaW_layer * wireId - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double px_6 = (R_layer + 2) * Math.cos(alphaW_layer * wirePhiIndex + thster * (Math.pow(-1, superlayerId))); + double py_6 = (R_layer + 2) * Math.sin(alphaW_layer * wirePhiIndex + thster * (Math.pow(-1, superlayerId))); + double px_7 = (R_layer + 2) * Math.cos(alphaW_layer * wirePhiIndex + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double py_7 = (R_layer + 2) * Math.sin(alphaW_layer * wirePhiIndex + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double px_8 = (R_layer - 2) * Math.cos(alphaW_layer * wirePhiIndex + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double py_8 = (R_layer - 2) * Math.sin(alphaW_layer * wirePhiIndex + alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double px_9 = (R_layer - 2) * Math.cos(alphaW_layer * wirePhiIndex + thster * (Math.pow(-1, superlayerId))); + double py_9 = (R_layer - 2) * Math.sin(alphaW_layer * wirePhiIndex + thster * (Math.pow(-1, superlayerId))); + double px_10 = (R_layer - 2) * Math.cos(alphaW_layer * wirePhiIndex - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double py_10 = (R_layer - 2) * Math.sin(alphaW_layer * wirePhiIndex - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double px_11 = (R_layer + 2) * Math.cos(alphaW_layer * wirePhiIndex - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); + double py_11 = (R_layer + 2) * Math.sin(alphaW_layer * wirePhiIndex - alphaW_layer / 2 + thster * (Math.pow(-1, superlayerId))); // Group into points with (x,y,z) coordinates List firstF = new ArrayList<>(); @@ -195,25 +200,25 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye Point3D p_11 = new Point3D(px_11, py_11, zl); // defining a cell around a wireLine, must be counter-clockwise! firstF.add(p_0); - firstF.add(p_1); - firstF.add(p_2); - firstF.add(p_3); - firstF.add(p_4); firstF.add(p_5); + firstF.add(p_4); + firstF.add(p_3); + firstF.add(p_2); + firstF.add(p_1); secondF.add(p_6); - secondF.add(p_7); - secondF.add(p_8); - secondF.add(p_9); - secondF.add(p_10); secondF.add(p_11); + secondF.add(p_10); + secondF.add(p_9); + secondF.add(p_8); + secondF.add(p_7); // Create the cell and signal wire inside // PrismaticComponent(int componentId, List firstFace, List secondFace) // not possible to add directly PrismaticComponent class because it is an ABSTRACT // a new class should be created: public class NewClassWire extends PrismaticComponent {...} // 5 top points & 5 bottom points with convexe shape. Concave shape is not supported. - AlertDCWire wire = new AlertDCWire(wireId+1, wireLine, firstF, secondF); + AlertDCWire wire = new AlertDCWire(wireId, wireLine, firstF, secondF); // Add wire object to the list layer.addComponent(wire); } From bc6c11f13eba69949f9e016d1aaffffc98cd9be3 Mon Sep 17 00:00:00 2001 From: Raffaella De Vita Date: Mon, 14 Apr 2025 22:03:58 -0400 Subject: [PATCH 076/100] shift the AHDC center to z=0, improve code clarity --- .../detector/alert/AHDC/AlertDCFactory.java | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java index 5544de1780..3f2d8c5406 100644 --- a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java +++ b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java @@ -86,8 +86,8 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye double R_layer = 32.0d; double DR_layer = 4.0d; - double zoff1 = 0.0d; - double zoff2 = 300.0d; + double zoff1 = -150.0d; + double zoff2 = 150.0d; Point3D p1 = new Point3D(R_layer, 0, zoff1); Vector3D n1 = new Vector3D(0, 0, 1); @@ -131,10 +131,12 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye // Create AHDC sense wires for (int iw = 0; iw < numWires; iw++) { - int wireId = iw + 1 + (int) (numWires/2); - if(wireId>numWires) wireId -= numWires; + // start at phi=180 + double wirePhiIndex = (numWires/2) + iw - 0.5*(layerId-1); - double wirePhiIndex = (numWires/2) + iw - 0.5*(layerId-1); // start at phi=180 + // the wire id is such that the wire number = (wireId+1) is the first wqual or greater than numWires/2 + int wireId = iw + (int) (numWires/2); + if(wireId>numWires-1) wireId -= numWires; // The point given by (wx, wy, wz) is the origin of the current wire. double wx = R_layer * Math.cos(alphaW_layer * wirePhiIndex); @@ -144,7 +146,7 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye // planes by construciting a long line that passes through the midpoint double wx_end = R_layer * Math.cos(alphaW_layer * wirePhiIndex + thster * (Math.pow(-1, superlayerId))); double wy_end = R_layer * Math.sin(alphaW_layer * wirePhiIndex + thster * (Math.pow(-1, superlayerId))); - Line3D line = new Line3D(wx, wy, 0, wx_end, wy_end, zl); + Line3D line = new Line3D(wx, wy, -zl/2, wx_end, wy_end, zl/2); Point3D lPoint = new Point3D(); Point3D rPoint = new Point3D(); @@ -185,19 +187,19 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye List firstF = new ArrayList<>(); List secondF = new ArrayList<>(); // first Face - Point3D p_0 = new Point3D(px_0, py_0, 0.0d); - Point3D p_1 = new Point3D(px_1, py_1, 0.0d); - Point3D p_2 = new Point3D(px_2, py_2, 0.0d); - Point3D p_3 = new Point3D(px_3, py_3, 0.0d); - Point3D p_4 = new Point3D(px_4, py_4, 0.0d); - Point3D p_5 = new Point3D(px_5, py_5, 0.0d); + Point3D p_0 = new Point3D(px_0, py_0, -zl/2); + Point3D p_1 = new Point3D(px_1, py_1, -zl/2); + Point3D p_2 = new Point3D(px_2, py_2, -zl/2); + Point3D p_3 = new Point3D(px_3, py_3, -zl/2); + Point3D p_4 = new Point3D(px_4, py_4, -zl/2); + Point3D p_5 = new Point3D(px_5, py_5, -zl/2); // second Face - Point3D p_6 = new Point3D(px_6, py_6, zl); - Point3D p_7 = new Point3D(px_7, py_7, zl); - Point3D p_8 = new Point3D(px_8, py_8, zl); - Point3D p_9 = new Point3D(px_9, py_9, zl); - Point3D p_10 = new Point3D(px_10, py_10, zl); - Point3D p_11 = new Point3D(px_11, py_11, zl); + Point3D p_6 = new Point3D(px_6, py_6, zl/2); + Point3D p_7 = new Point3D(px_7, py_7, zl/2); + Point3D p_8 = new Point3D(px_8, py_8, zl/2); + Point3D p_9 = new Point3D(px_9, py_9, zl/2); + Point3D p_10 = new Point3D(px_10, py_10, zl/2); + Point3D p_11 = new Point3D(px_11, py_11, zl/2); // defining a cell around a wireLine, must be counter-clockwise! firstF.add(p_0); firstF.add(p_5); @@ -218,7 +220,7 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye // not possible to add directly PrismaticComponent class because it is an ABSTRACT // a new class should be created: public class NewClassWire extends PrismaticComponent {...} // 5 top points & 5 bottom points with convexe shape. Concave shape is not supported. - AlertDCWire wire = new AlertDCWire(wireId, wireLine, firstF, secondF); + AlertDCWire wire = new AlertDCWire(wireId+1, wireLine, firstF, secondF); // Add wire object to the list layer.addComponent(wire); } From b6ae96ced4d0a0b992bab8221f69da46d2e5638b Mon Sep 17 00:00:00 2001 From: Raffaella De Vita Date: Mon, 14 Apr 2025 23:11:01 -0400 Subject: [PATCH 077/100] replaced hardcoded geometry calculations in hit definition with info from geometry service --- .../main/java/org/jlab/rec/ahdc/Hit/Hit.java | 64 +++------ .../java/org/jlab/rec/ahdc/Hit/HitReader.java | 2 +- .../org/jlab/rec/ahdc/KalmanFilter/Hit.java | 121 ++---------------- .../jlab/rec/ahdc/KalmanFilter/Hit_beam.java | 3 +- .../rec/ahdc/KalmanFilter/KalmanFilter.java | 2 +- .../org/jlab/service/ahdc/AHDCEngine.java | 5 +- 6 files changed, 40 insertions(+), 157 deletions(-) diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java index 1cfe7a7162..26007ae847 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/Hit.java @@ -1,5 +1,8 @@ package org.jlab.rec.ahdc.Hit; +import org.jlab.geom.detector.alert.AHDC.AlertDCDetector; +import org.jlab.geom.prim.Line3D; +import org.jlab.geom.prim.Point3D; public class Hit implements Comparable { @@ -12,6 +15,7 @@ public class Hit implements Comparable { private final double adc; private final double time; + private Line3D wireLine; private double phi; private double radius; private int nbOfWires; @@ -31,55 +35,21 @@ public Hit(int _Id, int _Super_layer, int _Layer, int _Wire, double _Doca, doubl this.doca = _Doca; this.adc = _ADC; this.time = _Time; - wirePosition(); this.residual_prefit = 0.0; this.residual = 0.0; this.trackId = -1; // not defined yet } - private void wirePosition() { - final double DR_layer = 4.0; - final double round = 360.0; - - double numWires = 32.0; - double R_layer = 47.0; - - switch (this.superLayerId) { - case 1: - numWires = 47.0; - R_layer = 32.0; - break; - case 2: - numWires = 56.0; - R_layer = 38.0; - break; - case 3: - numWires = 72.0; - R_layer = 48.0; - break; - case 4: - numWires = 87.0; - R_layer = 58.0; - break; - case 5: - numWires = 99.0; - R_layer = 68.0; - break; - } - - R_layer = R_layer + DR_layer * (this.layerId-1); - double alphaW_layer = Math.toRadians(round / (numWires)); - //should it be at z = 0? in which case, we need to account for the positive or negative stereo angle... - double wx = -R_layer * Math.sin(alphaW_layer * (this.wireId-1) + 0.5*thster * (Math.pow(-1, this.superLayerId-1))); - double wy = -R_layer * Math.cos(alphaW_layer * (this.wireId-1) + 0.5*thster * (Math.pow(-1, this.superLayerId-1))); - + public void setWirePosition(AlertDCDetector factory) { + //System.out.println(" superlayer " + this.superLayerId + " layer " + this.layerId + " wire " + this.wireId + " R_layer " + R_layer + " wx " + wx + " wy " + wy); - - this.nbOfWires = (int) numWires; - this.phi = Math.atan2(wy, wx); - this.radius = R_layer; - this.x = wx; - this.y = wy; + wireLine = factory.getSector(1).getSuperlayer(superLayerId).getLayer(layerId).getComponent(wireId).getLine(); + Point3D end = wireLine.end(); + this.nbOfWires = factory.getSector(1).getSuperlayer(superLayerId).getLayer(layerId).getNumComponents(); + this.phi = end.vectorFrom(0, 0, 0).phi(); + this.radius = end.distance(0, 0, end.z()); + this.x = end.x(); + this.y = end.y(); } @Override @@ -99,7 +69,7 @@ public int compareTo(Hit arg0) { public int getId() { return id; } - + public int getSuperLayerId() { return superLayerId; } @@ -116,7 +86,11 @@ public double getDoca() { return doca; } - public double getRadius() { + public Line3D getLine() { + return wireLine; + } + + public double getRadius() { return radius; } 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 60f900acc1..3a0252c0bf 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 @@ -12,7 +12,7 @@ public class HitReader { private ArrayList _AHDCHits; private ArrayList _TrueAHDCHits; - public HitReader(DataEvent event, boolean simulation) { + public HitReader(DataEvent event, boolean simulation) { fetch_AHDCHits(event); if (simulation) fetch_TrueAHDCHits(event); } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java index a07e4299df..0aeabb8af0 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit.java @@ -11,8 +11,6 @@ public class Hit implements Comparable { - private final double thster = Math.toRadians(20.0); - private final double zl = 300.0;//OK private final int superLayer; private final int layer; private final int wire; @@ -30,118 +28,31 @@ public class Hit implements Comparable { // Comparison with: common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java // here, SuperLayer, Layer, Wire, start from 1 // in AlertDCFactory, same variables start from 1 - public Hit(int superLayer, int layer, int wire, int numWire, double r, double doca) { + public Hit(int superLayer, int layer, int wire, int numWire, Line3D line, double doca) { this.superLayer = superLayer; this.layer = layer; this.wire = wire; - this.r = r; + this.r = line.end().distance(0, 0, line.end().z()); this.doca = doca; this.numWires = numWire; this.adc = 0;//placeholder this.hitidx = -1; this.hitsign = 0; - final double DR_layer = 4.0;//OK - final double round = 360.0;//OK - final double thster = Math.toRadians(20.0);//OK - - double numWires = 32.0; - double R_layer = 47.0; - - double zoff1 = -zl/2;//OK - double zoff2 = +zl/2;//OK - Point3D p1 = new Point3D(R_layer, 0, zoff1); - Vector3D n1 = new Vector3D(0, 0, 1); - //n1.rotateY(-thopen); - //n1.rotateZ(thtilt); - Plane3D lPlane = new Plane3D(p1, n1);//OK - - Point3D p2 = new Point3D(R_layer, 0, zoff2); - Vector3D n2 = new Vector3D(0, 0, 1); - //n2.rotateY(thopen); - //n2.rotateZ(thtilt); - Plane3D rPlane = new Plane3D(p2, n2);//OK - - switch (this.superLayer) {//OK - case 1: - numWires = 47.0; - R_layer = 32.0; - break; - case 2: - numWires = 56.0; - R_layer = 38.0; - break; - case 3: - numWires = 72.0; - R_layer = 48.0; - break; - case 4: - numWires = 87.0; - R_layer = 58.0; - break; - case 5: - numWires = 99.0; - R_layer = 68.0; - break; - } - - - R_layer = R_layer + DR_layer * (this.layer-1);//OK - double alphaW_layer = Math.toRadians(round / (numWires));//OK - double wx = -R_layer * Math.sin(alphaW_layer * (this.wire-1));//OK - double wy = -R_layer * Math.cos(alphaW_layer * (this.wire-1));//OK - - double wx_end = -R_layer * Math.sin(alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)));//OK - double wy_end = -R_layer * Math.cos(alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)));//OK - - this.phi = Math.atan2( (wy+wy_end)*0.5, (wx+wx_end)*0.5 ); + this.phi = line.midpoint().vectorFrom(0,0,0).phi(); //System.out.println(" superlayer " + this.superLayer + " layer " + this.layer + " wire " + this.wire + " wx " + wx + " wy " + wy + " wx_end " + wx_end + " wy_end " + wy_end + " phi " + this.phi); - Line3D line = new Line3D(wx, wy, -zl/2, wx_end, wy_end, zl/2); - Point3D lPoint = new Point3D(); - Point3D rPoint = new Point3D(); - lPlane.intersection(line, lPoint); - rPlane.intersection(line, rPoint); - //lPoint.setZ(-zl/2); - //rPoint.setZ(zl/2); - //lPoint.show(); - //rPoint.show(); - // All wire go from left to right - Line3D wireLine = new Line3D(lPoint, rPoint); - //wireLine.show(); - this.line3D = wireLine; + this.line3D = line; //calculate the "virtual" left and right wires accounting for the DOCA - double deltaphi = Math.asin(this.doca/R_layer); - double wx_plus = -R_layer * Math.sin( alphaW_layer * (this.wire-1) - deltaphi );//OK - double wy_plus = -R_layer * Math.cos( alphaW_layer * (this.wire-1) - deltaphi );//OK - - double wx_plus_end = -R_layer * Math.sin( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) - deltaphi );//OK - double wy_plus_end = -R_layer * Math.cos( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) - deltaphi );//OK - - line = new Line3D(wx_plus, wy_plus, -zl/2, wx_plus_end, wy_plus_end, zl/2); - lPoint = new Point3D(); - rPoint = new Point3D(); - lPlane.intersection(line, lPoint); - rPlane.intersection(line, rPoint); - - wireLine = new Line3D(lPoint, rPoint); - this.line3D_plus = wireLine; - - double wx_minus = -R_layer * Math.sin( alphaW_layer * (this.wire-1) + deltaphi );//OK - double wy_minus = -R_layer * Math.cos( alphaW_layer * (this.wire-1) + deltaphi );//OK - - double wx_minus_end = -R_layer * Math.sin( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) + deltaphi );//OK - double wy_minus_end = -R_layer * Math.cos( alphaW_layer * (this.wire-1) + thster * (Math.pow(-1, this.superLayer-1)) + deltaphi );//OK - - line = new Line3D(wx_minus, wy_minus, -zl/2, wx_minus_end, wy_minus_end, zl/2); - lPoint = new Point3D(); - rPoint = new Point3D(); - lPlane.intersection(line, lPoint); - rPlane.intersection(line, rPoint); - - wireLine = new Line3D(lPoint, rPoint); - this.line3D_minus = wireLine; + double deltaphi = Math.asin(this.doca/r); + this.line3D_plus = new Line3D(); + this.line3D_plus.copy(line); + this.line3D_plus.rotateZ(deltaphi); + + this.line3D_minus = new Line3D(); + this.line3D_minus.copy(line); + this.line3D_minus.rotateZ(deltaphi); } @@ -180,9 +91,7 @@ public double doca() { public double phi() {return phi;}//at z = 0; public double phi(double z) { - double x_z = r*Math.sin( phi + thster * z/(zl*0.5) * (Math.pow(-1, this.superLayer-1)) ); - double y_z = r*Math.cos( phi + thster * z/(zl*0.5) * (Math.pow(-1, this.superLayer-1)) ); - return Math.atan2(x_z, y_z); + return this.line3D.lerpPoint((z-line3D.origin().z())/line3D.length()).vectorFrom(0,0,0).phi(); } public Line3D line() {return line3D;} @@ -216,10 +125,6 @@ public RealVector get_Vector_beam() { return null; } - public double getThster() { - return thster; - } - public int getSuperLayer() { return superLayer; } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit_beam.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit_beam.java index d3221b2939..a578f7da99 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit_beam.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/Hit_beam.java @@ -2,6 +2,7 @@ import org.apache.commons.math3.linear.ArrayRealVector; import org.apache.commons.math3.linear.RealVector; +import org.jlab.geom.prim.Line3D; public class Hit_beam extends Hit { @@ -9,7 +10,7 @@ public class Hit_beam extends Hit { double r,phi; public Hit_beam(int superLayer, int layer, int wire, int numWire, double doca, double x, double y , double z) { - super(0, 0, 0, 0, Math.hypot(x,y), 0); + super(0, 0, 0, 0, new Line3D(x,y,0,x,y,1), 0); this.x = x; this.y = y; this.z = z; diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java index 7dca755a9e..3ff2ad9f40 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/KalmanFilter/KalmanFilter.java @@ -97,7 +97,7 @@ private void propagation(ArrayList tracks, DataEvent event, boolean IsMC) //System.out.println(" px " + y[3] + " py " + y[4] +" pz " + y[5] +" vz " + y[2] + " number of hits: " + AHDC_hits.size() + " MC hits? " + sim_hits.size()); track.set_n_hits(AHDC_hits.size()); for (org.jlab.rec.ahdc.Hit.Hit AHDC_hit : AHDC_hits) { - Hit hit = new Hit(AHDC_hit.getSuperLayerId(), AHDC_hit.getLayerId(), AHDC_hit.getWireId(), AHDC_hit.getNbOfWires(), AHDC_hit.getRadius(), AHDC_hit.getDoca()); + Hit hit = new Hit(AHDC_hit.getSuperLayerId(), AHDC_hit.getLayerId(), AHDC_hit.getWireId(), AHDC_hit.getNbOfWires(), AHDC_hit.getLine(), AHDC_hit.getDoca()); hit.setADC(AHDC_hit.getADC()); hit.setHitIdx(AHDC_hit.getId()); hit.setSign(0); 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 d4b2937307..acfad2b31d 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 @@ -27,6 +27,7 @@ import java.io.File; import java.util.*; import org.jlab.detector.calib.utils.DatabaseConstantProvider; +import org.jlab.geom.base.Detector; import org.jlab.geom.detector.alert.AHDC.AlertDCFactory; /** AHDCEngine reconstruction service. @@ -60,6 +61,8 @@ public class AHDCEngine extends ReconstructionEngine { /// \todo better name... mode for what? private Mode mode = Mode.CV_Track_Finding; + private Detector factory = null; + public AHDCEngine() { super("ALERT", "ouillon", "1.0.1"); } @@ -67,7 +70,7 @@ public AHDCEngine() { @Override public boolean init() { - (new AlertDCFactory()).createDetectorCLAS(new DatabaseConstantProvider()); + factory = (new AlertDCFactory()).createDetectorCLAS(new DatabaseConstantProvider()); simulation = false; findingMethod = "distance"; From 1b8b52e2de653eb8d25707792b81887f68fd37a1 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Wed, 16 Apr 2025 14:14:04 -0400 Subject: [PATCH 078/100] one more modification to AHDC wire numbering to have first wire either at phi=0 or +half cell, set wirelines in HitReader (#571) Co-authored-by: Raffaella De Vita --- .../geom/detector/alert/AHDC/AlertDCFactory.java | 12 +++++------- .../main/java/org/jlab/rec/ahdc/Hit/HitReader.java | 13 ++++++++----- .../main/java/org/jlab/service/ahdc/AHDCEngine.java | 6 +++--- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java index 3f2d8c5406..7b9bd1ad90 100644 --- a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java +++ b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/AHDC/AlertDCFactory.java @@ -129,14 +129,12 @@ public AlertDCLayer createLayer(ConstantProvider cp, int sectorId, int superlaye double zl = 300.0d; // Create AHDC sense wires - for (int iw = 0; iw < numWires; iw++) { + for (int wireId = 0; wireId < numWires; wireId++) { - // start at phi=180 - double wirePhiIndex = (numWires/2) + iw - 0.5*(layerId-1); - - // the wire id is such that the wire number = (wireId+1) is the first wqual or greater than numWires/2 - int wireId = iw + (int) (numWires/2); - if(wireId>numWires-1) wireId -= numWires; + // start at phi=0 + // in each layer the first wire is the first at phi>=0, i.e. + // 0.5 0 0.5 0 0.5 0.5 0 0.5 for layer 1 to 8 + double wirePhiIndex = wireId + 0.5*(numWires%2) + 0.5*layerId*(1-2*(numWires%2)); // The point given by (wx, wy, wz) is the origin of the current wire. double wx = R_layer * Math.cos(alphaW_layer * wirePhiIndex); 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 3a0252c0bf..489f15a030 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 @@ -5,6 +5,7 @@ import org.jlab.io.base.DataBank; import org.jlab.io.base.DataEvent; import org.jlab.detector.banks.RawDataBank; +import org.jlab.geom.detector.alert.AHDC.AlertDCDetector; import org.jlab.rec.alert.constants.CalibrationConstantsLoader; public class HitReader { @@ -12,12 +13,12 @@ public class HitReader { private ArrayList _AHDCHits; private ArrayList _TrueAHDCHits; - public HitReader(DataEvent event, boolean simulation) { - fetch_AHDCHits(event); + public HitReader(DataEvent event, AlertDCDetector detector, boolean simulation) { + fetch_AHDCHits(event, detector); if (simulation) fetch_TrueAHDCHits(event); } - public void fetch_AHDCHits(DataEvent event) { + public final void fetch_AHDCHits(DataEvent event, AlertDCDetector detector) { ArrayList hits = new ArrayList<>(); if (event.hasBank("AHDC::adc")) { @@ -58,14 +59,16 @@ public void fetch_AHDCHits(DataEvent event) { // TO BE DONE //double doca = bankDGTZ.getShort("ped", i) / 1000.0; double doca = p0 + p1*Math.pow(time,1.0) + p2*Math.pow(time,2.0) + p3*Math.pow(time,3.0) + p4*Math.pow(time,4.0) + p5*Math.pow(time, 5.0); - hits.add(new Hit(id, superlayer, layer, wire, doca, adc, time)); + Hit h = new Hit(id, superlayer, layer, wire, doca, adc, time); + h.setWirePosition(detector); + hits.add(h); } } } this.set_AHDCHits(hits); } - public void fetch_TrueAHDCHits(DataEvent event) { + public final void fetch_TrueAHDCHits(DataEvent event) { ArrayList truehits = new ArrayList<>(); DataBank bankSIMU = event.getBank("MC::True"); 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 acfad2b31d..d1e4f9efb1 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 @@ -27,7 +27,7 @@ import java.io.File; import java.util.*; import org.jlab.detector.calib.utils.DatabaseConstantProvider; -import org.jlab.geom.base.Detector; +import org.jlab.geom.detector.alert.AHDC.AlertDCDetector; import org.jlab.geom.detector.alert.AHDC.AlertDCFactory; /** AHDCEngine reconstruction service. @@ -61,7 +61,7 @@ public class AHDCEngine extends ReconstructionEngine { /// \todo better name... mode for what? private Mode mode = Mode.CV_Track_Finding; - private Detector factory = null; + private AlertDCDetector factory = null; public AHDCEngine() { super("ALERT", "ouillon", "1.0.1"); @@ -146,7 +146,7 @@ public boolean processDataEvent(DataEvent event) { if (event.hasBank("AHDC::adc")) { // I) Read raw hit - HitReader hitRead = new HitReader(event, simulation); + HitReader hitRead = new HitReader(event, factory, simulation); ArrayList AHDC_Hits = hitRead.get_AHDCHits(); if(simulation){ From 20d8d3f92ec8eede84d2e68caf5f2ce1bf515d66 Mon Sep 17 00:00:00 2001 From: Felix Touchte Codjo <119527892+ftouchte@users.noreply.github.com> Date: Thu, 17 Apr 2025 11:24:39 -0400 Subject: [PATCH 079/100] Load raw hit cuts for ahdc from ccdb (#572) - load raw hit cuts from ccdb - update the key value of the atof ccdb --- .../java/org/jlab/rec/ahdc/Hit/HitReader.java | 20 ++++++++-- .../constants/CalibrationConstantsLoader.java | 37 +++++++++++++++++-- .../org/jlab/service/ahdc/AHDCEngine.java | 3 +- 3 files changed, 51 insertions(+), 9 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 489f15a030..2b4293afba 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 @@ -38,10 +38,22 @@ public final void fetch_AHDCHits(DataEvent event, AlertDCDetector detector) { double adc = bankDGTZ.getInt("ADC", i); double leadingEdgeTime = bankDGTZ.getFloat("leadingEdgeTime", i); double timeOverThreshold = bankDGTZ.getFloat("timeOverThreshold", i); - // Temporary cuts - if ((adc >= 50) && (leadingEdgeTime >= 8*50.0) && (leadingEdgeTime <= 16*50.0) && (timeOverThreshold >= 6*50.0) && (timeOverThreshold <= 14*50.0)) { - // use calibration constants - int key_value = sector*10000 + number*100 + wire; + double adcOffset = bankDGTZ.getShort("ped", i); + // Retrieve raw hit cuts from CCDB + int key_value = sector*10000 + number*100 + wire; + double[] rawHitCuts = CalibrationConstantsLoader.AHDC_RAW_HIT_CUTS.get( key_value ); + double t_min = rawHitCuts[0]; + double t_max = rawHitCuts[1]; + double tot_min = rawHitCuts[2]; + double tot_max = rawHitCuts[3]; + double adc_min = rawHitCuts[4]; + double adc_max = rawHitCuts[5]; + double ped_min = rawHitCuts[6]; + double ped_max = rawHitCuts[7]; + //System.out.println("t_min : " + t_min + " t_max : " + t_max + " tot_min : " + tot_min + " tot_max : " + tot_max + " adc_min : " + adc_min + " adc_max : " + adc_max + " ped_min : " + ped_min + " ped_max : " + ped_max); + // Apply these cuts + if ((adc >= adc_min) && (adc <= adc_max) && (leadingEdgeTime >= t_min) && (leadingEdgeTime <= t_max) && (timeOverThreshold >= tot_min) && (timeOverThreshold <= tot_max) && (adcOffset >= ped_min) && (adcOffset <= ped_max)) { + // Retrieve others CCDB double[] timeOffsets = CalibrationConstantsLoader.AHDC_TIME_OFFSETS.get( key_value ); double[] time2distance = CalibrationConstantsLoader.AHDC_TIME_TO_DISTANCE.get( 10101 ); // the time to distance table has only one row ! (10101 is its only key) double t0 = timeOffsets[0]; diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java b/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java index 69b777eaa3..aedec9127f 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java @@ -28,6 +28,7 @@ public CalibrationConstantsLoader() { // AHDC public static Map AHDC_TIME_OFFSETS = new HashMap(); ///< AHDC Parameters for timing offsets public static Map AHDC_TIME_TO_DISTANCE = new HashMap(); ///< AHDC Parameters for time to distance + public static Map AHDC_RAW_HIT_CUTS = new HashMap(); ///< AHDC Parameters for raw hit cuts // ATOF public static Map ATOF_EFFECTIVE_VELOCITY = new HashMap(); ///< ATOF Parameters for effective velocity @@ -42,6 +43,7 @@ public static synchronized void Load(int runno, String var, ConstantsManager man IndexedTable ahdc_timeOffsets = manager.getConstants(runno, "/calibration/alert/ahdc/time_offsets"); IndexedTable ahdc_time2distance = manager.getConstants(runno, "/calibration/alert/ahdc/time_to_distance"); + IndexedTable ahdc_rawHitCuts = manager.getConstants(runno, "/calibration/alert/ahdc/raw_hit_cuts"); IndexedTable atof_effectiveVelocity = manager.getConstants(runno, "/calibration/alert/atof/effective_velocity"); IndexedTable atof_timeWalk = manager.getConstants(runno, "/calibration/alert/atof/time_walk"); IndexedTable atof_attenuationLength = manager.getConstants(runno, "/calibration/alert/atof/attenuation"); @@ -95,6 +97,27 @@ public static synchronized void Load(int runno, String var, ConstantsManager man //System.out.println("p0 : " + p0 + " p1 : " + p1 + " p2 : " + p2 + " p3 : " + p3 + " p4 : " + p4 + " p5 : " + p5); } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // AHDC raw hit cuts + for( int i = 0; i < ahdc_rawHitCuts.getRowCount(); i++){ + int sector = Integer.parseInt((String)ahdc_rawHitCuts.getValueAt(i, 0)); + int layer = Integer.parseInt((String)ahdc_rawHitCuts.getValueAt(i, 1)); + int component = Integer.parseInt((String)ahdc_rawHitCuts.getValueAt(i, 2)); + double t_min = ahdc_rawHitCuts.getDoubleValue("t_min", sector, layer, component); + double t_max = ahdc_rawHitCuts.getDoubleValue("t_max", sector, layer, component); + double tot_min = ahdc_rawHitCuts.getDoubleValue("tot_min", sector, layer, component); + double tot_max = ahdc_rawHitCuts.getDoubleValue("tot_max", sector, layer, component); + double adc_min = ahdc_rawHitCuts.getDoubleValue("adc_min", sector, layer, component); + double adc_max = ahdc_rawHitCuts.getDoubleValue("adc_max", sector, layer, component); + double ped_min = ahdc_rawHitCuts.getDoubleValue("ped_min", sector, layer, component); + double ped_max = ahdc_rawHitCuts.getDoubleValue("ped_max", sector, layer, component); + // Put in map + int key = sector*10000 + layer*100 + component; + double params[] = {t_min, t_max, tot_min, tot_max, adc_min, adc_max, ped_min, ped_max}; + AHDC_RAW_HIT_CUTS.put(Integer.valueOf(key), params); + //System.out.println("t_min : " + t_min + " t_max : " + t_max + " tot_min : " + tot_min + " tot_max : " + tot_max + " adc_min : " + adc_min + " adc_max : " + adc_max + " ped_min : " + ped_min + " ped_max : " + ped_max); + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ATOF effective velocity for( int i = 0; i < atof_effectiveVelocity.getRowCount(); i++){ @@ -106,9 +129,10 @@ public static synchronized void Load(int runno, String var, ConstantsManager man double extra1 = atof_effectiveVelocity.getDoubleValue("extra1", sector, layer, component); double extra2 = atof_effectiveVelocity.getDoubleValue("extra2", sector, layer, component); // Put in map - int key = sector*10000 + layer*100 + component; + int key = sector*10000 + layer*1000 + component*10; double params[] = {veff, dveff, extra1, extra2}; ATOF_EFFECTIVE_VELOCITY.put(Integer.valueOf(key), params); + //System.out.println("veff : " + veff + " dveff : " + dveff + " extra1 : " + extra1 + " extra2 : " + extra2); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -117,6 +141,7 @@ public static synchronized void Load(int runno, String var, ConstantsManager man int sector = Integer.parseInt((String)atof_timeWalk.getValueAt(i, 0)); int layer = Integer.parseInt((String)atof_timeWalk.getValueAt(i, 1)); int component = Integer.parseInt((String)atof_timeWalk.getValueAt(i, 2)); + int order = Integer.parseInt((String)atof_timeWalk.getValueAt(i, 3)); double tw0 = atof_timeWalk.getDoubleValue("tw0", sector, layer, component); double tw1 = atof_timeWalk.getDoubleValue("tw1", sector, layer, component); double tw2 = atof_timeWalk.getDoubleValue("tw2", sector, layer, component); @@ -127,9 +152,10 @@ public static synchronized void Load(int runno, String var, ConstantsManager man double dtw3 = atof_timeWalk.getDoubleValue("dtw3", sector, layer, component); double chi2ndf = atof_timeWalk.getDoubleValue("chi2ndf", sector, layer, component); // Put in map - int key = sector*10000 + layer*100 + component; + int key = sector*10000 + layer*1000 + component*10 + order; double params[] = {tw0, tw1, tw2, tw3, dtw0, dtw1, dtw2, dtw3, chi2ndf}; ATOF_TIME_WALK.put(Integer.valueOf(key), params); + //System.out.println("tw0 : " + tw0 + " tw1 : " + tw1 + " tw2 : " + tw2 + " tw3 : " + tw3 + " ..."); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -143,9 +169,10 @@ public static synchronized void Load(int runno, String var, ConstantsManager man double extra1 = atof_attenuationLength.getDoubleValue("extra1", sector, layer, component); double extra2 = atof_attenuationLength.getDoubleValue("extra2", sector, layer, component); // Put in map - int key = sector*10000 + layer*100 + component; + int key = sector*10000 + layer*1000 + component*10; double params[] = {attlen, dattlen, extra1, extra2}; ATOF_ATTENUATION_LENGTH.put(Integer.valueOf(key), params); + //System.out.println("attlen : " + attlen + " dattlen : " + dattlen + " extra1 : " +extra1 + " extra2 : " + extra2 + " ..."); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -154,15 +181,17 @@ public static synchronized void Load(int runno, String var, ConstantsManager man int sector = Integer.parseInt((String)atof_timeOffsets.getValueAt(i, 0)); int layer = Integer.parseInt((String)atof_timeOffsets.getValueAt(i, 1)); int component = Integer.parseInt((String)atof_timeOffsets.getValueAt(i, 2)); + int order = Integer.parseInt((String)atof_timeOffsets.getValueAt(i, 3)); // we have to use it here ! double t0 = atof_timeOffsets.getDoubleValue("t0", sector, layer, component); double upstream_downstream = atof_timeOffsets.getDoubleValue("upstream_downstream", sector, layer, component); double wedge_bar = atof_timeOffsets.getDoubleValue("wedge_bar", sector, layer, component); double extra1 = atof_timeOffsets.getDoubleValue("extra1", sector, layer, component); double extra2 = atof_timeOffsets.getDoubleValue("extra2", sector, layer, component); // Put in map - int key = sector*10000 + layer*100 + component; + int key = sector*10000 + layer*1000 + component*10 + order; double params[] = {t0, upstream_downstream, wedge_bar, extra1, extra2}; ATOF_TIME_OFFSETS.put(Integer.valueOf(key), params); + //System.out.println("t0 : " + t0 + " up_down : " + upstream_downstream + " wedge_bar : " + wedge_bar + " ..."); } 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 d1e4f9efb1..e771117228 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 @@ -93,8 +93,9 @@ public boolean init() { // Requires calibration constants String[] alertTables = new String[] { - "/calibration/alert/ahdc/time_offsets", + "/calibration/alert/ahdc/time_offsets", "/calibration/alert/ahdc/time_to_distance", + "/calibration/alert/ahdc/raw_hit_cuts", "/calibration/alert/atof/effective_velocity", "/calibration/alert/atof/time_walk", "/calibration/alert/atof/attenuation", From 3a29148c1f9aa0cce8a692c11210c8e9e343b5d3 Mon Sep 17 00:00:00 2001 From: Tongtong Cao Date: Thu, 17 Apr 2025 11:25:53 -0400 Subject: [PATCH 080/100] Add conventional tracking into ai-assisted tracking as complementary (#543) * As supplementary, take conventional tracking with remaining cluters after AI-assisted tracking * add one more bit into track status to tell if track is from AI-asssisted tracking --- .../java/org/jlab/rec/dc/track/Track.java | 13 ++ .../jlab/service/dc/DCHBPostClusterAI.java | 197 ++++++++++++++++-- .../java/org/jlab/service/dc/DCTBEngine.java | 5 + 3 files changed, 192 insertions(+), 23 deletions(-) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/Track.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/Track.java index 5105388bc9..d9c8d75825 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/Track.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/Track.java @@ -66,6 +66,8 @@ public void setFinalStateVec(StateVec finalStateVec) { private Segment _singleSuperlayer ; private int _fitConvergenceStatus; private StateVec finalStateVec ; + + private boolean isAITrack = false; public Track() { } @@ -98,6 +100,14 @@ public Segment getSingleSuperlayer() { public void setSingleSuperlayer(Segment _singleSuperlayer) { this._singleSuperlayer = _singleSuperlayer; } + + public void setIsAITrack(boolean isAITrack){ + this.isAITrack = isAITrack; + } + + public boolean getIsAITrack(){ + return isAITrack; + } public int getBitStatus() { int status = 0; @@ -119,6 +129,9 @@ public int getBitStatus() { for(int isl = 0; isl <6; isl++) { status |= segmentStatus[isl] << isl*2; } + + status |= (this.isAITrack ? 1 : 0) << 12; // The 13th bit tells if track is from AI-assisted trcking; 1: yes; 0: no + return status; } diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java index 0b63a3310b..4651716770 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.logging.Level; import org.jlab.clas.swimtools.Swim; import org.jlab.clas.swimtools.Swimmer; @@ -20,6 +21,12 @@ import org.jlab.rec.dc.segment.Segment; import org.jlab.rec.dc.track.Track; import org.jlab.rec.dc.track.TrackCandListFinder; +import org.jlab.rec.dc.cluster.ClusterFinder; +import org.jlab.rec.dc.cluster.ClusterFitter; +import org.jlab.rec.dc.segment.SegmentFinder; +import org.jlab.rec.dc.cross.CrossMaker; +import org.jlab.rec.dc.trajectory.Road; +import org.jlab.rec.dc.trajectory.RoadFinder; /** * @@ -52,18 +59,15 @@ public boolean processDataEvent(DataEvent event) { return true; } + ////// AI-assisted tracking /* IO */ HitReader reader = new HitReader(this.getBanks(), Constants.getInstance().dcDetector); reader.initialize(event); RecoBankWriter writer = new RecoBankWriter(this.getBanks()); // get Field Swim dcSwim = new Swim(); - /* 2 */ - - /* 5 */ LOGGER.log(Level.FINE, "HB AI process event"); - /* 7 */ - /* 8 */ + //AI List trkcands = null; List crosses = null; @@ -77,7 +81,7 @@ public boolean processDataEvent(DataEvent event) { List hits = reader.get_DCHits(); fhits = new ArrayList<>(); //II) process the hits - //1) exit if hit list is empty + // Exit if hit list is empty if (hits.isEmpty()) { return true; } @@ -128,35 +132,182 @@ public boolean processDataEvent(DataEvent event) { // remove overlaps trkcandFinder.removeOverlappingTracks(trkcands); for (Track trk : trkcands) { + trk.setIsAITrack(true); + // reset the id trk.set_Id(trkId); trkcandFinder.matchHits(trk.getStateVecs(), trk, Constants.getInstance().dcDetector, dcSwim); - for (Cross c : trk) { - c.set_CrossDirIntersSegWires(); - clusters.add(c.get_Segment1().get_fittedCluster()); - clusters.add(c.get_Segment2().get_fittedCluster()); - trkcandFinder.setHitDoubletsInfo(c.get_Segment1()); - trkcandFinder.setHitDoubletsInfo(c.get_Segment2()); - for (FittedHit h1 : c.get_Segment1()) { - h1.set_AssociatedHBTrackID(trkId); - //if(h1.get_AssociatedHBTrackID()>0) - fhits.add(h1); + trkId++; + } + } + + ////// Find tracks by rest of clusters using conventional tracking + List clustersConv = null; + List segmentsConv = null; + List crossesConv = null; + List trkcandsConv = null; + + //1) read hits from the banks + Map> hitsConv = reader.read_Hits(event); + + //2) find clusters from these hits + ClusterFinder clusFinder = new ClusterFinder(); + ClusterFitter cf = new ClusterFitter(); + clustersConv = clusFinder.RecomposeClusters(hitsConv, Constants.getInstance().dcDetector, cf); + + //3) remove clusters which are on tracks + List removedClustersConv = new ArrayList(); + for(FittedCluster cls : clustersConv){ + boolean flag = false; + for(Track trk : trkcands){ + if(flag) break; + for(Cross crs : trk){ + if(cls.get_Id() == crs.get_Segment1().get_Id() || cls.get_Id() == crs.get_Segment2().get_Id()) { + removedClustersConv.add(cls); + flag = true; + break; + } + } + } + } + clustersConv.removeAll(removedClustersConv); + clusters.addAll(clustersConv); + + //4) find segments from clusters + SegmentFinder segFinder = new SegmentFinder(); + segmentsConv = segFinder.get_Segments(clustersConv, + event, + Constants.getInstance().dcDetector, false); + List rmSegsConv = new ArrayList<>(); + // clean up hit-based segments + double trkDocOverCellSize; + for (Segment se : segmentsConv) { + trkDocOverCellSize = 0; + for (FittedHit fh : se.get_fittedCluster()) { + trkDocOverCellSize += fh.get_ClusFitDoca() / fh.get_CellSize(); + } + if (trkDocOverCellSize / se.size() > 1.1) { + rmSegsConv.add(se); + } + } + segmentsConv.removeAll(rmSegsConv); + segments.addAll(segmentsConv); + + //5) find crosses from segments + CrossMaker crossMake = new CrossMaker(); + crossesConv = crossMake.find_Crosses(segmentsConv, Constants.getInstance().dcDetector); + crosses.addAll(crossesConv); + + //6) find cross lists from crosses + CrossList crosslistConv = crossLister.candCrossLists(event, crossesConv, + false, + null, + Constants.getInstance().dcDetector, + null, + dcSwim, false); + + //7) find track candidates with 5 or 6 clusters + // track candidates with 6 clusters + trkcandsConv = trkcandFinder.getTrackCands(crosslistConv, + Constants.getInstance().dcDetector, + Swimmer.getTorScale(), + dcSwim, false); + + // track candidates with 5 clusters + RoadFinder rf = new RoadFinder(); + List allRoadsConv = rf.findRoads(segmentsConv, Constants.getInstance().dcDetector); + List Segs2RoadConv = new ArrayList<>(); + List psegmentsConv = new ArrayList<>(); + for (Road r : allRoadsConv) { + Segs2RoadConv.clear(); + int missingSL = -1; + for (int ri = 0; ri < 3; ri++) { + if (r.get(ri).associatedCrossId == -1) { + if (r.get(ri).get_Superlayer() % 2 == 1) { + missingSL = r.get(ri).get_Superlayer() + 1; + } else { + missingSL = r.get(ri).get_Superlayer() - 1; } - for (FittedHit h2 : c.get_Segment2()) { - h2.set_AssociatedHBTrackID(trkId); - //if(h2.get_AssociatedHBTrackID()>0) - fhits.add(h2); + } + } + if(missingSL==-1) + continue; + for (int ri = 0; ri < 3; ri++) { + for (Segment s : segmentsConv) { + if (s.get_Sector() == r.get(ri).get_Sector() && + s.get_Region() == r.get(ri).get_Region() && + s.associatedCrossId == r.get(ri).associatedCrossId && + r.get(ri).associatedCrossId != -1) { + if (s.get_Superlayer() % 2 == missingSL % 2) + Segs2RoadConv.add(s); } } - trk.calcTrajectory(trk.getId(), dcSwim, trk.get_Vtx0(), trk.get_pAtOrig(), trk.get_Q()); - trkId++; + } + if (Segs2RoadConv.size() == 2) { + Segment pSegmentConv = rf.findRoadMissingSegment(Segs2RoadConv, + Constants.getInstance().dcDetector, + r.a); + if (pSegmentConv != null) + psegmentsConv.add(pSegmentConv); } } + + segmentsConv.addAll(psegmentsConv); + List pcrossesConv = crossMake.find_Crosses(segmentsConv, Constants.getInstance().dcDetector); + CrossList pcrosslistConv = crossLister.candCrossLists(event, pcrossesConv, + false, + null, + Constants.getInstance().dcDetector, + null, + dcSwim, true); + List mistrkcandsConv = trkcandFinder.getTrackCands(pcrosslistConv, + Constants.getInstance().dcDetector, + Swimmer.getTorScale(), + dcSwim, false); - // no candidate found, stop here and save the hits, + //8) Select overlapping tracks from all track candidates with 5 or 6 clusters, and update hits in tracks + trkcandsConv.addAll(mistrkcandsConv); + if (!trkcandsConv.isEmpty()) { + // remove overlaps + trkcandFinder.removeOverlappingTracks(trkcandsConv); + for (Track trk : trkcandsConv) { + // reset the id + trk.set_Id(trkId); + trkcandFinder.matchHits(trk.getStateVecs(), + trk, + Constants.getInstance().dcDetector, + dcSwim); + trkId++; + } + } + + //////gather all the hits for pointer bank creation + trkcands.addAll(trkcandsConv); + trkId=1; + for (Track trk : trkcands) { + trk.calcTrajectory(trk.getId(), dcSwim, trk.get_Vtx0(), trk.get_pAtOrig(), trk.get_Q()); + for (Cross c : trk) { + c.set_CrossDirIntersSegWires(); + trkcandFinder.setHitDoubletsInfo(c.get_Segment1()); + trkcandFinder.setHitDoubletsInfo(c.get_Segment2()); + for (FittedHit h1 : c.get_Segment1()) { + h1.set_AssociatedHBTrackID(trkId); + //if(h1.get_AssociatedHBTrackID()>0) + fhits.add(h1); + } + for (FittedHit h2 : c.get_Segment2()) { + h2.set_AssociatedHBTrackID(trkId); + //if(h2.get_AssociatedHBTrackID()>0) + fhits.add(h2); + } + } + trkId++; + } + + // no candidate found, stop here and save the hits, // the clusters, the segments, the crosses if (trkcands.isEmpty()) { event.appendBanks( diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java index 5ecf48569d..096a1eee80 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java @@ -189,6 +189,11 @@ public boolean processDataEvent(DataEvent event) { trkbank.getFloat("tx", i), trkbank.getFloat("ty", i)); HBFinalSV.setZ(trkbank.getFloat("z", i)); HBtrk.setFinalStateVec(HBFinalSV); + + int status = trkbank.getShort("status", i); + int isAITrack = (status >> 12) & 1; + HBtrk.setIsAITrack((isAITrack == 1)); + TrackArray[HBtrk.get_Id()-1] = HBtrk; // TrackArray[HBtrk.get_Id()-1].set_Status(0); } From a0c0a1e5a3f2925eaf92f61e65bcf538e8e14b41 Mon Sep 17 00:00:00 2001 From: raffaelladevita Date: Thu, 17 Apr 2025 19:25:45 -0400 Subject: [PATCH 081/100] Fixes to bank schema and constants loading (#574) * adding indexTDC to AI and Dn HBT hit banks * setting default variation at the engine init not to mask variation from yaml --- etc/bankdefs/hipo4/dc.json | 3 ++- etc/bankdefs/hipo4/dcnn.json | 1 + .../java/org/jlab/rec/ahdc/Hit/HitReader.java | 2 +- .../constants/CalibrationConstantsLoader.java | 21 ++++++++----------- .../org/jlab/service/ahdc/AHDCEngine.java | 9 ++++---- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/etc/bankdefs/hipo4/dc.json b/etc/bankdefs/hipo4/dc.json index 616528e41b..53852e00b3 100644 --- a/etc/bankdefs/hipo4/dc.json +++ b/etc/bankdefs/hipo4/dc.json @@ -6,7 +6,7 @@ "info": "reconstructed hits using DC wire positions", "entries": [ {"name":"id", "type":"S", "info":"id of the hit"}, - {"name": "indexTDC", "type":"S", "info":"inex in the bank DC::TDC"}, + {"name":"indexTDC", "type":"S", "info":"index in the bank DC::TDC"}, {"name":"status", "type":"S", "info":"id of the hit"}, {"name":"sector", "type":"B", "info":"DC sector"}, {"name":"superlayer", "type":"B", "info":"DC superlayer (1...6)"}, @@ -62,6 +62,7 @@ "info": "reconstructed hits using DC wire positions", "entries": [ {"name":"id", "type":"S", "info":"id of the hit"}, + {"name":"indexTDC", "type":"S", "info":"index in the bank DC::TDC"}, {"name":"status", "type":"S", "info":"id of the hit"}, {"name":"sector", "type":"B", "info":"DC sector"}, {"name":"superlayer", "type":"B", "info":"DC superlayer (1...6)"}, diff --git a/etc/bankdefs/hipo4/dcnn.json b/etc/bankdefs/hipo4/dcnn.json index 7a2aa7be58..74276a745d 100644 --- a/etc/bankdefs/hipo4/dcnn.json +++ b/etc/bankdefs/hipo4/dcnn.json @@ -6,6 +6,7 @@ "info": "reconstructed hits using DC wire positions", "entries": [ {"name":"id", "type":"S", "info":"id of the hit"}, + {"name":"indexTDC", "type":"S", "info":"index in the bank DC::TDC"}, {"name":"status", "type":"S", "info":"id of the hit"}, {"name":"sector", "type":"B", "info":"DC sector"}, {"name":"superlayer", "type":"B", "info":"DC superlayer (1...6)"}, 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 2b4293afba..07f103b82c 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 @@ -6,7 +6,7 @@ import org.jlab.io.base.DataEvent; import org.jlab.detector.banks.RawDataBank; import org.jlab.geom.detector.alert.AHDC.AlertDCDetector; -import org.jlab.rec.alert.constants.CalibrationConstantsLoader; +import org.jlab.rec.constants.CalibrationConstantsLoader; public class HitReader { diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java b/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java index aedec9127f..ac77b84308 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/constants/CalibrationConstantsLoader.java @@ -1,4 +1,4 @@ -package org.jlab.rec.alert.constants; +package org.jlab.rec.constants; import org.jlab.detector.calib.utils.ConstantsManager; import org.jlab.detector.calib.utils.DatabaseConstantProvider; @@ -6,8 +6,6 @@ import java.util.HashMap; import java.util.Map; -import java.lang.Integer; -import java.lang.Double; /** * This class loads constants from CCDB @@ -26,20 +24,19 @@ public CalibrationConstantsLoader() { // Maps for constants from database // AHDC - public static Map AHDC_TIME_OFFSETS = new HashMap(); ///< AHDC Parameters for timing offsets - public static Map AHDC_TIME_TO_DISTANCE = new HashMap(); ///< AHDC Parameters for time to distance - public static Map AHDC_RAW_HIT_CUTS = new HashMap(); ///< AHDC Parameters for raw hit cuts + public static Map AHDC_TIME_OFFSETS = new HashMap<>(); ///< AHDC Parameters for timing offsets + public static Map AHDC_TIME_TO_DISTANCE = new HashMap<>(); ///< AHDC Parameters for time to distance + public static Map AHDC_RAW_HIT_CUTS = new HashMap<>(); ///< AHDC Parameters for raw hit cuts // ATOF - public static Map ATOF_EFFECTIVE_VELOCITY = new HashMap(); ///< ATOF Parameters for effective velocity - public static Map ATOF_TIME_WALK = new HashMap(); ///< ATOF Parameters for time walk - public static Map ATOF_ATTENUATION_LENGTH = new HashMap(); ///< ATOF Parameters for attenuation lenght - public static Map ATOF_TIME_OFFSETS = new HashMap(); ///< ATOF Parameters for timing offsets + public static Map ATOF_EFFECTIVE_VELOCITY = new HashMap<>(); ///< ATOF Parameters for effective velocity + public static Map ATOF_TIME_WALK = new HashMap<>(); ///< ATOF Parameters for time walk + public static Map ATOF_ATTENUATION_LENGTH = new HashMap<>(); ///< ATOF Parameters for attenuation lenght + public static Map ATOF_TIME_OFFSETS = new HashMap<>(); ///< ATOF Parameters for timing offsets - public static synchronized void Load(int runno, String var, ConstantsManager manager) { + public static synchronized void Load(int runno, ConstantsManager manager) { //System.out.println("*Loading calibration constants*"); - manager.setVariation(var); IndexedTable ahdc_timeOffsets = manager.getConstants(runno, "/calibration/alert/ahdc/time_offsets"); IndexedTable ahdc_time2distance = manager.getConstants(runno, "/calibration/alert/ahdc/time_to_distance"); 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 e771117228..bd5d369931 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 @@ -22,13 +22,12 @@ import org.jlab.rec.ahdc.PreCluster.PreClusterFinder; import org.jlab.rec.ahdc.Track.Track; import org.jlab.rec.ahdc.Mode; -import org.jlab.rec.alert.constants.CalibrationConstantsLoader; - import java.io.File; import java.util.*; import org.jlab.detector.calib.utils.DatabaseConstantProvider; import org.jlab.geom.detector.alert.AHDC.AlertDCDetector; import org.jlab.geom.detector.alert.AHDC.AlertDCFactory; +import org.jlab.rec.constants.CalibrationConstantsLoader; /** AHDCEngine reconstruction service. * @@ -102,7 +101,9 @@ public boolean init() { "/calibration/alert/atof/time_offsets" }; requireConstants(Arrays.asList(alertTables)); - + + this.getConstantsManager().setVariation("default"); + this.registerOutputBank("AHDC::hits","AHDC::preclusters","AHDC::clusters","AHDC::track","AHDC::kftrack","AHDC::mc","AHDC::ai:prediction"); return true; @@ -137,7 +138,7 @@ public boolean processDataEvent(DataEvent event) { // Load the constants //------------------- if(Run!=newRun) { - CalibrationConstantsLoader.Load(newRun,"default",this.getConstantsManager()); + CalibrationConstantsLoader.Load(newRun, this.getConstantsManager()); Run = newRun; } } From f772c46c36298c85246c30528f7bda11da2b06f0 Mon Sep 17 00:00:00 2001 From: N-Plx <66355299+N-Plx@users.noreply.github.com> Date: Sat, 19 Apr 2025 15:17:55 -0500 Subject: [PATCH 082/100] center the atof at z=0 (#579) --- .../jlab/geom/detector/alert/ATOF/AlertTOFFactory.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/ATOF/AlertTOFFactory.java b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/ATOF/AlertTOFFactory.java index e96d4f991b..8b0ff6f5ff 100644 --- a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/ATOF/AlertTOFFactory.java +++ b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/ATOF/AlertTOFFactory.java @@ -95,8 +95,9 @@ public AlertTOFLayer createLayer(ConstantProvider cp, int sectorId, int superlay double pad_b1 = 8.17369; // mm double pad_b2 = 10.27; // mm - double pad_z = 279.7; // mm - if (superlayerId == 1) pad_z = 27.7; // mm + double atof_length = 279.7; // mm + double pad_z = atof_length; // For the bar + if (superlayerId == 1) pad_z = 27.7; // mm, for the wedges 10*27.7 + 9*0.3 // trapezoide dimensions for a smaller paddle (internal) double small_pad_b1 = 7.85924; // mm @@ -134,8 +135,8 @@ public AlertTOFLayer createLayer(ConstantProvider cp, int sectorId, int superlay for (int padId = 0; padId < current_ncomponents; padId++) { //Component index increases with increasing z - double len_b = padId * pad_z + padId * gap_pad_z; // back paddle plan - double len_f = len_b + pad_z; // front paddle plan + double len_b = padId * pad_z + padId * gap_pad_z - atof_length/2; // back paddle plan, centered at z = 0 + double len_f = len_b + pad_z - atof_length/2; // front paddle plan, centered at z = 0 Point3D p0 = new Point3D(-dR / 2, -widthBl / 2, len_f); Point3D p1 = new Point3D(dR / 2, -widthTl / 2, len_f); From a6c50d77058f99ce1c477c3b9047cd20239cbd83 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Apr 2025 11:08:18 -0400 Subject: [PATCH 083/100] build(deps): bump org.apache.commons:commons-text from 1.13.0 to 1.13.1 (#583) Bumps org.apache.commons:commons-text from 1.13.0 to 1.13.1. --- updated-dependencies: - dependency-name: org.apache.commons:commons-text dependency-version: 1.13.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- common-tools/clara-io/pom.xml | 2 +- common-tools/clas-utils/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common-tools/clara-io/pom.xml b/common-tools/clara-io/pom.xml index 5546246b49..d84856d1ab 100644 --- a/common-tools/clara-io/pom.xml +++ b/common-tools/clara-io/pom.xml @@ -61,7 +61,7 @@ org.apache.commons commons-text - 1.13.0 + 1.13.1 diff --git a/common-tools/clas-utils/pom.xml b/common-tools/clas-utils/pom.xml index 42e56f9ec1..74da95bf0f 100644 --- a/common-tools/clas-utils/pom.xml +++ b/common-tools/clas-utils/pom.xml @@ -22,7 +22,7 @@ org.apache.commons commons-text - 1.13.0 + 1.13.1 org.apache.commons From 496c8503eca2102f49649e778c613fa3c1f8a5d3 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 21 Apr 2025 11:44:30 -0400 Subject: [PATCH 084/100] Really add all RG-L banks to calib/mon/dst schema (#585) * bump version * really add all rg-l banks to all schema --- common-tools/clara-io/pom.xml | 4 ++-- common-tools/clas-analysis/pom.xml | 20 ++++++++--------- common-tools/clas-detector/pom.xml | 10 ++++----- common-tools/clas-geometry/pom.xml | 4 ++-- common-tools/clas-io/pom.xml | 8 +++---- common-tools/clas-jcsg/pom.xml | 8 +++---- 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 | 16 +++++++------- common-tools/clas-tracking/pom.xml | 6 +++--- common-tools/clas-utils/pom.xml | 6 +++--- common-tools/cnuphys/magfield/pom.xml | 2 +- common-tools/cnuphys/swimmer/pom.xml | 2 +- common-tools/coat-lib/deployDistribution.sh | 2 +- common-tools/coat-lib/pom.xml | 24 ++++++++++----------- common-tools/parent/pom.xml | 2 +- common-tools/pom.xml | 4 ++-- common-tools/swim-tools/pom.xml | 6 +++--- etc/bankdefs/util/bankSplit.py | 7 +++--- parent/pom.xml | 2 +- pom.xml | 4 ++-- reconstruction/alert/pom.xml | 12 +++++------ reconstruction/band/pom.xml | 4 ++-- reconstruction/bg/pom.xml | 8 +++---- reconstruction/cnd/pom.xml | 2 +- reconstruction/cvt/pom.xml | 6 +++--- reconstruction/dc/pom.xml | 14 ++++++------ reconstruction/eb/pom.xml | 10 ++++----- reconstruction/ec/pom.xml | 6 +++--- reconstruction/fmt/pom.xml | 6 +++--- reconstruction/ft/pom.xml | 4 ++-- reconstruction/htcc/pom.xml | 4 ++-- reconstruction/ltcc/pom.xml | 4 ++-- reconstruction/mc/pom.xml | 4 ++-- reconstruction/mltn/pom.xml | 6 +++--- reconstruction/pom.xml | 4 ++-- reconstruction/postproc/pom.xml | 8 +++---- reconstruction/raster/pom.xml | 4 ++-- reconstruction/rich/pom.xml | 6 +++--- reconstruction/rtpc/pom.xml | 6 +++--- reconstruction/swaps/pom.xml | 8 +++---- reconstruction/tof/pom.xml | 4 ++-- reconstruction/urwell/pom.xml | 6 +++--- reconstruction/vtx/pom.xml | 6 +++--- 45 files changed, 146 insertions(+), 145 deletions(-) diff --git a/common-tools/clara-io/pom.xml b/common-tools/clara-io/pom.xml index d84856d1ab..f657732ea3 100644 --- a/common-tools/clara-io/pom.xml +++ b/common-tools/clara-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clara-io - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/common-tools/clas-analysis/pom.xml b/common-tools/clas-analysis/pom.xml index 6632f2ba1a..0cf34524b2 100644 --- a/common-tools/clas-analysis/pom.xml +++ b/common-tools/clas-analysis/pom.xml @@ -3,63 +3,63 @@ 4.0.0 org.jlab.clas clas-analysis - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-utils - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-physics - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-io - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas swim-tools - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-detector - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/common-tools/clas-detector/pom.xml b/common-tools/clas-detector/pom.xml index 224e135c66..2054ee610b 100644 --- a/common-tools/clas-detector/pom.xml +++ b/common-tools/clas-detector/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-detector - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-utils - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -29,13 +29,13 @@ org.jlab.clas clas-io - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/common-tools/clas-geometry/pom.xml b/common-tools/clas-geometry/pom.xml index ba4fcdf68b..a2a5002b3b 100644 --- a/common-tools/clas-geometry/pom.xml +++ b/common-tools/clas-geometry/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-geometry - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/common-tools/clas-io/pom.xml b/common-tools/clas-io/pom.xml index 67f9a54e3b..c2f2c8913f 100644 --- a/common-tools/clas-io/pom.xml +++ b/common-tools/clas-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-io - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -90,13 +90,13 @@ org.jlab.clas clas-utils - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-logging - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT compile diff --git a/common-tools/clas-jcsg/pom.xml b/common-tools/clas-jcsg/pom.xml index 02735e2881..318e3a7a65 100644 --- a/common-tools/clas-jcsg/pom.xml +++ b/common-tools/clas-jcsg/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-jcsg - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -27,12 +27,12 @@ org.jlab.clas clas-geometry - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-detector - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT java3d diff --git a/common-tools/clas-logging/pom.xml b/common-tools/clas-logging/pom.xml index 2bdfb280ce..5f261f3edd 100644 --- a/common-tools/clas-logging/pom.xml +++ b/common-tools/clas-logging/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-logging - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/common-tools/clas-math/pom.xml b/common-tools/clas-math/pom.xml index 570d147aed..6959ee53de 100644 --- a/common-tools/clas-math/pom.xml +++ b/common-tools/clas-math/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-math - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/common-tools/clas-physics/pom.xml b/common-tools/clas-physics/pom.xml index 5ad14d0153..255a1ebddc 100644 --- a/common-tools/clas-physics/pom.xml +++ b/common-tools/clas-physics/pom.xml @@ -4,14 +4,14 @@ org.jlab.clas clas-physics - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/common-tools/clas-reco/pom.xml b/common-tools/clas-reco/pom.xml index 614f64e098..cec03a542f 100644 --- a/common-tools/clas-reco/pom.xml +++ b/common-tools/clas-reco/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -42,37 +42,37 @@ org.jlab.clas clas-math - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-io - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-logging - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-physics - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-utils - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-detector - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/common-tools/clas-tracking/pom.xml b/common-tools/clas-tracking/pom.xml index b31f82df5e..6ee110e3f6 100644 --- a/common-tools/clas-tracking/pom.xml +++ b/common-tools/clas-tracking/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-tracking - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -22,7 +22,7 @@ org.jlab.clas swim-tools - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar diff --git a/common-tools/clas-utils/pom.xml b/common-tools/clas-utils/pom.xml index 74da95bf0f..e6224c29ce 100644 --- a/common-tools/clas-utils/pom.xml +++ b/common-tools/clas-utils/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-utils - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-logging - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.apache.commons diff --git a/common-tools/cnuphys/magfield/pom.xml b/common-tools/cnuphys/magfield/pom.xml index 3f1ef42a20..b55cfe4381 100644 --- a/common-tools/cnuphys/magfield/pom.xml +++ b/common-tools/cnuphys/magfield/pom.xml @@ -23,7 +23,7 @@ org.jlab.clas clas-math - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/common-tools/cnuphys/swimmer/pom.xml b/common-tools/cnuphys/swimmer/pom.xml index 3d11997e4f..2fc25b6254 100644 --- a/common-tools/cnuphys/swimmer/pom.xml +++ b/common-tools/cnuphys/swimmer/pom.xml @@ -35,7 +35,7 @@ org.jlab.clas clas-math - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/common-tools/coat-lib/deployDistribution.sh b/common-tools/coat-lib/deployDistribution.sh index 7cb9e417a9..d336659085 100755 --- a/common-tools/coat-lib/deployDistribution.sh +++ b/common-tools/coat-lib/deployDistribution.sh @@ -8,7 +8,7 @@ cd `dirname $0` # Script is exporting existing Jar files to repository #------------------------------------------------------------------------------------------------- -VERSION=12.0.4t +VERSION=12.0.5t mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file \ -Dfile=target/coat-libs-${VERSION}-SNAPSHOT.jar \ diff --git a/common-tools/coat-lib/pom.xml b/common-tools/coat-lib/pom.xml index f4375508a0..27e2c27380 100644 --- a/common-tools/coat-lib/pom.xml +++ b/common-tools/coat-lib/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jlab.clas coat-libs - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT pom @@ -94,67 +94,67 @@ org.jlab.clas clas-io - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clara-io - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-utils - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-detector - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-physics - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas swim-tools - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-tracking - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/common-tools/parent/pom.xml b/common-tools/parent/pom.xml index 396ca44ad3..fdb7f55fd6 100644 --- a/common-tools/parent/pom.xml +++ b/common-tools/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas common-tools - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT pom diff --git a/common-tools/pom.xml b/common-tools/pom.xml index c24371cbd6..9e1118254d 100644 --- a/common-tools/pom.xml +++ b/common-tools/pom.xml @@ -2,14 +2,14 @@ 4.0.0 org.jlab.clas common-tools - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/common-tools/swim-tools/pom.xml b/common-tools/swim-tools/pom.xml index 4ba16e930a..8bf069edb4 100644 --- a/common-tools/swim-tools/pom.xml +++ b/common-tools/swim-tools/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas swim-tools - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/etc/bankdefs/util/bankSplit.py b/etc/bankdefs/util/bankSplit.py index 33f03ca036..95bed900f1 100755 --- a/etc/bankdefs/util/bankSplit.py +++ b/etc/bankdefs/util/bankSplit.py @@ -108,9 +108,10 @@ def create(dirname, banklist): level3.extend(["DC::tdc", "ECAL::adc", "ECAL::clusters", "FTOF::tdc", "FTOF::adc", "HitBasedTrkg::HBClusters", "HitBasedTrkg::HBTracks", "HTCC::adc", "RF::adc", "RF::tdc", "RUN::rf", "TimeBasedTrkg::TBClusters", "TimeBasedTrkg::TBTracks"]) import glob -rgl = glob.glob('./etc/bankdefs/hipo4/singles/full/ALERT*.json') -rgl.extend(glob.glob('./etc/bankdefs/hipo4/singles/full/AHDC*.json')) -rgl.extend(glob.glob('./etc/bankdefs/hipo4/singles/full/ATOF*.json')) +rgl = glob.glob('./singles/full/ALERT*.json') +rgl.extend(glob.glob('./singles/full/AHDC*.json')) +rgl.extend(glob.glob('./singles/full/ATOF*.json')) +rgl = [os.path.basename(x)[:-5] for x in rgl] calib.extend(rgl) mon.extend(rgl) dst.extend(rgl) diff --git a/parent/pom.xml b/parent/pom.xml index e86c088389..2abcfb7135 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas clas12rec - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT pom diff --git a/pom.xml b/pom.xml index a275888961..3e1fe5a62a 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ 4.0.0 org.jlab.clas clas12 - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT pom @@ -15,7 +15,7 @@ org.jlab.clas clas12rec parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index aff1ae38b7..2c3d1cedc7 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -13,37 +13,37 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-io - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT compile org.jlab.clas clas-analysis - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT compile org.jlab.clas clas-tracking - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT compile org.jlab.clas clas-geometry - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT compile diff --git a/reconstruction/band/pom.xml b/reconstruction/band/pom.xml index 148e983130..ecf23e4eb2 100644 --- a/reconstruction/band/pom.xml +++ b/reconstruction/band/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/bg/pom.xml b/reconstruction/bg/pom.xml index 72a3889ab3..c7a082685a 100644 --- a/reconstruction/bg/pom.xml +++ b/reconstruction/bg/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/cnd/pom.xml b/reconstruction/cnd/pom.xml index 9ce5c627ef..b6be5802c7 100644 --- a/reconstruction/cnd/pom.xml +++ b/reconstruction/cnd/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/cvt/pom.xml b/reconstruction/cvt/pom.xml index e01720e1d4..dfaab98619 100644 --- a/reconstruction/cvt/pom.xml +++ b/reconstruction/cvt/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -47,7 +47,7 @@ org.jlab.clas clas-tracking - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/dc/pom.xml b/reconstruction/dc/pom.xml index f880fcd39c..ccc9885de5 100644 --- a/reconstruction/dc/pom.xml +++ b/reconstruction/dc/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -28,25 +28,25 @@ org.jlab.clas clas-tracking - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -75,13 +75,13 @@ org.jlab.clas swim-tools - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-math - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/eb/pom.xml b/reconstruction/eb/pom.xml index 95967772f8..873e619d6c 100644 --- a/reconstruction/eb/pom.xml +++ b/reconstruction/eb/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -21,25 +21,25 @@ org.jlab.clas clas-utils - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-io - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/ec/pom.xml b/reconstruction/ec/pom.xml index c1ac0c625e..a3b06385d6 100644 --- a/reconstruction/ec/pom.xml +++ b/reconstruction/ec/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/fmt/pom.xml b/reconstruction/fmt/pom.xml index 9e4d2384dc..5129c46dff 100644 --- a/reconstruction/fmt/pom.xml +++ b/reconstruction/fmt/pom.xml @@ -15,21 +15,21 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas swim-tools - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/ft/pom.xml b/reconstruction/ft/pom.xml index 94ce99880c..fe9bade7c5 100644 --- a/reconstruction/ft/pom.xml +++ b/reconstruction/ft/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/htcc/pom.xml b/reconstruction/htcc/pom.xml index 52a7cb1a24..b66732ce58 100644 --- a/reconstruction/htcc/pom.xml +++ b/reconstruction/htcc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/ltcc/pom.xml b/reconstruction/ltcc/pom.xml index f089a00c63..5ccfd1886a 100644 --- a/reconstruction/ltcc/pom.xml +++ b/reconstruction/ltcc/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/mc/pom.xml b/reconstruction/mc/pom.xml index 142290b998..37bca8a6c7 100644 --- a/reconstruction/mc/pom.xml +++ b/reconstruction/mc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/mltn/pom.xml b/reconstruction/mltn/pom.xml index d1bcf98449..f82744a2be 100644 --- a/reconstruction/mltn/pom.xml +++ b/reconstruction/mltn/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -34,13 +34,13 @@ org.jlab.clas clas-io - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/pom.xml b/reconstruction/pom.xml index 5c135ae851..617ab7f2a4 100644 --- a/reconstruction/pom.xml +++ b/reconstruction/pom.xml @@ -3,14 +3,14 @@ org.jlab.clas reconstruction - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/postproc/pom.xml b/reconstruction/postproc/pom.xml index a0959c0c4d..2a17af2a90 100644 --- a/reconstruction/postproc/pom.xml +++ b/reconstruction/postproc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/raster/pom.xml b/reconstruction/raster/pom.xml index ac7f5443bf..7ff9d363f7 100644 --- a/reconstruction/raster/pom.xml +++ b/reconstruction/raster/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/rich/pom.xml b/reconstruction/rich/pom.xml index 64c0a527f5..53646bd6c8 100644 --- a/reconstruction/rich/pom.xml +++ b/reconstruction/rich/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/rtpc/pom.xml b/reconstruction/rtpc/pom.xml index 3bfeee6662..33b895c9b2 100644 --- a/reconstruction/rtpc/pom.xml +++ b/reconstruction/rtpc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -21,12 +21,12 @@ org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-tracking - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT compile diff --git a/reconstruction/swaps/pom.xml b/reconstruction/swaps/pom.xml index fd621b13c3..c3222fc3f7 100644 --- a/reconstruction/swaps/pom.xml +++ b/reconstruction/swaps/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-detector - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-io - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-reco - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/tof/pom.xml b/reconstruction/tof/pom.xml index 741a59c7d9..6d7c008c7c 100644 --- a/reconstruction/tof/pom.xml +++ b/reconstruction/tof/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/urwell/pom.xml b/reconstruction/urwell/pom.xml index 66504ba3a9..9c2cf7a269 100644 --- a/reconstruction/urwell/pom.xml +++ b/reconstruction/urwell/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT diff --git a/reconstruction/vtx/pom.xml b/reconstruction/vtx/pom.xml index 92620f964b..80ab4b8b32 100644 --- a/reconstruction/vtx/pom.xml +++ b/reconstruction/vtx/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT @@ -33,13 +33,13 @@ org.jlab.clas swim-tools - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar org.jlab.clas clas-tracking - 12.0.4t-SNAPSHOT + 12.0.5t-SNAPSHOT jar From 76a051a946599ff79074369a6ca7e3a27c2a3158 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 21 Apr 2025 11:58:49 -0400 Subject: [PATCH 085/100] use logger (#586) --- .../java/org/jlab/rec/ahdc/HelixFit/HelixFitJava.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/HelixFit/HelixFitJava.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/HelixFit/HelixFitJava.java index 7f853b3747..1b29535d51 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/HelixFit/HelixFitJava.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/HelixFit/HelixFitJava.java @@ -1,11 +1,16 @@ package org.jlab.rec.ahdc.HelixFit; +import java.util.logging.Level; +import java.util.logging.Logger; + /** Helix Fit. * * This appears to be some code translation. */ public class HelixFitJava { + static final Logger LOGGER = Logger.getLogger(HelixFitJava.class.getName()); + /** \todo What does this method do * \what does its name even mean? */ @@ -239,12 +244,12 @@ void rwfthc(int npt, double rf[], double ydca, xbar, ybar, xpt, ypt, alpha, beta; if (npt <= 2) { - System.out.println("BonusHelixFit::rwfthc(): Cannot fit less than 3 points; exiting..\n"); + LOGGER.finest("BonusHelixFit::rwfthc(): Cannot fit less than 3 points; exiting."); return; } if (npt > MAX_HITS_ON_CHAIN) { - System.out.println("BonusHelixFit::rwfthc(): Cannot fit more than " + MAX_HITS_ON_CHAIN + " points; exiting..\n" ); + LOGGER.log(Level.FINEST, "BonusHelixFit::rwfthc(): Cannot fit more than {0} points; exiting.", MAX_HITS_ON_CHAIN); return; } for(i=0; i Date: Mon, 21 Apr 2025 14:28:07 -0400 Subject: [PATCH 086/100] restore --- common-tools/cnuphys/cnuphys/pom.xml | 2 +- common-tools/cnuphys/parent/pom.xml | 2 +- common-tools/coat-lib/pom.xml | 6 +++--- common-tools/parent/pom.xml | 4 ++-- parent/pom.xml | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/common-tools/cnuphys/cnuphys/pom.xml b/common-tools/cnuphys/cnuphys/pom.xml index d7a26242e5..cea751f02c 100644 --- a/common-tools/cnuphys/cnuphys/pom.xml +++ b/common-tools/cnuphys/cnuphys/pom.xml @@ -18,7 +18,7 @@ local-build - https://clasweb.jlab.org/clas12maven + https://clasweb.jlab.org/.clas12maven diff --git a/common-tools/cnuphys/parent/pom.xml b/common-tools/cnuphys/parent/pom.xml index 4d23938672..e682b3b29e 100644 --- a/common-tools/cnuphys/parent/pom.xml +++ b/common-tools/cnuphys/parent/pom.xml @@ -8,7 +8,7 @@ clas12maven - https://clasweb.jlab.org/clas12maven + https://clasweb.jlab.org/.clas12maven diff --git a/common-tools/coat-lib/pom.xml b/common-tools/coat-lib/pom.xml index 27e2c27380..1e26312691 100644 --- a/common-tools/coat-lib/pom.xml +++ b/common-tools/coat-lib/pom.xml @@ -9,15 +9,15 @@ local-build - https://clasweb.jlab.org/clas12maven + https://clasweb.jlab.org/.clas12maven jnp-build - https://clasweb.jlab.org/jhep/maven + https://clasweb.jlab.org/.jhep/maven freehep-repo-public - https://clasweb.jlab.org/clas12maven/ + https://clasweb.jlab.org/.clas12maven/ diff --git a/common-tools/parent/pom.xml b/common-tools/parent/pom.xml index fdb7f55fd6..68d9c11223 100644 --- a/common-tools/parent/pom.xml +++ b/common-tools/parent/pom.xml @@ -10,11 +10,11 @@ clas12maven - https://clasweb.jlab.org/clas12maven + https://clasweb.jlab.org/.clas12maven jnp-maven - https://clasweb.jlab.org/jhep/maven + https://clasweb.jlab.org/.jhep/maven diff --git a/parent/pom.xml b/parent/pom.xml index 2abcfb7135..62c1e1e080 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -9,12 +9,12 @@ clas12maven - https://clasweb.jlab.org/clas12maven + https://clasweb.jlab.org/.clas12maven jnp-maven - https://clasweb.jlab.org/jhep/maven + https://clasweb.jlab.org/.jhep/maven From d53e5ffb60eabaeb2f99b6b6973b99c9a77bd813 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 21 Apr 2025 16:36:48 -0400 Subject: [PATCH 087/100] Add a 2-particle RG-L EB test (#575) * add rg-l generator * add rg-l test * 12 degrees for inbending * fix column types * fix RNG seed * fix seed * fix lund "index" --- .../advanced-tests/src/eb/scripts/gemc.sh | 5 ++-- .../advanced-tests/src/eb/scripts/gen.py | 26 +++++++++++++++++++ .../advanced-tests/src/eb/scripts/list.txt | 1 + 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100755 validation/advanced-tests/src/eb/scripts/gen.py diff --git a/validation/advanced-tests/src/eb/scripts/gemc.sh b/validation/advanced-tests/src/eb/scripts/gemc.sh index a721a35b1a..d4d9e36785 100755 --- a/validation/advanced-tests/src/eb/scripts/gemc.sh +++ b/validation/advanced-tests/src/eb/scripts/gemc.sh @@ -3,9 +3,10 @@ usage() { echo "Usage: $0 [-g GEMC] [-n NEV] [-p PARTS] [-c GCARD] [-m]" 1>&2; exit $1; } run=11 -gemc=5.10 +gemc=dev nevents=100 particles=() +seed=1234567 while getopts "g:n:c:p:mdh" o do @@ -53,7 +54,7 @@ function run_gemc () { [ -e "$_output" ] && echo Output file already exists: $_output && exit 3 [ -z ${dryrun+x} ] && set -x $dryrun gemc \ - $_gcard -RUNNO=$_run -USE_GUI=0 -N=$_nevents \ + $_gcard -RANDOM=$seed -RUNNO=$_run -USE_GUI=0 -N=$_nevents \ -SAVE_ALL_MOTHERS=1 -SKIPREJECTEDHITS=1 -INTEGRATEDRAW="*" -NGENP=50 \ -INPUT_GEN_FILE="LUND, $_input" \ -OUTPUT="hipo, $_output" & diff --git a/validation/advanced-tests/src/eb/scripts/gen.py b/validation/advanced-tests/src/eb/scripts/gen.py new file mode 100755 index 0000000000..6d1cbdb6a6 --- /dev/null +++ b/validation/advanced-tests/src/eb/scripts/gen.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +import random,math,sys + +mp = 0.93827 +me = 0.00051 +fmt = ' '.join(6*['%d']+8*['%.4f']) + +def cartesian(p,t,h,m): + x = p * math.cos(h) * math.sin(t) + y = p * math.sin(h) * math.sin(t) + z = p * math.cos(t) + e = math.sqrt(p*p + m*m) + return [x,y,z,e] + +for i in range(int(sys.argv[1])): + p = 0.1+0.1*random.random() + e = math.sqrt(p*p+mp*mp) + t = math.radians(70+40*random.random()) + h = 2*math.pi*random.random() + z = -5+10*random.random() + header = [2,1,1,0,0,0,0,0,0,0] + electron = [1,0,1,11,0,0] + cartesian(9.0,math.radians(12),0,me) + [me,0,0,z] + hadron = [2,0,1,2212,0,0] + cartesian(p,t,h,mp) + [mp,0,0,z] + print(' '.join([str(x) for x in header])) + print(fmt%tuple(electron)) + print(fmt%tuple(hadron)) diff --git a/validation/advanced-tests/src/eb/scripts/list.txt b/validation/advanced-tests/src/eb/scripts/list.txt index 548db442e2..03a77c22b2 100644 --- a/validation/advanced-tests/src/eb/scripts/list.txt +++ b/validation/advanced-tests/src/eb/scripts/list.txt @@ -12,3 +12,4 @@ electrondeuteronC -pid 45 -cd electronFTpion -pid -211 -ft electronFTproton -pid -2212 -ft electronFTkaon -pid -321 -ft +electronprotonA -pid -2212 -al From d6d63aadd03ad33b97be7ad4a440b3b6f714a869 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 21 Apr 2025 17:11:02 -0400 Subject: [PATCH 088/100] Use SQLite snapshot from CVMFS for CI jobs (#576) * require cvmfs * use sqlite in ci jobs * roll back to macos-15 * roll back to macos-15 * macos-* appears to be broken * github fixed macos * disable macos, broken on github * see if macos is fixed * Revert "see if macos is fixed" This reverts commit 8ca032d91acce4ca4f2077c4a67eadb32a1f921a. * Update .github/workflows/ci.yml Co-authored-by: Christopher Dilks * reenable macos * try 13 * Update .github/workflows/ci.yml Co-authored-by: Christopher Dilks * back to macos-latest --------- Co-authored-by: Christopher Dilks --- .github/workflows/{maven.yml => ci.yml} | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) rename .github/workflows/{maven.yml => ci.yml} (92%) diff --git a/.github/workflows/maven.yml b/.github/workflows/ci.yml similarity index 92% rename from .github/workflows/maven.yml rename to .github/workflows/ci.yml index cb4d228333..2140831159 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/ci.yml @@ -41,11 +41,15 @@ jobs: runs-on: ${{ matrix.runner }} steps: - uses: actions/checkout@v4 - - name: Set up JDK - uses: actions/setup-java@v4 + - uses: actions/setup-java@v4 with: java-version: ${{ env.java_version }} distribution: ${{ env.java_distribution }} + - 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: build run: ./build-coatjava.sh --spotbugs --unittests --quiet -T4 - name: tar # tarball to preserve permissions @@ -104,10 +108,14 @@ jobs: - uses: actions/download-artifact@v4 with: name: build_${{ matrix.runner }} + - uses: cvmfs-contrib/github-action-cvmfs@v5 + with: + cvmfs_repositories: 'oasis.opensciencegrid.org' - name: untar build run: tar xzvf coatjava.tar.gz - name: run test run: | + export CCDB_CONNECTION=sqlite:////cvmfs/oasis.opensciencegrid.org/jlab/hallb/clas12/sw/noarch/data/ccdb/ccdb_latest.sqlite cd validation/advanced-tests echo "COMMAND: ${{ matrix.cmd }}" ${{ matrix.cmd }} From eafc3b15260be019f1e39394f0a0fd479a78bd5a Mon Sep 17 00:00:00 2001 From: Christopher Dilks Date: Mon, 21 Apr 2025 20:18:51 -0400 Subject: [PATCH 089/100] ci: set CCDB URI for full workflow (#591) --- .github/workflows/ci.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2140831159..65d75664f3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,6 +25,7 @@ env: java_distribution: zulu javadoc_version: 24 # newer than `java_version` for better javadoc groovy_version: 4.x + CCDB_CONNECTION: 'sqlite:////cvmfs/oasis.opensciencegrid.org/jlab/hallb/clas12/sw/noarch/data/ccdb/ccdb_latest.sqlite' jobs: @@ -50,6 +51,8 @@ jobs: cvmfs_repositories: 'oasis.opensciencegrid.org' - name: cvmfs run: ls /cvmfs/oasis.opensciencegrid.org/jlab/hallb/clas12/sw/noarch/data/ccdb/ccdb_latest.sqlite + - name: echo CCDB_CONNECTION + run: echo $CCDB_CONNECTION - name: build run: ./build-coatjava.sh --spotbugs --unittests --quiet -T4 - name: tar # tarball to preserve permissions @@ -113,9 +116,10 @@ jobs: cvmfs_repositories: 'oasis.opensciencegrid.org' - name: untar build run: tar xzvf coatjava.tar.gz + - name: echo CCDB_CONNECTION + run: echo $CCDB_CONNECTION - name: run test run: | - export CCDB_CONNECTION=sqlite:////cvmfs/oasis.opensciencegrid.org/jlab/hallb/clas12/sw/noarch/data/ccdb/ccdb_latest.sqlite cd validation/advanced-tests echo "COMMAND: ${{ matrix.cmd }}" ${{ matrix.cmd }} From 938192c22de6b38bcddcab6e1fd26e8182ecbb89 Mon Sep 17 00:00:00 2001 From: N-Plx <66355299+N-Plx@users.noreply.github.com> Date: Wed, 23 Apr 2025 09:09:31 -0500 Subject: [PATCH 090/100] fix atof geometry service (#593) * fix: translation after the objects are built * fix:remove z translation after geometry fix * fix: use logger instead of print out --------- Co-authored-by: N-Plx --- .../detector/alert/ATOF/AlertTOFFactory.java | 8 +++---- .../java/org/jlab/rec/atof/hit/ATOFHit.java | 21 +++++++++++-------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/ATOF/AlertTOFFactory.java b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/ATOF/AlertTOFFactory.java index 8b0ff6f5ff..7bdc686481 100644 --- a/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/ATOF/AlertTOFFactory.java +++ b/common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/ATOF/AlertTOFFactory.java @@ -135,8 +135,8 @@ public AlertTOFLayer createLayer(ConstantProvider cp, int sectorId, int superlay for (int padId = 0; padId < current_ncomponents; padId++) { //Component index increases with increasing z - double len_b = padId * pad_z + padId * gap_pad_z - atof_length/2; // back paddle plan, centered at z = 0 - double len_f = len_b + pad_z - atof_length/2; // front paddle plan, centered at z = 0 + double len_b = padId * pad_z + padId * gap_pad_z;// back paddle plan + double len_f = len_b + pad_z;// front paddle plan Point3D p0 = new Point3D(-dR / 2, -widthBl / 2, len_f); Point3D p1 = new Point3D(dR / 2, -widthTl / 2, len_f); @@ -162,8 +162,8 @@ public AlertTOFLayer createLayer(ConstantProvider cp, int sectorId, int superlay xoffset = (Rl + dR / 2) * Math.cos(Math.toRadians(current_angle_deg)); yoffset = (Rl + dR / 2) * Math.sin(Math.toRadians(current_angle_deg)); - - Paddle.translateXYZ(xoffset, yoffset, 0); + + Paddle.translateXYZ(xoffset, yoffset, - atof_length/2); //centering at z=0 // Add the paddles to the list layer.addComponent(Paddle); 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 f1ce4751d9..8277987701 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 @@ -3,6 +3,8 @@ import org.jlab.geom.base.*; import org.jlab.geom.prim.Point3D; import org.jlab.rec.atof.constants.Parameters; +import java.util.logging.Level; +import java.util.logging.Logger; /** * @@ -15,6 +17,8 @@ */ public class ATOFHit { + static final Logger LOGGER = Logger.getLogger(ATOFHit.class.getName()); + private int sector, layer, component, order; private int tdc, tot; private double time, energy, x, y, z; @@ -182,7 +186,7 @@ public final String makeType() { public final int convertTdcToTime() { double tdc2time, veff, distance_to_sipm; if (null == this.type) { - System.out.print("Null hit type, cannot convert tdc to time."); + LOGGER.finest("Null hit type, cannot convert tdc to time."); return 1; } else { switch (this.type) { @@ -205,11 +209,11 @@ public final int convertTdcToTime() { distance_to_sipm = 0; } case "bar" -> { - System.out.print("Bar hit type, cannot convert tdc to time."); + LOGGER.finest("Bar hit type, cannot convert tdc to time."); return 1; } default -> { - System.out.print("Undefined hit type, cannot convert tdc to time."); + LOGGER.finest("Undefined hit type, cannot convert tdc to time."); return 1; } } @@ -230,7 +234,7 @@ public final int convertTdcToTime() { public final int convertTotToEnergy() { double tot2energy; if (null == this.type) { - System.out.print("Null hit type, cannot convert tot to energy."); + LOGGER.finest("Null hit type, cannot convert tot to energy."); return 1; } else { switch (this.type) { @@ -254,11 +258,11 @@ public final int convertTotToEnergy() { this.energy = tot2energy * this.tot; } case "bar" -> { - System.out.print("Bar hit type, cannot convert tot to energy."); + LOGGER.finest("Bar hit type, cannot convert tot to energy."); return 1; } default -> { - System.out.print("Undefined hit type, cannot convert tot to energy."); + LOGGER.finest("Undefined hit type, cannot convert tot to energy."); return 1; } } @@ -294,12 +298,11 @@ public final int convertSLCToXYZ(Detector atof) { Component comp = atof.getSector(this.sector).getSuperlayer(sl).getLayer(this.layer).getComponent(this.component); Point3D midpoint = comp.getMidpoint(); //Midpoints defined in the system were z=0 is the upstream end of the atof - //Translation to the system were z=0 is the center of the atof //Units are mm this.x = midpoint.x(); this.y = midpoint.y(); - this.z = midpoint.z() - Parameters.LENGTH_ATOF / 2.; - return 0; + this.z = midpoint.z(); + return 0; } /** From 6649f8adb312c5073bdc0259538f8f9d2b8319b4 Mon Sep 17 00:00:00 2001 From: N-Plx <66355299+N-Plx@users.noreply.github.com> Date: Wed, 23 Apr 2025 14:18:30 -0500 Subject: [PATCH 091/100] feat: ATOF test and single event file (#597) * feat: ATOF test and single event file * fix: changing single event file * change author --------- Co-authored-by: Nathan Baltzell --- etc/data/test/atof.hipo | Bin 0 -> 6616 bytes .../java/org/jlab/service/alert/ATOFTest.java | 46 ++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 etc/data/test/atof.hipo create mode 100644 reconstruction/alert/src/test/java/org/jlab/service/alert/ATOFTest.java diff --git a/etc/data/test/atof.hipo b/etc/data/test/atof.hipo new file mode 100644 index 0000000000000000000000000000000000000000..8f55b52ae447decaab2c2c9c28e187ce7658571b GIT binary patch literal 6616 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 tf=2j Date: Fri, 25 Apr 2025 19:30:24 -0400 Subject: [PATCH 092/100] added new AI-assisted network for RG-D Fall23 (#600) --- etc/ejml/ejmlclas12.network | Bin 630841 -> 630933 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/etc/ejml/ejmlclas12.network b/etc/ejml/ejmlclas12.network index d15f5a1cf21bbdd338d81a3a683dd5da0d9a0a5b..c63596b28c235458ce48092dde21027cea6adfac 100644 GIT binary patch delta 30235 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 WA5VvdhJ%iSzVQeREnWc%TK@;eQt-S0 delta 30271 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 Dbt*$( From a005cc884d8b00a3e631da8ed9658f1e046e3560 Mon Sep 17 00:00:00 2001 From: Tongtong Cao Date: Fri, 25 Apr 2025 20:08:30 -0400 Subject: [PATCH 093/100] fix an issue in DCHBPostClusterAI (#589) * fix an issue in DCHBPostClusterAI.java to save all necessary clusters in HB cluster bank * add clusters in tracks from AI-assisted tracking into cluster list --- .../java/org/jlab/service/dc/DCHBPostClusterAI.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java index 4651716770..c60e14f4e0 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java @@ -30,7 +30,7 @@ /** * - * @author ziegler + * @author ziegler, tongtong */ public class DCHBPostClusterAI extends DCEngine { @@ -71,7 +71,7 @@ public boolean processDataEvent(DataEvent event) { //AI List trkcands = null; List crosses = null; - List clusters = null; + List clusters = new ArrayList<>(); List segments = null; List fhits = null; @@ -103,7 +103,6 @@ public boolean processDataEvent(DataEvent event) { LOGGER.log(Level.FINE, "Pass Cross"+c.printInfo()); } if (crosses.isEmpty()) { - clusters = new ArrayList<>(); for(Segment seg : segments) { clusters.add(seg.get_fittedCluster()); } @@ -126,7 +125,6 @@ public boolean processDataEvent(DataEvent event) { dcSwim, true); // track found - clusters = new ArrayList<>(); int trkId = 1; if (trkcands.size() > 0) { // remove overlaps @@ -134,6 +132,11 @@ public boolean processDataEvent(DataEvent event) { for (Track trk : trkcands) { trk.setIsAITrack(true); + for (Cross c : trk) { + clusters.add(c.get_Segment1().get_fittedCluster()); + clusters.add(c.get_Segment2().get_fittedCluster()); + } + // reset the id trk.set_Id(trkId); trkcandFinder.matchHits(trk.getStateVecs(), @@ -312,6 +315,7 @@ public boolean processDataEvent(DataEvent event) { if (trkcands.isEmpty()) { event.appendBanks( writer.fillHBHitsBank(event, fhits), + writer.fillHBClustersBank(event, clusters), writer.fillHBSegmentsBank(event, segments), writer.fillHBCrossesBank(event, crosses)); } From d4f13a5810ecadb3da18bf724ccadb921fcfe2e8 Mon Sep 17 00:00:00 2001 From: Mathieu Ouillon <67646911+mathieuouillon@users.noreply.github.com> Date: Sat, 3 May 2025 00:24:23 +0200 Subject: [PATCH 094/100] Fix: AHDC: use ahdcExtractor to process simulation (#607) * Add ahdcExtractor in AHDCEngine to be able to process simulation. * Add simulation flag in HitReader to bypass criteria for a hit in simulation. --- .../src/main/java/org/jlab/rec/ahdc/Hit/HitReader.java | 6 ++++-- .../src/main/java/org/jlab/service/ahdc/AHDCEngine.java | 7 ++++++- 2 files changed, 10 insertions(+), 3 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 07f103b82c..32df59f4af 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 @@ -12,8 +12,10 @@ public class HitReader { private ArrayList _AHDCHits; private ArrayList _TrueAHDCHits; + private boolean sim = false; - public HitReader(DataEvent event, AlertDCDetector detector, boolean simulation) { + public HitReader(DataEvent event, AlertDCDetector detector, boolean simulation) { + sim = simulation; fetch_AHDCHits(event, detector); if (simulation) fetch_TrueAHDCHits(event); } @@ -52,7 +54,7 @@ public final void fetch_AHDCHits(DataEvent event, AlertDCDetector detector) { double ped_max = rawHitCuts[7]; //System.out.println("t_min : " + t_min + " t_max : " + t_max + " tot_min : " + tot_min + " tot_max : " + tot_max + " adc_min : " + adc_min + " adc_max : " + adc_max + " ped_min : " + ped_min + " ped_max : " + ped_max); // Apply these cuts - if ((adc >= adc_min) && (adc <= adc_max) && (leadingEdgeTime >= t_min) && (leadingEdgeTime <= t_max) && (timeOverThreshold >= tot_min) && (timeOverThreshold <= tot_max) && (adcOffset >= ped_min) && (adcOffset <= ped_max)) { + if (((adc >= adc_min) && (adc <= adc_max) && (leadingEdgeTime >= t_min) && (leadingEdgeTime <= t_max) && (timeOverThreshold >= tot_min) && (timeOverThreshold <= tot_max) && (adcOffset >= ped_min) && (adcOffset <= ped_max)) || sim) { // Retrieve others CCDB double[] timeOffsets = CalibrationConstantsLoader.AHDC_TIME_OFFSETS.get( key_value ); double[] time2distance = CalibrationConstantsLoader.AHDC_TIME_TO_DISTANCE.get( 10101 ); // the time to distance table has only one row ! (10101 is its only key) 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 bd5d369931..e0c8d340b8 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 @@ -28,6 +28,7 @@ import org.jlab.geom.detector.alert.AHDC.AlertDCDetector; import org.jlab.geom.detector.alert.AHDC.AlertDCFactory; import org.jlab.rec.constants.CalibrationConstantsLoader; +import org.jlab.detector.pulse.ModeAHDC; /** AHDCEngine reconstruction service. * @@ -61,7 +62,8 @@ public class AHDCEngine extends ReconstructionEngine { private Mode mode = Mode.CV_Track_Finding; private AlertDCDetector factory = null; - + private ModeAHDC ahdcExtractor = new ModeAHDC(); + public AHDCEngine() { super("ALERT", "ouillon", "1.0.1"); } @@ -124,6 +126,9 @@ public boolean processDataEvent(DataEvent event) { simulation = true; } + // TODO: this code should perhaps be in the if statement MC::Particle + ahdcExtractor.update(30, null, event, "AHDC::wf", "AHDC::adc"); + if (event.hasBank("RUN::config")) { DataBank bank = event.getBank("RUN::config"); runNo = bank.getInt("run", 0); From 7fcb909e3323f4f5e4a0aab8c7c0c2c62c8443f1 Mon Sep 17 00:00:00 2001 From: Christopher Dilks Date: Fri, 2 May 2025 18:33:52 -0400 Subject: [PATCH 095/100] feat: generate `mkdocs` webpage, and get rid of pre-commit (#609) --- .github/make_banks_readme_precommit.sh | 2 - .github/workflows/ci.yml | 55 +-- .pre-commit-config.yaml | 8 - README.md | 1 + docs/mkdocs/docs/index.md | 14 + docs/mkdocs/generate.sh | 33 ++ docs/mkdocs/mkdocs.yaml | 10 + docs/mkdocs/requirements.txt | 1 + .../mkdocs/src/banks.rb | 3 +- etc/bankdefs/hipo4/README.md | 409 ------------------ 10 files changed, 83 insertions(+), 453 deletions(-) delete mode 100755 .github/make_banks_readme_precommit.sh delete mode 100644 .pre-commit-config.yaml create mode 100644 docs/mkdocs/docs/index.md create mode 100755 docs/mkdocs/generate.sh create mode 100644 docs/mkdocs/mkdocs.yaml create mode 100644 docs/mkdocs/requirements.txt rename .github/make_banks_readme.rb => docs/mkdocs/src/banks.rb (95%) delete mode 100644 etc/bankdefs/hipo4/README.md diff --git a/.github/make_banks_readme_precommit.sh b/.github/make_banks_readme_precommit.sh deleted file mode 100755 index d2fed8649f..0000000000 --- a/.github/make_banks_readme_precommit.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env sh -.github/make_banks_readme.rb etc/bankdefs/hipo4 > etc/bankdefs/hipo4/README.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 65d75664f3..916e9157b3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -173,55 +173,46 @@ jobs: - name: pass run: exit 0 - # generate documentation + # documentation ############################################################################# generate_documentation: runs-on: ubuntu-latest + needs: [ build ] steps: + ### mkdocs - uses: actions/checkout@v4 - - name: Set up JDK - uses: actions/setup-java@v4 - with: - java-version: ${{ env.javadoc_version }} - distribution: ${{ env.java_distribution }} - - name: build - run: ./build-coatjava.sh - - name: generate documentation - run: ./build-javadocs.sh - - uses: actions/upload-artifact@v4 - with: - name: javadoc - path: docs/javadoc/ - retention-days: 1 - - # deploy web pages - ############################################################################# - - collect_webpages: - if: ${{ github.ref == 'refs/heads/development' }} - needs: [ build, generate_documentation ] - runs-on: ubuntu-latest - steps: - - name: download jacoco report + - name: install mkdocs dependencies + run: python -m pip install -r docs/mkdocs/requirements.txt + - name: generate mkdocs + run: docs/mkdocs/generate.sh pages + ### jacoco + - name: download jacoco report artifact uses: actions/download-artifact@v4 with: name: jacoco_report path: pages/jacoco - - name: download javadoc documentation - uses: actions/download-artifact@v4 + ### javadoc + - name: set up JDK + uses: actions/setup-java@v4 with: - name: javadoc - path: pages/javadoc - - run: tree pages + java-version: ${{ env.javadoc_version }} + distribution: ${{ env.java_distribution }} + - name: build coatjava + run: ./build-coatjava.sh + - name: generate javadoc documentation + run: | + ./build-javadocs.sh + mv docs/javadoc pages/ + ### upload artifacts - uses: actions/upload-pages-artifact@v3 with: - retention-days: 1 + retention-days: 7 path: pages/ deploy_web_pages: if: ${{ github.ref == 'refs/heads/development' }} - needs: collect_webpages + needs: [ generate_documentation ] permissions: pages: write id-token: write diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index a482a3ca64..0000000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,8 +0,0 @@ -repos: -- repo: local - hooks: - - id: make_banks_readme - name: make banks readme - entry: .github/make_banks_readme_precommit.sh - language: script - pass_filenames: false diff --git a/README.md b/README.md index 6d5f89bd5e..606d8c9bfd 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ [![Validation Status](https://github.com/JeffersonLab/coatjava/actions/workflows/validation.yml/badge.svg)](https://github.com/JeffersonLab/coatjava/actions/workflows/validation.yml) [![Coverage](https://badgen.net/static/JaCoCo/coverage/purple)](https://jeffersonlab.github.io/coatjava/jacoco) +- [**Documentation Homepage**](https://jeffersonlab.github.io/coatjava) - [API Documentation (Javadoc)](https://jeffersonlab.github.io/coatjava/javadoc) ---- diff --git a/docs/mkdocs/docs/index.md b/docs/mkdocs/docs/index.md new file mode 100644 index 0000000000..bcc06f3adb --- /dev/null +++ b/docs/mkdocs/docs/index.md @@ -0,0 +1,14 @@ +# COATJAVA + +## Documentation + +| | | +| --- | --- | +| [**API Documentation**](javadoc/index.html) | Documentation for classes and methods | +| [**HIPO Bank**](banks.md) | Bank descriptions | +| [**Source code**](https://github.com/JeffersonLab/coatjava) | The source code `git` repository | + +--- + +## Reports +- [Coverage Report](jacoco/index.html) diff --git a/docs/mkdocs/generate.sh b/docs/mkdocs/generate.sh new file mode 100755 index 0000000000..77110954eb --- /dev/null +++ b/docs/mkdocs/generate.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +set -euo pipefail + +# generate the documentation +if [ $# -ne 1 ]; then + echo "USAGE: $0 [output_dir]" >&2 + exit 2 +fi + +# make output dir +output_dir=$(realpath $1) +mkdir -p $output_dir + +# make build directory +build_dir=${output_dir}__build +mkdir -p $build_dir +rm -r $build_dir +mkdir -p $build_dir + +# source directories +src_dir=$(dirname $0) +top_dir=$src_dir/../.. + +# generate build files +cp $src_dir/mkdocs.yaml $build_dir/ +cp -r $src_dir/docs $build_dir/ +$src_dir/src/banks.rb $top_dir/etc/bankdefs/hipo4 > $build_dir/docs/banks.md +tree $build_dir + +# build +mkdocs build --config-file $build_dir/mkdocs.yaml --site-dir $output_dir +tree $output_dir diff --git a/docs/mkdocs/mkdocs.yaml b/docs/mkdocs/mkdocs.yaml new file mode 100644 index 0000000000..17b2f0e054 --- /dev/null +++ b/docs/mkdocs/mkdocs.yaml @@ -0,0 +1,10 @@ +site_name: COATJAVA Documentation +nav: + - Home: index.md + - HIPO Bank Definitions: banks.md +use_directory_urls: false +extra: + homepage: index.html +theme: + name: mkdocs + user_color_mode_toggle: auto diff --git a/docs/mkdocs/requirements.txt b/docs/mkdocs/requirements.txt new file mode 100644 index 0000000000..a5678a34b0 --- /dev/null +++ b/docs/mkdocs/requirements.txt @@ -0,0 +1 @@ +mkdocs>=1.6.1 diff --git a/.github/make_banks_readme.rb b/docs/mkdocs/src/banks.rb similarity index 95% rename from .github/make_banks_readme.rb rename to docs/mkdocs/src/banks.rb index ca67af8768..4dafbf674b 100755 --- a/.github/make_banks_readme.rb +++ b/docs/mkdocs/src/banks.rb @@ -51,8 +51,7 @@ # dump a table puts """# Bank Group and Item IDs -> [!NOTE] -> Iguana banks, which are defined in the Iguana repository, use group number 30000. +> **NOTE:** Iguana banks, which are defined in the Iguana repository, use group number 30000. """ diff --git a/etc/bankdefs/hipo4/README.md b/etc/bankdefs/hipo4/README.md deleted file mode 100644 index 920739f6cf..0000000000 --- a/etc/bankdefs/hipo4/README.md +++ /dev/null @@ -1,409 +0,0 @@ -# Bank Group and Item IDs - -> [!NOTE] -> Iguana banks, which are defined in the Iguana repository, use group number 30000. - - -## Group 40 - -| Item ID | Name | Description | -| --- | --- | --- | -| 0 | `MC::Header` | Head bank for the generated event | -| 1 | `MC::Event` | Lund header bank for the generated event | -| 2 | `MC::Particle` | Generated Particle information | -| 3 | `MC::Lund` | Generated Particle information from Lund | -| 4 | `MC::True` | True detector information from GEANT4 | -| 5 | `MC::User` | User-defined information | -| 6 | `MC::GenMatch` | `MC::Particle` -> `REC::Particle` matching | -| 7 | `MC::RecMatch` | `Rec::Particle` -> `MC::Particle` matching | - -## Group 300 - -| Item ID | Name | Description | -| --- | --- | --- | -| 10 | `RECHB::Event` | Event Header Bank | -| 11 | `RECHB::Particle` | Reconstructed Particle Information | -| 12 | `RECHB::Calorimeter` | Calorimeter Responses for Particles bank | -| 13 | `RECHB::Cherenkov` | Cherenkov Responses for Particles bank | -| 14 | `RECHB::ForwardTagger` | Forward Tagger information for Particles bank | -| 15 | `RECHB::Scintillator` | Scintillator Responses for Particles bank | -| 16 | `RECHB::Track` | Track information for Particles bank | -| 17 | `RECHB::TrackCross` | Track Cross information for Particles bank (deprecated by `RECHB::Traj`) | -| 18 | `RECHB::Traj` | Trajectory information for Particles bank | -| 23 | `RECHB::ScintExtras` | Scintillator Cluster Parameters | -| 24 | `RECHB::CaloExtras` | Calorimeter Cluster Parameters | -| 30 | `REC::Event` | Event Header Bank | -| 31 | `REC::Particle` | Reconstructed Particle Information | -| 32 | `REC::Calorimeter` | Calorimeter Responses for Particles bank | -| 33 | `REC::Cherenkov` | Cherenkov Responses for Particles bank | -| 34 | `REC::ForwardTagger` | Forward Tagger information for Particles bank | -| 35 | `REC::Scintillator` | Scintillator Responses for Particles bank | -| 36 | `REC::Track` | Track information for Particles bank | -| 37 | `REC::TrackCross` | Track Cross information for Particles bank (deprecated by `REC::Traj`) | -| 38 | `REC::CovMat` | reconstructed track covariance matrix | -| 39 | `REC::VertDoca` | Track Cross information for Particles bank | -| 40 | `REC::Traj` | Trajectory information for Particles bank | -| 41 | `RECFT::Event` | Event Header Bank, shadowing `REC::Event` with FT-based start time | -| 42 | `RECFT::Particle` | Reconstructed Particle Information, shadowing `REC::Particle` with FT-based start time | -| 43 | `REC::ScintExtras` | Scintillator Cluster Parameters | -| 44 | `REC::UTrack` | Track information for Particles bank | -| 45 | `RECHB::UTrack` | Track information for Particles bank | -| 46 | `REC::CaloExtras` | Calorimeter Cluster Parameters | - -## Group 400 - -| Item ID | Name | Description | -| --- | --- | --- | -| 10 | `RECHBAI::Event` | Event Header Bank | -| 11 | `RECHBAI::Particle` | Reconstructed Particle Information | -| 12 | `RECHBAI::Calorimeter` | Calorimeter Responses for Particles bank | -| 13 | `RECHBAI::Cherenkov` | Cherenkov Responses for Particles bank | -| 14 | `RECHBAI::ForwardTagger` | Forward Tagger information for Particles bank | -| 15 | `RECHBAI::Scintillator` | Scintillator Responses for Particles bank | -| 16 | `RECHBAI::Track` | Track information for Particles bank | -| 17 | `RECHBAI::TrackCross` | Track Cross information for Particles bank (deprecated by `RECHBAI::Traj`) | -| 18 | `RECHBAI::Traj` | Trajectory information for Particles bank | -| 23 | `RECHBAI::ScintExtras` | Scintillator Cluster Parameters | -| 24 | `RECHBAI::CaloExtras` | Calorimeter Cluster Parameters | -| 30 | `RECAI::Event` | Event Header Bank | -| 31 | `RECAI::Particle` | Reconstructed Particle Information | -| 32 | `RECAI::Calorimeter` | Calorimeter Responses for Particles bank | -| 33 | `RECAI::Cherenkov` | Cherenkov Responses for Particles bank | -| 34 | `RECAI::ForwardTagger` | Forward Tagger information for Particles bank | -| 35 | `RECAI::Scintillator` | Scintillator Responses for Particles bank | -| 36 | `RECAI::Track` | Track information for Particles bank | -| 37 | `RECAI::TrackCross` | Track Cross information for Particles bank (deprecated by `RECAI::Traj`) | -| 38 | `RECAI::CovMat` | reconstructed track covariance matrix | -| 39 | `RECAI::VertDoca` | Track Cross information for Particles bank | -| 40 | `RECAI::Traj` | Trajectory information for Particles bank | -| 41 | `RECAIFT::Event` | Event Header Bank, shadowing `RECAI::Event` with FT-based start time | -| 42 | `RECAIFT::Particle` | Reconstructed Particle Information, shadowing `RECAI::Particle` with FT-based start time | -| 43 | `RECAI::ScintExtras` | Scintillator Cluster Parameters | -| 44 | `RECAI::UTrack` | Track information for Particles bank | -| 45 | `RECHBAI::UTrack` | Track information for Particles bank | -| 46 | `RECAI::CaloExtras` | Calorimeter Cluster Parameters | - -## Group 4200 - -| Item ID | Name | Description | -| --- | --- | --- | -| 1 | `nn::tracks` | track parameters from neural network | -| 2 | `nn::dchits` | index if the track hits in DC tdc bank. | -| 3 | `ai::tracks` | tracks identified with AI | -| 4 | `aidn::tracks` | tracks identified with denoised AI | - -## Group 10000 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `RUN::config` | Run Configuration | -| 12 | `RUN::rf` | RF information | -| 13 | `RUN::trigger` | RUN trigger information | -| 14 | `RUN::scaler` | Run-integrated, analyzed scalers. | -| 15 | `RUN::filter` | Random trigger filter information | -| 16 | `HEL::scaler` | Helicity-gated, analyzed scalers. | -| 17 | `COAT::config` | COATJAVA configuration, e.g. version numbers, CLARA YAML settings | - -## Group 20000 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `RAW::adc` | ADC bank for untranslated signals | -| 12 | `RAW::tdc` | TDC bank for untranslated signals | -| 13 | `RAW::scaler` | Scaler bank | -| 14 | `RAW::vtp` | VTP bank | -| 15 | `RAW::epics` | EPICS bank | - -## Group 20100 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `BMT::adc` | ADC bank for the Barrel MicroMegas Tracker | -| 21 | `BMTRec::Hits` | first pass reconstructed BMT hits on track | -| 22 | `BMTRec::Clusters` | first pass reconstructed BMT clusters | -| 25 | `BMTRec::Crosses` | first pass reconstructed BMT crosses | -| 26 | `BMTRec::LayerEffs` | layer efficiencies | -| 31 | `BMT::Hits` | reconstructed BMT hits on track | -| 32 | `BMT::Clusters` | reconstructed BMT clusters | -| 35 | `BMT::Crosses` | reconstructed BMT crosses | - -## Group 20200 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `BST::adc` | ADC bank for the Barrel Silicon Tracker | -| 21 | `BSTRec::Hits` | first pass reconstructed BST hits on track | -| 22 | `BSTRec::Clusters` | first pass reconstructed BST clusters | -| 25 | `BSTRec::Crosses` | first reconstructed BST crosses | -| 29 | `BSTRec::LayerEffs` | layer efficiencies | -| 31 | `BST::Hits` | reconstructed BST hits on track | -| 32 | `BST::Clusters` | reconstructed BST clusters | -| 35 | `BST::Crosses` | reconstructed BST crosses | - -## Group 20300 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `CND::adc` | ADC bank for the Central Neutron Detector | -| 12 | `CND::tdc` | TDC bank for the Central Neutron Detector | -| 21 | `CND::hits` | reconstructed hit info from CND | -| 22 | `CND::clusters` | reconstructed cluster info from CND and CTOF | - -## Group 20400 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `CTOF::adc` | ADC bank for the Central Time of Flight | -| 12 | `CTOF::tdc` | TDC bank for the Central Time of Flight | -| 20 | `CTOF::rawhits` | reconstructed hit info from U/D CTOF PMTs | -| 21 | `CTOF::hits` | reconstructed hit info from CTOF | -| 22 | `CTOF::clusters` | reconstructed clusters from CTOF | - -## Group 20500 - -| Item ID | Name | Description | -| --- | --- | --- | -| 25 | `CVTRec::Seeds` | first pass reconstructed CVT track seeds | -| 26 | `CVTRec::Tracks` | reconstructed CVT tracks | -| 27 | `CVTRec::UTracks` | reconstructed CVT tracks | -| 28 | `CVTRec::TrackCovMat` | reconstructed CVT tracks covariance matrix in track representation | -| 29 | `CVTRec::CosmicSeeds` | reconstructed CVT cosmic seed | -| 30 | `CVTRec::Cosmics` | reconstructed SVT cosmic tracks | -| 31 | `CVTRec::Trajectory` | Trajectory bank | -| 32 | `CVTRec::KFTrajectory` | Trajectory bank output from KF | -| 35 | `CVT::Seeds` | reconstructed CVT track seeds | -| 36 | `CVT::Tracks` | reconstructed CVT tracks | -| 37 | `CVT::UTracks` | reconstructed CVT tracks | -| 41 | `CVT::Trajectory` | Trajectory bank | -| 42 | `CVT::KFTrajectory` | Trajectory bank output from KF | -| 43 | `CVT::SeedClusters` | Ids of clusters on track for 12 layers of CVT | -| 44 | `CVTRec::SeedClusters` | Ids of clusters on track for 12 layers of CVT | - -## Group 20600 - -| Item ID | Name | Description | -| --- | --- | --- | -| 12 | `DC::tdc` | TDC bank for the Drift Chambers | -| 13 | `DC::jitter` | DCRB timestamps bank | -| 14 | `DC::doca` | Drift Chamber DOCA bank | -| 21 | `HitBasedTrkg::HBHits` | reconstructed hits using DC wire positions | -| 22 | `HitBasedTrkg::HBClusters` | reconstructed clusters using DC wire positions | -| 23 | `HitBasedTrkg::HBSegments` | reconstructed segments using DC wire positions | -| 24 | `HitBasedTrkg::HBSegmentTrajectory` | reconstructed segment trajectory from hit-based tracking | -| 25 | `HitBasedTrkg::HBCrosses` | reconstructed segments using DC wire positions | -| 26 | `HitBasedTrkg::HBTracks` | reconstructed tracks using DC wire positions | -| 27 | `HitBasedTrkg::HBHitTrkId` | pointers between track and hit banks | -| 28 | `HitBasedTrkg::Hits` | reconstructed hits using DC wire positions | -| 29 | `HitBasedTrkg::Clusters` | reconstructed clusters using DC wire positions | -| 30 | `HitBasedTrkg::Trajectory` | Trajectory bank | -| 31 | `TimeBasedTrkg::TBHits` | reconstructed hits using DC timing information | -| 32 | `TimeBasedTrkg::TBClusters` | reconstructed clusters using DC timing information | -| 33 | `TimeBasedTrkg::TBSegments` | reconstructed segments using DC timing information | -| 34 | `TimeBasedTrkg::TBSegmentTrajectory` | reconstructed segment trajectory from hit-based tracking | -| 35 | `TimeBasedTrkg::TBCrosses` | reconstructed segments using DC timing information | -| 36 | `TimeBasedTrkg::TBTracks` | reconstructed tracks using DC timing information | -| 37 | `TimeBasedTrkg::TBCovMat` | reconstructed track covariance matrix | -| 48 | `HitBasedTrkg::DNHits` | reconstructed hits using DC wire positions | -| 49 | `HitBasedTrkg::DNClusters` | reconstructed clusters using DC wire positions | -| 53 | `TimeBasedTrkg::Trajectory` | Trajectory bank | -| 61 | `HitBasedTrkg::AIHits` | reconstructed hits using DC wire positions | -| 62 | `HitBasedTrkg::AIClusters` | reconstructed clusters using DC wire positions | -| 63 | `HitBasedTrkg::AISegments` | reconstructed segments using DC wire positions | -| 65 | `HitBasedTrkg::AICrosses` | reconstructed segments using DC wire positions | -| 66 | `HitBasedTrkg::AITracks` | reconstructed tracks using DC wire positions | -| 67 | `HitBasedTrkg::AIHitTrkId` | pointers between track and hit banks | -| 68 | `HitBasedTrkg::AITrajectory` | Trajectory bank | -| 71 | `TimeBasedTrkg::AIHits` | reconstructed hits using DC timing information | -| 72 | `TimeBasedTrkg::AIClusters` | reconstructed clusters using DC timing information | -| 73 | `TimeBasedTrkg::AISegments` | reconstructed segments using DC timing information | -| 75 | `TimeBasedTrkg::AICrosses` | reconstructed segments using DC timing information | -| 76 | `TimeBasedTrkg::AITracks` | reconstructed tracks using DC timing information | -| 77 | `TimeBasedTrkg::AICovMat` | reconstructed track covariance matrix | -| 93 | `TimeBasedTrkg::AITrajectory` | Trajectory bank | - -## Group 20700 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `ECAL::adc` | ADC bank for the Electromagnetic Calorimeter | -| 12 | `ECAL::tdc` | TDC bank for the Electromagnetic Calorimeter | -| 21 | `ECAL::hits` | ECAL hits | -| 22 | `ECAL::peaks` | reconstructed peaks from ECAL | -| 23 | `ECAL::clusters` | reconstructed clusters in ECAL | -| 24 | `ECAL::calib` | Raw and recon peak energy and recon peak time from ECAL | -| 25 | `ECAL::moments` | ECCAL bank for clusters containing distances an moments | -| 26 | `ECAL::scaler` | Occupancy bank for the Electromagnetic Calorimeter | -| 27 | `ECAL::trigger` | Occupancy bank for trigger bits | - -## Group 20800 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `FMT::adc` | ADC bank for the Forward MicroMegas Tracker | -| 21 | `FMT::Hits` | reconstructed FMT hits | -| 22 | `FMT::Clusters` | reconstructed FMT clusters | -| 25 | `FMT::Crosses` | reconstructed FMT crosses | -| 36 | `FMT::Tracks` | reconstructed tracks using FMT information | -| 37 | `FMT::Trajectory` | FMT tracks trajectory bank | - -## Group 20900 - -| Item ID | Name | Description | -| --- | --- | --- | -| 24 | `FT::particles` | Reconstructed Particles in FT | - -## Group 21000 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `FTCAL::adc` | ADC bank for the Forward Tagger Calorimeter | -| 21 | `FTCAL::hits` | Reconstructed Hits in FT calorimeter | -| 22 | `FTCAL::clusters` | Reconstructed Clusters in FT calorimeter | - -## Group 21100 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `FTHODO::adc` | ADC bank for the Forward Tagger Hodoscope | -| 21 | `FTHODO::hits` | Reconstructed Hits in FT hodoscope | -| 22 | `FTHODO::clusters` | Reconstructed clusters in FT hodoscope | - -## Group 21200 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `FTOF::adc` | ADC bank for the Forward Time of Flight | -| 12 | `FTOF::tdc` | TDC bank for the Forward Time of Flight | -| 20 | `FTOF::rawhits` | reconstructed hit info from L/R FTOF PMTs | -| 21 | `FTOF::hbhits` | reconstructed hit info from FTOF | -| 22 | `FTOF::hbclusters` | reconstructed clusters from FTOF | -| 31 | `FTOF::hits` | reconstructed hit info from FTOF | -| 32 | `FTOF::clusters` | reconstructed clusters from FTOF | -| 33 | `FTOF::matchedclusters` | matched clusters from FTOF | - -## Group 21300 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `FTTRK::adc` | ADC bank for the Forward Tagger Tracker | -| 21 | `FTTRK::hits` | Reconstructed Hits in FT tracker | -| 22 | `FTTRK::clusters` | Reconstructed clusters in FT tracker | -| 23 | `FTTRK::crosses` | Reconstructed crosses in FT tracker | - -## Group 21500 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `HTCC::adc` | ADC bank for the High Threshold Cerenkov Counter | -| 12 | `HTCC::tdc` | TDC bank for the High Threshold Cerenkov Counter | -| 22 | `HTCC::rec` | reconstructed clusters in HTCC | - -## Group 21600 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `LTCC::adc` | ADC bank for the Low Threshold Cerenkov Counter | -| 12 | `LTCC::tdc` | TDC bank for the Low Threshold Cerenkov Counter | -| 22 | `LTCC::clusters` | reconstructed clusters from the LTCC | - -## Group 21700 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `RF::adc` | ADC bank for the RF signals | -| 12 | `RF::tdc` | TDC bank for the RF signals | - -## Group 21800 - -| Item ID | Name | Description | -| --- | --- | --- | -| 12 | `RICH::tdc` | TDC bank for the Ring Imaging Cerenkov Counter | -| 36 | `RICH::Ring` | Reconstructed Cherenov information for single photon | -| 37 | `RICH::Particle` | Reconstructed Cherenov information per track | -| 38 | `RICH::Hadron` | Reconstructed Hadrons in RICH | -| 39 | `RICH::Photon` | Reconstructed Photons in RICH | -| 40 | `RICH::Hit` | Reconstructed Hits in RICH | -| 41 | `RICH::Signal` | Reconstructed Signals in RICH | -| 42 | `RICH::Cluster` | Reconstructed Clusters in RICH | -| 43 | `RICH::Response` | RICH Responses for Particles bank | - -## Group 21900 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `RTPC::adc` | ADC bank for the Radial TPC | -| 14 | `RTPC::pos` | Digitized bank for the Radial TPC | -| 21 | `RTPC::hits` | reconstructed RTPC hits | -| 22 | `RTPC::tracks` | reconstructed track info | -| 23 | `RTPC::KFtracks` | Kalman Fitter track info | - -## Group 22000 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `HEL::adc` | ADC bank for the Helicity signals. Compoment 1/2/3 is helicity/sync/quartet. | -| 12 | `HEL::flip` | Helicity flips from ADC bank. State values are -1/0/+1, where 0 is invalid. | -| 13 | `HEL::online` | Helicity with online delay-correction in Level3 trigger | -| 14 | `HEL::decoder` | Helicity decoder board data | - -## Group 22100 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `BAND::adc` | ADC bank for the Backward Angle Neutron Detector | -| 12 | `BAND::tdc` | TDC bank for the Backward Angle Neutron Detector | -| 21 | `BAND::hits` | reconstructed coincidence hits from BAND | -| 22 | `BAND::rawhits` | single PMT hits from BAND | -| 23 | `BAND::laser` | laser hits from BAND | - -## Group 22200 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `RASTER::adc` | ADC bank for the Raster signals | -| 21 | `RASTER::position` | Reconstructed raster position | - -## Group 22300 - -| Item ID | Name | Description | -| --- | --- | --- | -| 11 | `URWELL::adc` | ADC bank for the URWELL | -| 21 | `URWELL::hits` | URWELL hits | -| 22 | `URWELL::clusters` | reconstructed clusters from URWELL | -| 23 | `URWELL::crosses` | reconstructed crosses from URWELL | - -## Group 22400 - -| Item ID | Name | Description | -| --- | --- | --- | -| 10 | `AHDC::wf` | Waveform bank for the AHDC | -| 11 | `AHDC::adc` | ADC bank for the ALERT Wire Chamber | - -## Group 22500 - -| Item ID | Name | Description | -| --- | --- | --- | -| 12 | `ATOF::tdc` | TDC bank for the ALERT TOF | -| 21 | `ATOF::hits` | Reconstructed ATOF hits | -| 22 | `ATOF::clusters` | Clusters in ATOF | - -## Group 22600 - -| Item ID | Name | Description | -| --- | --- | --- | -| 21 | `RECOIL::hits` | RECOIL hits | -| 22 | `RECOIL::clusters` | reconstructed clusters from RECOIL | -| 23 | `RECOIL::crosses` | reconstructed crosses from RECOIL | - -## Group 23000 - -| Item ID | Name | Description | -| --- | --- | --- | -| 21 | `AHDC::track` | Reco Tracks | -| 22 | `AHDC::mc` | MC Tracks | -| 23 | `AHDC::hits` | Raw Hits | -| 24 | `AHDC::preclusters` | Pre Clusters info | -| 25 | `AHDC::clusters` | Clusters info | -| 26 | `AHDC::kftrack` | Reco Kalman Filter Tracks | -| 30 | `AHDC::ai:prediction` | Prediction given by AI | -| 31 | `ALERT::projections` | Track Projections to ATOF | From 0841d5fd4f1c27a3a72a10212a76d2df0c440e1c Mon Sep 17 00:00:00 2001 From: Christopher Dilks Date: Fri, 2 May 2025 23:14:02 -0400 Subject: [PATCH 096/100] fix: `hipo-multi-merge` Slurm node memory request should be at least max heap size of `hipo-utils` (#605) --- bin/hipo-multi-merge | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bin/hipo-multi-merge b/bin/hipo-multi-merge index 5dcbacea8e..ebed509cec 100755 --- a/bin/hipo-multi-merge +++ b/bin/hipo-multi-merge @@ -8,6 +8,8 @@ def print_log(name, val) puts name.rjust(30) + " = #{val}" end +SlurmMemReq = 2048 + 200 # `-Xmx` argument from `hipo-utils`, plus extra padding + # user options @args = OpenStruct.new @args.inputs = nil @@ -76,7 +78,7 @@ if @args.use_batch 'job-name' => "hipo_multi_merge___#{@args.prefix}", 'account' => 'clas12', 'partition' => 'production', - 'mem-per-cpu' => 500, + 'mem-per-cpu' => SlurmMemReq, 'time' => '1:00:00', 'ntasks' => 1, 'cpus-per-task' => 1, From efc41eb6ff7572758b3e469eb9c8f4597936b5df Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Fri, 2 May 2025 23:16:11 -0400 Subject: [PATCH 097/100] use -- to differentiate jvm/class options (#608) --- bin/recon-util | 7 +++++-- libexec/env.sh | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/bin/recon-util b/bin/recon-util index a11a11e8c3..e933e14b46 100755 --- a/bin/recon-util +++ b/bin/recon-util @@ -2,9 +2,12 @@ . `dirname $0`/../libexec/env.sh +split_cli $@ + export MALLOC_ARENA_MAX=1 -java -Xmx1536m -Xms1024m -XX:+UseSerialGC \ +java -Xmx1536m -Xms1024m -XX:+UseSerialGC ${jvm_options[@]} \ -cp "$CLAS12DIR/lib/clas/*:$CLAS12DIR/lib/services/*:$CLAS12DIR/lib/utils/*" \ org.jlab.clas.reco.EngineProcessor \ - $* + ${class_options[@]} + diff --git a/libexec/env.sh b/libexec/env.sh index c1825694b1..e11b653c23 100644 --- a/libexec/env.sh +++ b/libexec/env.sh @@ -1,7 +1,6 @@ #!/bin/bash -CLAS12DIR=$(cd $(dirname ${BASH_SOURCE[0]:-$0})/.. && pwd -P) -export CLAS12DIR +export CLAS12DIR=$(cd $(dirname ${BASH_SOURCE[0]:-$0})/.. && pwd -P) # Set default field maps (but do not override user's env): if [ -z "${COAT_MAGFIELD_TORUSMAP-}" ]; then @@ -37,3 +36,16 @@ if [ $# -ge 1 ]; then fi fi + +function split_cli { + jvm_options=() + class_options=() + while [[ $# -gt 0 ]] + do + case $1 in + --) shift && jvm_options=("${@}") && break ;; + *) class_options+=($1) && shift ;; + esac + done +} + From f71020d912619940c433258c40cbd21811e2367d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 May 2025 10:53:47 -0400 Subject: [PATCH 098/100] build(deps): bump org.slf4j:slf4j-simple from 2.0.16 to 2.0.17 (#602) Bumps org.slf4j:slf4j-simple from 2.0.16 to 2.0.17. --- updated-dependencies: - dependency-name: org.slf4j:slf4j-simple dependency-version: 2.0.17 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- common-tools/clas-jcsg/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common-tools/clas-jcsg/pom.xml b/common-tools/clas-jcsg/pom.xml index 318e3a7a65..a6cf2d8ff5 100644 --- a/common-tools/clas-jcsg/pom.xml +++ b/common-tools/clas-jcsg/pom.xml @@ -42,7 +42,7 @@ org.slf4j slf4j-simple - 2.0.16 + 2.0.17 From f2b5ec01912ef42ab2d631581d332d1f5e66d690 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 5 May 2025 11:06:07 -0400 Subject: [PATCH 099/100] version bump (#610) --- common-tools/clara-io/pom.xml | 4 ++-- common-tools/clas-analysis/pom.xml | 20 ++++++++--------- common-tools/clas-detector/pom.xml | 10 ++++----- common-tools/clas-geometry/pom.xml | 4 ++-- common-tools/clas-io/pom.xml | 8 +++---- common-tools/clas-jcsg/pom.xml | 8 +++---- 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 | 16 +++++++------- common-tools/clas-tracking/pom.xml | 6 +++--- common-tools/clas-utils/pom.xml | 6 +++--- common-tools/cnuphys/magfield/pom.xml | 2 +- common-tools/cnuphys/swimmer/pom.xml | 2 +- common-tools/coat-lib/deployDistribution.sh | 2 +- common-tools/coat-lib/pom.xml | 24 ++++++++++----------- common-tools/parent/pom.xml | 2 +- common-tools/pom.xml | 4 ++-- common-tools/swim-tools/pom.xml | 6 +++--- parent/pom.xml | 2 +- pom.xml | 4 ++-- reconstruction/alert/pom.xml | 12 +++++------ reconstruction/band/pom.xml | 4 ++-- reconstruction/bg/pom.xml | 8 +++---- reconstruction/cnd/pom.xml | 2 +- reconstruction/cvt/pom.xml | 6 +++--- reconstruction/dc/pom.xml | 14 ++++++------ reconstruction/eb/pom.xml | 10 ++++----- reconstruction/ec/pom.xml | 6 +++--- reconstruction/fmt/pom.xml | 6 +++--- reconstruction/ft/pom.xml | 4 ++-- reconstruction/htcc/pom.xml | 4 ++-- reconstruction/ltcc/pom.xml | 4 ++-- reconstruction/mc/pom.xml | 4 ++-- reconstruction/mltn/pom.xml | 6 +++--- reconstruction/pom.xml | 4 ++-- reconstruction/postproc/pom.xml | 8 +++---- reconstruction/raster/pom.xml | 4 ++-- reconstruction/rich/pom.xml | 6 +++--- reconstruction/rtpc/pom.xml | 6 +++--- reconstruction/swaps/pom.xml | 8 +++---- reconstruction/tof/pom.xml | 4 ++-- reconstruction/urwell/pom.xml | 6 +++--- reconstruction/vtx/pom.xml | 6 +++--- 44 files changed, 142 insertions(+), 142 deletions(-) diff --git a/common-tools/clara-io/pom.xml b/common-tools/clara-io/pom.xml index f657732ea3..185959920a 100644 --- a/common-tools/clara-io/pom.xml +++ b/common-tools/clara-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clara-io - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/common-tools/clas-analysis/pom.xml b/common-tools/clas-analysis/pom.xml index 0cf34524b2..a6b5d9d850 100644 --- a/common-tools/clas-analysis/pom.xml +++ b/common-tools/clas-analysis/pom.xml @@ -3,63 +3,63 @@ 4.0.0 org.jlab.clas clas-analysis - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-utils - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-physics - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-io - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas swim-tools - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-detector - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/common-tools/clas-detector/pom.xml b/common-tools/clas-detector/pom.xml index 2054ee610b..26933b2080 100644 --- a/common-tools/clas-detector/pom.xml +++ b/common-tools/clas-detector/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-detector - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-utils - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -29,13 +29,13 @@ org.jlab.clas clas-io - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/common-tools/clas-geometry/pom.xml b/common-tools/clas-geometry/pom.xml index a2a5002b3b..38db5ad277 100644 --- a/common-tools/clas-geometry/pom.xml +++ b/common-tools/clas-geometry/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-geometry - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/common-tools/clas-io/pom.xml b/common-tools/clas-io/pom.xml index c2f2c8913f..7e228cb9d2 100644 --- a/common-tools/clas-io/pom.xml +++ b/common-tools/clas-io/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-io - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -90,13 +90,13 @@ org.jlab.clas clas-utils - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-logging - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT compile diff --git a/common-tools/clas-jcsg/pom.xml b/common-tools/clas-jcsg/pom.xml index a6cf2d8ff5..6e4f21a527 100644 --- a/common-tools/clas-jcsg/pom.xml +++ b/common-tools/clas-jcsg/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-jcsg - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -27,12 +27,12 @@ org.jlab.clas clas-geometry - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-detector - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT java3d diff --git a/common-tools/clas-logging/pom.xml b/common-tools/clas-logging/pom.xml index 5f261f3edd..e5e26b7457 100644 --- a/common-tools/clas-logging/pom.xml +++ b/common-tools/clas-logging/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-logging - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/common-tools/clas-math/pom.xml b/common-tools/clas-math/pom.xml index 6959ee53de..2f4470e1fa 100644 --- a/common-tools/clas-math/pom.xml +++ b/common-tools/clas-math/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-math - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/common-tools/clas-physics/pom.xml b/common-tools/clas-physics/pom.xml index 255a1ebddc..01d33087b4 100644 --- a/common-tools/clas-physics/pom.xml +++ b/common-tools/clas-physics/pom.xml @@ -4,14 +4,14 @@ org.jlab.clas clas-physics - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/common-tools/clas-reco/pom.xml b/common-tools/clas-reco/pom.xml index cec03a542f..a192b87817 100644 --- a/common-tools/clas-reco/pom.xml +++ b/common-tools/clas-reco/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -42,37 +42,37 @@ org.jlab.clas clas-math - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-io - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-logging - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-physics - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-utils - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-detector - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/common-tools/clas-tracking/pom.xml b/common-tools/clas-tracking/pom.xml index 6ee110e3f6..9015e373c1 100644 --- a/common-tools/clas-tracking/pom.xml +++ b/common-tools/clas-tracking/pom.xml @@ -3,14 +3,14 @@ 4.0.0 org.jlab.clas clas-tracking - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -22,7 +22,7 @@ org.jlab.clas swim-tools - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar diff --git a/common-tools/clas-utils/pom.xml b/common-tools/clas-utils/pom.xml index e6224c29ce..f444fbf279 100644 --- a/common-tools/clas-utils/pom.xml +++ b/common-tools/clas-utils/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas clas-utils - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-logging - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.apache.commons diff --git a/common-tools/cnuphys/magfield/pom.xml b/common-tools/cnuphys/magfield/pom.xml index b55cfe4381..1775d908f7 100644 --- a/common-tools/cnuphys/magfield/pom.xml +++ b/common-tools/cnuphys/magfield/pom.xml @@ -23,7 +23,7 @@ org.jlab.clas clas-math - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/common-tools/cnuphys/swimmer/pom.xml b/common-tools/cnuphys/swimmer/pom.xml index 2fc25b6254..833df583c3 100644 --- a/common-tools/cnuphys/swimmer/pom.xml +++ b/common-tools/cnuphys/swimmer/pom.xml @@ -35,7 +35,7 @@ org.jlab.clas clas-math - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/common-tools/coat-lib/deployDistribution.sh b/common-tools/coat-lib/deployDistribution.sh index d336659085..ad46bd278c 100755 --- a/common-tools/coat-lib/deployDistribution.sh +++ b/common-tools/coat-lib/deployDistribution.sh @@ -8,7 +8,7 @@ cd `dirname $0` # Script is exporting existing Jar files to repository #------------------------------------------------------------------------------------------------- -VERSION=12.0.5t +VERSION=12.0.6t mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file \ -Dfile=target/coat-libs-${VERSION}-SNAPSHOT.jar \ diff --git a/common-tools/coat-lib/pom.xml b/common-tools/coat-lib/pom.xml index 1e26312691..d7a2270cf6 100644 --- a/common-tools/coat-lib/pom.xml +++ b/common-tools/coat-lib/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jlab.clas coat-libs - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT pom @@ -94,67 +94,67 @@ org.jlab.clas clas-io - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clara-io - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-utils - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-detector - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-geometry - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-physics - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas swim-tools - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-tracking - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/common-tools/parent/pom.xml b/common-tools/parent/pom.xml index 68d9c11223..5981c34caa 100644 --- a/common-tools/parent/pom.xml +++ b/common-tools/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas common-tools - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT pom diff --git a/common-tools/pom.xml b/common-tools/pom.xml index 9e1118254d..af174eeb56 100644 --- a/common-tools/pom.xml +++ b/common-tools/pom.xml @@ -2,14 +2,14 @@ 4.0.0 org.jlab.clas common-tools - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/common-tools/swim-tools/pom.xml b/common-tools/swim-tools/pom.xml index 8bf069edb4..e7a922364d 100644 --- a/common-tools/swim-tools/pom.xml +++ b/common-tools/swim-tools/pom.xml @@ -3,21 +3,21 @@ 4.0.0 org.jlab.clas swim-tools - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/parent/pom.xml b/parent/pom.xml index 62c1e1e080..a8c84578fe 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -3,7 +3,7 @@ org.jlab.clas clas12rec - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT pom diff --git a/pom.xml b/pom.xml index 3e1fe5a62a..b34f89a69b 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ 4.0.0 org.jlab.clas clas12 - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT pom @@ -15,7 +15,7 @@ org.jlab.clas clas12rec parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index 2c3d1cedc7..1f6ebc0267 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -13,37 +13,37 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-io - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT compile org.jlab.clas clas-analysis - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT compile org.jlab.clas clas-tracking - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT compile org.jlab.clas clas-geometry - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT compile diff --git a/reconstruction/band/pom.xml b/reconstruction/band/pom.xml index ecf23e4eb2..01da9e29d3 100644 --- a/reconstruction/band/pom.xml +++ b/reconstruction/band/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/bg/pom.xml b/reconstruction/bg/pom.xml index c7a082685a..4a4962f80c 100644 --- a/reconstruction/bg/pom.xml +++ b/reconstruction/bg/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/cnd/pom.xml b/reconstruction/cnd/pom.xml index b6be5802c7..9bacf780e8 100644 --- a/reconstruction/cnd/pom.xml +++ b/reconstruction/cnd/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/cvt/pom.xml b/reconstruction/cvt/pom.xml index dfaab98619..dfc710a64e 100644 --- a/reconstruction/cvt/pom.xml +++ b/reconstruction/cvt/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -47,7 +47,7 @@ org.jlab.clas clas-tracking - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/dc/pom.xml b/reconstruction/dc/pom.xml index ccc9885de5..6d3abd820d 100644 --- a/reconstruction/dc/pom.xml +++ b/reconstruction/dc/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -28,25 +28,25 @@ org.jlab.clas clas-tracking - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -75,13 +75,13 @@ org.jlab.clas swim-tools - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-math - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/eb/pom.xml b/reconstruction/eb/pom.xml index 873e619d6c..fa1d4bbd07 100644 --- a/reconstruction/eb/pom.xml +++ b/reconstruction/eb/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -21,25 +21,25 @@ org.jlab.clas clas-utils - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-io - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/ec/pom.xml b/reconstruction/ec/pom.xml index a3b06385d6..947416d323 100644 --- a/reconstruction/ec/pom.xml +++ b/reconstruction/ec/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/fmt/pom.xml b/reconstruction/fmt/pom.xml index 5129c46dff..a39d197662 100644 --- a/reconstruction/fmt/pom.xml +++ b/reconstruction/fmt/pom.xml @@ -15,21 +15,21 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas swim-tools - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/ft/pom.xml b/reconstruction/ft/pom.xml index fe9bade7c5..f5dadf1b6c 100644 --- a/reconstruction/ft/pom.xml +++ b/reconstruction/ft/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/htcc/pom.xml b/reconstruction/htcc/pom.xml index b66732ce58..a05b7d2d66 100644 --- a/reconstruction/htcc/pom.xml +++ b/reconstruction/htcc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/ltcc/pom.xml b/reconstruction/ltcc/pom.xml index 5ccfd1886a..a629cf13a0 100644 --- a/reconstruction/ltcc/pom.xml +++ b/reconstruction/ltcc/pom.xml @@ -13,14 +13,14 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/mc/pom.xml b/reconstruction/mc/pom.xml index 37bca8a6c7..448a1e0c63 100644 --- a/reconstruction/mc/pom.xml +++ b/reconstruction/mc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/mltn/pom.xml b/reconstruction/mltn/pom.xml index f82744a2be..c8c42ad60f 100644 --- a/reconstruction/mltn/pom.xml +++ b/reconstruction/mltn/pom.xml @@ -14,7 +14,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -34,13 +34,13 @@ org.jlab.clas clas-io - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/pom.xml b/reconstruction/pom.xml index 617ab7f2a4..453c33b27b 100644 --- a/reconstruction/pom.xml +++ b/reconstruction/pom.xml @@ -3,14 +3,14 @@ org.jlab.clas reconstruction - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT pom org.jlab.clas clas12rec ../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/postproc/pom.xml b/reconstruction/postproc/pom.xml index 2a17af2a90..95dc95887d 100644 --- a/reconstruction/postproc/pom.xml +++ b/reconstruction/postproc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-io - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/raster/pom.xml b/reconstruction/raster/pom.xml index 7ff9d363f7..b8a0bc018e 100644 --- a/reconstruction/raster/pom.xml +++ b/reconstruction/raster/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/rich/pom.xml b/reconstruction/rich/pom.xml index 53646bd6c8..3f96607402 100644 --- a/reconstruction/rich/pom.xml +++ b/reconstruction/rich/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-jcsg - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/rtpc/pom.xml b/reconstruction/rtpc/pom.xml index 33b895c9b2..e805b1381b 100644 --- a/reconstruction/rtpc/pom.xml +++ b/reconstruction/rtpc/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -21,12 +21,12 @@ org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-tracking - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT compile diff --git a/reconstruction/swaps/pom.xml b/reconstruction/swaps/pom.xml index c3222fc3f7..fe8a73ed4a 100644 --- a/reconstruction/swaps/pom.xml +++ b/reconstruction/swaps/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -21,19 +21,19 @@ org.jlab.clas clas-detector - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-io - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-reco - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/tof/pom.xml b/reconstruction/tof/pom.xml index 6d7c008c7c..96c967791a 100644 --- a/reconstruction/tof/pom.xml +++ b/reconstruction/tof/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -21,7 +21,7 @@ org.jlab.clas clas-jcsg - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/urwell/pom.xml b/reconstruction/urwell/pom.xml index 9c2cf7a269..96c5920e89 100644 --- a/reconstruction/urwell/pom.xml +++ b/reconstruction/urwell/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -21,13 +21,13 @@ org.jlab.clas clas-detector - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT org.jlab.clas clas-analysis - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT diff --git a/reconstruction/vtx/pom.xml b/reconstruction/vtx/pom.xml index 80ab4b8b32..6d822fa6d9 100644 --- a/reconstruction/vtx/pom.xml +++ b/reconstruction/vtx/pom.xml @@ -13,7 +13,7 @@ org.jlab.clas clas12rec ../../parent/pom.xml - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT @@ -33,13 +33,13 @@ org.jlab.clas swim-tools - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar org.jlab.clas clas-tracking - 12.0.5t-SNAPSHOT + 12.0.6t-SNAPSHOT jar From 0aacaeee5157e46caa5034d4bfe894242ce68c2d Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 5 May 2025 21:24:33 -0400 Subject: [PATCH 100/100] Revert "DC v2: includes TFLight fix and new dc beta time walk with constants from /calibration/dc/v2 (#494)" This reverts commit 73bd1ef3f05039f6bcf6b941f855bd46a22b2739. --- .../kalmanfilter/zReference/KFitter.java | 22 +- .../zReference/KFitterStraight.java | 12 +- .../kalmanfilter/zReference/StateVecs.java | 100 +--- .../main/java/org/jlab/rec/dc/Constants.java | 24 +- .../java/org/jlab/rec/dc/banks/HitReader.java | 4 +- .../java/org/jlab/rec/dc/hit/FittedHit.java | 43 +- .../rec/dc/timetodistance/T2DFunctions.java | 2 +- .../rec/dc/timetodistance/TableLoader.java | 493 ++++++------------ .../TimeToDistanceEstimator.java | 381 ++++++-------- .../rec/dc/track/TrackCandListFinder.java | 28 +- .../java/org/jlab/service/dc/DCTBEngine.java | 35 +- 11 files changed, 385 insertions(+), 759 deletions(-) diff --git a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitter.java b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitter.java index cfdce11c30..c723fb2a3f 100644 --- a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitter.java +++ b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitter.java @@ -708,9 +708,7 @@ private boolean filter(int k, boolean forward, double annealingFactor) { return false; } } - - // Since no vertex inforamtion, the starting point for path length is the final point at the last layer. - // After vertex information is obtained, transition for the starting point from the final point to vertex will be taken. + private boolean filter(int k, boolean forward) { StateVec sVec = sv.transported(forward).get(k); org.jlab.clas.tracking.kalmanfilter.AMeasVecs.MeasVec mVec = mv.measurements.get(k); @@ -859,9 +857,7 @@ public Matrix filterCovMat(double[] H, Matrix Ci, double V) { private void calcFinalChisq(int sector) { calcFinalChisq(sector, false); } - - // Since no vertex inforamtion, the starting point for path length is the final point at the last layer. - // After vertex information is obtained, transition for the starting point from the final point to vertex will be taken. + private void calcFinalChisq(int sector, boolean nofilter) { int k = svzLength - 1; this.chi2 = 0; @@ -884,9 +880,9 @@ private void calcFinalChisq(int sector, boolean nofilter) { sv.transport(sector, k, 0, sVec, mv, this.getSwimmer(), forward); StateVec svc = sv.transported(forward).get(0); - path += (forward ? 1 : -1) * svc.deltaPath; + path += svc.deltaPath; svc.setPathLength(path); - + double V0 = mv.measurements.get(0).surface.unc[0]; Point3D point = new Point3D(svc.x, svc.y, mv.measurements.get(0).surface.measPoint.z()); @@ -926,7 +922,7 @@ private void calcFinalChisq(int sector, boolean nofilter) { double h = mv.hDoca(point, mv.measurements.get(k1 + 1).surface.wireLine[0]); svc = sv.transported(forward).get(k1 + 1); - path += (forward ? 1 : -1) * svc.deltaPath; + path += svc.deltaPath; svc.setPathLength(path); svc.setProjector(mv.measurements.get(k1 + 1).surface.wireLine[0].origin().x()); svc.setProjectorDoca(h); @@ -979,7 +975,7 @@ private void calcFinalChisqDAF(int sector, boolean nofilter) { sv.transport(sector, k, 0, sVec, mv, this.getSwimmer(), forward); StateVec svc = sv.transported(forward).get(0); - path += (forward ? 1 : -1) * svc.deltaPath; + path += svc.deltaPath; svc.setPathLength(path); Point3D point = new Point3D(svc.x, svc.y, mv.measurements.get(0).surface.measPoint.z()); @@ -1051,7 +1047,7 @@ private void calcFinalChisqDAF(int sector, boolean nofilter) { } svc = sv.transported(forward).get(k1 + 1); - path += (forward ? 1 : -1) * svc.deltaPath; + path += svc.deltaPath; svc.setPathLength(path); point = new Point3D(sv.transported(forward).get(k1 + 1).x, sv.transported(forward).get(k1 + 1).y, mv.measurements.get(k1 + 1).surface.measPoint.z()); @@ -1120,10 +1116,6 @@ private void calcFinalChisqDAF(int sector, boolean nofilter) { public Matrix propagateToVtx(int sector, double Zf) { return sv.transport(sector, finalStateVec.k, Zf, finalStateVec, mv, this.getSwimmer()); } - - public double getDeltaPathToVtx(int sector, double Zf) { - return sv.getDeltaPath(sector, finalStateVec.k, Zf, finalStateVec, mv, this.getSwimmer()); - } //Todo: apply the common funciton to replace current function above @Override diff --git a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitterStraight.java b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitterStraight.java index fb563fcc8b..232bcaa7d0 100644 --- a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitterStraight.java +++ b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/KFitterStraight.java @@ -406,8 +406,6 @@ private void calcFinalChisq(int sector) { calcFinalChisq(sector, false); } - // Since no vertex inforamtion, the starting point for path length is the final point at the last layer. - // After vertex information is obtained, transition for the starting point from the final point to vertex will be taken. private void calcFinalChisq(int sector, boolean nofilter) { int k = svzLength - 1; this.chi2 = 0; @@ -428,11 +426,11 @@ private void calcFinalChisq(int sector, boolean nofilter) { kfStateVecsAlongTrajectory = new ArrayList<>(); if (sVec != null && sVec.CM != null) { - boolean forward = false; + boolean forward = false; sv.transport(sector, k, 0, sVec, mv, this.getSwimmer(), forward); StateVec svc = sv.transported(forward).get(0); - path += (forward ? 1 : -1) * svc.deltaPath; + path += svc.deltaPath; svc.setPathLength(path); double V0 = mv.measurements.get(0).surface.unc[0]; @@ -475,7 +473,7 @@ private void calcFinalChisq(int sector, boolean nofilter) { double h = mv.hDoca(point, mv.measurements.get(k1 + 1).surface.wireLine[0]); svc = sv.transported(forward).get(k1+1); - path += (forward ? 1 : -1) * svc.deltaPath; + path += svc.deltaPath; svc.setPathLength(path); svc.setProjector(mv.measurements.get(k1 + 1).surface.wireLine[0].origin().x()); svc.setProjectorDoca(h); @@ -506,10 +504,6 @@ public Matrix propagateToVtx(int sector, double Zf) { return sv.transport(sector, finalStateVec.k, Zf, finalStateVec, mv, this.getSwimmer()); } - public double getDeltaPathToVtx(int sector, double Zf) { - return sv.getDeltaPath(sector, finalStateVec.k, Zf, finalStateVec, mv, this.getSwimmer()); - } - @Override public void runFitter(AStateVecs sv, AMeasVecs mv) { throw new UnsupportedOperationException("Not supported yet."); diff --git a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/StateVecs.java b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/StateVecs.java index 269e966c21..f69dd0bfc9 100644 --- a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/StateVecs.java +++ b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/kalmanfilter/zReference/StateVecs.java @@ -53,7 +53,7 @@ public void initFromHB(StateVec initSV, double beta) { this.trackTrajS.clear(); this.trackTrajT.put(0, new StateVec(initSV)); } - + /** * * @param sector @@ -150,104 +150,6 @@ public Matrix transport(int sector, int i, double Zf, StateVec iVec, AMeasVecs m return fVec.CM; - } - - /** - * - * @param sector - * @param i initial state vector index - * @param Zf - * @param iVec state vector at the initial index - * @param mv measurements - */ - public double getDeltaPath(int sector, int i, double Zf, StateVec iVec, AMeasVecs mv, Swim swimmer) { // s = signed step-size - - double stepSize = 1.0; - StateVec fVec = new StateVec(0); - fVec.x = iVec.x; - fVec.y = iVec.y; - fVec.z = iVec.z; - fVec.tx = iVec.tx; - fVec.ty = iVec.ty; - fVec.Q = iVec.Q; - fVec.B = iVec.B; - Matrix5x5.copy(iVec.CM, fVec.CM); - - double s = 0; - double zInit = mv.measurements.get(i).surface.measPoint.z(); - double BatMeas = iVec.B; - - double z = zInit; - - while (Math.signum(Zf - zInit) * z < Math.signum(Zf - zInit) * Zf) { - z = fVec.z; - if (z == Zf) { - break; - } - - double x = fVec.x; - double y = fVec.y; - double tx = fVec.tx; - double ty = fVec.ty; - double Q = fVec.Q; - double dPath = fVec.deltaPath; - Matrix cMat = new Matrix(); - Matrix5x5.copy(fVec.CM, cMat); - s = Math.signum(Zf - zInit) * stepSize; - - // LOGGER.log(Level.FINE, " from "+(float)Z[i]+" to "+(float)Z[f]+" at "+(float)z+" By is "+bf[1]+" B is "+Math.sqrt(bf[0]*bf[0]+bf[1]*bf[1]+bf[2]*bf[2])/Bmax+" stepSize is "+s); - if (Math.signum(Zf - zInit) * (z + s) > Math.signum(Zf - zInit) * Zf) { - s = Math.signum(Zf - zInit) * Math.abs(Zf - z); - } - - //rk.RK4transport(sector, Q, x, y, z, tx, ty, s, swimmer, cMat, fVec, dPath); - rk.RK4transport(sector, s, swimmer, cMat, fVec); - - // Q process noise matrix estimate - double p = Math.abs(1. / iVec.Q); - - double X0 = this.getX0(mv.measurements.get(i).surface, z, Z); - double t_ov_X0 = Math.abs(s) / X0;//path length in radiation length units = t/X0 [true path length/ X0] ; Ar radiation length = 14 cm - - double beta = this.beta; - if (beta > 1.0 || beta <= 0) { - beta = 1.0; - } - - double sctRMS = 0; - - ////// Todo: Modify multi-scattering or remove it; After update, some parameters, like iteration termintion chonditions, may need to be updated. - // Speed of light should be 1 - // From one measurement site to another, F and Q should be calculated separaetely with multiple steps; and then C' = FTCF + Q - if (Math.abs(s) > 0) { - sctRMS = ((0.0136) / (beta * PhysicsConstants.speedOfLight() * p)) * Math.sqrt(t_ov_X0) - * (1 + 0.038 * Math.log(t_ov_X0)); - } - - double cov_txtx = (1 + tx * tx) * (1 + tx * tx + ty * ty) * sctRMS * sctRMS; - double cov_tyty = (1 + ty * ty) * (1 + tx * tx + ty * ty) * sctRMS * sctRMS; - double cov_txty = tx * ty * (1 + tx * tx + ty * ty) * sctRMS * sctRMS; - - fMS.set( - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, cov_txtx, cov_txty, 0, - 0, 0, cov_txty, cov_tyty, 0, - 0, 0, 0, 0, 0 - ); - - Matrix5x5.copy(fVec.CM, copyMatrix); - Matrix5x5.add(copyMatrix, fMS, fVec.CM); - - if (Math.abs(fVec.B - BatMeas) < 0.0001) { - stepSize *= 2; - } - - BatMeas = fVec.B; - } - - return fVec.deltaPath; - } /** 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 25473ca915..d020322477 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 @@ -94,7 +94,7 @@ public static Constants getInstance() { public int SECTORSELECT = 0; public int NSUPERLAYERTRACKING = 5; private boolean USETSTART = true; - //private boolean USETIMETBETA = false; + private boolean USETIMETBETA = false; private boolean CHECKBETA = false; private int T2D = 1; // 1=polynomial, 0=exponential private boolean USEDOUBLETS = false; @@ -105,10 +105,10 @@ public static Constants getInstance() { public static final String TT = "/daq/tt/dc"; public static final String DOCARES = "/calibration/dc/signal_generation/doca_resolution"; public static final String TIME2DIST = "/calibration/dc/time_to_distance/time2dist"; - public static final String T2DPRESSURE = "/calibration/dc/v2/t2d_pressure"; + public static final String T2DPRESSURE = "/calibration/dc/time_to_distance/t2d_pressure"; public static final String PRESSURE = "/hall/weather/pressure"; - public static final String T2DPRESSUREREF = "/calibration/dc/v2/ref_pressure"; - public static final String T0CORRECTION = "/calibration/dc/v2/t0"; + public static final String T2DPRESSUREREF = "/calibration/dc/time_to_distance/ref_pressure"; + public static final String T0CORRECTION = "/calibration/dc/time_corrections/T0Corrections"; public static final String TDCTCUTS = "/calibration/dc/time_corrections/tdctimingcuts"; public static final String WIRESTAT = "/calibration/dc/tracking/wire_status"; public static final String TIMEJITTER = "/calibration/dc/time_jitter"; @@ -296,13 +296,13 @@ public void setUSETSTART(boolean usetstart) { USETSTART = usetstart; } -// public boolean useUSETIMETBETA() { -// return USETIMETBETA; -// } -// -// public void setUSETIMETBETA(boolean usetimebeta) { -// USETIMETBETA = usetimebeta; -// } + public boolean useUSETIMETBETA() { + return USETIMETBETA; + } + + public void setUSETIMETBETA(boolean usetimebeta) { + USETIMETBETA = usetimebeta; + } public double getWIREDIST() { return WIREDIST; @@ -429,7 +429,7 @@ public void printConfig(String engine) { LOGGER.log(Level.INFO, "["+engine+"] run with wire ministagger = " + MINISTAGGERSTATUS.getName()); LOGGER.log(Level.INFO, "["+engine+"] run with wire feedthroughs = " + FEEDTHROUGHSSTATUS.getName()); LOGGER.log(Level.INFO, "["+engine+"] run with wire distortions = " + ENDPLATESBOWING); - //LOGGER.log(Level.INFO, "["+engine+"] run with with time Beta correction (is false for doca Beta correction) = " + USETIMETBETA); + LOGGER.log(Level.INFO, "["+engine+"] run with with time Beta correction (is false for doca Beta correction) = " + USETIMETBETA); LOGGER.log(Level.INFO, "["+engine+"] run with with Beta cut = " + CHECKBETA); LOGGER.log(Level.INFO, "["+engine+"] run with time to distance function set to exponential/polynomial (0/1) = " + T2D); LOGGER.log(Level.INFO, "["+engine+"] run with with hit doublets recovery = " + USEDOUBLETS); diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java index 49adb67ff1..02162955c5 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java @@ -745,8 +745,8 @@ private double[] getT0(int sector, int superlayer, int cable = this.getCableID1to6(layer, wire); int slot = this.getSlotID1to7(wire); - double t0 = t0Table.getDoubleValue("t0correction", sector, superlayer, slot, cable); - double t0E = t0Table.getDoubleValue("t0error", sector, superlayer, slot, cable); + double t0 = t0Table.getDoubleValue("T0Correction", sector, superlayer, slot, cable); + double t0E = t0Table.getDoubleValue("T0Error", sector, superlayer, slot, cable); T0Corr[0] = t0; T0Corr[1] = t0E; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/hit/FittedHit.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/hit/FittedHit.java index 19f27b1c50..36e802de15 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/hit/FittedHit.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/hit/FittedHit.java @@ -385,28 +385,27 @@ public void set_TimeToDistance(DataEvent event, double trkAngle, double B, Index double deltatime_beta = 0; double deltadoca_beta = 0; -// if(Constants.getInstance().useUSETIMETBETA()==true) { -// deltatime_beta = calcDeltaTimeBetaTFCN(this.get_Time(), tab, beta); -// } -// -// if(event.hasBank("MC::Particle")==false) { -// distance = tde.interpolateOnGrid(B, Math.toDegrees(ralpha), -// this.getCorrectedTime(this.get_Time(), deltatime_beta), -// secIdx, slIdx); -// } else { -// distance = tde.interpolateOnGrid(B, Math.toDegrees(ralpha), -// this.getCorrectedTime(this.get_Time(), 0), -// secIdx, slIdx) ; -// } -// //get deltadoca -// if(Constants.getInstance().useUSETIMETBETA()==false) { -// deltadoca_beta = calcDeltaDocaBeta(distance, tab, beta); -// } -// -// distance -=deltadoca_beta; - //this.set_DeltaTimeBeta(deltatime_beta); - //this.set_DeltaDocaBeta(deltadoca_beta); - distance = tde.interpolateOnGrid(B, Math.toDegrees(ralpha), beta, this.get_Time(), secIdx, slIdx); + if(Constants.getInstance().useUSETIMETBETA()==true) { + deltatime_beta = calcDeltaTimeBetaTFCN(this.get_Time(), tab, beta); + } + + if(event.hasBank("MC::Particle")==false) { + distance = tde.interpolateOnGrid(B, Math.toDegrees(ralpha), + this.getCorrectedTime(this.get_Time(), deltatime_beta), + secIdx, slIdx); + } else { + distance = tde.interpolateOnGrid(B, Math.toDegrees(ralpha), + this.getCorrectedTime(this.get_Time(), 0), + secIdx, slIdx) ; + } + //get deltadoca + if(Constants.getInstance().useUSETIMETBETA()==false) { + deltadoca_beta = calcDeltaDocaBeta(distance, tab, beta); + } + + distance -=deltadoca_beta; + this.set_DeltaTimeBeta(deltatime_beta); + this.set_DeltaDocaBeta(deltadoca_beta); } diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/T2DFunctions.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/T2DFunctions.java index 4892d5ceb8..9a863dbcce 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/T2DFunctions.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/T2DFunctions.java @@ -321,7 +321,7 @@ public static double polyFcnMac(double x, double alpha, double bfield, double v_ double time = 0; // alpha correction double cos30minusalpha=Math.cos(Math.toRadians(30.-alpha)); - double dmaxalpha = dmax*cos30minusalpha; + double dmaxalpha = dmax*cos30minusalpha; double xhatalpha = x/dmaxalpha; // rcapital is an intermediate parameter double rcapital = R*dmax; 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 1309a42012..1ae2e32755 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 @@ -1,21 +1,10 @@ package org.jlab.rec.dc.timetodistance; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.math.RoundingMode; +import java.text.DecimalFormat; import java.util.logging.Level; import java.util.logging.Logger; -import org.jlab.detector.base.DetectorType; -import org.jlab.detector.base.GeometryFactory; -import org.jlab.geom.base.ConstantProvider; -import org.jlab.groot.data.H1F; -import org.jlab.groot.data.H2F; -import org.jlab.groot.math.Func1D; -import org.jlab.groot.ui.TCanvas; import org.jlab.rec.dc.Constants; -import static org.jlab.rec.dc.timetodistance.T2DFunctions.polyFcnMac; -import org.jlab.service.dc.DCEngine; import org.jlab.utils.groups.IndexedTable; @@ -28,8 +17,8 @@ public TableLoader() { private static boolean T2DLOADED = false; - public static final int NBINST=2000; - public static final double[] betaValues = new double[] {0.6, 0.7, 0.8, 0.9, 1.0}; + private static final int NBINST=2000; + public static final double[] BfieldValues = new double[]{0.0000, 1.0000, 1.4142, 1.7321, 2.0000, 2.2361, 2.4495, 2.6458}; public static int minBinIdxB = 0; public static int maxBinIdxB = BfieldValues.length-1; @@ -39,185 +28,39 @@ public TableLoader() { private static final double[][] AlphaBounds = new double[6][2]; public static int minBinIdxT = 0; public static final int[][][][] maxBinIdxT = new int[6][6][8][6]; - public static double[][][][][][] DISTFROMTIME = new double[6][6][maxBinIdxB+1][maxBinIdxAlpha+1][betaValues.length][NBINST]; // sector slyr alpha Bfield time bins [s][r][ibfield][icosalpha][tbin] - public static int timeBinWidth = 2; //ns + public static double[][][][][] DISTFROMTIME = new double[6][6][maxBinIdxB+1][maxBinIdxAlpha+1][NBINST]; // sector slyr alpha Bfield time bins [s][r][ibfield][icosalpha][tbin] public static int maxTBin = -1; + //public static double[] distbetaValues = new double[]{0.16, 0.16, 0.08, 0.08, 0.08, 0.08}; - public static void main(String[] args) { - DCEngine dce = new DCEngine("test"); - dce.setVariation("default"); - dce.LoadTables(); - ConstantProvider provider = GeometryFactory.getConstants(DetectorType.DC, 11, "default"); - for(int l=0; l<6; l++) { - Constants.getInstance().wpdist[l] = provider.getDouble("/geometry/dc/superlayer/wpdist", l); - } - int run = 18331; - TableLoader.Fill(dce.getConstantsManager().getConstants(run, Constants.T2DPRESSURE), - dce.getConstantsManager().getConstants(run, Constants.T2DPRESSUREREF), - dce.getConstantsManager().getConstants(run, Constants.PRESSURE)); - TableLoader.Fill(dce.getConstantsManager().getConstants(run, Constants.T2DPRESSURE), - dce.getConstantsManager().getConstants(run, Constants.T2DPRESSUREREF), - dce.getConstantsManager().getConstants(run, Constants.PRESSURE)); - test(); - } - + /* + * + */ public static void test(){ - - plotFcns(); - - TimeToDistanceEstimator tde = new TimeToDistanceEstimator(); - tde.t2DPrecisionImprov=true; - double[] beta = new double[]{0.65, 0.66, 0.67, 0.68, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0}; - double[] Bfield = new double[]{0.0, 0.5, 1.0, 1.2, 1.3, 1.4, 1.5, 2.0, 2.1, 2.15, 2.2, 2.25, 2.26, 2.27, 2.28, 2.29}; - double[] htmax = new double[]{200,210,1050,1200,720,800}; - double[] hdmax = new double[] {0.77, 0.8, 1.1, 1.2, 1.8, 1.84}; + TimeToDistanceEstimator tde = new TimeToDistanceEstimator(); + for(int s = 0; s<1; s++ ){ // loop over sectors + for(int r = 4; r<5; r++ ){ //loop over slys + for(int ibfield =0; ibfield<1; ibfield++) { + for (int tb = 250; tb< 300; tb++) { + LOGGER.log(Level.FINE, " NEW TIME BIN "); + for(int icosalpha =0; icosalpha hts = new ArrayList<>(); //histo to check table and interp. from time to idistance (by interpolation) - //to calculated time (from dist.to t) in seconds; as a function of time - List hds = new ArrayList<>(); //histo to check table and interp. from distance to calculated time (from dist.to t) - //to idistance (by interpolation) in microns; as a function of distance - List hdsSL3 = new ArrayList<>(); //histo to check table and interp. from distance to calculated time (from dist.to t) - //for various values of B-field - List hdsSL4 = new ArrayList<>(); //histo to check table and interp. from distance to calculated time (from dist.to t) - //for various values of B-field - List hd2s = new ArrayList<>();// as s function of distance - List ht2d = new ArrayList<>();// time to distance from interpolation - for(int r = 0; r<6; r++ ){ //loop over slys - hts.add(new H1F("ht"+(r+1), "time resolution (ns)", "Counts/0.1 ns", 400, -20.0,20.0)); - hds.add(new H1F("hd"+(r+1), "doca resolution (um)", "Counts/0.1 um", 400, -20.0,20.0)); - //public H2F(String name, String title, int bx, double xmin, double xmax, int by, double ymin, double ymax) - hd2s.add(new H2F("hd2"+(r+1), "doca resolution (um) vs doca (cm)", (int)(hdmax[r]*100), 0, hdmax[r], 400, -20.0,20.0)); - ht2d.add(new H2F("ht2d"+(r+1), "doca (cm) vs time(time (ns)", (int)htmax[r], 0, htmax[r], (int)(hdmax[r]*100), 0, hdmax[r])); - } - for (int b =0; b3) maxBidx=1; - for(int ibfield =0; ibfield fmap = new HashMap<>(); - for (int i = 0; i < 6; i++) { - CanD2T.cd(i); - double[] pars = new double[11]; - pars[0] = TableLoader.v0[0][i]; - pars[1] = TableLoader.vmid[0][i]; - pars[2] = TableLoader.FracDmaxAtMinVel[0][i]; - pars[3] = TableLoader.Tmax[0][i]; - pars[4] = TableLoader.distbeta[0][i]; - pars[5] = TableLoader.delta_bfield_coefficient[0][i]; - pars[6] = TableLoader.b1[0][i]; - pars[7] = TableLoader.b2[0][i]; - pars[8] = TableLoader.b3[0][i]; - pars[9] = TableLoader.b4[0][i]; - pars[10] = 2.*Constants.getInstance().wpdist[i];//fix dmax - - for(int j =0; j0 && (i<2 || i>3) ) continue; - String name = "f"; - name+=i; - name+="."; - name+=j; - name+="."; - name+=k; - fmap.put(name, new FitLine(name, 0, pars[10], 0, i, 3, alpha, BfieldValues[k])); - fmap.get(name).setLineWidth(2); - fmap.get(name).setLineColor(k+1); - fmap.get(name).setRange(0, pars[10]); - fmap.get(name).getAttributes().setTitleX("doca (cm)"); - fmap.get(name).getAttributes().setTitleY("time (ns)"); - CanD2T.draw(fmap.get(name), "same"); - } - } - } - } private static int getAlphaBin(double Alpha) { @@ -250,135 +93,148 @@ private static synchronized void FillAlpha() { AlphaBounds[0][0] = 0; AlphaBounds[5][1] = 30; } - public static boolean useP = true; - public static synchronized void getConstants(IndexedTable t2dPressure, IndexedTable t2dPressRef, IndexedTable pressure){ + public static synchronized void Fill(IndexedTable t2dPressure, IndexedTable t2dPressRef, IndexedTable pressure) { + if (T2DLOADED) return; + + double p_ref = t2dPressRef.getDoubleValue("pressure", 0,0,0); double p = pressure.getDoubleValue("value", 0,0,3); double dp = p - p_ref; - double dp2scale = 0; - double dpscale = 1; - - if(!useP) - dpscale = 0; for(int s = 0; s<6; s++ ){ // loop over sectors for(int r = 0; r<6; r++ ){ //loop over slys // Fill constants FracDmaxAtMinVel[s][r] = t2dPressure.getDoubleValue("c1_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("c1_a1", s+1,r+1,0)*dp*dpscale; + +t2dPressure.getDoubleValue("c1_a1", s+1,r+1,0)*dp; v0[s][r] = t2dPressure.getDoubleValue("v0_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("v0_a1", s+1,r+1,0)*dp*dpscale - +t2dPressure.getDoubleValue("v0_a2", s+1,r+1,0)*dp*dp*dp2scale; + +t2dPressure.getDoubleValue("v0_a1", s+1,r+1,0)*dp + +t2dPressure.getDoubleValue("v0_a2", s+1,r+1,0)*dp*dp; vmid[s][r] = t2dPressure.getDoubleValue("vmid_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("vmid_a1", s+1,r+1,0)*dp*dpscale - +t2dPressure.getDoubleValue("vmid_a2", s+1,r+1,0)*dp*dp*dp2scale; - distbeta[s][r] = t2dPressure.getDoubleValue("distbeta_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("distbeta_a1", s+1,r+1,0)*dp*dpscale - +t2dPressure.getDoubleValue("distbeta_a2", s+1,r+1,0)*dp*dp*dp2scale; - if(r>1 && r<4) { - delta_bfield_coefficient[s][r] = t2dPressure.getDoubleValue("delta_bfield_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("delta_bfield_a1", s+1,r+1,0)*dp*dpscale - +t2dPressure.getDoubleValue("delta_bfield_a2", s+1,r+1,0)*dp*dp*dp2scale - +t2dPressure.getDoubleValue("delta_bfield_a1", s+1,r+1,0)*dp*dpscale - +t2dPressure.getDoubleValue("delta_bfield_a2", s+1,r+1,0)*dp*dp*dp2scale; - b1[s][r] = t2dPressure.getDoubleValue("b1_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("b1_a1", s+1,r+1,0)*dp*dpscale - +t2dPressure.getDoubleValue("b1_a2", s+1,r+1,0)*dp*dp*dp2scale; - b2[s][r] = t2dPressure.getDoubleValue("b2_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("b2_a1", s+1,r+1,0)*dp*dpscale - +t2dPressure.getDoubleValue("b2_a2", s+1,r+1,0)*dp*dp*dp2scale; - b3[s][r] = t2dPressure.getDoubleValue("b3_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("b3_a1", s+1,r+1,0)*dp*dpscale - +t2dPressure.getDoubleValue("b3_a2", s+1,r+1,0)*dp*dp*dp2scale; - b4[s][r] = t2dPressure.getDoubleValue("b4_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("b4_a1", s+1,r+1,0)*dp*dpscale - +t2dPressure.getDoubleValue("b4_a2", s+1,r+1,0)*dp*dp*dp2scale; - } + +t2dPressure.getDoubleValue("vmid_a1", s+1,r+1,0)*dp + +t2dPressure.getDoubleValue("vmid_a2", s+1,r+1,0)*dp*dp; + delta_bfield_coefficient[s][r] = t2dPressure.getDoubleValue("delta_bfield_a0", s+1,r+1,0) + +t2dPressure.getDoubleValue("delta_bfield_a1", s+1,r+1,0)*dp + +t2dPressure.getDoubleValue("delta_bfield_a2", s+1,r+1,0)*dp*dp; + b1[s][r] = t2dPressure.getDoubleValue("b1_a0", s+1,r+1,0) + +t2dPressure.getDoubleValue("b1_a1", s+1,r+1,0)*dp + +t2dPressure.getDoubleValue("b1_a2", s+1,r+1,0)*dp*dp; + b2[s][r] = t2dPressure.getDoubleValue("b2_a0", s+1,r+1,0) + +t2dPressure.getDoubleValue("b2_a1", s+1,r+1,0)*dp + +t2dPressure.getDoubleValue("b2_a2", s+1,r+1,0)*dp*dp; + b3[s][r] = t2dPressure.getDoubleValue("b3_a0", s+1,r+1,0) + +t2dPressure.getDoubleValue("b3_a1", s+1,r+1,0)*dp + +t2dPressure.getDoubleValue("b3_a2", s+1,r+1,0)*dp*dp; + b4[s][r] = t2dPressure.getDoubleValue("b4_a0", s+1,r+1,0) + +t2dPressure.getDoubleValue("b4_a1", s+1,r+1,0)*dp + +t2dPressure.getDoubleValue("b4_a2", s+1,r+1,0)*dp*dp; Tmax[s][r] = t2dPressure.getDoubleValue("tmax_a0", s+1,r+1,0) - +t2dPressure.getDoubleValue("tmax_a1", s+1,r+1,0)*dp*dpscale - +t2dPressure.getDoubleValue("tmax_a2", s+1,r+1,0)*dp*dp*dp2scale; + +t2dPressure.getDoubleValue("tmax_a1", s+1,r+1,0)*dp + +t2dPressure.getDoubleValue("tmax_a2", s+1,r+1,0)*dp*dp; + } } + Fill(); } - public static synchronized void FillTable() { - double stepSize = 0.00010; + public static synchronized void Fill(IndexedTable tab) { + //CCDBTables 0 = "/calibration/dc/signal_generation/doca_resolution"; + //CCDBTables 1 = "/calibration/dc/time_to_distance/t2d"; + //CCDBTables 2 = "/calibration/dc/time_corrections/T0_correction"; + if (T2DLOADED) return; + for(int s = 0; s<6; s++ ){ // loop over sectors + for(int r = 0; r<6; r++ ){ //loop over slys - //System.out.println("sector "+(s+1)+" sly "+(r+1)+" v0 "+v0[s][r]+" vmid "+vmid[s][r]+" R "+FracDmaxAtMinVel[s][r]); - double dmax = 2.*Constants.getInstance().wpdist[r]; - //double tmax = CCDBConstants.getTMAXSUPERLAYER()[s][r]; - for(int ibfield =0; ibfieldmaxTime) - maxTime=timebfield; - - //System.out.println("T "+timebfield+" maxT "+maxTime+" x "+x); - int tbin = (int) Math.floor(timebfield/2); - if(tbin<0 || tbin>NBINST-1) { - //System.err.println("Problem with tbin"); - continue; - } - if(tbin>maxTBin) - maxTBin = tbin; - - if(timebfielddmax) { - DISTFROMTIME[s][r][ibfield][icosalpha][ibeta][tbin]=dmax; - idist=nxmax; - } - } - } - } - } + // Fill constants + delta_T0[s][r] = tab.getDoubleValue("delta_T0", s+1,r+1,0); + FracDmaxAtMinVel[s][r] = tab.getDoubleValue("c1", s+1,r+1,0);//use same table. names strings + deltanm[s][r] = tab.getDoubleValue("deltanm", s+1,r+1,0); + v0[s][r] = tab.getDoubleValue("v0", s+1,r+1,0); + vmid[s][r] = tab.getDoubleValue("c2", s+1,r+1,0); + delta_bfield_coefficient[s][r] = tab.getDoubleValue("delta_bfield_coefficient", s+1,r+1,0); + b1[s][r] = tab.getDoubleValue("b1", s+1,r+1,0); + b2[s][r] = tab.getDoubleValue("b2", s+1,r+1,0); + b3[s][r] = tab.getDoubleValue("b3", s+1,r+1,0); + b4[s][r] = tab.getDoubleValue("b4", s+1,r+1,0); + Tmax[s][r] = tab.getDoubleValue("tmax", s+1,r+1,0); + // end fill constants } } + Fill(); - TableLoader.fillMissingTableBins(); - } - public static synchronized void Fill(IndexedTable t2dPressure, IndexedTable t2dPressRef, IndexedTable pressure) { - + } + public static synchronized void Fill() { //CCDBTables 0 = "/calibration/dc/signal_generation/doca_resolution"; //CCDBTables 1 = "/calibration/dc/time_to_distance/t2d"; //CCDBTables 2 = "/calibration/dc/time_corrections/T0_correction"; - if (T2DLOADED) return; + + double stepSize = 0.0010; FillAlpha(); - getConstants(t2dPressure, t2dPressRef, pressure); - FillTable(); - System.out.println(" T2D TABLE FILLED....."); + for(int s = 0; s<6; s++ ){ // loop over sectors + + for(int r = 0; r<6; r++ ){ //loop over slys + + // constants filled + //LOGGER.log(Level.FINE, v0[s][r]+" "+vmid[s][r]+" "+FracDmaxAtMinVel[s][r]); + double dmax = 2.*Constants.getInstance().wpdist[r]; + //double tmax = CCDBConstants.getTMAXSUPERLAYER()[s][r]; + for(int ibfield =0; ibfieldNBINST-1) { + //System.err.println("Problem with tbin"); + continue; + } + if(tbin>maxTBin) + maxTBin = tbin; + //if(tbin>maxBinIdxT[s][r][ibfield][icosalpha]) { + //maxBinIdxT[s][r][ibfield][icosalpha] = NBINST; + //} //LOGGER.log(Level.FINE, "tbin "+tbin+" tmax "+tmax+ "s "+s+" sl "+r ); + if(DISTFROMTIME[s][r][ibfield][icosalpha][tbin]==0) { + // firstbin = bi + // bincount = 0; + DISTFROMTIME[s][r][ibfield][icosalpha][tbin]=x; + } else { + // test for getting center of the bin (to be validated): + //double prevTime = calc_Time(x-stepSize, alpha, bfield, s+1, r+1); + //if(x>DISTFROMTIME[s][r][ibfield][icosalpha][tbin] + // && Math.abs((double)(2.*tbin+1)-timebfield)<=Math.abs((double)(2.*tbin+1)-prevTime)) { + // DISTFROMTIME[s][r][ibfield][icosalpha][tbin]=x; + //} + // bincount++; + DISTFROMTIME[s][r][ibfield][icosalpha][tbin]+=stepSize; + } + + /* if(timebfield>timebfield_max) { + DISTFROMTIME[s][r][ibfield][icosalpha][tbin]=x-stepSize*0.5; + if(DISTFROMTIME[s][r][ibfield][icosalpha][tbin]>dmax) + DISTFROMTIME[s][r][ibfield][icosalpha][tbin] = dmax; + } */ + } + } + } + } + } + TableLoader.fillMissingTableBins(); + //TableLoader.test(); T2DLOADED = true; - } + } - private static void fillMissingTableBins() { + private static synchronized void fillMissingTableBins() { for(int s = 0; s<6; s++ ){ // loop over sectors @@ -388,21 +244,17 @@ private static void fillMissingTableBins() { for(int icosalpha =0; icosalphadmax) x=dmax; - return polyFcnMac(x, alpha, bfield, v0[s][r], vmid[s][r], FracDmaxAtMinVel[s][r], - tmax, dmax, delBf, Bb1, Bb2, Bb3, Bb4, superlayer) ; - - } - - public static synchronized double getDeltaTimeBeta(double x, double beta, double distbeta, double v_0) { - - double value = (0.5*Math.pow(beta*beta*distbeta,3)*x/(Math.pow(beta*beta*distbeta,3)+x*x*x))/v_0; - return value; + if(Constants.getInstance().getT2D()==0) { + + return T2DFunctions.ExpoFcn(x, alpha, bfield, v0[s][r], deltanm[s][r], 0.615, + tmax, dmax, delBf, Bb1, Bb2, Bb3, Bb4, superlayer) + delta_T0[s][r]; + } else { + return T2DFunctions.polyFcnMac(x, alpha, bfield, v0[s][r], vmid[s][r], FracDmaxAtMinVel[s][r], + tmax, dmax, delBf, Bb1, Bb2, Bb3, Bb4, superlayer) ; + } } - public static double[][] delta_T0 = new double[6][6]; public static double[][] delta_bfield_coefficient = new double[6][6]; - public static double[][] distbeta = new double[6][6]; + public static double[][] deltanm = new double[6][6]; public static double[][] vmid = new double[6][6]; public static double[][] v0 = new double[6][6]; public static double[][] b1 = new double[6][6]; @@ -447,31 +297,6 @@ public static synchronized double getDeltaTimeBeta(double x, double beta, double public static double[][] b3 = new double[6][6]; public static double[][] b4 = new double[6][6]; public static double[][] Tmax = new double[6][6]; - public static double[][] FracDmaxAtMinVel = new double[6][6]; + public static double[][] FracDmaxAtMinVel = new double[6][6]; // fraction of dmax corresponding to the point in the cell where the velocity is minimal - private static class FitLine extends Func1D { - - public FitLine(String name, double min, double max, - int s, int r, int ibeta, double alpha, double bfield) { - super(name, min, max); - this.s = s; - this.r = r; - this.ibeta = ibeta; - this.alpha = alpha; - this.bfield = bfield; - } - private final double alpha; - private final double bfield; - private final int ibeta; - private final int s; - private final int r; - - @Override - public double evaluate(double x) { - double timebfield = calc_Time( x, alpha, bfield, s+1, r+1) ; - double deltatime_beta = getDeltaTimeBeta(x,betaValues[ibeta],distbeta[s][r],v0[s][r]); - timebfield+=deltatime_beta; - return timebfield; - } - } } diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TimeToDistanceEstimator.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TimeToDistanceEstimator.java index 998541d165..141a631ed3 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TimeToDistanceEstimator.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TimeToDistanceEstimator.java @@ -1,19 +1,17 @@ package org.jlab.rec.dc.timetodistance; +import java.math.RoundingMode; +import java.text.DecimalFormat; import java.util.logging.Level; import java.util.logging.Logger; -import org.jlab.rec.dc.Constants; -import static org.jlab.rec.dc.timetodistance.TableLoader.BfieldValues; -import static org.jlab.rec.dc.timetodistance.TableLoader.calc_Time; public class TimeToDistanceEstimator { - public TimeToDistanceEstimator() { - // TODO Auto-generated constructor stub } - public boolean t2DPrecisionImprov=false; + + private static final Logger LOGGER = Logger.getLogger(TimeToDistanceEstimator.class.getName()); /** * * @param x value on grid @@ -29,224 +27,104 @@ private double interpolateLinear(double x0, double xa, double xb, double ya, dou x=xb; if(xTableLoader.NBINST-1) { - tHi=TableLoader.NBINST-1; - } - } - double timeLo=2*tLo+1; - double timeHi=2*tHi+1; - //get the beta bins - int binBeta = this.getBetaIdx(beta); - int betaLo = 0; - int betaHi = 0; - double betaCent = TableLoader.betaValues[binBeta]; - if(betaTableLoader.betaValues.length-1) { - betaHi=TableLoader.betaValues.length-1; - } - } - double betaValueLo = TableLoader.betaValues[betaLo]; - double betaValueHigh = TableLoader.betaValues[betaHi]; + * @param SlyrIdx slyr index (0...5) + * @return the distance to the wire in cm + */ + public double interpolateOnGrid(double Bf, double alpha, double t, int SecIdx, int SlyrIdx) { - //get the Bfield bins double B = Math.abs(Bf); - int binB = this.getBIdx(B); - double BfCen = BfieldValues[binB]; - int BfLo=0; - int BfHi=0; - if(BTableLoader.BfieldValues.length-1) { - BfHi=TableLoader.BfieldValues.length-1; - } + + int binlowB = this.getBIdx(B); + int binhighB = binlowB + 1; + + if(binhighB > TableLoader.maxBinIdxB) { + binhighB = TableLoader.maxBinIdxB; } - double BLo = BfieldValues[BfLo]; - double BHi = BfieldValues[BfHi]; - // get the alpha bins - int alphaBin = this.getAlphaIdx(alpha); - int alphaLo = 0; - int alphaHi = 0; - double alphaCenValue = this.getAlphaFromAlphaIdx(alphaBin); - if(alpha TableLoader.maxBinIdxAlpha) { - alphaHi = TableLoader.maxBinIdxAlpha; - } + + double B1 = TableLoader.BfieldValues[binlowB]; + double B2 = TableLoader.BfieldValues[binhighB]; + + // for alpha ranges + int binlowAlpha = this.getAlphaIdx(alpha); + int binhighAlpha = binlowAlpha + 1; + + if(binhighAlpha > TableLoader.maxBinIdxAlpha) { + binhighAlpha = TableLoader.maxBinIdxAlpha; } - double alphaValueLo = this.getAlphaFromAlphaIdx(alphaLo); - double alphaValueHi = this.getAlphaFromAlphaIdx(alphaHi); + //if(binhighAlpha==binlowAlpha) { + // binlowAlpha=binhighAlpha-1; + //} + + double alpha1 = this.getAlphaFromAlphaIdx(binlowAlpha); + double alpha2 = this.getAlphaFromAlphaIdx(binhighAlpha); // interpolate in B: - double Bfc = B*B; - double Bfa = BLo*BLo; - double Bfb = BHi*BHi; - double f_B_alpha1_beta1_t1 = interpolateLinear(Bfc, Bfa, Bfb, - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaLo][betaLo][tLo], - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaLo][betaLo][tLo]); - double f_B_alpha2_beta1_t1 = interpolateLinear(Bfc, Bfa, Bfb, - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaHi][betaLo][tLo], - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaHi][betaLo][tLo]); - double f_B_alpha1_beta1_t2 = interpolateLinear(Bfc, Bfa, Bfb, - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaLo][betaLo][tHi], - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaLo][betaLo][tHi]); - double f_B_alpha2_beta1_t2 = interpolateLinear(Bfc, Bfa, Bfb, - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaHi][betaLo][tHi], - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaHi][betaLo][tHi]); - double f_B_alpha1_beta2_t1 = interpolateLinear(Bfc, Bfa, Bfb, - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaLo][betaHi][tLo], - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaLo][betaHi][tLo]); - double f_B_alpha2_beta2_t1 = interpolateLinear(Bfc, Bfa, Bfb, - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaHi][betaHi][tLo], - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaHi][betaHi][tLo]); - double f_B_alpha1_beta2_t2 = interpolateLinear(Bfc, Bfa, Bfb, - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaLo][betaHi][tHi], - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaLo][betaHi][tHi]); - double f_B_alpha2_beta2_t2 = interpolateLinear(Bfc, Bfa, Bfb, - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfLo][alphaHi][betaHi][tHi], - TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][BfHi][alphaHi][betaHi][tHi]); - - //interpolate in alpha - double f_B_alpha_beta1_t1 = interpolateLinear(alpha, alphaValueLo, alphaValueHi, f_B_alpha1_beta1_t1, f_B_alpha2_beta1_t1); - double f_B_alpha_beta2_t1 = interpolateLinear(alpha, alphaValueLo, alphaValueHi, f_B_alpha1_beta2_t1, f_B_alpha2_beta2_t1); - double f_B_alpha_beta1_t2 = interpolateLinear(alpha, alphaValueLo, alphaValueHi, f_B_alpha1_beta1_t2, f_B_alpha2_beta1_t2); - double f_B_alpha_beta2_t2 = interpolateLinear(alpha, alphaValueLo, alphaValueHi, f_B_alpha1_beta2_t2, f_B_alpha2_beta2_t2); - //interpolate in beta - double f_B_alpha_beta_t1 = interpolateLinear(beta, betaValueLo, betaValueHigh,f_B_alpha_beta1_t1,f_B_alpha_beta2_t1); - double f_B_alpha_beta_t2 = interpolateLinear(beta, betaValueLo, betaValueHigh,f_B_alpha_beta1_t2,f_B_alpha_beta2_t2); - //interpolate in time - double f_B_alpha_beta_t = interpolateLinear(t, timeLo, timeHi, f_B_alpha_beta_t1, f_B_alpha_beta_t2); - - double x = f_B_alpha_beta_t; -// String st =new String(); -// st +="time "+t+" beta "+beta+" BETA: ["+betaValueLo+" "+betaCent+" "+betaValueHigh+"]"+" alpha "+alpha+"\n"; -// st +=(" f_B_alpha1_beta1_t1 "+f_B_alpha1_beta1_t1+" f_B_alpha2_beta1_t1 "+f_B_alpha2_beta1_t1+"\n"); -// st +=(" f_B_alpha1_beta2_t1 "+f_B_alpha1_beta2_t1+" f_B_alpha2_beta2_t1 "+f_B_alpha2_beta2_t1+"\n"); -// st +=(" f_B_alpha1_beta1_t2 "+f_B_alpha1_beta1_t2+" f_B_alpha2_beta1_t2 "+f_B_alpha2_beta1_t2+"\n"); -// st +=(" f_B_alpha1_beta2_t2 "+f_B_alpha1_beta2_t2+" f_B_alpha2_beta2_t2 "+f_B_alpha2_beta2_t2+"\n"); -// st +=(" f_B_alpha_beta1_t1 "+f_B_alpha_beta1_t1+" f_B_alpha_beta2_t1 "+f_B_alpha_beta2_t1+"\n"); -// st +=(" f_B_alpha_beta1_t2 "+f_B_alpha_beta1_t2+" f_B_alpha_beta2_t2 "+f_B_alpha_beta2_t2+"\n"); -// st +=(" f_B_alpha_beta_t1 "+f_B_alpha_beta_t1+" f_B_alpha_beta_t2 "+f_B_alpha_beta_t2+"\n"); -// st +=(" f_B_alpha_t "+f_B_alpha_beta_t+"\n"); + double f_B_alpha1_t1 = interpolateLinear(B*B, B1*B1, B2*B2, + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binlowB][binlowAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binlowAlpha)], + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binhighB][binlowAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binhighB, binlowAlpha)]); + double f_B_alpha2_t1 = interpolateLinear(B*B, B1*B1, B2*B2, + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binlowB][binhighAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binhighAlpha)], + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binhighB][binhighAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binhighB, binhighAlpha)]); + double f_B_alpha1_t2 = interpolateLinear(B*B, B1*B1, B2*B2, + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binlowB][binlowAlpha][this.getTimeNextIdx(t, SecIdx, SlyrIdx, binlowB, binlowAlpha)], + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binhighB][binlowAlpha][this.getTimeNextIdx(t, SecIdx, SlyrIdx, binhighB, binlowAlpha)]); + double f_B_alpha2_t2 = interpolateLinear(B*B, B1*B1, B2*B2, + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binlowB][binhighAlpha][this.getTimeNextIdx(t, SecIdx, SlyrIdx, binlowB, binhighAlpha)], + TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binhighB][binhighAlpha][this.getTimeNextIdx(t, SecIdx, SlyrIdx, binhighB, binhighAlpha)]); + // interpolate in d for 2 values of alpha: + double f_B_alpha1_t = interpolateLinear(t, this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binlowAlpha)*2., this.getTimeNextIdx(t, SecIdx, SlyrIdx, binhighB, binlowAlpha)*2., f_B_alpha1_t1, f_B_alpha1_t2); + double f_B_alpha2_t = interpolateLinear(t, this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binhighAlpha)*2., this.getTimeNextIdx(t, SecIdx, SlyrIdx, binhighB, binhighAlpha)*2., f_B_alpha2_t1, f_B_alpha2_t2); + //LOGGER.log(Level.FINE, TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binlowB][binlowAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binlowAlpha)]); + //LOGGER.log(Level.FINE, SlyrIdx+" binlowB "+binlowB+" binlowAlpha "+binlowAlpha+" t "+this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binlowAlpha)+" time "+t); + //LOGGER.log(Level.FINE, TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binlowB][binhighAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binhighAlpha)]); + //LOGGER.log(Level.FINE, SlyrIdx+" binlowB "+binlowB+" binhighAlpha "+binhighAlpha+" t "+this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binhighAlpha)+" time "+t); + //LOGGER.log(Level.FINE, TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binhighB][binlowAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binhighB, binlowAlpha)]); + //LOGGER.log(Level.FINE, SlyrIdx+" binhighB "+binhighB+" binlowAlpha "+binlowAlpha+" t "+this.getTimeIdx(t, SecIdx, SlyrIdx, binhighB, binlowAlpha)+" time "+t); + //LOGGER.log(Level.FINE, TableLoader.DISTFROMTIME[SecIdx][SlyrIdx][binhighB][binhighAlpha][this.getTimeIdx(t, SecIdx, SlyrIdx, binhighB, binhighAlpha)]); + //LOGGER.log(Level.FINE, SlyrIdx+" binhighB "+binhighB+" binhighAlpha "+binhighAlpha+" t "+this.getTimeIdx(t, SecIdx, SlyrIdx, binhighB, binhighAlpha)+" time "+t); + //LOGGER.log(Level.FINE, " f_B_alpha1_t1 "+f_B_alpha1_t1+" f_B_alpha2_t1 "+f_B_alpha2_t1 + // +" f_B_alpha1_t2 "+f_B_alpha1_t2+" f_B_alpha2_t2 "+f_B_alpha2_t2 + // +" f_B_alpha1_t "+f_B_alpha1_t+" f_B_alpha2_t "+f_B_alpha2_t); - double dmax = 2.*Constants.getInstance().wpdist[SlyrIdx]; -// st +=(" x "+x+" dmax "+dmax+"\n"); - - if(x>dmax) { -// setDebug(st); - return dmax; - } - if(!this.t2DPrecisionImprov) return x; - //Reolution improvement to compensate for non-linearity accross bin not accounted for in interpolation - double calctime = calc_Time( x, alpha, B, SecIdx+1, SlyrIdx+1) ; - double deltatime_beta = TableLoader.getDeltaTimeBeta(x,beta,TableLoader.distbeta[SecIdx][SlyrIdx],TableLoader.v0[SecIdx][SlyrIdx]); - calctime+=deltatime_beta; -// st +=(" t "+t+" calctime "+calctime+" deltatime_beta "+deltatime_beta+"\n"); - if(calctime>t) { - double tref=0; - for(int i = 1; i<100; i++) { - x-=0.0001*i; - if(x<0) return x; - calctime = calc_Time( x, alpha, B, SecIdx+1, SlyrIdx+1) ; - deltatime_beta = TableLoader.getDeltaTimeBeta(x,beta,TableLoader.distbeta[SecIdx][SlyrIdx],TableLoader.v0[SecIdx][SlyrIdx]); - calctime+=deltatime_beta; -// st +=(i+"] x "+x+" t "+t+" calct "+calctime+"\n"); - if(calctimecalctime) { - double tref=0; - for(int i = 1; i<100; i++) { - x+=0.0001*i; - calctime = calc_Time( x, alpha, B, SecIdx+1, SlyrIdx+1) ; - deltatime_beta = TableLoader.getDeltaTimeBeta(x,beta,TableLoader.distbeta[SecIdx][SlyrIdx],TableLoader.v0[SecIdx][SlyrIdx]); - calctime+=deltatime_beta; -// st +=(i+"] x "+x+" t "+t+" calct "+calctime+"\n"); - if(x>dmax) { -// setDebug(st); - return dmax; - } - if(tTableLoader.maxTBin) { + binIdx = TableLoader.maxTBin ; + } + + return binIdx; } - /** * * @param b1 bfield value in T * @return B field bin */ - public int getBIdx(double b1) { - int binIdx = (int) Math.floor(b1*b1); - int maxBinIdxB = TableLoader.BfieldValues.length-1; + public int getBIdx(double b1) { +// int binIdx = (int) ((1+b1)*2) -2; +// if(binIdx<0) { +// binIdx = TableLoader.minBinIdxB; +// } +// if(binIdx>TableLoader.maxBinIdxB) { +// binIdx = TableLoader.maxBinIdxB; +// } + int maxBinIdxB = TableLoader.BfieldValues.length-1; + DecimalFormat df = new DecimalFormat("#"); + df.setRoundingMode(RoundingMode.CEILING); + + int binIdx =0; + try{ + binIdx = Integer.parseInt(df.format(b1*b1) ) -1; + } catch (NumberFormatException e) { + LOGGER.log(Level.WARNING, " field bin error "+b1+" "); + } if(binIdx<0) { binIdx = 0; } if(binIdx>maxBinIdxB) binIdx = maxBinIdxB; - return binIdx; } /** @@ -311,18 +220,34 @@ private int getAlphaIdx(double alpha) { } return binIdx; } + + private int getTimeNextIdx(double t, int SecIdx, int SlyrIdx, int binlowB, int binlowAlpha) { + int binlowT = this.getTimeIdx(t, SecIdx, SlyrIdx, binlowB, binlowAlpha); + int binhighT = binlowT + 1; + + if(binhighT>TableLoader.maxBinIdxT[SecIdx][SlyrIdx][binlowB][binlowAlpha]) { + binhighT=TableLoader.maxBinIdxT[SecIdx][SlyrIdx][binlowB][binlowAlpha]; + } + return binhighT; + } - private int getBetaIdx(double beta) { - if(beta>=1.0) return TableLoader.betaValues.length-1; - int value = TableLoader.betaValues.length-1; - for(int i = 0; i=TableLoader.betaValues[i] && beta600) { + dDoca = 0.15; + } else { + dDoca = (7.6e-3 - 2.4e-4*time +9.8e-3*time*time - 3.8e-6*time*time*time)*5.5410595e-05; } + //LOGGER.log(Level.FINE, "time "+time +" added doca "+(float)dDoca); } - return value; + return dDoca; } - - - } + + diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java index 6e8ca4cb76..6d0256005f 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java @@ -907,6 +907,8 @@ private List findStraightTracks(CrossList crossList, DCGeant4Factory DcDe continue; } + List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef); + StateVec fn = new StateVec(); if (!kFZRef.setFitFailed && kFZRef.finalStateVec != null) { fn.set(kFZRef.finalStateVec.x, kFZRef.finalStateVec.y, kFZRef.finalStateVec.tx, kFZRef.finalStateVec.ty); @@ -925,11 +927,6 @@ private List findStraightTracks(CrossList crossList, DCGeant4Factory DcDe cand.set_FitConvergenceStatus(kFZRef.ConvStatus); cand.set_Id(cands.size() + 1); cand.set_CovMat(kFZRef.finalStateVec.CM); - - Point3D VTCS = cand.get(cand.size()-1).getCoordsInTiltedSector(cand.get_Vtx0().x(), cand.get_Vtx0().y(), cand.get_Vtx0().z()); - double deltaPathToVtx = kFZRef.getDeltaPathToVtx(cand.get(cand.size()-1).get_Sector(), VTCS.z()); - - List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef, deltaPathToVtx); cand.setStateVecs(kfStateVecsAlongTrajectory); // add candidate to list of tracks @@ -1074,6 +1071,7 @@ private List findCurvedTracks(CrossList crossList, DCGeant4Factory DcDete kFZRef.init(measSurfaces, initSV); kFZRef.runFitter(); + List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef); if (kFZRef.finalStateVec == null) { continue; @@ -1095,21 +1093,15 @@ private List findCurvedTracks(CrossList crossList, DCGeant4Factory DcDete cand.set_FitNDF(kFZRef.NDF); cand.set_FitConvergenceStatus(kFZRef.ConvStatus); - cand.set_CovMat(kFZRef.finalStateVec.CM); - + cand.set_CovMat(kFZRef.finalStateVec.CM); + cand.setStateVecs(kfStateVecsAlongTrajectory); + cand.setFinalStateVec(fitStateVec); cand.set_Id(cands.size() + 1); this.setTrackPars(cand, traj, trjFind, fitStateVec, fitStateVec.getZ(), DcDetector, dcSwim); - - Point3D VTCS = cand.get(cand.size()-1).getCoordsInTiltedSector(cand.get_Vtx0().x(), cand.get_Vtx0().y(), cand.get_Vtx0().z()); - double deltaPathToVtx = kFZRef.getDeltaPathToVtx(cand.get(cand.size()-1).get_Sector(), VTCS.z()); - - List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef, deltaPathToVtx); - cand.setStateVecs(kfStateVecsAlongTrajectory); - // add candidate to list of tracks if (cand.fit_Successful = true) { cands.add(cand); @@ -1125,7 +1117,7 @@ private List findCurvedTracks(CrossList crossList, DCGeant4Factory DcDete return cands; } - public List setKFStateVecsAlongTrajectory(KFitter kFZRef, double deltaPathToVtx) { + public List setKFStateVecsAlongTrajectory(KFitter kFZRef) { List kfStateVecsAlongTrajectory = new ArrayList<>(); for(int i = 0; i < kFZRef.kfStateVecsAlongTrajectory.size(); i++) { @@ -1133,7 +1125,7 @@ public List setKFStateVecsAlongTrajectory(K org.jlab.rec.dc.trajectory.StateVec sv = new org.jlab.rec.dc.trajectory.StateVec(svc.x, svc.y, svc.tx, svc.ty); sv.setZ(svc.z); sv.setB(svc.B); - sv.setPathLength(svc.getPathLength() + deltaPathToVtx); // Transition for the starting point from the final point at the last layer to vertex + sv.setPathLength(svc.getPathLength()); sv.setProjector(svc.getProjector()); sv.setProjectorDoca(svc.getProjectorDoca()); kfStateVecsAlongTrajectory.add(sv); @@ -1142,7 +1134,7 @@ public List setKFStateVecsAlongTrajectory(K return kfStateVecsAlongTrajectory; } - public List setKFStateVecsAlongTrajectory(KFitterStraight kFZRef, double deltaPathToVtx) { + public List setKFStateVecsAlongTrajectory(KFitterStraight kFZRef) { List kfStateVecsAlongTrajectory = new ArrayList<>(); for(int i = 0; i < kFZRef.kfStateVecsAlongTrajectory.size(); i++) { @@ -1150,7 +1142,7 @@ public List setKFStateVecsAlongTrajectory(K org.jlab.rec.dc.trajectory.StateVec sv = new org.jlab.rec.dc.trajectory.StateVec(svc.x, svc.y, svc.tx, svc.ty); sv.setZ(svc.z); sv.setB(svc.B); - sv.setPathLength(svc.getPathLength() + deltaPathToVtx); // Transition for the starting point from the final point at the last layer to vertex + sv.setPathLength(svc.getPathLength()); sv.setProjector(svc.getProjector()); sv.setProjectorDoca(svc.getProjectorDoca()); kfStateVecsAlongTrajectory.add(sv); diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java index 096a1eee80..ee5952aa32 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java @@ -90,13 +90,13 @@ public boolean processDataEvent(DataEvent event) { Swim dcSwim = new Swim(); // fill T2D table -// if(Constants.getInstance().getT2D()==0) { -// TableLoader.Fill(this.getConstantsManager().getConstants(run, Constants.TIME2DIST)); -// } else { + if(Constants.getInstance().getT2D()==0) { + TableLoader.Fill(this.getConstantsManager().getConstants(run, Constants.TIME2DIST)); + } else { TableLoader.Fill(this.getConstantsManager().getConstants(run, Constants.T2DPRESSURE), this.getConstantsManager().getConstants(run, Constants.T2DPRESSUREREF), this.getConstantsManager().getConstants(run, Constants.PRESSURE)); -// } + } ClusterFitter cf = new ClusterFitter(); ClusterCleanerUtilities ct = new ClusterCleanerUtilities(); @@ -240,6 +240,7 @@ public boolean processDataEvent(DataEvent event) { getInitState(TrackArray1, measSurfaces.get(0).measPoint.z(), initSV, kFZRef, dcSwim, new float[3]); kFZRef.initFromHB(measSurfaces, initSV, TrackArray1.get(0).get(0).get(0).get_Beta()); kFZRef.runFitter(); + List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef); StateVec fn = new StateVec(); if (kFZRef.setFitFailed==false && kFZRef.finalStateVec!=null) { @@ -257,18 +258,15 @@ public boolean processDataEvent(DataEvent event) { TrackArray1.set_FitChi2(kFZRef.chi2); TrackArray1.set_FitNDF(kFZRef.NDF); + TrackArray1.setStateVecs(kfStateVecsAlongTrajectory); TrackArray1.set_FitConvergenceStatus(kFZRef.ConvStatus); if (TrackArray1.get_Vtx0().toVector3D().mag() > 500) { continue; } - + // get CovMat at vertex - Point3D VTCS = crosses.get(0).getCoordsInTiltedSector(TrackArray1.get_Vtx0().x(), TrackArray1.get_Vtx0().y(), TrackArray1.get_Vtx0().z()); + Point3D VTCS = crosses.get(0).getCoordsInSector(TrackArray1.get_Vtx0().x(), TrackArray1.get_Vtx0().y(), TrackArray1.get_Vtx0().z()); TrackArray1.set_CovMat(kFZRef.propagateToVtx(crosses.get(0).get_Sector(), VTCS.z())); - - double deltaPathToVtx = kFZRef.getDeltaPathToVtx(TrackArray1.get(TrackArray1.size()-1).get_Sector(), VTCS.z()); - List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef, deltaPathToVtx); - TrackArray1.setStateVecs(kfStateVecsAlongTrajectory); if (TrackArray1.isGood()) { trkcands.add(TrackArray1); @@ -284,6 +282,8 @@ public boolean processDataEvent(DataEvent event) { kFZRef.initFromHB(measSurfaces, initSV, TrackArray1.get(0).get(0).get(0).get_Beta(), useDAF); kFZRef.runFitter(useDAF); + List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef); + StateVec fn = new StateVec(); if (kFZRef.setFitFailed==false && kFZRef.finalStateVec!=null) { // set the state vector at the last measurement site @@ -301,18 +301,15 @@ public boolean processDataEvent(DataEvent event) { TrackArray1.set_FitChi2(kFZRef.chi2); TrackArray1.set_FitNDF(kFZRef.NDF); TrackArray1.set_NDFDAF(kFZRef.getNDFDAF()); + TrackArray1.setStateVecs(kfStateVecsAlongTrajectory); TrackArray1.set_FitConvergenceStatus(kFZRef.ConvStatus); if (TrackArray1.get_Vtx0().toVector3D().mag() > 500) { continue; } // get CovMat at vertex - Point3D VTCS = crosses.get(0).getCoordsInTiltedSector(TrackArray1.get_Vtx0().x(), TrackArray1.get_Vtx0().y(), TrackArray1.get_Vtx0().z()); + Point3D VTCS = crosses.get(0).getCoordsInSector(TrackArray1.get_Vtx0().x(), TrackArray1.get_Vtx0().y(), TrackArray1.get_Vtx0().z()); TrackArray1.set_CovMat(kFZRef.propagateToVtx(crosses.get(0).get_Sector(), VTCS.z())); - - double deltaPathToVtx = kFZRef.getDeltaPathToVtx(TrackArray1.get(TrackArray1.size()-1).get_Sector(), VTCS.z()); - List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef, deltaPathToVtx); - TrackArray1.setStateVecs(kfStateVecsAlongTrajectory); if (TrackArray1.isGood()) { trkcands.add(TrackArray1); @@ -369,7 +366,7 @@ public boolean processDataEvent(DataEvent event) { return true; } - public List setKFStateVecsAlongTrajectory(KFitter kFZRef, double deltaPathToVtx) { + public List setKFStateVecsAlongTrajectory(KFitter kFZRef) { List kfStateVecsAlongTrajectory = new ArrayList<>(); for(int i = 0; i < kFZRef.kfStateVecsAlongTrajectory.size(); i++) { @@ -377,7 +374,7 @@ public List setKFStateVecsAlongTrajectory(K org.jlab.rec.dc.trajectory.StateVec sv = new org.jlab.rec.dc.trajectory.StateVec(svc.x, svc.y, svc.tx, svc.ty); sv.setZ(svc.z); sv.setB(svc.B); - sv.setPathLength(svc.getPathLength() + deltaPathToVtx); // Transition for the starting point from the final point at the last layer to vertex + sv.setPathLength(svc.getPathLength()); sv.setProjector(svc.getProjector()); sv.setProjectorDoca(svc.getProjectorDoca()); sv.setDAFWeight(svc.getFinalDAFWeight()); @@ -388,7 +385,7 @@ public List setKFStateVecsAlongTrajectory(K return kfStateVecsAlongTrajectory; } - public List setKFStateVecsAlongTrajectory(KFitterStraight kFZRef, double deltaPathToVtx) { + public List setKFStateVecsAlongTrajectory(KFitterStraight kFZRef) { List kfStateVecsAlongTrajectory = new ArrayList<>(); for(int i = 0; i < kFZRef.kfStateVecsAlongTrajectory.size(); i++) { @@ -396,7 +393,7 @@ public List setKFStateVecsAlongTrajectory(K org.jlab.rec.dc.trajectory.StateVec sv = new org.jlab.rec.dc.trajectory.StateVec(svc.x, svc.y, svc.tx, svc.ty); sv.setZ(svc.z); sv.setB(svc.B); - sv.setPathLength(svc.getPathLength() + deltaPathToVtx); // Transition for the starting point from the final point at the last layer to vertex + sv.setPathLength(svc.getPathLength()); sv.setProjector(svc.getProjector()); sv.setProjectorDoca(svc.getProjectorDoca()); kfStateVecsAlongTrajectory.add(sv);