diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aac21b2ead..453bd9dd84 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,14 +61,46 @@ jobs: # build ############################################################################# + build_macos: + strategy: + fail-fast: true + runs-on: macos-latest + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.java_distribution }} + cache: maven + - name: setup cvmfs + uses: cvmfs-contrib/github-action-cvmfs@v5 + with: + cvmfs_repositories: 'oasis.opensciencegrid.org' + - name: cvmfs + run: ls /cvmfs/oasis.opensciencegrid.org/jlab/hallb/clas12/sw/noarch/data/ccdb/ccdb_latest.sqlite + - name: bump version to tag if tag trigger + if: ${{ github.ref_type == 'tag' }} + run: libexec/version-bump.sh ${{ github.ref_name }} + - name: build + run: | + ./build-coatjava.sh --lfs --no-progress -T${{ env.nthreads }} + ./bin/install-clara -b -c ./coatjava ./clara + - name: tar # tarball to preserve permissions + run: | + tar czvf coatjava.tar.gz coatjava + tar czvf clara.tar.gz clara + - uses: actions/upload-artifact@v7 + with: + name: build_macos + retention-days: 1 + path: | + coatjava.tar.gz + clara.tar.gz + build: strategy: fail-fast: true - matrix: - runner: - - ubuntu-latest - - macos-latest - runs-on: ${{ matrix.runner }} + runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-java@v5 @@ -95,7 +127,7 @@ jobs: tar czvf clara.tar.gz clara - uses: actions/upload-artifact@v7 with: - name: build_${{ matrix.runner }} + name: build_ubuntu-latest retention-days: 1 path: | coatjava.tar.gz @@ -251,8 +283,6 @@ jobs: - { id: eb-epc, cmd: ./run-eb-tests.sh -100 electronprotonC } - { id: eb-enc, cmd: ./run-eb-tests.sh -100 electronneutronC } - { id: eb-eftpi, cmd: ./run-eb-tests.sh -100 electronFTpion } - # run one macos test - - { runner: macos-latest, id: eb-ep, cmd: ./run-eb-tests.sh -100 electronproton } runs-on: ${{ matrix.runner }} steps: - uses: actions/checkout@v6 @@ -280,6 +310,36 @@ jobs: echo "COMMAND: ${{ matrix.cmd }}" ${{ matrix.cmd }} + test_coatjava_macos: + needs: [ build_macos ] + strategy: + fail-fast: true + runs-on: macos-latest + steps: + - uses: actions/checkout@v6 + - name: Set up JDK + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.java_distribution }} + cache: maven + - uses: actions/download-artifact@v8 + with: + name: build_macos + - uses: cvmfs-contrib/github-action-cvmfs@v5 + with: + cvmfs_repositories: 'oasis.opensciencegrid.org' + - name: untar build + run: | + tar xzvf coatjava.tar.gz + tar xzvf clara.tar.gz + - name: run test + run: | + git lfs install + git submodule update --init validation/advanced-tests/data + cd validation/advanced-tests + ./run-eb-tests.sh -100 electronproton + test_run-groovy: needs: [ build ] runs-on: ubuntu-latest @@ -334,7 +394,7 @@ jobs: libexec/build-javadocs.sh mv target/reports/apidocs pages/javadoc ### upload artifacts - - uses: actions/upload-pages-artifact@v4 + - uses: actions/upload-pages-artifact@v5 with: retention-days: 7 path: pages/ @@ -352,7 +412,7 @@ jobs: steps: - name: deployment id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v5 # finalize ############################################################################# @@ -380,7 +440,7 @@ jobs: mv coatjava{,-${{ env.TAG_NAME }}} tar czf coatjava-${{ env.TAG_NAME }}{.tar.gz,} - name: release - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@v3 with: files: coatjava-${{ env.TAG_NAME }}.tar.gz - name: open issue if failed diff --git a/.github/workflows/submodule.yml b/.github/workflows/submodule.yml index a647fa395d..0141491d6a 100644 --- a/.github/workflows/submodule.yml +++ b/.github/workflows/submodule.yml @@ -29,7 +29,7 @@ jobs: cat changes.txt >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT - name: comment - uses: actions/github-script@v8 + uses: actions/github-script@v9 with: script: | github.rest.issues.createComment({ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b4cae92810..7c1117abf5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: codecr.jlab.org/hallb/clas12/container-forge/base:latest +image: codecr.jlab.org/hallb/clas12/iguana/ci_no_root:latest workflow: rules: @@ -6,13 +6,16 @@ workflow: auto_cancel: on_new_commit: interruptible - if: $CI_PIPELINE_SOURCE == "schedule" - - if: $CI_COMMIT_BRANCH == "main" + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH auto_cancel: on_new_commit: conservative - if: $CI_COMMIT_TAG auto_cancel: on_new_commit: conservative +variables: + EVIOFILE: clas_018779.evio.00001 + default: interruptible: true before_script: @@ -22,6 +25,25 @@ default: - export PATH=$CLARA_HOME/bin:$PATH - export PATH=$COATJAVA/bin:$PATH +.clon: + tags: + - clonfarm3-shell + stage: test + needs: [build,download] + dependencies: [build,download] + interruptible: true + before_script: + - export JAVA_HOME=/usr/clas12/offline/jdk/21.0.2 + - export PATH=$JAVA_HOME:$PATH + - export PATH=/usr/clas12/offline/maven/3.9.6/bin:$PATH + - export PATH=/usr/clas12/offline/asprof/4.4/bin:$PATH + - export CLARA_HOME=$CI_PROJECT_DIR/clara + - export COATJAVA=$CI_PROJECT_DIR/coatjava + - export PATH=$CLARA_HOME/plugins/clas12/bin:$PATH + - export PATH=$CLARA_HOME/bin:$PATH + - export PATH=$COATJAVA/bin:$PATH + - tar -xzvf clara.tar.gz + stages: - mirror - build @@ -50,7 +72,7 @@ build: optional: true script: - git config --global --add safe.directory $CI_PROJECT_DIR - - ./build-coatjava.sh --lfs --clara -T$JL_RUNNER_AVAIL_CPU --quiet --no-progress + - ./build-coatjava.sh --lfs --clara -T48 --quiet --no-progress - tar -czf coatjava.tar.gz coatjava - tar -czf clara.tar.gz clara artifacts: @@ -63,31 +85,33 @@ build: download: stage: build script: -# - xrdcp xroot://sci-xrootd.jlab.org///osgpool/hallb/clas12/validation/raw/rg-d/clas_018779.evio.00001 ./ - - git lfs install - - git clone https://code.jlab.org/hallb/clas12/validation-data - - cp validation-data/raw/rg-d/clas_018779.evio.00001 . + - GIT_LFS_SKIP_SMUDGE=1 git clone https://code.jlab.org/hallb/clas12/validation-data + - cd validation-data + - git lfs install --skip-smudge + - git config lfs.fetchinclude raw/rg-d/$EVIOFILE + - git lfs pull + - cd - + - ln validation-data/raw/rg-d/$EVIOFILE artifacts: when: always - expire_in: 1 day paths: - - clas_018779.evio.00001 + - $EVIOFILE -.spotbugs: +spotbugs: stage: test needs: [build] dependencies: [build] script: - tar -xzf coatjava.tar.gz - - ./build-coatjava.sh -T$JL_RUNNER_AVAIL_CPU --spotbugs --quiet --no-progress + - ./build-coatjava.sh -T48 --spotbugs --quiet --no-progress -.unit_tests: +unit-tests: stage: test needs: [build] dependencies: [build] script: - tar -xzf coatjava.tar.gz - - ./build-coatjava.sh -T$JL_RUNNER_AVAIL_CPU --lfs --unittests --quiet --no-progress + - ./build-coatjava.sh -T48 --lfs --unittests --quiet --no-progress - ./validation/jacoco-aggregate.sh artifacts: when: always @@ -95,10 +119,10 @@ download: paths: - publish -.docs: +docs: stage: test - needs: [build,unit_tests] - dependencies: [build,unit_tests] + needs: [build,unit-tests] + dependencies: [build,unit-tests] script: - tar -xzf coatjava.tar.gz - python3 -m venv venv @@ -111,7 +135,7 @@ download: - cp -r publish pages/jacoco artifacts: when: always - expire_in: 7 days + expire_in: 1 week paths: - pages @@ -121,7 +145,6 @@ eb: dependencies: [build] script: - tar -xzf coatjava.tar.gz - - tar -xzf clara.tar.gz - git config --global --add safe.directory $CI_PROJECT_DIR - git lfs install - git submodule update --init validation/advanced-tests/data @@ -141,12 +164,7 @@ decoder: dependencies: [build,download] script: - tar -xzf clara.tar.gz - - decoder -l FINE -n 1000 -o clas_018779_00001.hipo clas_018779.evio.00001 - artifacts: - when: always - expire_in: 1 day - paths: - - clas_018779_00001.hipo + - decoder -l FINE -n 1000 -o decoded.hipo $EVIOFILE clara: stage: test @@ -154,24 +172,49 @@ clara: dependencies: [build,download] script: - tar -xzf clara.tar.gz - - run-clara -v -c $CLARA_HOME -t $JL_RUNNER_AVAIL_CPU -y ./etc/services/rgd-clarode.yml -n 100 -o out clas_018779.evio.00001 + - run-clara -v -c $CLARA_HOME -t 4 -y ./etc/services/rgd-clarode.yml -n 30 -o out $EVIOFILE + - mv out/rec_$EVIOFILE.hipo claroded.hipo profile: - stage: test - needs: [build,decoder] - dependencies: [build,decoder] + extends: .clon + allow_failure: true script: - - tar -xzf coatjava.tar.gz - - libexec/profile -f flamegraph -e cpu clas_018779_00001.hipo - - libexec/profile -f flamegraph -e nativemem clas_018779_00001.hipo - - libexec/profile -f flamegraph -e alloc clas_018779_00001.hipo + - ./clara/plugins/clas12/libexec/profile -e cpu run-clara -c ./clara -y ./etc/services/rgd-clarode.yml -o tmp1 -t 16 -l $EVIOFILE + - ./clara/plugins/clas12/libexec/profile -e alloc run-clara -c ./clara -y ./etc/services/rgd-clarode.yml -o tmp2 -t 16 -l $EVIOFILE + - ./clara/plugins/clas12/libexec/profile -e lock run-clara -c ./clara -y ./etc/services/rgd-clarode.yml -o tmp3 -t 16 -l $EVIOFILE artifacts: when: always expire_in: 1 week paths: - - pro_flamegraph_cpu_clas_018779_00001 - - pro_flamegraph_nativemem_clas_018779_00001 - - pro_flamegraph_alloc_clas_018779_00001 + - "asprof*.html" + +scaling: + extends: .clon + allow_failure: true + script: + - ./clara/plugins/clas12/libexec/scaling -c ./clara -y ./etc/services/rgd-clarode.yml -t 8,12,18,24 $EVIOFILE + artifacts: + when: always + expire_in: 1 week + paths: + - scaling.svg + +pages: + stage: deploy + needs: [profile,scaling,docs] + dependencies: [profile,scaling,docs] + script: + - cp -r pages public + - mkdir public/perf + - cp asprof*.html public/perf + - cp scaling.svg public/perf + pages: true + artifacts: + expire_in: 1 week + paths: + - public + rules: + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH .deploy: stage: deploy diff --git a/bin/run-clara b/bin/run-clara index 798ffd6544..05c0b6b148 100755 --- a/bin/run-clara +++ b/bin/run-clara @@ -127,7 +127,7 @@ function get_host_ip() { } function get_dpe_port() { local ports - ports=$(seq 7000 20 8000) + ports=$(seq 49152 20 65535) command -v shuf >/dev/null 2>&1 && ports=$(echo "$ports" | shuf) for port in $ports do @@ -153,7 +153,7 @@ then --max-sockets 5120 --report 5 \ 2>&1 | tee $CLARA_USER_DATA/log/dpe.log & set +v - #echo "Sleeping 7 ......." && sleep 7 + sleep 1 unset JAVA_OPTS set -v $CLARA_HOME/bin/clara-orchestrator \ diff --git a/common-tools/clara-io/pom.xml b/common-tools/clara-io/pom.xml index b25558dc2c..e75018765d 100644 --- a/common-tools/clara-io/pom.xml +++ b/common-tools/clara-io/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clara-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -44,25 +44,25 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java deleted file mode 100644 index cd1f39dc95..0000000000 --- a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java +++ /dev/null @@ -1,91 +0,0 @@ -package org.jlab.io.clara; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.file.Path; -import org.jlab.clara.engine.EngineDataType; -import org.jlab.clara.std.services.AbstractEventReaderService; -import org.jlab.clara.std.services.EventReaderException; -import org.jlab.coda.jevio.EvioException; -import org.jlab.detector.decode.CLASDecoder4; -import org.jlab.io.evio.EvioDataEvent; -import org.jlab.io.evio.EvioSource; -import org.jlab.jnp.hipo4.data.Event; -import org.jlab.jnp.hipo4.io.HipoReader; -import org.json.JSONObject; - -/** - * Emulate DecoderReader for EVIO files, or HipoToHipoReader for HIPO files. - * - * @author baltzell - */ -public class Clas12Reader extends AbstractEventReaderService { - - boolean evio; - CLASDecoder4 decoder; - private long maxEvents; - private Double torus; - private Double solenoid; - - @Override - protected Object createReader(Path path, JSONObject opts) throws EventReaderException { - if (path.toString().endsWith(".hipo")) { - evio = false; - HipoReader r = new HipoReader(); - r.open(path.toString()); - return r; - } - else { - evio = true; - EvioSource r = new EvioSource(); - r.open(path.toString()); - maxEvents = r.getEventCount(); - decoder = new CLASDecoder4(); - torus = opts.has("torus") ? opts.getDouble("torus") : null; - solenoid = opts.has("solenoid") ? opts.getDouble("solenoid") : null; - if (opts.has("variation")) decoder.setVariation(opts.getString("variation")); - if (opts.has("timestamp")) decoder.setTimestamp(opts.getString("timestamp")); - return r; - } - } - - @Override - protected void closeReader() { - if (evio) ((EvioSource)reader).close(); - else ((HipoReader)reader).close(); - } - - @Override - protected int readEventCount() throws EventReaderException { - if (evio) return ((EvioSource)reader).getEventCount(); - else return ((HipoReader)reader).getEventCount(); - } - - @Override - protected Object readEvent(int eventNumber) throws EventReaderException { - try { - if (evio) { - if (eventNumber++ >= maxEvents) return null; - ByteBuffer b = ((EvioSource)reader).getEventBuffer(eventNumber, true); - EvioDataEvent e = new EvioDataEvent(b.array(), readByteOrder()); - return decoder.getDecodedEvent(e, -1, eventNumber, torus, solenoid); - } - else { - return ((HipoReader)reader).getEvent(new Event(),eventNumber); - } - } catch (EvioException e) { - throw new EventReaderException(e); - } - } - - @Override - public ByteOrder readByteOrder() throws EventReaderException { - return ByteOrder.LITTLE_ENDIAN; - } - - @Override - protected EngineDataType getDataType() { - return Clas12Types.HIPO; - } - -} diff --git a/common-tools/clara-io/src/main/resources/org/jlab/io/clara/Clas12Reader.yaml b/common-tools/clara-io/src/main/resources/org/jlab/io/clara/Clas12Reader.yaml deleted file mode 100644 index 30c6e00495..0000000000 --- a/common-tools/clara-io/src/main/resources/org/jlab/io/clara/Clas12Reader.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -name: Clas12Reader -engine: org.jlab.io.clara.Clas12Reader -type: java - -author: Nathan Baltzell -email: baltzell@jlab.org - -version: 0.1 -description: - Reads EVIO or HIPO events from a file, converting to HIPO via "decoding" if EVIO. diff --git a/common-tools/clas-analysis/pom.xml b/common-tools/clas-analysis/pom.xml index 43ffef46cb..1260cfe315 100644 --- a/common-tools/clas-analysis/pom.xml +++ b/common-tools/clas-analysis/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -38,49 +38,49 @@ org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-decay-tools/pom.xml b/common-tools/clas-decay-tools/pom.xml index 8fc851a613..384a4bcfa9 100644 --- a/common-tools/clas-decay-tools/pom.xml +++ b/common-tools/clas-decay-tools/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-decay-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,54 +21,54 @@ org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar cnuphys swimmer - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-vtx - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-decay-tools/src/main/java/org/jlab/clas/decay/analysis/Decay.java b/common-tools/clas-decay-tools/src/main/java/org/jlab/clas/decay/analysis/Decay.java index e1c08685b6..36c2c08ce3 100644 --- a/common-tools/clas-decay-tools/src/main/java/org/jlab/clas/decay/analysis/Decay.java +++ b/common-tools/clas-decay-tools/src/main/java/org/jlab/clas/decay/analysis/Decay.java @@ -584,8 +584,8 @@ private boolean checkVertDocaBank(Particle p1, Particle p2) { if(getVertBank()!=null) { int nrows2 = getVertBank().rows(); for(int loop2 = 0; loop2 < nrows2; loop2++){ - if(p1.getIdx()-1==(int) getVertBank().getShort("index1", loop2) - && p2.getIdx()-1==(int) getVertBank().getShort("index2", loop2)) { + if(p1.getIdx()==(int) getVertBank().getShort("index1", loop2) + && p2.getIdx()==(int) getVertBank().getShort("index2", loop2)) { p1.vIndex=loop2; p2.vIndex=loop2; @@ -620,8 +620,8 @@ private boolean checkVertDocaBank(Particle p1, Particle p2) { pass=true; return pass; } - if(p2.getIdx()-1==(int) getVertBank().getShort("index1", loop2) - && p1.getIdx()-1==(int) getVertBank().getShort("index2", loop2)) { + if(p2.getIdx()==(int) getVertBank().getShort("index1", loop2) + && p1.getIdx()==(int) getVertBank().getShort("index2", loop2)) { p1.vIndex=loop2; p2.vIndex=loop2; //r = (double) getVertBank().getFloat("r", loop2); diff --git a/common-tools/clas-detector/pom.xml b/common-tools/clas-detector/pom.xml index 543c8f9a79..63f7f53bb4 100644 --- a/common-tools/clas-detector/pom.xml +++ b/common-tools/clas-detector/pom.xml @@ -4,20 +4,20 @@ org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -43,19 +43,19 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-logging - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-geometry/pom.xml b/common-tools/clas-geometry/pom.xml index f464c51e6c..c22d685037 100644 --- a/common-tools/clas-geometry/pom.xml +++ b/common-tools/clas-geometry/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-io/pom.xml b/common-tools/clas-io/pom.xml index e87c4487c4..06daa9b4b1 100644 --- a/common-tools/clas-io/pom.xml +++ b/common-tools/clas-io/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -50,7 +50,7 @@ org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-jcsg/pom.xml b/common-tools/clas-jcsg/pom.xml index 7dfd17d15f..1e33cf8332 100644 --- a/common-tools/clas-jcsg/pom.xml +++ b/common-tools/clas-jcsg/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -32,17 +32,17 @@ org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT java3d diff --git a/common-tools/clas-logging/pom.xml b/common-tools/clas-logging/pom.xml index ee71e0719b..1a57384ab0 100644 --- a/common-tools/clas-logging/pom.xml +++ b/common-tools/clas-logging/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-logging - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-math/pom.xml b/common-tools/clas-math/pom.xml index ef09b38d2e..a849951d91 100644 --- a/common-tools/clas-math/pom.xml +++ b/common-tools/clas-math/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-math - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-physics/pom.xml b/common-tools/clas-physics/pom.xml index 75410aa18e..3d819ebf25 100644 --- a/common-tools/clas-physics/pom.xml +++ b/common-tools/clas-physics/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-reco/pom.xml b/common-tools/clas-reco/pom.xml index 6985a776a7..b839caa297 100644 --- a/common-tools/clas-reco/pom.xml +++ b/common-tools/clas-reco/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -50,43 +50,43 @@ cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys swimmer - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/service/PulseExtractorEngine.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/service/PulseExtractorEngine.java deleted file mode 100644 index 3f2dc5254e..0000000000 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/service/PulseExtractorEngine.java +++ /dev/null @@ -1,53 +0,0 @@ -package org.jlab.clas.service; - -import org.jlab.clas.reco.ReconstructionEngine; -import org.jlab.detector.pulse.Mode3; -import org.jlab.detector.pulse.Mode7; -import org.jlab.detector.pulse.ModeAHDC; -import org.jlab.io.base.DataEvent; - -/** - * An example of using a {@link org.jlab.detector.pulse.HipoExtractor} from a - * {@link org.jlab.clas.reco.ReconstructionEngine}. - * - * @author baltzell - */ -public class PulseExtractorEngine extends ReconstructionEngine { - - Mode3 mode3 = new Mode3(); - Mode3 mode7 = new Mode7(); - ModeAHDC mode_ahdc = new ModeAHDC(); - - public PulseExtractorEngine() { - super("PULSE", "baltzell", "0.0"); - } - - @Override - public boolean init() { - // If using a CCDB table, must register it here: - //requireConstants("/daq/config/ahdc"); - return true; - } - - @Override - public boolean processDataEvent(DataEvent event) { - - // No CCDB table, hardcoded parameters in the extractor: - //mode3.update(6, null, event, "BMT::wf", "BMT::adc"); - //mode7.update(80, null, event, "AHDC::wf", "AHDC::adc"); - mode_ahdc.update(30, null, event, "AHDC::wf", "AHDC::adc"); - - /* - // Requiring a CCDB table: - DataBank runConfig = event.getBank("RUN::config"); - if (runConfig.rows()>0) { - IndexedTable it = getConstantsManager().getConstants( - runConfig.getInt("run", 0), "/daq/config/ahdc"); - basic.update(136, it, event, "AHDC::wf", "AHDC::adc"); - } - */ - - return true; - } - -} diff --git a/common-tools/clas-tracking/pom.xml b/common-tools/clas-tracking/pom.xml index 50b468e3d2..adb391695f 100644 --- a/common-tools/clas-tracking/pom.xml +++ b/common-tools/clas-tracking/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-tracking - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -33,23 +33,23 @@ org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/clas-utils/pom.xml b/common-tools/clas-utils/pom.xml index d604ccece6..460ad95fe7 100644 --- a/common-tools/clas-utils/pom.xml +++ b/common-tools/clas-utils/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -22,7 +22,7 @@ org.jlab.clas clas-logging - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/cnuphys/magfield/pom.xml b/common-tools/cnuphys/magfield/pom.xml index 79bf378633..bcd4854fea 100644 --- a/common-tools/cnuphys/magfield/pom.xml +++ b/common-tools/cnuphys/magfield/pom.xml @@ -4,13 +4,13 @@ cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar cnuphys clas12 - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/Cell3D.java b/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/Cell3D.java index 20b5141000..7562b86019 100644 --- a/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/Cell3D.java +++ b/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/Cell3D.java @@ -71,14 +71,9 @@ private boolean reset(double q1, double q2, double q3) { for (int k = 0; k < 2; k++) { int nn3 = _n3 + k; int index = _probe.getCompositeIndex(nn1, nn2, nn3); - - if (index < 0) { - System.out.println(); - } c[i][j][k][0] = _probe.getB1(index); c[i][j][k][1] = _probe.getB2(index); c[i][j][k][2] = _probe.getB3(index); - } } } diff --git a/common-tools/cnuphys/pom.xml b/common-tools/cnuphys/pom.xml index a28b8479f1..6161774821 100644 --- a/common-tools/cnuphys/pom.xml +++ b/common-tools/cnuphys/pom.xml @@ -4,13 +4,13 @@ cnuphys clas12 - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT pom org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/cnuphys/snr/pom.xml b/common-tools/cnuphys/snr/pom.xml index aa0634cc14..90f23dfcbc 100644 --- a/common-tools/cnuphys/snr/pom.xml +++ b/common-tools/cnuphys/snr/pom.xml @@ -4,13 +4,13 @@ cnuphys snr - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar cnuphys clas12 - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/cnuphys/splot/pom.xml b/common-tools/cnuphys/splot/pom.xml index 41df0ed603..26ee79a55f 100644 --- a/common-tools/cnuphys/splot/pom.xml +++ b/common-tools/cnuphys/splot/pom.xml @@ -4,13 +4,13 @@ cnuphys splot - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar cnuphys clas12 - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/cnuphys/swimmer/pom.xml b/common-tools/cnuphys/swimmer/pom.xml index 9ee2ef420a..33a857bbfc 100644 --- a/common-tools/cnuphys/swimmer/pom.xml +++ b/common-tools/cnuphys/swimmer/pom.xml @@ -4,26 +4,26 @@ cnuphys swimmer - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar cnuphys clas12 - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys splot - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/coat-libs/pom.xml b/common-tools/coat-libs/pom.xml index ce8fe83d48..345723ee7f 100644 --- a/common-tools/coat-libs/pom.xml +++ b/common-tools/coat-libs/pom.xml @@ -4,13 +4,13 @@ org.jlab.coat coat-libs - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -66,91 +66,91 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clara-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-logging - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-math - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-tracking - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-decay-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys snr - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/pom.xml b/common-tools/pom.xml index d472b1815b..809fb7afe3 100644 --- a/common-tools/pom.xml +++ b/common-tools/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT pom org.jlab.clas coatjava - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/swim-tools/pom.xml b/common-tools/swim-tools/pom.xml index 0b7a5e9088..dcf4a09be7 100644 --- a/common-tools/swim-tools/pom.xml +++ b/common-tools/swim-tools/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas common-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,37 +21,37 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys swimmer - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/common-tools/swim-tools/src/main/java/org/jlab/clas/swimtools/Swim.java b/common-tools/swim-tools/src/main/java/org/jlab/clas/swimtools/Swim.java index 66897dc346..e83c49fd66 100644 --- a/common-tools/swim-tools/src/main/java/org/jlab/clas/swimtools/Swim.java +++ b/common-tools/swim-tools/src/main/java/org/jlab/clas/swimtools/Swim.java @@ -1361,21 +1361,20 @@ public DCASwimStopper(SwimTrajectory swimTraj) { @Override public boolean stopIntegration(double t, double[] y) { - Point3D dcaCand = new Point3D(y[0],y[1],y[2]); double maxDoca = Double.POSITIVE_INFINITY; - - for(Line3D l : polylines) { - if(l.distance(dcaCand).length()& /dev/null [ "$?" -ne 0 ] && echo 'ERROR: asprof is not in $PATH.' && echo -e $usage2 && exit 3 @@ -32,30 +34,36 @@ which $executable >& /dev/null [ "$?" -ne 0 ] && echo "ERROR: $executable is not in \$PATH." && echo -e $usage2 && exit 4 echo "Running asprof on '$executable $arguments' ..." +sleep 1 -set -e +rm -f $logfile && touch $logfile -$executable $arguments >& asprof_$stub.log +set -e +$executable $arguments >> $logfile 2>&1 & +set +e pid_bash=$! +echo info: pid bash=$pid_bash, getting java ... +sleep 1 +pid_java=$(pgrep -P $pid_bash) +sleep 1 +# go 2 deep for run-clara: +pid_java=$(pgrep -P $pid_java | head -n 1) +echo info: pid java=$pid_java +tail -f $logfile & +pid_tail=$! +sleep $tail_seconds +kill -9 $pid_tail -echo PID1=$pid_bash -sleep 5 -pid_java=$(pgrep -P "$pid_bash") - -echo PID2=$pid_java - -ps waux && ps -p $pid_java - -echo "Waiting for $warmup seconds of warmup ..." -for x in $(seq $warmup); do let y=$warmup-$x && echo -e -n "\r$y ..." && sleep 1; done - -# This 42 is probably for recon-util: -tail -n 42 asprof_$stub.log +set -e +asprof -e $event -d $profile_seconds -f asprof_${event}$stub.html $pid_java >> $logfile 2>&1 & +pid_asprof=$! +set +e -asprof --title "Coatjava:asprof:$executable:$event" -e $event \ - -d $seconds -o $format -f asprof_${format}_${event}_$stub $pid_java +tail -f $logfile & +pid_tail=$! +wait $pid_asprof +kill -9 $pid_bash +kill -9 $pid_tail kill -9 $pid_java -rm -f asprof_$stub.hipo - diff --git a/libexec/scaling b/libexec/scaling index b5fb0c9412..6cad8e3450 100755 --- a/libexec/scaling +++ b/libexec/scaling @@ -5,38 +5,40 @@ def cli(): cli = argparse.ArgumentParser(description='CLARA scaling test') cli.add_argument('-y','--yaml', metavar='YAML',help='path to YAML file',required=True) cli.add_argument('-c','--clara', metavar='DIR',help='CLARA_HOME path (default=$CLARA_HOME)',default=os.getenv('CLARA_HOME',None)) - cli.add_argument('-t','--threads',metavar='#',help='threads (default=4,8)',default='4,8') + cli.add_argument('-t','--threads',metavar='#',help='threads (default=8,16,24,34,44)',default='8,16,24,34,44') cli.add_argument('-e','--events', metavar='#',help='events per thread (default=555)',default=555,type=int) - cli.add_argument('-N','--numa', metavar='#',help='NUMA socket (default=None, choices=[0,1])',default=None,type=int,choices=[0,1]) + cli.add_argument('-N','--numa', metavar='#',help='restrict to a NUMA socket (choices=[0,1])',choices=[0,1]) + cli.add_argument('-C','--cpus', metavar='#',help='restrict to a CPU list (e.g. 0,1,2,3)') + cli.add_argument('-T','--cputhr', metavar='#',help='restrict to same number of CPUs as threads') cli.add_argument('datafile', help='input EVIO/HIPO data file') cfg = cli.parse_args() cfg.threads = cfg.threads.split(',') if not cfg.clara: cli.error('cannot find CLARA installation via -c or $CLARA_HOME') - cfg.run_clara = find_run_clara(cfg.clara) - if not cfg.run_clara: - cli.error('cannot find run-clara in $PATH or CLARA installation') - if cfg.numa is not None: + elif shutil.which('run-clara'): + cfg.run_clara = shutil.which('run-clara') + elif os.path.exists(clara_home + '/plugins/clas12/bin/run-clara'): + cfg.run_clara = clara_home + '/plugins/clas12/bin/run-clara' + else: + cli.error('cannot find run-clara in $PATH or $CLARA_HOME') + if cfg.cpus: + try: + cfg.cpus = ','.join([str(int(i)) for i in cfg.cpus.split(',')]) + except Exception as e: + cli.error('invalid --cpus argument: {cfg.cpus}') + elif cfg.numa or cfg.cputhr: + if not cfg.numa: + cfg.numa = 0 if not shutil.which('numactl'): cli.error('numactl is not in $PATH, --numa option not supported') - if len(list(get_numa_cpus(cfg.numa))) == 0: - cli.error('invalid --numa node: {cfg.numa}') - cfg.numa = ','.join(list(get_numa_cpus(cfg.numa))) + for x in run(['numactl','-H']): + if x.startswith(f'node {cfg.numa} cpus:'): + cfg.cpus = ','.join([str(int(i)) for i in x.strip().split()[3:]]) + break + if not cfg.cpus: + cli.error('error determining cpu list for -C or -T') return cfg -def find_run_clara(clara_home): - import os,shutil - if shutil.which('run-clara'): - return shutil.which('run-clara') - elif os.path.exists(clara_home + '/plugins/clas12/bin/run-clara'): - return clara_home + '/plugins/clas12/bin/run-clara' - -def get_numa_cpus(node): - for line in run(['numactl','-H']): - if line.startswith(f'node {node} cpus:'): - for col in line.strip().split()[3:]: - yield col - def run(cmd): import subprocess print('run >>> '+' '.join(cmd)) @@ -46,15 +48,16 @@ def run(cmd): if len(line) > 0: yield line p.wait() - if p.returncode != 0: - pass def benchmark(cfg, threads, log): import collections cmd = [] - # use taskset: - if cfg.numa is not None: - cmd.extend(['taskset','-c',cfg.numa]) + # use taskset for thread affinity: + if cfg.cpus: + if cfg.cputhr: + cmd.extend(['taskset','-c',','.join(cfg.cpus.split(',')[:threads])]) + else: + cmd.extend(['taskset','-c',cfg.cpus]) # add the run-clara command: cmd.extend([cfg.run_clara, '-c',cfg.clara, @@ -123,6 +126,22 @@ def save(benchmarks): for row in table(benchmarks): f.write(' '.join([str(x) for x in row])+'\n') +def plot(): + import os,shutil,subprocess + if shutil.which('gnuplot'): + g = os.path.dirname(os.path.abspath(__file__))+'/scaling.gpl' + r = subprocess.run(['gnuplot',g], capture_output=True, text=True) + if r.returncode == 0: + with open('scaling.svg','w') as f: + f.write(r.stdout) + print('Info: created scaling.svg from scaling.txt and scaling.gpl!') + else: + print(r.stdout) + print(r.stderr) + print('Error: gnuplot failed!') + else: + print('Warning: gnuplot is not in $PATH.') + if __name__ == '__main__': cfg = cli() import os @@ -133,4 +152,5 @@ if __name__ == '__main__': benchmarks.append([threads, benchmark(cfg, threads, log)]) show(benchmarks) save(benchmarks) + plot() diff --git a/libexec/scaling.gpl b/libexec/scaling.gpl index 1589761971..3c5598d0d4 100644 --- a/libexec/scaling.gpl +++ b/libexec/scaling.gpl @@ -67,6 +67,8 @@ set key nobox inside top left f(x) = m*x m = 2 +set fit quiet +set fit nolog fit [0:24] f(x) datafile using 1:(1/$2*1e3) via m rate = sprintf('%.1f Hz/CPU',m) plot datafile using 1:(1/$2*1e3) pt 7 notitle, f(x) title rate @@ -83,7 +85,6 @@ plot datafile \ '' using 1:($5) pt 9 with points title 'Reader' ,\ '' using 1:((column($#-1))) pt 11 with points title 'Writer' ,\ -#set logscale y set size 0.6,1.0 set origin 0.4,0.0 set key outside right vertical diff --git a/pom.xml b/pom.xml index 75fdbe9ecc..7b2cf7486b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.jlab.clas coatjava - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT pom diff --git a/reconstruction/ai/pom.xml b/reconstruction/ai/pom.xml index ad000d0bb4..4bebb2c65c 100644 --- a/reconstruction/ai/pom.xml +++ b/reconstruction/ai/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-ai - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -18,19 +18,19 @@ org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index 7ebf9b7cf7..69c0e1a864 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-alert - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -30,54 +30,54 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test org.jlab.clas clas-tracking - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/HitReader.java b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/HitReader.java index e2953d7857..6268dd5dd2 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/HitReader.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Hit/HitReader.java @@ -9,37 +9,65 @@ import org.jlab.geom.detector.alert.AHDC.AlertDCDetector; import org.jlab.utils.groups.IndexedTable; +/** + * Reads raw AHDC hits from the {@code AHDC::adc} bank, applies calibration corrections + * (time offsets, time-over-threshold, ADC gains), filters them against per-wire cuts in + * data mode, and builds the list of {@link Hit} objects used by downstream reconstruction. + * In simulation mode, the per-wire cuts and data-only ADC/ToT corrections are bypassed, + * and truth information is additionally read from the {@code MC::True} bank into {@link TrueHit}s. + */ public class HitReader { private ArrayList _AHDCHits; private ArrayList _TrueAHDCHits; private boolean sim = false; - private IndexedTable rawHitCutsTable; - private IndexedTable timeOffsetsTable; - private IndexedTable timeToDistanceWireTable; - private IndexedTable timeOverThresholdTable; - private IndexedTable adcGainsTable; - - public HitReader(DataEvent event, AlertDCDetector detector, boolean simulation, - IndexedTable rawHitCuts, - IndexedTable timeOffsets, - IndexedTable timeToDistanceWire, - IndexedTable timeOverThreshold, - IndexedTable adcGains) { + /** + * Constructs a HitReader and eagerly populates the hit lists from the given event. + * After construction, retrieve the results via {@link #get_AHDCHits()} and + * (in simulation) {@link #get_TrueAHDCHits()}. + * + * @param event current event containing the {@code AHDC::adc} bank (and {@code MC::True} in sim) + * @param detector AHDC geometry used to resolve wire positions on each hit + * @param simulation {@code true} for Monte Carlo events; disables data-only cuts and corrections + * @param rawHitCutsTable per-wire acceptance cuts (time, ToT, ADC, pedestal min/max) + * @param timeOffsetsTable per-wire {@code t0} offsets applied to the leading-edge time + * @param timeToDistanceWireTable per-wire T2D calibration coefficients used to convert time to DOCA + * @param timeOverThresholdTable per-wire ToT correction factors (applied in data mode only) + * @param adcGainsTable per-wire ADC gain corrections (applied in data mode only) + */ + public HitReader(DataEvent event, AlertDCDetector detector, boolean simulation, IndexedTable rawHitCutsTable, IndexedTable timeOffsetsTable, + IndexedTable timeToDistanceWireTable, IndexedTable timeOverThresholdTable, IndexedTable adcGainsTable) { sim = simulation; - fetch_AHDCHits(event, detector, rawHitCuts, timeOffsets, timeToDistanceWire, timeOverThreshold, adcGains); + fetch_AHDCHits(event, detector, rawHitCutsTable, timeOffsetsTable, timeToDistanceWireTable, timeOverThresholdTable, adcGainsTable); if (simulation) fetch_TrueAHDCHits(event); } - public double T2Dfunction(int sector, int layer, int wire, double time){ + /** + * Converts a calibrated drift time into a distance-of-closest-approach (DOCA) for a + * given wire, using the piecewise T2D calibration stored in {@code timeToDistanceWireTable}. + * + *

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

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

    + *
  1. applies the per-wire time offset {@code t0} (subtracting event start time in data mode),
  2. + *
  3. in data mode, corrects time-over-threshold and enforces per-wire acceptance cuts + * (time, ToT, ADC, pedestal, and {@code wfType <= 2}) — hits failing the cuts are dropped,
  4. + *
  5. computes the DOCA from the calibrated time via {@link #T2Dfunction} (DOCA forced to 0 + * when {@code time < 0}),
  6. + *
  7. in data mode, applies the per-wire ADC gain correction,
  8. + *
  9. instantiates a {@link Hit}, resolves its wire position via the geometry, and stores the + * calibrated ADC and ToT on it.
  10. + *
+ * The resulting list is stored via {@link #set_AHDCHits(ArrayList)} (empty if the bank is absent). + * + * @param event current event + * @param detector AHDC geometry used to set each hit's wire position + * @param rawHitCutsTable per-wire acceptance cuts (data mode only) + * @param timeOffsetsTable per-wire {@code t0} + * @param timeToDistanceWireTable per-wire T2D coefficients + * @param timeOverThresholdTable per-wire ToT correction factors (data mode only) + * @param adcGainsTable per-wire ADC gain corrections (data mode only) + */ + private void fetch_AHDCHits(DataEvent event, AlertDCDetector detector, IndexedTable rawHitCutsTable, IndexedTable timeOffsetsTable, + IndexedTable timeToDistanceWireTable, IndexedTable timeOverThresholdTable, IndexedTable adcGainsTable) { ArrayList hits = new ArrayList<>(); if (!event.hasBank("AHDC::adc")) { @@ -92,16 +135,6 @@ public final void fetch_AHDCHits(DataEvent event, AlertDCDetector detector, double adcOffset = bankDGTZ.getFloat("ped", i); int wfType = bankDGTZ.getShort("wfType", i); - // Raw hit cuts - double t_min = rawHitCutsTable.getDoubleValue("t_min", sector, number, wire); - double t_max = rawHitCutsTable.getDoubleValue("t_max", sector, number, wire); - double tot_min = rawHitCutsTable.getDoubleValue("tot_min", sector, number, wire); - double tot_max = rawHitCutsTable.getDoubleValue("tot_max", sector, number, wire); - double adc_min = rawHitCutsTable.getDoubleValue("adc_min", sector, number, wire); - double adc_max = rawHitCutsTable.getDoubleValue("adc_max", sector, number, wire); - double ped_min = rawHitCutsTable.getDoubleValue("ped_min", sector, number, wire); - double ped_max = rawHitCutsTable.getDoubleValue("ped_max", sector, number, wire); - // Time calibration double t0 = timeOffsetsTable.getDoubleValue("t0", sector, number, wire); double time = leadingEdgeTime - t0 - startTime; @@ -111,21 +144,30 @@ public final void fetch_AHDCHits(DataEvent event, AlertDCDetector detector, if (!sim) { double totCorr = timeOverThresholdTable.getDoubleValue("totCorr", sector, number, wire); if (totCorr != 0.0) totUsed = timeOverThreshold * totCorr; - } - - // Hit selection (cuts) - boolean passCuts = - (wfType <= 2) && - (adcRaw >= adc_min) && (adcRaw <= adc_max) && - (time >= t_min) && (time <= t_max) && - (timeOverThreshold >= tot_min) && (timeOverThreshold <= tot_max) && - (adcOffset >= ped_min) && (adcOffset <= ped_max); - if (!passCuts && !sim) continue; + // Hit selection (cuts) — only applied on data, bypassed in sim + long hash = rawHitCutsTable.getList().getIndexGenerator().hashCode(sector, number, wire); + double t_min = rawHitCutsTable.getDoubleValueByHash("t_min", hash); + double t_max = rawHitCutsTable.getDoubleValueByHash("t_max", hash); + double tot_min = rawHitCutsTable.getDoubleValueByHash("tot_min", hash); + double tot_max = rawHitCutsTable.getDoubleValueByHash("tot_max", hash); + double adc_min = rawHitCutsTable.getDoubleValueByHash("adc_min", hash); + double adc_max = rawHitCutsTable.getDoubleValueByHash("adc_max", hash); + double ped_min = rawHitCutsTable.getDoubleValueByHash("ped_min", hash); + double ped_max = rawHitCutsTable.getDoubleValueByHash("ped_max", hash); + + boolean passCuts = + (wfType <= 2) && + (adcRaw >= adc_min) && (adcRaw <= adc_max) && + (time >= t_min) && (time <= t_max) && + (timeOverThreshold >= tot_min) && (timeOverThreshold <= tot_max) && + (adcOffset >= ped_min) && (adcOffset <= ped_max); + + if (!passCuts) continue; + } // DOCA from calibrated time - double doca = T2Dfunction(sector, number, wire, time); - if (time < 0) doca = 0.0; + double doca = (time < 0) ? 0.0 : T2Dfunction(sector, number, wire, time, timeToDistanceWireTable); // ADC gain calibration double adcCal = adcRaw; @@ -144,7 +186,15 @@ public final void fetch_AHDCHits(DataEvent event, AlertDCDetector detector, this.set_AHDCHits(hits); } - public final void fetch_TrueAHDCHits(DataEvent event) { + /** + * Reads Monte-Carlo truth information from the {@code MC::True} bank into a list of + * {@link TrueHit}s (particle id and average hit position/energy). Called only when + * the reader is constructed with {@code simulation = true}. If the bank is absent, + * the resulting list is empty. + * + * @param event current event + */ + private void fetch_TrueAHDCHits(DataEvent event) { ArrayList truehits = new ArrayList<>(); @@ -164,18 +214,36 @@ public final void fetch_TrueAHDCHits(DataEvent event) { this.set_TrueAHDCHits(truehits); } + /** + * @return the calibrated AHDC hits produced from the current event; never {@code null} + * (empty if the {@code AHDC::adc} bank is missing) + */ public ArrayList get_AHDCHits() { return _AHDCHits; } + /** + * Replaces the internally stored list of AHDC hits. Primarily used by {@link #fetch_AHDCHits}. + * + * @param hits the list to store + */ public void set_AHDCHits(ArrayList hits) { this._AHDCHits = hits; } + /** + * @return the MC-truth hits for the current event (populated only in simulation mode; + * {@code null} for data events where {@code fetch_TrueAHDCHits} was not called) + */ public ArrayList get_TrueAHDCHits() { return _TrueAHDCHits; } + /** + * Replaces the internally stored list of MC-truth hits. Primarily used by {@link #fetch_TrueAHDCHits}. + * + * @param trueHits the list to store + */ public void set_TrueAHDCHits(ArrayList trueHits) { this._TrueAHDCHits = trueHits; } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/ATOFHit.java b/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/ATOFHit.java index c04a4ad4d4..a1812a237b 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/ATOFHit.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/ATOFHit.java @@ -27,7 +27,7 @@ public class ATOFHit { private boolean isInACluster; private int associatedClusterIndex; int idTDC; - private IndexedTable atofTimeOffsets; + private IndexedTable atofTimeOffsetsTable; public int getSector() { @@ -197,10 +197,10 @@ public final int convertTdcToTime() { if(this.startTime!= null) this.time -= this.startTime; //Time offsets - if (atofTimeOffsets == null) return 0; + if (atofTimeOffsetsTable == null) return 0; int order0 = 0; - double t0 = atofTimeOffsets.getDoubleValue("t0", this.sector, this.layer, this.component, order0); - double tud = atofTimeOffsets.getDoubleValue("upstream_downstream", this.sector, this.layer, this.component, order0); + double t0 = atofTimeOffsetsTable.getDoubleValue("t0", this.sector, this.layer, this.component, order0); + double tud = atofTimeOffsetsTable.getDoubleValue("upstream_downstream", this.sector, this.layer, this.component, order0); //The rest of the constants are not used for now /*double twb = timeOffsets[2]; double xtra1 = timeOffsets[3]; @@ -400,7 +400,7 @@ public double getPhi() { * spatial coordinates. */ public ATOFHit(int sector, int layer, int component, int order, int tdc, int tot, Float startTime, Detector atof, - IndexedTable atofTimeOffsets) { + IndexedTable atofTimeOffsetsTable) { this.sector = sector; this.layer = layer; this.component = component; @@ -408,7 +408,7 @@ public ATOFHit(int sector, int layer, int component, int order, int tdc, int tot this.tdc = tdc; this.tot = tot; this.startTime = startTime; - this.atofTimeOffsets = atofTimeOffsets; + this.atofTimeOffsetsTable = atofTimeOffsetsTable; this.isInACluster = false; this.makeType(); diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/BarHit.java b/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/BarHit.java index b60ecbdc2a..4dd8a94b12 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/BarHit.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/BarHit.java @@ -106,7 +106,7 @@ public final void computeEnergy() { this.setEnergy(Edep_up + Edep_down); } - public BarHit(ATOFHit hit_down, ATOFHit hit_up, IndexedTable atofEffectiveVelocity) { + public BarHit(ATOFHit hit_down, ATOFHit hit_up, IndexedTable atofEffectiveVelocityTable) { boolean hits_match = hit_down.matchBar(hit_up); if (!hits_match) { throw new UnsupportedOperationException("Hits do not match \n"); @@ -122,7 +122,7 @@ public BarHit(ATOFHit hit_down, ATOFHit hit_up, IndexedTable atofEffectiveVeloci this.setY(hit_up.getY()); //CCDB readout for the effective velocity - this.vEff = atofEffectiveVelocity.getDoubleValue("veff", this.getSector(), this.getLayer(), this.getComponent()); + this.vEff = atofEffectiveVelocityTable.getDoubleValue("veff", this.getSector(), this.getLayer(), this.getComponent()); this.computeZ(); this.computeTime(); this.computeEnergy(); diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/HitFinder.java b/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/HitFinder.java index 3970f11139..918cefa864 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/HitFinder.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/atof/hit/HitFinder.java @@ -65,8 +65,8 @@ public void setWedgeHits(ArrayList wedge_hits) { * the sector/layer/component to x/y/z. */ public void findHits(DataEvent event, Detector atof, Float startTime, - IndexedTable atofTimeOffsets, - IndexedTable atofEffectiveVelocity) { + IndexedTable atofTimeOffsetsTable, + IndexedTable atofEffectiveVelocityTable) { //For each event a list of bar hits and a list of wedge hits are filled this.barHits.clear(); this.wedgeHits.clear(); @@ -92,7 +92,7 @@ public void findHits(DataEvent event, Detector atof, Float startTime, int tot = bank.getInt("ToT", i); //Building a Hit - ATOFHit hit = new ATOFHit(sector, layer, component, order, tdc, tot, startTime, atof, atofTimeOffsets); + ATOFHit hit = new ATOFHit(sector, layer, component, order, tdc, tot, startTime, atof, atofTimeOffsetsTable); if (hit.getEnergy() < 0.01) { continue; //energy threshold } @@ -127,7 +127,7 @@ public void findHits(DataEvent event, Detector atof, Float startTime, //Matching the hits: if same module and different order, they make up a bar hit if (this_hit_up.matchBar(this_hit_down)) { //Bar hits are matched to ahdc tracks and listed - BarHit this_bar_hit = new BarHit(this_hit_down, this_hit_up, atofEffectiveVelocity); + BarHit this_bar_hit = new BarHit(this_hit_down, this_hit_up, atofEffectiveVelocityTable); //Only add bar hits for which the time sum is in time if(!this_bar_hit.isInTime()) continue; this.barHits.add(this_bar_hit); diff --git a/reconstruction/alert/src/main/java/org/jlab/service/ahdc/AHDCEngine.java b/reconstruction/alert/src/main/java/org/jlab/service/ahdc/AHDCEngine.java index 8d4252fd28..66b965825c 100644 --- a/reconstruction/alert/src/main/java/org/jlab/service/ahdc/AHDCEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/service/ahdc/AHDCEngine.java @@ -1,7 +1,6 @@ package org.jlab.service.ahdc; import org.jlab.clas.reco.ReconstructionEngine; -import org.jlab.clas.tracking.kalmanfilter.Material; import org.jlab.io.base.DataBank; import org.jlab.io.base.DataEvent; import org.jlab.io.hipo.HipoDataSource; @@ -17,7 +16,6 @@ import org.jlab.rec.ahdc.Hit.Hit; import org.jlab.rec.ahdc.Hit.HitReader; import org.jlab.rec.ahdc.HoughTransform.HoughTransform; -import org.jlab.rec.ahdc.KalmanFilter.MaterialMap; import org.jlab.rec.ahdc.PreCluster.PreCluster; import org.jlab.rec.ahdc.PreCluster.PreClusterFinder; import org.jlab.rec.ahdc.Track.Track; @@ -43,10 +41,7 @@ public class AHDCEngine extends ReconstructionEngine { static final Logger LOGGER = Logger.getLogger(AHDCEngine.class.getName()); - private boolean simulation; - - /// Material Map used by Kalman filter - private HashMap materialMap; + private boolean simulation = false; private ModelTrackFinding modelTrackFinding; private ModeTrackFinding modeTrackFinding = ModeTrackFinding.AI_Track_Finding; @@ -57,11 +52,11 @@ public class AHDCEngine extends ReconstructionEngine { private ModeAHDC ahdcExtractor = new ModeAHDC(); // AHDC calibration tables (instance-level, refreshed on run change) - private IndexedTable ahdcTimeOffsets; - private IndexedTable ahdcTimeToDistanceWire; - private IndexedTable ahdcRawHitCuts; - private IndexedTable ahdcAdcGains; - private IndexedTable ahdcTimeOverThreshold; + private IndexedTable ahdcTimeOffsetsTable; + private IndexedTable ahdcTimeToDistanceWireTable; + private IndexedTable ahdcRawHitCutsTable; + private IndexedTable ahdcAdcGainsTable; + private IndexedTable ahdcTimeOverThresholdTable; int Run = -1; @@ -76,9 +71,6 @@ public boolean init(ModeTrackFinding m) { public boolean init() { factory = (new AlertDCFactory()).createDetectorCLAS(new DatabaseConstantProvider()); - simulation = false; - - if (materialMap == null) materialMap = MaterialMap.generateMaterials(); String modeConfig = this.getEngineConfigString("Mode"); if (modeConfig != null) modeTrackFinding = ModeTrackFinding.valueOf(modeConfig); @@ -92,10 +84,8 @@ public boolean init() { tableMap.put("/calibration/alert/ahdc/time_over_threshold", 3); requireConstants(tableMap); - - this.getConstantsManager().setVariation("default"); - - this.registerOutputBank("AHDC::hits","AHDC::preclusters","AHDC::clusters","AHDC::track","AHDC::mc","AHDC::ai:prediction"); + this.getConstantsManager().setVariation("default"); + this.registerOutputBank("AHDC::hits","AHDC::preclusters","AHDC::clusters","AHDC::track","AHDC::mc","AHDC::ai:prediction","AHDC::interclusters","AHDC::docaclusters"); return true; } @@ -115,11 +105,11 @@ public boolean processDataEvent(DataEvent event) { return false; } if(Run != newRun) { - ahdcTimeOffsets = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/time_offsets"); - ahdcTimeToDistanceWire = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/time_to_distance_wire"); - ahdcRawHitCuts = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/raw_hit_cuts"); - ahdcAdcGains = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/gains"); - ahdcTimeOverThreshold = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/time_over_threshold"); + ahdcTimeOffsetsTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/time_offsets"); + ahdcTimeToDistanceWireTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/time_to_distance_wire"); + ahdcRawHitCutsTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/raw_hit_cuts"); + ahdcAdcGainsTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/gains"); + ahdcTimeOverThresholdTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/time_over_threshold"); Run = newRun; } } @@ -127,8 +117,8 @@ public boolean processDataEvent(DataEvent event) { if (event.hasBank("AHDC::adc")) { // I) Read raw hits HitReader hitReader = new HitReader(event, factory, simulation, - ahdcRawHitCuts, ahdcTimeOffsets, ahdcTimeToDistanceWire, - ahdcTimeOverThreshold, ahdcAdcGains); + ahdcRawHitCutsTable, ahdcTimeOffsetsTable, ahdcTimeToDistanceWireTable, + ahdcTimeOverThresholdTable, ahdcAdcGainsTable); ArrayList AHDC_Hits = hitReader.get_AHDCHits(); // II) Create PreClusters @@ -147,14 +137,15 @@ public boolean processDataEvent(DataEvent event) { // Otherwise, the conventional methods (Hough Transform or distance) use clusters. // Safety check: if too many hits, rely on conventional track finding + ModeTrackFinding effectiveMode = modeTrackFinding; if (AHDC_Hits.size() > MAX_HITS_FOR_AI) { LOGGER.info("Too many AHDC_Hits in AHDC::adc, rely on conventional track finding for this event"); - modeTrackFinding = ModeTrackFinding.CV_Distance; + effectiveMode = ModeTrackFinding.CV_Distance; } ArrayList AHDC_Tracks = new ArrayList<>(); - if (modeTrackFinding == ModeTrackFinding.AI_Track_Finding) { + if (effectiveMode == ModeTrackFinding.AI_Track_Finding) { // 1) Create inter-clusters from pre-clusters PreClustering preClustering = new PreClustering(); ArrayList inter_clusters = preClustering.mergePreclusters(AHDC_PreClusters); @@ -178,12 +169,26 @@ public boolean processDataEvent(DataEvent event) { throw new RuntimeException(e); } - // 4) Use the output for the AI model to select the good tracks among the candidates + // 4) Select good tracks via greedy non-overlap: sort predictions by score + // descending, accept the highest-scoring prediction, mark its PreClusters + // as claimed, and skip any later prediction that reuses a claimed PreCluster. + // The AI candidate generator routinely emits overlapping predictions (each + // PreCluster can feed several combinations), and because set_trackId mutates + // the shared Hit references in place, a naive "accept all above threshold" + // pass would let later tracks silently steal earlier tracks' hits and leave + // them orphaned in AHDC::hits. Greedy selection enforces one-hit-one-track. + predictions.sort((a, b) -> Float.compare(b.getPrediction(), a.getPrediction())); + Set claimedPreclusters = new HashSet<>(); for (TrackPrediction t : predictions) { - if (t.getPrediction() > TRACK_FINDING_AI_THRESHOLD) AHDC_Tracks.add(new Track(t.getClusters())); + if (t.getPrediction() <= TRACK_FINDING_AI_THRESHOLD) continue; + boolean overlaps = false; + for (PreCluster pc : t.getPreclusters()) { + if (claimedPreclusters.contains(pc)) { overlaps = true; break; } + } + if (overlaps) continue; + claimedPreclusters.addAll(t.getPreclusters()); + AHDC_Tracks.add(new Track(t.getClusters())); } - // The assignment of Track ID to all objects is done in the Kalman filter step below - // I don't know if it is a good idea. } else { // Conventional Track Finding: Hough Transform or Distance: use cluster informations to find tracks @@ -193,12 +198,12 @@ public boolean processDataEvent(DataEvent event) { ArrayList AHDC_Clusters = clusterfinder.get_AHDCClusters(); // 2) Find tracks using the selected conventional method - if (modeTrackFinding == ModeTrackFinding.CV_Distance) { + if (effectiveMode == ModeTrackFinding.CV_Distance) { Distance distance = new Distance(); distance.find_track(AHDC_Clusters); AHDC_Tracks = distance.get_AHDCTracks(); } - else if (modeTrackFinding == ModeTrackFinding.CV_Hough) { + else if (effectiveMode == ModeTrackFinding.CV_Hough) { HoughTransform houghtransform = new HoughTransform(); houghtransform.find_tracks(AHDC_Clusters); AHDC_Tracks = houghtransform.get_AHDCTracks(); diff --git a/reconstruction/alert/src/main/java/org/jlab/service/alert/ALERTEngine.java b/reconstruction/alert/src/main/java/org/jlab/service/alert/ALERTEngine.java index 3b6444e46e..a899e20c8a 100644 --- a/reconstruction/alert/src/main/java/org/jlab/service/alert/ALERTEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/service/alert/ALERTEngine.java @@ -76,7 +76,7 @@ public class ALERTEngine extends ReconstructionEngine { private ModelPrePID modelPrePID; // AHDC calibration table (refreshed on run change) - private IndexedTable ahdcAdcGains; + private IndexedTable ahdcAdcGainsTable; public void setB(double B) { this.b = B; @@ -152,7 +152,7 @@ public boolean processDataEvent(DataEvent event) { if (run.get() == 0 || (run.get() != 0 && run.get() != newRun)) { run.set(newRun); - ahdcAdcGains = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/gains"); + ahdcAdcGainsTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/ahdc/gains"); } //Do we need to read the event vx,vy,vz? @@ -359,20 +359,26 @@ public boolean processDataEvent(DataEvent event) { AHDC_hits.add(hit); } } - if (AHDC_hits.isEmpty()) continue; // It can happen that a track has no associated hit, in this case we skip it for the Kalman Filter - AHDC_tracks.add(new Track(AHDC_hits)); // Initialise the position and the momentum using the information of the AHDC::track // position : mm // momentum : MeV - double x = trackBank.getFloat("x", row); - double y = trackBank.getFloat("y", row); - double z = trackBank.getFloat("z", row); - double px = trackBank.getFloat("px", row); - double py = trackBank.getFloat("py", row); - double pz = trackBank.getFloat("pz", row); - double[] vec = {x, y, z, px, py, pz}; - AHDC_tracks.get(row).setPositionAndMomentumVec(vec); - AHDC_tracks.get(row).set_trackId(trackid); + // Invariant: AHDC_hits is non-empty. AHDCEngine's AI_Track_Finding path uses greedy + // non-overlap selection so each PreCluster (and thus each Hit) belongs to at most one + // surviving track, so the set_trackId stamping is unambiguous and every AHDC::track + // row has matching AHDC::hits rows. If this invariant ever flips, the get(0) inside + // Track(ArrayList) fails loudly here, which is the right signal. + Track newTrack = new Track(AHDC_hits); + double[] vec = { + trackBank.getFloat("x", row), + trackBank.getFloat("y", row), + trackBank.getFloat("z", row), + trackBank.getFloat("px", row), + trackBank.getFloat("py", row), + trackBank.getFloat("pz", row) + }; + newTrack.setPositionAndMomentumVec(vec); + newTrack.set_trackId(trackid); + AHDC_tracks.add(newTrack); } // intialise the Kalman Filter double magfieldfactor = runBank.getFloat("solenoid", 0); diff --git a/reconstruction/alert/src/main/java/org/jlab/service/atof/ATOFEngine.java b/reconstruction/alert/src/main/java/org/jlab/service/atof/ATOFEngine.java index 7e4974ef3a..ad15498413 100644 --- a/reconstruction/alert/src/main/java/org/jlab/service/atof/ATOFEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/service/atof/ATOFEngine.java @@ -55,10 +55,10 @@ public Detector getATOF() { int Run = -1; // ATOF calibration tables (instance-level, refreshed on run change) - private IndexedTable atofEffectiveVelocity; - private IndexedTable atofTimeWalk; - private IndexedTable atofAttenuationLength; - private IndexedTable atofTimeOffsets; + private IndexedTable atofEffectiveVelocityTable; + private IndexedTable atofTimeWalkTable; + private IndexedTable atofAttenuationLengthTable; + private IndexedTable atofTimeOffsetsTable; @Override public boolean processDataEvent(DataEvent event) { @@ -87,10 +87,10 @@ public boolean processDataEvent(DataEvent event) { } int newRun = runNo; if(Run!=newRun) { - atofEffectiveVelocity = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/effective_velocity"); - atofTimeWalk = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/time_walk"); - atofAttenuationLength = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/attenuation"); - atofTimeOffsets = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/time_offsets"); + atofEffectiveVelocityTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/effective_velocity"); + atofTimeWalkTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/time_walk"); + atofAttenuationLengthTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/attenuation"); + atofTimeOffsetsTable = this.getConstantsManager().getConstants(newRun, "/calibration/alert/atof/time_offsets"); Run = newRun; } @@ -111,7 +111,7 @@ public boolean processDataEvent(DataEvent event) { //Hit finder init HitFinder hitfinder = new HitFinder(); - hitfinder.findHits(event, ATOF, startTime, atofTimeOffsets, atofEffectiveVelocity); + hitfinder.findHits(event, ATOF, startTime, atofTimeOffsetsTable, atofEffectiveVelocityTable); ArrayList WedgeHits = hitfinder.getWedgeHits(); ArrayList BarHits = hitfinder.getBarHits(); //Exit if hit lists are empty diff --git a/reconstruction/band/pom.xml b/reconstruction/band/pom.xml index 4ba1e672d7..a985e8bcd6 100644 --- a/reconstruction/band/pom.xml +++ b/reconstruction/band/pom.xml @@ -4,35 +4,35 @@ org.jlab.clas12.detector clas12detector-band - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/bg/pom.xml b/reconstruction/bg/pom.xml index 29b74cc53c..3f862882d7 100644 --- a/reconstruction/bg/pom.xml +++ b/reconstruction/bg/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-bg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -18,19 +18,19 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/calib/pom.xml b/reconstruction/calib/pom.xml index 518b0e01fc..8e800e62f9 100644 --- a/reconstruction/calib/pom.xml +++ b/reconstruction/calib/pom.xml @@ -6,13 +6,13 @@ org.jlab.clas12.detector clas12detector-calib - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -20,19 +20,19 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/cnd/pom.xml b/reconstruction/cnd/pom.xml index bbed982553..13ec3a10a4 100644 --- a/reconstruction/cnd/pom.xml +++ b/reconstruction/cnd/pom.xml @@ -4,45 +4,45 @@ org.jlab.clas12.detector clas12detector-cnd - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-cvt - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/cvt/pom.xml b/reconstruction/cvt/pom.xml index b4111dc9e4..258c6ed025 100644 --- a/reconstruction/cvt/pom.xml +++ b/reconstruction/cvt/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-cvt - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -26,63 +26,63 @@ cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test org.jlab.clas clas-tracking - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-eb - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test jar diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/cross/Cross.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/cross/Cross.java index fcc5cc01e9..2dfc4b60e0 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/cross/Cross.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/cross/Cross.java @@ -616,33 +616,38 @@ public int getSVTCosmicsRegion() { @Override public int compareTo(Cross arg) { - int return_val = 0; - if(Constants.getInstance().isCosmics) { + int return_val; + if (Constants.getInstance().isCosmics) { int RegComp = this.getSVTCosmicsRegion() < arg.getSVTCosmicsRegion() ? -1 : this.getSVTCosmicsRegion() == arg.getSVTCosmicsRegion() ? 0 : 1; int IDComp = this.getId() < arg.getId() ? -1 : this.getId() == arg.getId() ? 0 : 1; - return_val = ((RegComp == 0) ? IDComp : RegComp); - } else { - - //int thisreg = (this.getDetector().equalsIgnoreCase("BMT")) ? 3 + bgeom.getLayer( this.getRegion(), this.getDetectorType()) : this.getRegion(); - //int argreg = (arg.getDetector().equalsIgnoreCase("BMT")) ? 3 + bgeom.getLayer( arg.getRegion(), arg.getDetectorType()) : arg.getRegion(); + } + else { + int thisreg = this.getOrderedRegion(); int argreg = arg.getOrderedRegion(); int RegComp = thisreg < argreg ? -1 : thisreg == argreg ? 0 : 1; -// int RegComp = this.getRegion() < arg.getRegion() ? -1 : this.getRegion() == arg.getRegion() ? 0 : 1; // check that is not BMTC for phi comparison if( Double.isNaN(arg.getPoint().x())==false && Double.isNaN(this.getPoint().x())==false ) { - int PhiComp = this.getPoint0().toVector3D().phi() < arg.getPoint0().toVector3D().phi() ? -1 : this.getPoint0().toVector3D().phi() == arg.getPoint0().toVector3D().phi() ? 0 : 1; - - return_val = ((RegComp == 0) ? PhiComp : RegComp); + if (RegComp == 0) { + double phi0 = this.getPoint0().toVector3D().phi(); + double phi1 = arg.getPoint0().toVector3D().phi(); + return_val = phi0 < phi1 ? -1 : phi0 == phi1 ? 0 : 1; + } + else { + return_val = RegComp; + } } else { - int ZComp = this.getPoint0().z() < arg.getPoint0().z() ? -1 : this.getPoint0().z() == arg.getPoint0().z() ? 0 : 1; - return_val = ((RegComp == 0) ? ZComp : RegComp); + if (RegComp == 0) { + return_val = this.getPoint0().z() < arg.getPoint0().z() ? -1 : this.getPoint0().z() == arg.getPoint0().z() ? 0 : 1; + } + else { + return_val = RegComp; + } } } - return return_val; } diff --git a/reconstruction/dc/pom.xml b/reconstruction/dc/pom.xml index 9fe4136e6d..2724d7d10b 100644 --- a/reconstruction/dc/pom.xml +++ b/reconstruction/dc/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-dc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -33,69 +33,69 @@ cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test org.jlab.clas clas-tracking - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-ai - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test org.jlab.clas clas-math - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys snr - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.plugins @@ -105,7 +105,7 @@ org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT junit diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java index e11d0ac1b6..ad651acd4e 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java @@ -519,14 +519,15 @@ private void addReverseTT(int run, IndexedTable tt) { int crate = tt.getList().getIndexGenerator().getIndex((long)key, 0); int slot = tt.getList().getIndexGenerator().getIndex((long)key, 1); int channel = tt.getList().getIndexGenerator().getIndex((long)key, 2); - int sector = tt.getIntValue("sector", crate,slot,channel); - int layer = tt.getIntValue("layer", crate,slot,channel); - int comp = tt.getIntValue("component", crate,slot,channel); - int order = tt.getIntValue("order", crate,slot,channel); + int sector = tt.getIntValueByHash(0, (long)key); + int layer = tt.getIntValueByHash(1, (long)key); + int comp = tt.getIntValueByHash(2, (long)key); + int order = tt.getIntValueByHash(3, (long)key); reverse.addEntry(sector, layer, comp, order); - reverse.setIntValue(crate, "crate", sector, layer, comp, order); - reverse.setIntValue(slot, "slot", sector, layer, comp, order); - reverse.setIntValue(channel, "channel", sector, layer, comp, order); + long hash = IndexedTable.DEFAULT_GENERATOR.hashCode(sector,layer,comp,order); + reverse.setIntValueByHash(crate, 0, hash); + reverse.setIntValueByHash(slot, 1, hash); + reverse.setIntValueByHash(channel, 2, hash); } reverseTTs.put(run, reverse); } diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterCleanerUtilities.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterCleanerUtilities.java index 6ab72f997e..48643ca6e2 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterCleanerUtilities.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterCleanerUtilities.java @@ -17,14 +17,13 @@ public class ClusterCleanerUtilities { private static final Logger LOGGER = Logger.getLogger(ClusterCleanerUtilities.class.getName()); + private List> sortedHits; + public ClusterCleanerUtilities() { - List> sortdHits = new ArrayList<>(); - for(int l = 0; l < 6; l++) { - sortdHits.add(new ArrayList<>()); - } - sortedHits = sortdHits; + sortedHits = new ArrayList<>(); + for(int l = 0; l < 6; l++) sortedHits.add(new ArrayList<>()); } - private List> sortedHits = null; + /** * * Pattern Recognition step for identifying clusters in a clump: Find the @@ -220,7 +219,6 @@ public List ClusterSplitter(FittedCluster clus, int nextClsStartI FittedCluster bestCls = OverlappingClusterResolver(cluster, splitclusters); if (bestCls != null) { - if (!(selectedClusList.contains(bestCls))) { selectedClusList.add(bestCls); } @@ -237,7 +235,6 @@ public List ClusterSplitter(FittedCluster clus, int nextClsStartI FittedCluster bestCls = OverlappingClusterResolver(cluster, selectedClusList); if (bestCls != null) { - if (!(selectedClusList2.contains(bestCls))) { selectedClusList2.add(bestCls); } @@ -283,12 +280,9 @@ public List> byLayerListSorter(List DCHits, int sector, int super */ public int count_nlayers_hit(Hit[] hits_inlayer) { int nlayr = 6; - Hit[] allhits_inlayer = new Hit[nlayr]; - allhits_inlayer = hits_inlayer; - int nlayers_hit = 0; for (int la = 0; la < nlayr; la++) { - if (allhits_inlayer[la] != null) { + if (hits_inlayer[la] != null) { nlayers_hit++; } } @@ -341,7 +335,6 @@ public FittedCluster LRAmbiguityResolver(DataEvent event, FittedCluster fClus, if (hit.get_LeftRightAmb() == 0) { index++; } - } if (index == 0) { return fClus; // cluster OK @@ -445,7 +438,7 @@ public FittedCluster LRAmbiguityResolver(DataEvent event, FittedCluster fClus, arrayOfClus.get(0).addAll(okClus); arrayOfClus.get(1).addAll(okClus); } - if (index == 2) { + else if (index == 2) { for (int i1 = 0; i1 < totNotLRClus.size(); i1++) { for (int i2 = 2; i2 < totNotLRClus.size(); i2++) { if (totNotLRClus.get(i1).get_Id() == totNotLRClus.get(i2).get_Id()) { @@ -459,8 +452,7 @@ public FittedCluster LRAmbiguityResolver(DataEvent event, FittedCluster fClus, } } } - - if (index == 3) { + else if (index == 3) { for (int i1 = 0; i1 < totNotLRClus.size(); i1++) { for (int i2 = 2; i2 < totNotLRClus.size(); i2++) { for (int i3 = 4; i3 < totNotLRClus.size(); i3++) { @@ -479,8 +471,7 @@ public FittedCluster LRAmbiguityResolver(DataEvent event, FittedCluster fClus, } } } - - if (index == 4) { + else if (index == 4) { for (int i1 = 0; i1 < totNotLRClus.size(); i1++) { for (int i2 = 2; i2 < totNotLRClus.size(); i2++) { for (int i3 = 4; i3 < totNotLRClus.size(); i3++) { @@ -505,8 +496,7 @@ public FittedCluster LRAmbiguityResolver(DataEvent event, FittedCluster fClus, } } } - - if (index == 5) { + else if (index == 5) { for (int i1 = 0; i1 < totNotLRClus.size(); i1++) { for (int i2 = 2; i2 < totNotLRClus.size(); i2++) { for (int i3 = 4; i3 < totNotLRClus.size(); i3++) { @@ -538,8 +528,7 @@ public FittedCluster LRAmbiguityResolver(DataEvent event, FittedCluster fClus, } } } - - if (index == 6) { + else if (index == 6) { for (int i1 = 0; i1 < totNotLRClus.size(); i1++) { for (int i2 = 2; i2 < totNotLRClus.size(); i2++) { for (int i3 = 4; i3 < totNotLRClus.size(); i3++) { @@ -613,14 +602,14 @@ public FittedCluster SecondariesRemover(DataEvent event, FittedCluster clus, Clu if (hitsInLayer.isEmpty()) { continue; } - if (hitsInLayer.size() == 1) { + else if (hitsInLayer.size() == 1) { baseClusterHits.addAll(hitsInLayer); // safe all good hits to base cluster for (int j = 0; j < hitsInLayer.size(); j++) { hitsInLayer.get(j).set_LeftRightAmb(0); hitsInLayer.get(j).updateHitPositionWithTime(event, 1, hitsInLayer.get(j).getB(), tab, DcDetector, tde); } } - if (hitsInLayer.size() == 2) { + else if (hitsInLayer.size() == 2) { double docaSum = 0; for (int j = 0; j < hitsInLayer.size(); j++) { docaSum += hitsInLayer.get(j).get_Doca(); @@ -665,7 +654,6 @@ public FittedCluster SecondariesRemover(DataEvent event, FittedCluster clus, Clu } if (nbLyr > 0) { - for (int[] get : Constants.getInstance().CombArray.get(nbLyr - 1)) { ArrayList hitsInClusterCand = new ArrayList<>(); hitsInClusterCand.addAll(baseClusterHits); @@ -675,6 +663,7 @@ public FittedCluster SecondariesRemover(DataEvent event, FittedCluster clus, Clu hitsInClusCandLists.add(hitsInClusterCand); } } + for (int i = 0; i < hitsInClusCandLists.size(); i++) { FittedCluster newClus = new FittedCluster(clus.getBaseCluster()); for (int i1 = 0; i1 < newClus.size(); i1++) { @@ -794,7 +783,7 @@ public List HitListPruner(List hits) { rmHits.removeAll(kHits); sortedHits.get(l).removeAll(rmHits); } - if(sortedHits.get(l).size()>4 && sortedHits.get(l).size()<10) { + else if(sortedHits.get(l).size()>4 && sortedHits.get(l).size()<10) { ArrayList rmHits = (ArrayList) sortedHits.get(l).clone(); ArrayList kHits = new ArrayList<>(); kHits.add(sortedHits.get(l).get(0)); @@ -804,7 +793,7 @@ public List HitListPruner(List hits) { rmHits.removeAll(kHits); sortedHits.get(l).removeAll(rmHits); } - if(sortedHits.get(l).size()>=10) + else if(sortedHits.get(l).size()>=10) sortedHits.get(l).removeAll(sortedHits.get(l)); } @@ -861,13 +850,13 @@ public FittedCluster IsolatedHitsPruner(FittedCluster clus) { fcluster.add(clus.get(i)); } } - if (layer == 6) // look of neighbor in previous layer + else if (layer == 6) // look of neighbor in previous layer { if (HitArray[layer - 2][wire - 1] != null || HitArray[layer - 2][wire - 2] != null || HitArray[layer - 2][wire] != null || HitArray[layer - 1][wire - 2] != null || HitArray[layer - 1][wire] != null) { fcluster.add(clus.get(i)); } } - if (layer > 1 && layer < 6) // look of neighbor in next and previous layers + else if (layer > 1 && layer < 6) // look of neighbor in next and previous layers { if (HitArray[layer][wire - 1] != null || HitArray[layer][wire - 2] != null || HitArray[layer][wire] != null || HitArray[layer - 2][wire - 1] != null || HitArray[layer - 2][wire - 2] != null || HitArray[layer - 2][wire] != null || HitArray[layer - 1][wire - 2] != null || HitArray[layer - 1][wire] != null) { fcluster.add(clus.get(i)); @@ -929,7 +918,7 @@ public FittedCluster ClusterCleaner(FittedCluster clus, ClusterFitter cf, DCGean baseClusterHits.addAll(hitsInLayer); // safe all good hits to base cluster } - if (hitsInLayer.size() == 2) { + else if (hitsInLayer.size() == 2) { double docaSum = 0; for (int j = 0; j < hitsInLayer.size(); j++) { docaSum += hitsInLayer.get(j).get_Residual(); @@ -963,7 +952,6 @@ public FittedCluster ClusterCleaner(FittedCluster clus, ClusterFitter cf, DCGean } if (nbLyr > 0) { - for (int[] get : Constants.getInstance().CombArray.get(nbLyr - 1)) { ArrayList hitsInClusterCand = new ArrayList<>(); hitsInClusterCand.addAll(baseClusterHits); @@ -973,6 +961,7 @@ public FittedCluster ClusterCleaner(FittedCluster clus, ClusterFitter cf, DCGean hitsInClusCandLists.add(hitsInClusterCand); } } + for (int i = 0; i < hitsInClusCandLists.size(); i++) { FittedCluster newClus = new FittedCluster(clus.getBaseCluster()); for (int i1 = 0; i1 < newClus.size(); i1++) { @@ -982,17 +971,7 @@ public FittedCluster ClusterCleaner(FittedCluster clus, ClusterFitter cf, DCGean clusters.add(newClus); } - // get the best cluster - //LOGGER.log(Level.INFO, " clusters for selection "); - //for(FittedCluster c : clusters) { - // LOGGER.log(Level.INFO, c.printInfo()); - // for(FittedHit h : c) - // LOGGER.log(Level.INFO, h.printInfo()); - //} FittedCluster BestCluster = cf.BestClusterSelector(clusters, "LC"); - //LOGGER.log(Level.INFO, " ---> selected cluster : "); - //for(FittedHit h : BestCluster) - // LOGGER.log(Level.INFO, h.printInfo()); return BestCluster; } diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TableLoader.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TableLoader.java index 1ff5c51e32..3742f6e906 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TableLoader.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TableLoader.java @@ -228,19 +228,16 @@ private static int getAlphaBin(double Alpha) { return bin; } - private static synchronized void FillAlpha() { + private static void FillAlpha() { + final double cos30 = Math.cos(Math.toRadians(30.)); for(int icosalpha =0; icosalphaorg.jlab.clas12.detector clas12detector-eb - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,74 +21,74 @@ cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-dc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-ec - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-tof - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-htcc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-ltcc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT junit diff --git a/reconstruction/ec/pom.xml b/reconstruction/ec/pom.xml index 17346913ff..aedc1a47e5 100644 --- a/reconstruction/ec/pom.xml +++ b/reconstruction/ec/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-ec - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,38 +21,38 @@ org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT test org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT junit diff --git a/reconstruction/fmt/pom.xml b/reconstruction/fmt/pom.xml index 52ec2153e8..633fbb24e2 100644 --- a/reconstruction/fmt/pom.xml +++ b/reconstruction/fmt/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-fmt - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,37 +21,37 @@ org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/ft/pom.xml b/reconstruction/ft/pom.xml index 5530069874..77ca4bc8ad 100644 --- a/reconstruction/ft/pom.xml +++ b/reconstruction/ft/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-ft - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,32 +21,32 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/htcc/pom.xml b/reconstruction/htcc/pom.xml index f2b1042e40..6269c5b7e8 100644 --- a/reconstruction/htcc/pom.xml +++ b/reconstruction/htcc/pom.xml @@ -4,35 +4,35 @@ org.jlab.clas12.detector clas12detector-htcc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/ltcc/pom.xml b/reconstruction/ltcc/pom.xml index 88dfb46ba0..b56d01d75e 100644 --- a/reconstruction/ltcc/pom.xml +++ b/reconstruction/ltcc/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-ltcc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -30,27 +30,27 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/mc/pom.xml b/reconstruction/mc/pom.xml index a3ebbe4489..c5be978515 100644 --- a/reconstruction/mc/pom.xml +++ b/reconstruction/mc/pom.xml @@ -4,35 +4,35 @@ org.jlab.clas12.detector clas12detector-mc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/mltn/pom.xml b/reconstruction/mltn/pom.xml index aa0a5c423b..2fe2256f97 100644 --- a/reconstruction/mltn/pom.xml +++ b/reconstruction/mltn/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-mltn - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -38,13 +38,13 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/mu/pom.xml b/reconstruction/mu/pom.xml index 6364ba88ee..79a1b3bddf 100644 --- a/reconstruction/mu/pom.xml +++ b/reconstruction/mu/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-mu - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -25,42 +25,42 @@ org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/pom.xml b/reconstruction/pom.xml index 0a0869eea7..0befecee4b 100644 --- a/reconstruction/pom.xml +++ b/reconstruction/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT pom org.jlab.clas coatjava - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/postproc/pom.xml b/reconstruction/postproc/pom.xml index a2453d7a5f..dfb46c0607 100644 --- a/reconstruction/postproc/pom.xml +++ b/reconstruction/postproc/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-postproc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -18,19 +18,19 @@ org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-analysis - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/raster/pom.xml b/reconstruction/raster/pom.xml index 7144b80a23..a0e997b026 100644 --- a/reconstruction/raster/pom.xml +++ b/reconstruction/raster/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-raster - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,22 +21,22 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/recoil/pom.xml b/reconstruction/recoil/pom.xml index 094abb26a2..7a8ed1c523 100644 --- a/reconstruction/recoil/pom.xml +++ b/reconstruction/recoil/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-recoil - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,27 +21,27 @@ org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/rich/pom.xml b/reconstruction/rich/pom.xml index f772ffe1f4..5c81bdf09a 100644 --- a/reconstruction/rich/pom.xml +++ b/reconstruction/rich/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-rich - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,37 +21,37 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/rtpc/pom.xml b/reconstruction/rtpc/pom.xml index e1e9697a3e..181992fc12 100644 --- a/reconstruction/rtpc/pom.xml +++ b/reconstruction/rtpc/pom.xml @@ -4,20 +4,20 @@ org.jlab.clas12.detector clas12detector-rtpc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT cnuphys magfield - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.apache.commons @@ -26,33 +26,33 @@ org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-tracking - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT compile org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/swaps/pom.xml b/reconstruction/swaps/pom.xml index 381ffb8f64..8de6b7310d 100644 --- a/reconstruction/swaps/pom.xml +++ b/reconstruction/swaps/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-swaps - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -18,19 +18,19 @@ org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/tof/pom.xml b/reconstruction/tof/pom.xml index 349268aab9..3ff73e323f 100644 --- a/reconstruction/tof/pom.xml +++ b/reconstruction/tof/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-tof - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -18,43 +18,43 @@ org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-physics - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-utils - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/uber/pom.xml b/reconstruction/uber/pom.xml index 99b17c30c2..f033ed8ff1 100644 --- a/reconstruction/uber/pom.xml +++ b/reconstruction/uber/pom.xml @@ -4,110 +4,110 @@ org.jlab.clas12.detector clas12detector-uber - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-dc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-ec - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-tof - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-htcc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-ltcc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-ft - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-cnd - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-band - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-cvt - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-raster - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-vtx - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-calib - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-rtpc - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-rich - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-eb - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-mltn - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas12.detector clas12detector-fmt - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT diff --git a/reconstruction/urwt/pom.xml b/reconstruction/urwt/pom.xml index 79c8de6b87..a1a86403fe 100644 --- a/reconstruction/urwt/pom.xml +++ b/reconstruction/urwt/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-urwt - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT @@ -21,27 +21,27 @@ org.jlab.clas clas-detector - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-jcsg - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT clas12detector-urwt diff --git a/reconstruction/vtx/pom.xml b/reconstruction/vtx/pom.xml index a9ff4c6009..a787878ef4 100644 --- a/reconstruction/vtx/pom.xml +++ b/reconstruction/vtx/pom.xml @@ -4,41 +4,41 @@ org.jlab.clas12.detector clas12detector-vtx - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar org.jlab.clas12 reconstruction - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas swim-tools - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT jar cnuphys swimmer - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-reco - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-io - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT org.jlab.clas clas-geometry - 13.8.3-SNAPSHOT + 13.8.4-SNAPSHOT