From 9881ec4afe90551b879670e54b90886e82ad5177 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Wed, 21 Oct 2026 18:54:07 -0400 Subject: [PATCH] add occupancy banks and bookkeeping class --- .github-ci.yaml | 1 - .github/dependabot.yml | 5 +- .github/workflows/ci.yml | 70 +- .gitignore | 6 +- .gitlab-ci.yml | 14 +- Makefile | 24 + bin/install-clara | 16 +- bin/postprocess2 | 10 - bin/run-groovy | 7 - build-coatjava.sh | 7 +- common-tools/clara-io/pom.xml | 21 +- .../java/org/jlab/io/clara/Clas12Writer.java | 144 +--- .../org/jlab/io/clara/HipoToHipoWriter.java | 71 +- common-tools/clas-analysis/pom.xml | 20 +- .../jlab/analysis/postprocess/Processor.java | 277 ------- .../analysis/postprocess/RebuildScalers.java | 3 +- .../analysis/postprocess/Tag1ToEvent.java | 35 +- common-tools/clas-decay-tools/pom.xml | 24 +- common-tools/clas-detector/pom.xml | 12 +- .../org/jlab/detector/decode/CLASDecoder.java | 8 +- .../jlab/detector/decode/CLASDecoderPool.java | 21 +- .../org/jlab/detector/serial/Occupancer.java | 192 +++++ .../jlab/detector/serial/SerialHoncho.java | 285 +++++++ .../org/jlab/detector/serial/SerialUtil.java} | 6 +- common-tools/clas-geometry/pom.xml | 4 +- common-tools/clas-io/pom.xml | 10 +- .../java/org/jlab/utils/CLASResources.java | 17 +- .../main/java/org/jlab/utils/ClaraYaml.java | 15 +- common-tools/clas-jcsg/pom.xml | 15 +- .../vrl/v3d/ext/org/poly2tri/DTSweep.java | 11 +- .../ext/org/poly2tri/DTSweepConstraint.java | 7 +- .../v3d/ext/org/poly2tri/DTSweepContext.java | 8 +- .../ext/org/poly2tri/DelaunayTriangle.java | 17 +- .../vrl/v3d/ext/org/poly2tri/Poly2Tri.java | 6 +- .../vrl/v3d/ext/org/poly2tri/Polygon.java | 8 +- .../org/poly2tri/TriangulationProcess.java | 14 +- common-tools/clas-logging/pom.xml | 4 +- common-tools/clas-math/pom.xml | 4 +- common-tools/clas-physics/pom.xml | 4 +- common-tools/clas-reco/pom.xml | 24 +- .../java/org/jlab/clas/reco/Clas12Types.java | 17 +- .../org/jlab/clas/reco/DecoderEngine.java | 4 +- .../org/jlab/clas/reco/EngineProcessor.java | 88 +- .../jlab/clas/reco/ReconstructionEngine.java | 14 +- common-tools/clas-tracking/pom.xml | 12 +- .../tracking/utilities/ProbChi2perNDF.java | 23 + common-tools/clas-utils/pom.xml | 7 +- .../org/jlab/utils/benchmark/Benchmark.java | 96 ++- .../jlab/utils/benchmark/BenchmarkTimer.java | 37 +- .../utils/benchmark/ProgressPrintout.java | 31 +- .../org/jlab/utils/options/OptionParser.java | 7 +- .../org/jlab/utils/options/OptionValue.java | 14 +- common-tools/cnuphys/magfield/pom.xml | 32 +- .../java/cnuphys/magfield/MagneticFields.java | 1 + common-tools/cnuphys/pom.xml | 4 +- common-tools/cnuphys/snr/pom.xml | 20 +- .../cnuphys/snr/NoiseReductionParameters.java | 1 + common-tools/cnuphys/splot/pom.xml | 42 +- common-tools/cnuphys/swimmer/pom.xml | 42 +- common-tools/coat-libs/pom.xml | 93 +-- common-tools/pom.xml | 4 +- common-tools/swim-tools/pom.xml | 18 +- etc/bankdefs/hipo4/occupancy.json | 272 +++++++ etc/bankdefs/util/bankSplit.py | 18 +- etc/data/magfield | 2 +- etc/services/README.md | 1 - ...data-ai-2026.yaml => data-ai-classic.yaml} | 15 +- etc/services/data-ai.yaml | 15 +- etc/services/data-aicv-uber.yml | 2 +- etc/services/data-aicv.yaml | 20 +- etc/services/denoise.yaml | 23 +- etc/services/eb.yaml | 2 - etc/services/mc-ai.yaml | 2 + etc/services/mc-aicv.yaml | 8 +- etc/services/mc-cv.yaml | 2 + etc/services/rgd-clarode.yml | 85 -- etc/services/rgl-clarode.yml | 66 -- libexec/dependency-info.rb | 92 +++ libexec/profile | 12 +- libexec/scaling | 18 +- libexec/scaling.gpl | 2 +- pom.xml | 167 ++-- reconstruction/ai/pom.xml | 14 +- .../org/jlab/service/ai/DCClsComboEngine.java | 10 +- reconstruction/alert/pom.xml | 29 +- .../alert/AI/TrackCandidatesGenerator.java | 19 +- reconstruction/band/pom.xml | 12 +- reconstruction/bg/pom.xml | 14 +- reconstruction/calib/pom.xml | 14 +- reconstruction/cnd/pom.xml | 16 +- reconstruction/cvt/pom.xml | 34 +- .../main/java/org/jlab/rec/cvt/Constants.java | 4 +- .../org/jlab/rec/cvt/banks/HitReader.java | 32 +- .../jlab/rec/cvt/banks/RecoBankReader.java | 444 +++++----- .../jlab/rec/cvt/banks/RecoBankWriter.java | 761 +++++++++--------- .../jlab/rec/cvt/cluster/ClusterFinder.java | 115 +-- .../java/org/jlab/rec/cvt/cross/Cross.java | 1 - .../org/jlab/rec/cvt/fit/CircleFitter.java | 12 +- .../org/jlab/rec/cvt/fit/CosmicFitter.java | 6 +- .../jlab/rec/cvt/fit/HelicalTrackFitter.java | 2 +- .../org/jlab/rec/cvt/fit/LineFitPars.java | 2 +- .../jlab/rec/cvt/fit/StraightTrackFitter.java | 10 +- .../rec/cvt/services/CVTReconstruction.java | 5 +- .../java/org/jlab/rec/cvt/track/Track.java | 7 +- reconstruction/dc/pom.xml | 39 +- .../java/org/jlab/rec/dc/banks/HitReader.java | 12 +- .../org/jlab/rec/dc/banks/RecoBankWriter.java | 8 +- .../jlab/rec/dc/cluster/ClusterFinder.java | 1 - .../java/org/jlab/rec/dc/cross/Cross.java | 14 +- .../jlab/rec/dc/cross/CrossListFinder.java | 2 +- .../java/org/jlab/rec/dc/hit/FittedHit.java | 1 - .../java/org/jlab/rec/dc/nn/PatternRec.java | 4 +- .../java/org/jlab/rec/dc/segment/Segment.java | 4 - .../jlab/rec/dc/segment/SegmentFinder.java | 1 - .../rec/dc/timetodistance/T2DFunctions.java | 5 - .../rec/dc/timetodistance/TableLoader.java | 3 - .../TimeToDistanceEstimator.java | 2 - .../java/org/jlab/rec/dc/track/Track.java | 2 - .../rec/dc/track/TrackCandListFinder.java | 260 ++---- .../jlab/rec/dc/track/TrackListFinder.java | 34 - .../jlab/rec/dc/track/fit/KFitterDoca.java | 17 +- .../jlab/rec/dc/track/fit/MeasVecsDoca.java | 5 +- .../jlab/rec/dc/track/fit/RungeKuttaDoca.java | 4 +- .../jlab/rec/dc/track/fit/StateVecsDoca.java | 56 +- .../rec/dc/track/fit/basefit/LineFitPars.java | 2 +- .../rec/dc/track/fit/basefit/LineFitter.java | 39 +- .../org/jlab/rec/dc/trajectory/Surface.java | 1 - .../org/jlab/rec/dc/trajectory/TrackVec.java | 2 +- .../jlab/rec/dc/trajectory/Trajectory.java | 3 - .../rec/dc/trajectory/TrajectoryFinder.java | 4 +- .../rec/dc/trajectory/TrajectorySurfaces.java | 8 +- .../org/jlab/rec/dc/trajectory/Vertex.java | 1 - .../java/org/jlab/service/dc/DCEngine.java | 5 +- .../jlab/service/dc/DCHBPostClusterAI.java | 4 +- .../jlab/service/dc/DCHBPostClusterConv.java | 6 +- .../org/jlab/service/dc/DCHBTrackingAI.java | 4 +- .../java/org/jlab/service/dc/DCTBEngine.java | 15 +- reconstruction/eb/pom.xml | 36 +- reconstruction/ec/pom.xml | 22 +- reconstruction/fmt/pom.xml | 20 +- reconstruction/ft/pom.xml | 18 +- reconstruction/htcc/pom.xml | 12 +- reconstruction/ltcc/pom.xml | 18 +- .../org/jlab/service/ltcc/LTCCCluster.java | 1 - .../service/ltcc/LTCCClusterCorrection.java | 6 +- .../java/org/jlab/service/ltcc/LTCCHit.java | 7 +- reconstruction/mc/pom.xml | 14 +- reconstruction/mltn/pom.xml | 8 +- reconstruction/mu/pom.xml | 22 +- reconstruction/pom.xml | 4 +- reconstruction/raster/pom.xml | 16 +- reconstruction/recoil/pom.xml | 18 +- reconstruction/rich/pom.xml | 22 +- reconstruction/rtpc/pom.xml | 22 +- .../main/java/org/jlab/rec/rtpc/Geometry.java | 5 - reconstruction/swaps/pom.xml | 14 +- reconstruction/tof/pom.xml | 20 +- reconstruction/uber/pom.xml | 51 +- .../main/java/org/jlab/service/uber/Uber.java | 45 +- reconstruction/urwt/pom.xml | 18 +- reconstruction/vtx/pom.xml | 18 +- 161 files changed, 2826 insertions(+), 2620 deletions(-) delete mode 120000 .github-ci.yaml create mode 100644 Makefile delete mode 100755 bin/postprocess2 delete mode 100644 common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Processor.java create mode 100644 common-tools/clas-detector/src/main/java/org/jlab/detector/serial/Occupancer.java create mode 100644 common-tools/clas-detector/src/main/java/org/jlab/detector/serial/SerialHoncho.java rename common-tools/{clas-analysis/src/main/java/org/jlab/analysis/postprocess/Util.java => clas-detector/src/main/java/org/jlab/detector/serial/SerialUtil.java} (98%) create mode 100644 common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/ProbChi2perNDF.java create mode 100644 etc/bankdefs/hipo4/occupancy.json rename etc/services/{data-ai-2026.yaml => data-ai-classic.yaml} (91%) delete mode 100644 etc/services/rgd-clarode.yml delete mode 100644 etc/services/rgl-clarode.yml create mode 100755 libexec/dependency-info.rb delete mode 100644 reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackListFinder.java diff --git a/.github-ci.yaml b/.github-ci.yaml deleted file mode 120000 index e978df9245..0000000000 --- a/.github-ci.yaml +++ /dev/null @@ -1 +0,0 @@ -.github/workflows/ci.yml \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c137a994ff..13c7fea22c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -19,7 +19,10 @@ updates: prefix: "build(deps)" ignore: - dependency-name: "org.jlab:groot" # since version numbers are not in order - - dependency-name: "org.ejml:ejml-simple" # keep version the same as `j4ml:j4ml-clas12:jar:0.9-SNAPSHOT`; see pull requests #636 and #632 + - dependency-name: "net.objecthunter:exp4j" # pinned for dependency convergence + - dependency-name: "org.ejml:ejml-simple" # pinned for dependency convergence + - dependency-name: "org.apache.commons:commons-lang3" # pinned for dependency convergence + - dependency-name: "org.slf4j:slf4j-api" # pinned for dependency convergence - dependency-name: "org.openjfx:javafx-base" versions: [">= 24"] # version 24 requires JAVA_VERSION 22+ - dependency-name: "org.openjfx:javafx-graphics" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4967588f6e..907516a5c5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,7 +61,7 @@ jobs: runs-on: macos-latest steps: - uses: actions/checkout@v7 - - uses: actions/setup-java@v5.7.0 + - uses: actions/setup-java@v6.0.1 with: java-version: ${{ env.JAVA_VERSION }} distribution: ${{ env.java_distribution }} @@ -72,7 +72,7 @@ jobs: - name: build run: | ./build-coatjava.sh --lfs --no-progress -T${{ env.nthreads }} - ./bin/install-clara -b -c ./coatjava ./clara + ./bin/install-clara -c ./coatjava ./clara - name: tar # tarball to preserve permissions run: | tar czvf coatjava.tar.gz coatjava @@ -91,7 +91,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - - uses: actions/setup-java@v5.7.0 + - uses: actions/setup-java@v6.0.1 with: java-version: ${{ env.JAVA_VERSION }} distribution: ${{ env.java_distribution }} @@ -102,7 +102,7 @@ jobs: - name: build run: | ./build-coatjava.sh --lfs --no-progress -T${{ env.nthreads }} - ./bin/install-clara -b -c ./coatjava ./clara + ./bin/install-clara -c ./coatjava ./clara - name: tar # tarball to preserve permissions run: | tar czvf coatjava.tar.gz coatjava @@ -115,6 +115,26 @@ jobs: coatjava.tar.gz clara.tar.gz + dependency_info: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + - name: Set up JDK + uses: actions/setup-java@v6.0.1 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.java_distribution }} + # NOTE: do not use `cache: maven` here, so stale `_remote.repositories` data aren't read + - name: build + run: | + ./build-coatjava.sh --no-aux --no-progress --quiet -T${{ env.nthreads }} + - name: collect info + run: libexec/dependency-info.rb + - name: print dependency trees + run: cat target/info/trees.txt + - name: print dependency repository sources + run: cat target/info/repos.yaml + # tests ############################################################################# @@ -137,7 +157,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - - uses: actions/setup-java@v5.7.0 + - uses: actions/setup-java@v6.0.1 with: java-version: ${{ matrix.JAVA_VERSION }} distribution: ${{ env.java_distribution }} @@ -161,7 +181,7 @@ jobs: steps: - uses: actions/checkout@v7 - name: Set up JDK - uses: actions/setup-java@v5.7.0 + uses: actions/setup-java@v6.0.1 with: java-version: ${{ env.JAVA_VERSION }} distribution: ${{ env.java_distribution }} @@ -170,7 +190,7 @@ jobs: with: name: build_ubuntu-latest - name: untar build - run: tar xzvf coatjava.tar.gz + run: tar xzf coatjava.tar.gz - name: spotbugs run: ./build-coatjava.sh --spotbugs --no-maps --no-progress @@ -180,7 +200,7 @@ jobs: steps: - uses: actions/checkout@v7 - name: Set up JDK - uses: actions/setup-java@v5.7.0 + uses: actions/setup-java@v6.0.1 with: java-version: ${{ env.JAVA_VERSION }} distribution: ${{ env.java_distribution }} @@ -194,7 +214,7 @@ jobs: path: | clas_018779.evio.00001 - name: untar build - run: tar xzvf coatjava.tar.gz + run: tar xzf coatjava.tar.gz - name: run test run: | ls -lhtr @@ -209,7 +229,7 @@ jobs: steps: - uses: actions/checkout@v7 - name: Set up JDK - uses: actions/setup-java@v5.7.0 + uses: actions/setup-java@v6.0.1 with: java-version: ${{ env.JAVA_VERSION }} distribution: ${{ env.java_distribution }} @@ -224,11 +244,11 @@ jobs: clas_018779.evio.00001 - name: untar build run: | - tar xzvf clara.tar.gz - tar xzvf coatjava.tar.gz + tar xzf clara.tar.gz + tar xzf coatjava.tar.gz - run: ls - name: run test - run: ./bin/run-clara -y ./etc/services/rgd-clarode.yml -t 4 -n 500 -c ./clara -o ./tmp ./clas_018779.evio.00001 + run: ./bin/run-clara -y ./etc/services/data-ai.yaml -t 4 -n 500 -c ./clara -o ./tmp ./clas_018779.evio.00001 - name: ls tmp run: ls -lhtr tmp - name: rename @@ -267,7 +287,7 @@ jobs: steps: - uses: actions/checkout@v7 - name: Set up JDK - uses: actions/setup-java@v5.7.0 + uses: actions/setup-java@v6.0.1 with: java-version: ${{ env.JAVA_VERSION }} distribution: ${{ env.java_distribution }} @@ -277,8 +297,8 @@ jobs: name: build_${{ matrix.runner }} - name: untar build run: | - tar xzvf coatjava.tar.gz - tar xzvf clara.tar.gz + tar xzf coatjava.tar.gz + tar xzf clara.tar.gz - name: run test run: | git lfs install @@ -295,7 +315,7 @@ jobs: steps: - uses: actions/checkout@v7 - name: Set up JDK - uses: actions/setup-java@v5.7.0 + uses: actions/setup-java@v6.0.1 with: java-version: ${{ env.JAVA_VERSION }} distribution: ${{ env.java_distribution }} @@ -305,8 +325,8 @@ jobs: name: build_macos - name: untar build run: | - tar xzvf coatjava.tar.gz - tar xzvf clara.tar.gz + tar xzf coatjava.tar.gz + tar xzf clara.tar.gz - name: run test run: | git lfs install @@ -320,7 +340,7 @@ jobs: steps: - uses: actions/checkout@v7 - name: Set up JDK - uses: actions/setup-java@v5.7.0 + uses: actions/setup-java@v6.0.1 with: java-version: ${{ env.JAVA_VERSION }} distribution: ${{ env.java_distribution }} @@ -333,7 +353,7 @@ jobs: with: name: build_ubuntu-latest - name: untar build - run: tar xzvf coatjava.tar.gz + run: tar xzf coatjava.tar.gz - name: test run-groovy run: coatjava/bin/run-groovy validation/advanced-tests/test-run-groovy.groovy @@ -343,7 +363,7 @@ jobs: steps: - uses: actions/checkout@v7 - name: Set up JDK - uses: actions/setup-java@v5.7.0 + uses: actions/setup-java@v6.0.1 with: java-version: ${{ env.JAVA_VERSION }} distribution: ${{ env.java_distribution }} @@ -355,7 +375,7 @@ jobs: with: name: build_ubuntu-latest - name: untar build - run: tar xzvf coatjava.tar.gz + run: tar xzf coatjava.tar.gz - name: hipo2npz run: ./coatjava/bin/hipo2npz rec.hipo rec.npz - name: hipo2npz-dump @@ -384,7 +404,7 @@ jobs: path: pages/jacoco ### javadoc - name: set up JDK - uses: actions/setup-java@v5.7.0 + uses: actions/setup-java@v6.0.1 with: java-version: ${{ env.JAVA_VERSION }} distribution: ${{ env.java_distribution }} @@ -440,7 +460,7 @@ jobs: mv coatjava{,-${{ env.TAG_NAME }}} tar czf coatjava-${{ env.TAG_NAME }}{.tar.gz,} - name: release - uses: softprops/action-gh-release@v3.0.2 + uses: softprops/action-gh-release@v3.0.3 with: files: coatjava-${{ env.TAG_NAME }}.tar.gz - name: open issue if failed diff --git a/.gitignore b/.gitignore index 0bdf3fdcef..9f0aad0fba 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,11 @@ target tmp /common-tools/clas-io/src/main/java/org/jlab/io/banks +# data files +*.evio +*.hipo +!/etc/data/test/*.hipo + # deployment /myLocalMvnRepo /coatjava-*.tar.gz @@ -50,7 +55,6 @@ hs_err_pid* # no log files: *.log -*.evio bin/evio2hipotest export.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d42ca40d5f..9ca4518b79 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -172,16 +172,16 @@ clara: dependencies: [build,download] script: - tar -xzf clara.tar.gz - - run-clara -v -c $CLARA_HOME -t 4 -y ./etc/services/rgd-clarode.yml -n 30 -o out $EVIOFILE + - run-clara -v -c $CLARA_HOME -t 4 -y ./etc/services/data-ai.yaml -n 30 -o out $EVIOFILE - mv out/rec_$EVIOFILE.hipo claroded.hipo profile: extends: .clon allow_failure: true script: - - ./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 + - ./clara/plugins/clas12/libexec/profile -e cpu -o _clara -- run-clara -c ./clara -y ./etc/services/data-ai.yaml -o tmp1 -t 16 -l $EVIOFILE + - ./clara/plugins/clas12/libexec/profile -e alloc -o _clara -- run-clara -c ./clara -y ./etc/services/data-ai.yaml -o tmp2 -t 16 -l $EVIOFILE + - ./clara/plugins/clas12/libexec/profile -e lock -o _clara -- run-clara -c ./clara -y ./etc/services/data-ai.yaml -o tmp3 -t 16 -l $EVIOFILE artifacts: when: always expire_in: 1 week @@ -192,12 +192,12 @@ 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 + - ./clara/plugins/clas12/libexec/scaling -c ./clara -y ./etc/services/data-ai.yaml -t 8,12,18,24 $EVIOFILE artifacts: when: always expire_in: 1 week paths: - - scaling.svg + - scaling*.svg pages: stage: deploy @@ -207,7 +207,7 @@ pages: - cp -r pages public - mkdir public/perf - cp asprof*.html public/perf - - cp scaling.svg public/perf + - cp scaling*.svg public/perf pages: true artifacts: expire_in: 1 week diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..fe7cf3c86c --- /dev/null +++ b/Makefile @@ -0,0 +1,24 @@ +# this is a simple Makefile meant for developers' convenience +# - it only has the most common build commands we use +# - for any other build command, please use `./build-coatjava.sh` + +# convert `make` arg `-j#` -> `mvn` arg `-T#`, if provided +JOBS := $(patsubst -j%,%,$(filter -j%,$(MAKEFLAGS))) +THREADS := $(if $(strip $(JOBS)),-T$(JOBS),) + +BUILD := ./build-coatjava.sh + +.PHONY: default all clean clara + +.DEFAULT_GOAL := default + +default: + $(BUILD) $(THREADS) + +clean: + $(BUILD) --clean $(THREADS) + +clara: + $(BUILD) --clara $(THREADS) + +all: clara diff --git a/bin/install-clara b/bin/install-clara index d510db20f3..48b3ffb44e 100755 --- a/bin/install-clara +++ b/bin/install-clara @@ -71,13 +71,12 @@ trap cleanup EXIT # Configure: debug=0 args=() -usage="Usage: install-clara [-v] [-b] [-c COATJAVA] [-f CLARA] [-g GRAPES] PATH" +usage="Usage: install-clara [-v] [-c COATJAVA] [-f CLARA] [-g GRAPES] PATH" info=""" - The default CLARA / GRAPES versions are $clara / $grapes - COATJAVA can also be specified as a local installation directory - If the COATJAVA version is not specified, it will try to auto-detect it. -- [-v adds verbosity and disables cleanup] -- [-b builds clara from source]""" +- [-v adds verbosity and disables cleanup]""" while [[ $# -gt 0 ]] do @@ -86,7 +85,6 @@ do -f) clara="$2" && shift && shift ;; -c) coatjava="$2" && shift && shift ;; -g) grapes="$2" && shift && shift ;; - -b) build=1 && shift ;; -v) let debug=$debug+1 && shift ;; -*|--*) echo -e "$usage\n\nUnknown option: $1" && exit 1 ;; *) args+=("$1") && shift ;; @@ -126,14 +124,8 @@ tmp_dir=$(cd $tmp_dir && pwd) cd $tmp_dir # CLARA: -if ! [ -z ${build+x} ] -then - echo -e "\nBuilding CLARA from source ..." - build_clara $PWD/clara-cre -else - echo -e "\nRetrieving CLARA version $clara ..." - get https://clasweb.jlab.org/clas12offline/distribution/clara/clara-cre-$clara.tar.gz -fi +echo -e "\nBuilding CLARA from source ..." +build_clara $PWD/clara-cre # COATJAVA: if ! compgen -G "$coatjava/lib/clas/coat-libs-*.jar" > /dev/null diff --git a/bin/postprocess2 b/bin/postprocess2 deleted file mode 100755 index b10c9ff07a..0000000000 --- a/bin/postprocess2 +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -. `dirname $0`/../libexec/env.sh - -export MALLOC_ARENA_MAX=1 - -java ${JAVA_OPTS-} -Xmx768m -Xms768m -XX:+UseSerialGC \ - -cp ${COATJAVA_CLASSPATH:-''} \ - org.jlab.analysis.postprocess.Processor \ - $* diff --git a/bin/run-groovy b/bin/run-groovy index b8412ce507..bf2f3f8f72 100755 --- a/bin/run-groovy +++ b/bin/run-groovy @@ -1,11 +1,4 @@ #!/bin/bash . `dirname $0`/../libexec/env.sh groovy - -echo """ -**************************************** -* Running COATJAVA Groovy Script * -**************************************** -""" - groovy -cp "$JYPATH" "$@" diff --git a/build-coatjava.sh b/build-coatjava.sh index 1586b1fa05..257cd2a02c 100755 --- a/build-coatjava.sh +++ b/build-coatjava.sh @@ -80,6 +80,7 @@ do --https) auxRetrieval=https ;; --wipe) auxRetrieval=wipe ;; --no-aux|--noaux) + auxRetrieval=noaux auxDownloadMaps=false auxDownloadNets=false auxDownloadSqlites=false @@ -107,7 +108,7 @@ do esac done -echo "---------------------- ARGUMENTS ----------------------" +echo "------------------ Configuration ----------------------" print_arg() { printf " %30s = " "$1" shift @@ -206,6 +207,8 @@ case $auxRetrieval in ;; https) ;; + noaux) + ;; *) echo "ERROR: data retrieval option \`--$auxRetrieval\` is not supported" >&2 exit 1 @@ -354,7 +357,7 @@ $python etc/bankdefs/util/bankSplit.py $prefix_dir/etc/bankdefs/hipo4 || exit 1 # use maven to copy a CLARA jar to a separate directory: mvn org.apache.maven.plugins:maven-dependency-plugin:3.10.0:copy \ - -Dartifact=org.jlab.coda:jclara:4.3:jar -DoutputDirectory=$prefix_dir/lib/utils -DstripVersion=false + -Dartifact=org.jlab.coda:jclara:6.0-SNAPSHOT:jar -DoutputDirectory=$prefix_dir/lib/utils -DstripVersion=false # build (and test) unset CLAS12DIR diff --git a/common-tools/clara-io/pom.xml b/common-tools/clara-io/pom.xml index f5f100138e..121ef8b855 100644 --- a/common-tools/clara-io/pom.xml +++ b/common-tools/clara-io/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clara-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -39,31 +39,18 @@ org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT - - org.jlab.clas - clas-analysis - 14.2.0-SNAPSHOT - - - - org.jlab.clas - clas-utils - 14.2.0-SNAPSHOT - - org.apache.commons commons-text - 1.15.0 diff --git a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java index a094b939cd..e142e6bb5d 100644 --- a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java +++ b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java @@ -1,22 +1,13 @@ package org.jlab.io.clara; -import java.io.File; import java.nio.file.Path; -import java.util.List; -import java.util.TreeMap; -import java.util.TreeSet; -import org.jlab.analysis.postprocess.Processor; import org.jlab.clara.std.services.EventWriterException; import org.jlab.detector.calib.utils.ConstantsManager; -import org.jlab.detector.decode.CLASDecoder4; -import org.jlab.detector.helicity.HelicitySequence; -import org.jlab.detector.helicity.HelicitySequenceDelayed; -import org.jlab.detector.helicity.HelicityState; -import org.jlab.detector.scalers.DaqScalersSequence; +import org.jlab.detector.serial.SerialHoncho; +import org.jlab.detector.serial.Occupancer; import org.jlab.jnp.hipo4.data.Bank; import org.jlab.jnp.hipo4.data.Event; import org.jlab.jnp.hipo4.data.SchemaFactory; -import org.jlab.jnp.hipo4.io.HipoReader; import org.jlab.jnp.hipo4.io.HipoWriterSorted; import org.jlab.jnp.utils.file.FileUtils; import org.json.JSONObject; @@ -28,39 +19,34 @@ * 3. Writes HEL::flip, RUN/HEL::scaler, and RUN::unix to new tag-1 events * 4. Runs post-processing, writing tag-1 information to all events * 5. Adds .hipo to the output filename, if necessary - * + * 6. Outputs a parallel file of select trigger bits with a raw schema * @author baltzell */ public class Clas12Writer extends HipoToHipoWriter { - static final String[] TAG1BANKS = {"RUN::scaler","HEL::scaler","RAW::scaler","RAW::epics","HEL::flip","COAT::config"}; - - Bank[] tag1banks; + Occupancer occupancer; + SerialHoncho serial; Bank runConfig; - Bank helicityAdc; ConstantsManager conman; - TreeMap eventUnix; - TreeSet helicities; - DaqScalersSequence scalers; SchemaFactory fullSchema; - boolean postprocess; + + HipoWriterSorted paraWriter; + long paraCount; + long paraTriggerMask; + int paraTriggerPrescale; private void init(JSONObject opts) { + occupancer = new Occupancer((long)1<<39,100); fullSchema = new SchemaFactory(); fullSchema.initFromDirectory(FileUtils.getEnvironmentPath("CLAS12DIR","etc/bankdefs/hipo4")); + serial = new SerialHoncho(fullSchema); runConfig = new Bank(fullSchema.getSchema("RUN::config")); - helicityAdc = new Bank(fullSchema.getSchema("HEL::adc")); - helicities = new TreeSet<>(); - scalers = new DaqScalersSequence(fullSchema); conman = new ConstantsManager(); - eventUnix = new TreeMap<>(); conman.init("/runcontrol/hwp","/runcontrol/helicity"); - postprocess = opts.optBoolean("postprocess", false); + paraTriggerMask = opts.optLong("paraTriggerMask", 0); + paraTriggerPrescale = opts.optInt("paraTriggerPrescale", 0); if (opts.has("variation")) conman.setVariation(opts.getString("variation")); if (opts.has("timestamp")) conman.setTimeStamp(opts.getString("timestamp")); - tag1banks = new Bank[TAG1BANKS.length]; - for (int i=0; i 0) { + paraWriter = new HipoWriterSorted(); + paraWriter.getSchemaFactory().copy(fullSchema); + paraWriter.open(dirname + "/tb" + basename.substring(basename.indexOf("_"))); + } + w.open(dirname + "/" + basename); return w; } catch (Exception e) { throw new EventWriterException(e); @@ -78,89 +72,29 @@ protected HipoWriterSorted createWriter(Path file, JSONObject opts) throws Event @Override protected void writeEvent(Object event) throws EventWriterException { - scalers.add((Event)event); - ((Event)event).read(runConfig); - ((Event)event).read(helicityAdc); - if (runConfig.getRows() > 0) { - int unix = runConfig.getInt("unixtime",0); - int evno = runConfig.getInt("event",0); - if (unix > 0 && evno > 0) eventUnix.put(evno, unix); - } - helicities.add(HelicityState.createFromFadcBank(helicityAdc, runConfig, conman)); - Event t = CLASDecoder4.createTaggedEvent((Event)event, runConfig, tag1banks); + Event t = serial.read((Event)event); if (!t.isEmpty()) writer.addEvent(t, 1); + occupancer.process(((Event)event)); super.writeEvent(event); + writeRaw((Event)event, t); + } + + void writeRaw(Event physics, Event tagged) { + if (paraTriggerMask > 0) { + physics.read(runConfig); + if (runConfig.getRows()>0 && (runConfig.getLong("trigger",0) & paraTriggerMask) != 0) + if (paraTriggerPrescale<=0 || (++paraCount % paraTriggerPrescale) == 0) + paraWriter.addEvent(physics); + if (!tagged.isEmpty()) paraWriter.addEvent(tagged, tagged.getEventTag()); + } } @Override protected void closeWriter() { - HelicitySequence.writeFlips(fullSchema, writer, helicities); - writer.addEvent(getUnixEvent(runConfig),1); + serial.closure(writer); super.closeWriter(); - if (postprocess) postprocess(); - // keep the latest helicity/scaler reading for the next file: - while (helicities.size() > 60) helicities.pollFirst(); - scalers.clear(10); + serial.clear(); + if (paraTriggerMask > 0) paraWriter.close(); } - /** - * Get the first valid run number from a RUN::config bank. - * @return run - */ - private int getRunNumber() { - Event e = new Event(); - HipoReader r = new HipoReader(); - r.open(filename); - while (r.hasNext()) { - r.nextEvent(e); - e.read(runConfig); - if (runConfig.getRows()>0 && runConfig.getInt("run",0)>0) - return runConfig.getInt("run",0); - } - return 0; - } - - /** - * Get a new event with a RUN::unix bank containing event-timestamp mapping, - * and the latest RUN::config bank. - * @param config - * @return - */ - private Event getUnixEvent(Bank config) { - Bank unix = new Bank(fullSchema.getSchema("RUN::unix")); - unix.setRows(eventUnix.size()); - int row = 0; - for (int evno : eventUnix.keySet()) { - unix.putInt("event", row, evno); - unix.putInt("unixtime",row, eventUnix.get(evno)); - row++; - } - Event e = new Event(); - e.write(config); - e.write(unix); - return e; - } - - /** - * Copy helicity/charge tag-1 information to all events. - */ - private void postprocess() { - int d = conman.getConstants(getRunNumber(), "/runcontrol/helicity").getIntValue("delay",0,0,0); - HelicitySequenceDelayed helicity = new HelicitySequenceDelayed(d); - helicity.addStream(helicities); - Processor p = new Processor(List.of(filename), fullSchema, helicity, scalers); - HipoReader r = new HipoReader(); - r.open(filename); - Event e = new Event(); - writer.open("pp_"+filename); - while (r.hasNext()) { - r.nextEvent(e); - p.processEvent(e); - HipoToHipoWriter.writeEvent(writer, e, schemaBankList); - } - writer.close(); - new File(filename).delete(); - new File("pp_"+filename).renameTo(new File(filename)); - } - } diff --git a/common-tools/clara-io/src/main/java/org/jlab/io/clara/HipoToHipoWriter.java b/common-tools/clara-io/src/main/java/org/jlab/io/clara/HipoToHipoWriter.java index df83b1c069..cda04c0232 100644 --- a/common-tools/clara-io/src/main/java/org/jlab/io/clara/HipoToHipoWriter.java +++ b/common-tools/clara-io/src/main/java/org/jlab/io/clara/HipoToHipoWriter.java @@ -28,13 +28,16 @@ public class HipoToHipoWriter extends AbstractEventWriterService schemaBankList = new ArrayList(); - private final StringSubstitutor envSubstitutor = new StringSubstitutor(System.getenv()); + protected final List schemaBankList = new ArrayList<>(); + private static final StringSubstitutor envSubstitutor = new StringSubstitutor(System.getenv()); - private int compression = 2; protected String filename; + private long schemaPrescaleEvents = 0; + private int schemaPrescale = 0; + @Override protected HipoWriterSorted createWriter(Path file, JSONObject opts) throws EventWriterException { try { @@ -48,14 +51,7 @@ protected HipoWriterSorted createWriter(Path file, JSONObject opts) throws Event } } - protected void configure(HipoWriterSorted writer, JSONObject opts) { - schemaBankList.clear(); - if (opts.has(CONF_COMPRESSION)) { - compression = opts.getInt(CONF_COMPRESSION); - System.out.printf("%s service: compression level = %d%n", getName(), compression); - } - writer.setCompressionType(compression); - + static String chooseSchemaDirectory(JSONObject opts) { String schemaDir = FileUtils.getEnvironmentPath("CLAS12DIR", "etc/bankdefs/hipo4"); if (opts.has(CONF_SCHEMA_DIR)) { // Run YAML values throuh env-substitor: @@ -64,28 +60,38 @@ protected void configure(HipoWriterSorted writer, JSONObject opts) { // If it's not already an absolute path, assume it's the name of a // stock schema that comes with COATJAVA and get the full path to it: if (!schemaDir.startsWith("/")) schemaDir = ClaraYaml.getStockSchemaDirectory(schemaDir); - System.out.printf("%s service: schema directory = %s%n", getName(), schemaDir); } + return schemaDir; + } + + protected void configure(HipoWriterSorted writer, JSONObject opts) { + + // set schema prescale factor: + schemaPrescale = opts.optInt(CONF_SCHEMA_PRESCALE, 0); + // create full schema: + SchemaFactory fullSchema = new SchemaFactory(); + fullSchema.initFromDirectory(FileUtils.getEnvironmentPath("CLAS12DIR","etc/bankdefs/hipo4")); + + // set writer compression and schema: + writer.setCompressionType(opts.optInt(CONF_COMPRESSION, 2)); + writer.getSchemaFactory().copy(fullSchema); + + // create schema from chosen directory and wildcard reduce: + String schemaDir = chooseSchemaDirectory(opts); SchemaFactory factory = new SchemaFactory(); factory.initFromDirectory(schemaDir); - - if(opts.has(CONF_SCHEMA_WILDCARD)==true){ - String wildcard = opts.getString("wildcard"); - SchemaFactory f2 = factory.reduce(wildcard); - writer.getSchemaFactory().copy(f2); - } else { - writer.getSchemaFactory().copy(factory); + if (opts.has(CONF_SCHEMA_WILDCARD)) { + factory = factory.reduce(opts.getString(CONF_SCHEMA_WILDCARD)); } - if (opts.has(CONF_SCHEMA_DIR)==true||opts.has(CONF_SCHEMA_WILDCARD)==true) { - boolean useFilter = opts.optBoolean(CONF_SCHEMA_FILTER, true); - System.out.printf("%s service: schema filter = %b%n", getName(), useFilter); - if(useFilter==true){ - int schemaSize = writer.getSchemaFactory().getSchemaList().size(); - for(int i = 0; i < schemaSize; i++){ - Bank dataBank = new Bank(writer.getSchemaFactory().getSchemaList().get(i)); - schemaBankList.add(dataBank); + // set the resulting bank list for filtering: + schemaBankList.clear(); + if (opts.has(CONF_SCHEMA_DIR) || opts.has(CONF_SCHEMA_WILDCARD)) { + if (opts.optBoolean(CONF_SCHEMA_FILTER, true)) { + int schemaSize = factory.getSchemaList().size(); + for (int i = 0; i < schemaSize; i++) { + schemaBankList.add(new Bank(factory.getSchemaList().get(i))); } } } @@ -95,10 +101,6 @@ protected void configure(HipoWriterSorted writer, JSONObject opts) { System.out.printf("SERVICE WRITER :: [wildcard] %s\n",opts.has(HipoToHipoWriter.CONF_SCHEMA_WILDCARD)); } - private Method getSchemaFilterSetter() throws NoSuchMethodException, SecurityException { - return HipoWriter.class.getMethod("setSchemaFilter", boolean.class); - } - @Override protected void closeWriter() { writer.close(); @@ -107,7 +109,7 @@ protected void closeWriter() { public static void writeEvent(HipoWriterSorted w, Event e, List schema) { int tag = e.getEventTag(); - if (tag==1 || schema.isEmpty()) { + if (tag==1 || schema == null || schema.isEmpty()) { w.addEvent(e,tag); } else { @@ -118,7 +120,10 @@ public static void writeEvent(HipoWriterSorted w, Event e, List schema) { @Override protected void writeEvent(Object event) throws EventWriterException { try { - writeEvent(writer, (Event)event, schemaBankList); + if (schemaPrescale <= 0 || (++schemaPrescaleEvents % schemaPrescale) != 0) + writeEvent(writer, (Event)event, schemaBankList); + else + writeEvent(writer, (Event)event, null); } catch (Exception e) { throw new EventWriterException(e); } diff --git a/common-tools/clas-analysis/pom.xml b/common-tools/clas-analysis/pom.xml index e82d88f19a..dce86297aa 100644 --- a/common-tools/clas-analysis/pom.xml +++ b/common-tools/clas-analysis/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-analysis - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -38,49 +38,49 @@ org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-jcsg - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas swim-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Processor.java b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Processor.java deleted file mode 100644 index 7652b74d4c..0000000000 --- a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Processor.java +++ /dev/null @@ -1,277 +0,0 @@ -package org.jlab.analysis.postprocess; - -import java.util.List; -import java.util.TreeMap; - -import org.jlab.jnp.hipo4.data.Bank; -import org.jlab.jnp.hipo4.data.Event; -import org.jlab.jnp.hipo4.data.SchemaFactory; -import org.jlab.jnp.hipo4.io.HipoReader; -import org.jlab.io.base.DataBank; -import org.jlab.io.base.DataEvent; -import org.jlab.io.hipo.HipoDataBank; - -import org.jlab.detector.calib.utils.ConstantsManager; -import org.jlab.detector.scalers.DaqScalers; -import org.jlab.detector.scalers.DaqScalersSequence; -import org.jlab.detector.helicity.HelicityBit; -import org.jlab.detector.helicity.HelicitySequenceDelayed; -import org.jlab.jnp.hipo4.io.HipoWriterSorted; -import org.jlab.utils.options.OptionParser; -import org.jlab.utils.system.ClasUtilsFile; - -/** - * - * @author baltzell - */ -public class Processor { - - public static final String CCDB_TABLES[] = {"/runcontrol/fcup","/runcontrol/slm", - "/runcontrol/helicity","/daq/config/scalers/dsc1","/runcontrol/hwp"}; - - private Bank runConfig = null; - private Bank recEvent = null; - private ConstantsManager conman = null; - private SchemaFactory schemaFactory = null; - private DaqScalersSequence chargeSequence = null; - private HelicitySequenceDelayed helicitySequence = null; - private TreeMap eventUnix = null; - - public Processor(List files, boolean restream, boolean rebuild) { - HipoReader r = new HipoReader(); - r.open(files.get(0)); - schemaFactory = r.getSchemaFactory(); - r.close(); - runConfig = new Bank(schemaFactory.getSchema("RUN::config")); - recEvent = new Bank(schemaFactory.getSchema("REC::Event")); - conman = new ConstantsManager(); - conman.init(CCDB_TABLES); - helicitySequence = Util.getHelicity(files, schemaFactory, restream, conman); - if (rebuild) chargeSequence = DaqScalersSequence.rebuildSequence(1, conman, files); - else chargeSequence = DaqScalersSequence.readSequence(files); - eventUnix = getEventUnixMap(schemaFactory, files); - } - - public Processor(List files, SchemaFactory schema, HelicitySequenceDelayed h, DaqScalersSequence s) { - schemaFactory = schema; - helicitySequence = h; - chargeSequence = s; - runConfig = new Bank(schemaFactory.getSchema("RUN::config")); - recEvent = new Bank(schemaFactory.getSchema("REC::Event")); - conman = new ConstantsManager(); - conman.init(CCDB_TABLES); - eventUnix = getEventUnixMap(schemaFactory, files); - } - - /** - * Load the mapping from event number to unix time - * @param schema - * @param files - * @return map - */ - public static TreeMap getEventUnixMap(SchemaFactory schema, List files) { - TreeMap m = new TreeMap<>(); - Event e = new Event(); - Bank b = schema.getBank("RUN::unix");//new Bank(schema.getSchema("RUN::unix")); - for (String f : files) { - HipoReader r = new HipoReader(); - r.setTags(1); - r.open(f); - while (r.hasNext()) { - r.nextEvent(e); - e.read(b); - int size = b.getRows(); - for (int i=0; i0) { - event.removeBank("HEL::scaler"); - Util.assignScalerHelicity(runcfg.getLong("timestamp",0), ((HipoDataBank)helScaler).getBank(), helicitySequence); - event.appendBank(helScaler); - } - } - - /** - * Modify REC::Event/HEL::scaler with the delay-corrected helicity - * @param event - * @param runcfg - * @param recevt - */ - private void processEventHelicity(Event event, Bank runcfg, Bank recevt) { - HelicityBit hb = helicitySequence.search(runcfg.getLong("timestamp", 0)); - HelicityBit hbraw = helicitySequence.getHalfWavePlate() ? HelicityBit.getFlipped(hb) : hb; - recevt.putByte("helicity",0,hb.value()); - recevt.putByte("helicityRaw",0,hbraw.value()); - Bank helScaler = new Bank(schemaFactory.getSchema("HEL::scaler")); - event.read(helScaler); - if (helScaler.getRows()>0) { - event.remove(schemaFactory.getSchema("HEL::scaler")); - Util.assignScalerHelicity(runcfg.getLong("timestamp",0), helScaler, helicitySequence); - event.write(helScaler); - } - } - - /** - * Modify REC::Event for beam charge and livetime - * @param runcfg - * @param recevt - */ - private void processEventScalers(DataBank runcfg, DataBank recevt) { - DaqScalers ds = chargeSequence.get(runcfg.getLong("timestamp", 0)); - if (ds != null) { - recevt.setFloat("beamCharge",0, (float) ds.dsc2.getBeamChargeGated()); - recevt.setDouble("liveTime",0,ds.dsc2.getLivetime()); - } - } - - /** - * Modify REC::Event for beam charge and livetime - * @param runcfg - * @param recevt - */ - private void processEventScalers(Bank runcfg, Bank recevt) { - DaqScalers ds = chargeSequence.get(runcfg.getLong("timestamp", 0)); - if (ds != null) { - recevt.putFloat("beamCharge",0, (float) ds.dsc2.getBeamChargeGated()); - recevt.putDouble("liveTime",0,ds.dsc2.getLivetime()); - } - } - - /** - * Modify RUN::config's unixtime and update the event - * @param event - * @param runcfg - */ - private void processEventUnix(Event event, Bank runcfg) { - if (runcfg.getRows() > 0) { - Integer key = eventUnix.floorKey(runcfg.getInt("event",0)); - if (key != null) { - Integer unix = eventUnix.get(key); - if (unix != null) { - event.remove(runcfg.getSchema()); - runcfg.putInt("unixtime", 0, unix); - event.write(runcfg); - } - } - } - } - - /** - * Modify RUN::config's unixtime and update the event - * @param event - * @param runcfg - */ - private void processEventUnix(DataEvent event, DataBank runcfg) { - if (runcfg.rows() > 0) { - Integer key = eventUnix.floorKey(runcfg.getInt("event",0)); - if (key != null) { - Integer unix = eventUnix.get(key); - if (unix != null) { - event.removeBank(runcfg.getDescriptor().getName()); - runcfg.setInt("unixtime", 0, unix); - event.appendBank(runcfg); - } - } - } - } - - /** - * Postprocess one event - * @param event - */ - public void processEvent(DataEvent event) { - if (event.hasBank("RUN::config")) { - DataBank runcfg = event.getBank("RUN::config"); - if (runcfg.rows() > 0) { - processEventUnix(event, runcfg); - if (event.hasBank("REC::Event")) { - DataBank recevt = event.getBank("REC::Event"); - if (recevt.rows() > 0) { - event.removeBank("REC::Event"); - if (helicitySequence != null) processEventHelicity(event, runcfg, recevt); - if (chargeSequence != null) processEventScalers(runcfg, recevt); - event.appendBank(recevt); - } - } - } - } - } - - /** - * Postprocess one event - * @param event - */ - public void processEvent(Event event) { - event.read(runConfig); - event.read(recEvent); - if (runConfig.getRows() > 0) { - processEventUnix(event, runConfig); - if (recEvent.getRows() > 0) { - event.remove(recEvent.getSchema()); - if (helicitySequence != null) processEventHelicity(event, runConfig, recEvent); - if (chargeSequence != null) processEventScalers(runConfig, recEvent); - event.write(recEvent); - } - } - } - - /** - * The "postprocess" program. - * @param args - */ - public static void main(String args[]) { - - OptionParser o = new OptionParser("postprocess"); - o.addOption("-f","0","reflip: rebuild the HEL::flip bank"); - o.addOption("-c","0","recharge: rebuild the RUN/HEL::scaler banks"); - o.addOption("-o",null,"merged output file path"); - o.setRequiresInputList(true); - o.parse(args); - - boolean restream = !o.getOption("-f").isDefault(); - boolean rebuild = !o.getOption("-c").isDefault(); - - Processor post = new Processor(o.getInputList(), restream, rebuild); - - HipoWriterSorted writer = null; - - if (!o.getOption("-o").isDefault()) { - writer = new HipoWriterSorted(); - SchemaFactory schema = writer.getSchemaFactory(); - schema.initFromDirectory(ClasUtilsFile.getResourceDir("CLAS12DIR", "etc/bankdefs/hipo4")); - writer.setCompressionType(2); - writer.open(o.getOption("-o").stringValue()); - } - - for (String f : o.getInputList()) { - HipoReader reader = new HipoReader(); - reader.open(f); - Event event = new Event(); - while (reader.hasNext()) { - reader.nextEvent(event); - post.processEvent(event); - if (writer != null) writer.addEvent(event); - } - reader.close(); - } - - if (writer != null) writer.close(); - } - -} diff --git a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/RebuildScalers.java b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/RebuildScalers.java index 525203f641..6fb4fe3d0c 100644 --- a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/RebuildScalers.java +++ b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/RebuildScalers.java @@ -9,6 +9,7 @@ import org.jlab.detector.scalers.DaqScalers; import org.jlab.detector.helicity.HelicitySequenceManager; import org.jlab.detector.scalers.DaqScalersSequence; +import org.jlab.detector.serial.SerialUtil; import org.jlab.jnp.hipo4.data.Bank; import org.jlab.jnp.hipo4.data.Event; import org.jlab.jnp.hipo4.io.HipoReader; @@ -122,7 +123,7 @@ else if (seq != null) { runScalerBank = ds.createRunBank(writer.getSchemaFactory()); helScalerBank = ds.createHelicityBank(writer.getSchemaFactory()); - Util.assignScalerHelicity(event, helScalerBank, helSeq); + SerialUtil.assignScalerHelicity(event, helScalerBank, helSeq); // put modified HEL/RUN::scaler back in the event: event.write(runScalerBank); diff --git a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Tag1ToEvent.java b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Tag1ToEvent.java index b85efd3a95..80cbbee22a 100644 --- a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Tag1ToEvent.java +++ b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Tag1ToEvent.java @@ -1,5 +1,6 @@ package org.jlab.analysis.postprocess; +import java.util.List; import java.util.TreeMap; import java.util.logging.Logger; import org.jlab.clas.reco.ReconstructionEngine; @@ -13,6 +14,7 @@ import org.jlab.detector.scalers.DaqScalersSequence; import org.jlab.detector.helicity.HelicityBit; import org.jlab.detector.helicity.HelicitySequenceDelayed; +import org.jlab.detector.serial.SerialUtil; import org.jlab.jnp.hipo4.data.SchemaFactory; import org.jlab.utils.groups.IndexedTable; import org.jlab.utils.options.OptionParser; @@ -33,6 +35,31 @@ public class Tag1ToEvent { static final Logger LOGGER = Logger.getLogger(Tag1ToEvent.class.getName()); + /** + * Load the mapping from event number to unix time + * @param schema + * @param files + * @return map + */ + public static TreeMap getEventUnixMap(SchemaFactory schema, List files) { + TreeMap m = new TreeMap<>(); + Event e = new Event(); + Bank b = schema.getBank("RUN::unix");//new Bank(schema.getSchema("RUN::unix")); + for (String f : files) { + HipoReader r = new HipoReader(); + r.setTags(1); + r.open(f); + while (r.hasNext()) { + r.nextEvent(e); + e.read(b); + int size = b.getRows(); + for (int i=0; i>> Initializing helicity configuration from CCDB ...\n"); ConstantsManager conman = new ConstantsManager(); conman.init("/runcontrol/hwp","/runcontrol/helicity"); - final int run = Util.getRunNumber(parser.getInputList().get(0)); + final int run = SerialUtil.getRunNumber(parser.getInputList().get(0)); IndexedTable helTable = conman.getConstants(run, "/runcontrol/helicity"); // Initialize the scaler sequence from tag-1 events: @@ -102,7 +129,7 @@ public static void main(String[] args) { } // Initialize the unix-event map: - TreeMap eventUnix = Processor.getEventUnixMap(schema, parser.getInputList()); + TreeMap eventUnix = getEventUnixMap(schema, parser.getInputList()); // Loop over the input HIPO files: LOGGER.info("\n>>> Starting post-processing ...\n"); @@ -138,7 +165,7 @@ public static void main(String[] args) { if (doHelicityDelay) { recEventBank.putByte("helicity",0,hb.value()); recEventBank.putByte("helicityRaw",0,hbraw.value()); - Util.assignScalerHelicity(runConfigBank.getLong("timestamp",0), helScalerBank, helSeq); + SerialUtil.assignScalerHelicity(runConfigBank.getLong("timestamp",0), helScalerBank, helSeq); } // Write beam charge to REC::Event: @@ -169,7 +196,7 @@ public static void main(String[] args) { writer.addEvent(event, event.getEventTag()); // Copy config banks to new, tag-1 events: - Util.createTag1Events(writer, event, configEvent, configBanks); + SerialUtil.createTag1Events(writer, event, configEvent, configBanks); } reader.close(); diff --git a/common-tools/clas-decay-tools/pom.xml b/common-tools/clas-decay-tools/pom.xml index 7c73876af4..8cb8b112a0 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 - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -21,54 +21,54 @@ org.jlab.clas swim-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar cnuphys swimmer - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT cnuphys magfield - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-vtx - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/common-tools/clas-detector/pom.xml b/common-tools/clas-detector/pom.xml index efdb622d65..997746fa38 100644 --- a/common-tools/clas-detector/pom.xml +++ b/common-tools/clas-detector/pom.xml @@ -4,20 +4,20 @@ org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -43,19 +43,19 @@ org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-logging - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder.java index 45af4c9293..3d32f87807 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder.java @@ -797,8 +797,12 @@ public Event getDecodedEvent(EvioDataEvent rawEvent) { return getDecodedEvent(rawEvent, -1, -1, null, null); } - public HipoDataEvent getDecodedDataEvenet(EvioDataEvent rawEvent) { - return new HipoDataEvent(getDecodedEvent(rawEvent), schemaFactory); + public HipoDataEvent getDecodedDataEvent(EvioDataEvent rawEvent) { + return new HipoDataEvent(getDecodedEvent(rawEvent, -1, -1, null, null), schemaFactory); + } + + public HipoDataEvent getDecodedDataEvent(EvioDataEvent rawEvent, Double torus, Double solenoid) { + return new HipoDataEvent(getDecodedEvent(rawEvent, -1, -1, torus, solenoid), schemaFactory); } } \ No newline at end of file diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java index 80430583ee..8acd795fa4 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java @@ -6,16 +6,14 @@ * * @author baltzell */ -public class CLASDecoderPool { +public class CLASDecoderPool extends ConcurrentLinkedQueue { - ConcurrentLinkedQueue pool; - int sharedConstantsManagers = 64; public CLASDecoderPool(int size, String variation, String timestamp) { - pool = new ConcurrentLinkedQueue<>(); - + super(); + CLASDecoder d0 = null; for (int i=0; i { + + static final String OCC_BANK_DIR = ClasUtilsFile.getResourceDir("CLAS12DIR","etc/bankdefs/hipo4/singles/occupancy"); + static final SchemaFactory FULL_SCHEMA = new SchemaFactory(); + static { FULL_SCHEMA.initFromDirectory(ClasUtilsFile.getResourceDir("CLAS12DIR","etc/bankdefs/hipo4")); } + + long triggerMask; + int prescale; + int nevents = 0; + Schema cfgSchema; + + /** + * + * @param triggerMask + * @param prescale + */ + public Occupancer(long triggerMask, int prescale) { + super(); + this.triggerMask = triggerMask; + this.prescale = prescale; + init(); + } + + private void init() { + cfgSchema = FULL_SCHEMA.getSchema("RUN::config"); + try { + // Initialize list, by reading occupancy bank filenames from a directory + // and stripping ".json" suffix and "OCC::" prefix to get hit bank name: + addAll(Files.list(Paths.get(OCC_BANK_DIR)) + .filter(Files::isRegularFile) + .map(p -> p.getFileName().toString()) + .map(s -> s.substring(0, s.length()-5)) + .map(s -> s.substring(5, s.length())) + .map(OccupanceTable::new).toList()); + } catch (IOException ex) { + System.getLogger(Occupancer.class.getName()).log(System.Logger.Level.ERROR, (String) null, ex); + } + } + + public boolean process(Event event) { + Bank cfgBank = event.read(new Bank(cfgSchema, 1)); + boolean passTrigger = cfgBank.getRows() > 0 && 0 != (triggerMask & cfgBank.getLong("trigger",0)); + if (triggerMask <= 0 || passTrigger) { + int size = size(); + for (int i=0; i 0) { + event.write(get(i).create(nevents)); + } + get(i).reset(); + } + nevents = 0; + } + } + return true; + } + + public void reset() { + int size = size(); + for (int i=0; i)table.getList().getMap()).keySet()) { + t.addEntry(IndexedTable.DEFAULT_GENERATOR.getIndices(hash, table.getList().getIndexSize())); + t.setDoubleValueByHash((table.getDoubleValueByHash(0, hash))/events, 0, hash); + } + return t; + } + + /** + * Fill the occupancy table. + * @param index + */ + public final void fill(int... index) { + for (int i=0; i m = table.getList().getMap(); + int i = 0; + for (long hash : m.keySet()) { + int[] idx = IndexedTable.DEFAULT_GENERATOR.getIndices(hash, table.getList().getIndexSize()); + for (int j=0; j eventUnix; + volatile HelicitySequence helicitySequence; + volatile TreeSet helicities; + volatile DaqScalersSequence scalers; + int run = 0; + + public SerialHoncho(SchemaFactory schema) { + this.schema = schema; + conman = new ConstantsManager(); + conman.init("/runcontrol/hwp","/runcontrol/helicity"); + runConfig = schema.getSchema("RUN::config"); + recEvent = schema.getSchema("REC::Event"); + helicityAdc = schema.getSchema("HEL::adc"); + helScaler = schema.getSchema("HEL::scaler"); + scalers = new DaqScalersSequence(schema); + helicities = new TreeSet<>(); + eventUnix = new TreeMap<>(); + tag1banks = new Schema[TAG1BANKS.length]; + for (int i=0; i 0) { + processEventUnix(event, cfg); + if (evt.getRows() > 0) { + event.remove(evt.getSchema()); + processHelicity(event, cfg, evt); + processScalers(scalers.get(cfg.getLong("timestamp",0)), evt); + event.write(evt); + } + } + } + + /** + * Add helicity and unixtime sequence banks. + * @param writer + */ + public void closure(HipoWriterSorted writer) { + Bank cfg = new Bank(runConfig, 1); + cfg.putInt("run",0,run); + writer.addEvent(getUnixEvent(cfg),1); + if (helicitySequence == null) updateHelicitySequence(); + helicitySequence.writeFlips(writer, 1); + } + + /** + * Zero all the sequences. + */ + public void clear() { + eventUnix.clear(); + helicities.clear(); + scalers.clear(); + helicitySequence = null; + } + + public TreeSet getHelicities() { + return helicities; + } + + public DaqScalersSequence getScalers() { + return scalers; + } + + public ConstantsManager getConstantsManager() { + return conman; + } + + public SchemaFactory getSchemaFactory() { + return schema; + } + + /** + * Recreate the HelicitySequence from the TreeSet of helicity states. + */ + public void updateHelicitySequence() { + helicitySequence = new HelicitySequenceDelayed( + conman.getConstants(run, "/runcontrol/helicity").getIntValue("delay",0,0,0)); + helicitySequence.addStream(helicities); + } + + /** + * + * @param event + * @param runConfig + * @param helicityAdc + */ + void read(Event event, Bank runConfig, Bank helicityAdc) { + scalers.add(event); + helicities.add(HelicityState.createFromFadcBank(helicityAdc, runConfig, conman)); + prune(); + if (runConfig.getRows() > 0) { + int r = runConfig.getInt("run", 0); + if (r > 0) { + if (r != run) { + clear(); + run = r; + } + } + if (run > 0) { + int unix = runConfig.getInt("unixtime",0); + int evno = runConfig.getInt("event",0); + if (unix > 0 && evno > 0) eventUnix.put(evno, unix); + } + } + } + + /** + * Trim down the helicity and scaler FIFOs to reasonable values. + */ + void prune() { + // Estimated size of HelicityState is ~22 bytes. + // 1 million states, ~22 MB, 1 minute at 10 kHz trigger. + if (helicities.size() > 2e6) + pruneHelicities(helicities, (int)1e6); + // Assuming scalers are 50x larger. + // 10,000 events is 2.7 hours at 1 Hz. + if (scalers.size() > 2e4) + scalers.clear((int)1e4); + } + + /** + * Get a new event with RUN::unix and RUN::config banks. + * @param runConfig + * @return + */ + Event getUnixEvent(Bank config) { + Bank unix = new Bank(schema.getSchema("RUN::unix"), eventUnix.size()); + int row = 0; + for (int evno : eventUnix.keySet()) { + unix.putInt("event", row, evno); + unix.putInt("unixtime",row, eventUnix.get(evno)); + row++; + } + Event e = new Event(); + e.write(config); + e.write(unix); + return e; + } + + /** + * Get the unix time for a given RUN::config bank. + * @return unix time + */ + int getUnixTime(Bank runConfig) { + if (runConfig.getRows() < 1) { + Integer key = eventUnix.floorKey(runConfig.getInt("event",0)); + if (key != null) { + Integer unix = eventUnix.get(key); + if (unix != null) return unix; + } + } + return 0; + } + + /** + * Update RUN::config's unixtime, and update the event. + */ + void processEventUnix(Event event, Bank runConfig) { + int ut = getUnixTime(runConfig); + event.remove(runConfig.getSchema()); + runConfig.putInt("unixtime", 0, ut); + event.write(runConfig); + } + + /** + * Update an event's helicity information, in REC::Event and HEL::scaler. + * @param event + * @param runConfig + * @param recEvent + */ + void processHelicity(Event event, Bank runConfig, Bank recEvent) { + HelicityBit hb = helicitySequence.search(runConfig.getLong("timestamp", 0)); + HelicityBit hbraw = helicitySequence.getHalfWavePlate() ? HelicityBit.getFlipped(hb) : hb; + recEvent.putByte("helicity",0,hb.value()); + recEvent.putByte("helicityRaw",0,hbraw.value()); + Bank scaler = new Bank(helScaler); + event.read(scaler); + if (scaler.getRows()>0) { + event.remove(helScaler); + SerialUtil.assignScalerHelicity(runConfig.getLong("timestamp",0), scaler, helicitySequence); + event.write(scaler); + } + } + + /** + * Update a REC::EVent's bank beam-charge information. + */ + static void processScalers(DaqScalers ds, Bank recEvent) { + if (ds != null) { + recEvent.putFloat("beamCharge",0, (float) ds.dsc2.getBeamChargeGated()); + recEvent.putDouble("liveTime",0,ds.dsc2.getLivetime()); + } + } + + /** + * For all states deeper than depth, remove consecutive helicity states that + * differ only by timestamp. + * @param helicities + * @param depth + */ + static void pruneHelicities(TreeSet helicities, int depth) { + HelicityState prev = null; + ListIterator iter = (ListIterator)helicities.iterator(); + final int size = helicities.size(); + while (iter.hasNext() && iter.nextIndex() < size-depth) { + HelicityState next = iter.next(); + if (prev != null && prev == next) + helicities.remove(next); + } + } + + /** + * FIXME: Switch to lists and delete this. + * @param tag1banks + * @return + */ + static Bank[] createTaggedBanks(Schema[] tag1banks) { + List lbank = Arrays.asList(tag1banks).stream().map(s -> new Bank(s)).collect(Collectors.toList()); + ListIterator ibank = lbank.listIterator(); + Bank[] banks = new Bank[lbank.size()]; + while (ibank.hasNext()) + banks[ibank.nextIndex()] = ibank.next(); + return banks; + } + +} diff --git a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Util.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/serial/SerialUtil.java similarity index 98% rename from common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Util.java rename to common-tools/clas-detector/src/main/java/org/jlab/detector/serial/SerialUtil.java index 7ac75bcea2..8967760c25 100644 --- a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Util.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/serial/SerialUtil.java @@ -1,4 +1,4 @@ -package org.jlab.analysis.postprocess; +package org.jlab.detector.serial; import java.sql.Time; import java.util.Arrays; @@ -26,9 +26,9 @@ * Static utility methods for postprocessing. * @author baltzell */ -class Util { +public class SerialUtil { - static final Logger logger = Logger.getLogger(Util.class.getName()); + static final Logger logger = Logger.getLogger(SerialUtil.class.getName()); /** * Assign the delay-corrected helicity to the HEL::scaler bank's rows diff --git a/common-tools/clas-geometry/pom.xml b/common-tools/clas-geometry/pom.xml index 4d9dd2fa7b..607a2983f7 100644 --- a/common-tools/clas-geometry/pom.xml +++ b/common-tools/clas-geometry/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/common-tools/clas-io/pom.xml b/common-tools/clas-io/pom.xml index bbd7c2803d..4bad764eb9 100644 --- a/common-tools/clas-io/pom.xml +++ b/common-tools/clas-io/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -18,7 +18,6 @@ org.jlab.coda xmsg - 2.3 @@ -45,13 +44,12 @@ org.jlab.coda et - 14.0 org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -73,7 +71,7 @@ - + diff --git a/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java b/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java index 86f3e57c78..6e06bd2270 100644 --- a/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java +++ b/common-tools/clas-io/src/main/java/org/jlab/utils/CLASResources.java @@ -1,12 +1,26 @@ package org.jlab.utils; +import org.jlab.jnp.hipo4.data.SchemaFactory; + /** * * @author gavalian * @author kenjo */ public class CLASResources { - + + private static volatile SchemaFactory FULL_SCHEMA = null; + + public static synchronized SchemaFactory getFullSchema() { + if (FULL_SCHEMA == null) { + FULL_SCHEMA = new SchemaFactory(); + FULL_SCHEMA.initFromDirectory(getResourcePath("etc/bankdefs/hipo4")); + } + SchemaFactory s = new SchemaFactory(); + s.copy(FULL_SCHEMA); + return s; + } + public static String getResourcePath(String resource){ String CLAS12DIR = System.getenv("CLAS12DIR"); String CLAS12DIRPROP = System.getProperty("CLAS12DIR"); @@ -44,4 +58,5 @@ public static String getEnvironmentVariable(String envvarname){ return null; } + } diff --git a/common-tools/clas-io/src/main/java/org/jlab/utils/ClaraYaml.java b/common-tools/clas-io/src/main/java/org/jlab/utils/ClaraYaml.java index b6525bfb3b..2f4f0afec8 100644 --- a/common-tools/clas-io/src/main/java/org/jlab/utils/ClaraYaml.java +++ b/common-tools/clas-io/src/main/java/org/jlab/utils/ClaraYaml.java @@ -143,9 +143,11 @@ public JSONObject filter(String serviceName) { /** * Emulate the way CLARA parses the full YAML and presents it in EngineData. - * The "global" and "service" subsections in the "configuration" section get - * squashed into one namespace, and service-specific keys override any - * globals of the same name. + * + * The YAML's "global" and "services" configuration sections get squashed + * into one namespace, with service-specific parameters overriding globals + * of the same name. Also, for the special services named "reader" and + * "writer", the "io-services" section is searched instead of "services". * * @param claraJson the full CLARA YAML contents * @param serviceName the name of the service in CLARA YAML (not class name) @@ -161,9 +163,10 @@ public static JSONObject filter(JSONObject claraJson, String serviceName) { ret.accumulate(key, globals.getString(key)); } } - if (config.has("services")) { - if (config.getJSONObject("services").has(serviceName)) { - JSONObject service = config.getJSONObject("services").getJSONObject(serviceName); + String section = serviceName.equals("reader") || serviceName.equals("writer") ? "io-services" : "services"; + if (config.has(section)) { + if (config.getJSONObject(section).has(serviceName)) { + JSONObject service = config.getJSONObject(section).getJSONObject(serviceName); for (String key : service.keySet()) { ret.put(key, service.getString(key)); } diff --git a/common-tools/clas-jcsg/pom.xml b/common-tools/clas-jcsg/pom.xml index 422a59cee9..6eedadcd39 100644 --- a/common-tools/clas-jcsg/pom.xml +++ b/common-tools/clas-jcsg/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-jcsg - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -32,26 +32,21 @@ org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT java3d vecmath - 1.3.1 - - - org.slf4j - slf4j-api diff --git a/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DTSweep.java b/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DTSweep.java index 3ce4de8cbd..7147633bfe 100644 --- a/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DTSweep.java +++ b/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DTSweep.java @@ -66,14 +66,9 @@ import static eu.mihosoft.vrl.v3d.ext.org.poly2tri.TriangulationUtil.smartIncircle; import java.util.List; +import java.util.logging.Logger; -import eu.mihosoft.vrl.v3d.ext.org.poly2tri.TriangulationMode; -import eu.mihosoft.vrl.v3d.ext.org.poly2tri.TriangulationPoint; import eu.mihosoft.vrl.v3d.ext.org.poly2tri.TriangulationUtil.Orientation; -import eu.mihosoft.vrl.v3d.ext.org.poly2tri.DelaunayTriangle; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * Sweep-line, Constrained Delauney Triangulation (CDT) See: Domiter, V. and @@ -86,7 +81,7 @@ */ class DTSweep { - private final static Logger logger = LoggerFactory.getLogger(DTSweep.class); + private final static Logger logger = Logger.getLogger(DTSweep.class.getName()); private final static double PI_div2 = Math.PI / 2; private final static double PI_3div4 = 3 * Math.PI / 4; @@ -359,7 +354,7 @@ private static void edgeEvent(DTSweepContext tcx, edgeEvent(tcx, edge.p, edge.q, node.triangle, edge.q); } catch (PointOnEdgeException e) { - logger.warn("Skipping edge: {}", e.getMessage()); + logger.warning(() -> "Skipping edge: "+e.getMessage()); } } diff --git a/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DTSweepConstraint.java b/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DTSweepConstraint.java index 1ab4de02f7..e75360fb7d 100644 --- a/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DTSweepConstraint.java +++ b/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DTSweepConstraint.java @@ -60,8 +60,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import java.util.logging.Logger; /** * @@ -70,7 +69,7 @@ */ class DTSweepConstraint extends TriangulationConstraint { - private final static Logger logger = LoggerFactory.getLogger( DTSweepConstraint.class ); + private final static Logger logger = Logger.getLogger( DTSweepConstraint.class.getName() ); public TriangulationPoint p; public TriangulationPoint q; @@ -101,7 +100,7 @@ else if( p1.getY() == p2.getY() ) } else if( p1.getX() == p2.getX() ) { - logger.info( "Failed to create constraint {}={}", p1, p2 ); + logger.info(() -> "Failed to create constraint "+p1+"="+p2); // throw new DuplicatePointException( p1 + "=" + p2 ); // return; } diff --git a/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DTSweepContext.java b/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DTSweepContext.java index 3482f11bf3..aa369e2844 100644 --- a/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DTSweepContext.java +++ b/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DTSweepContext.java @@ -60,20 +60,16 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - import java.util.ArrayDeque; import java.util.Collections; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - +import java.util.logging.Logger; /** * @author Thomas ??? (thahlen@gmail.com) */ class DTSweepContext extends TriangulationContext { - private final static Logger logger = LoggerFactory.getLogger( DTSweepContext.class ); + private final static Logger logger = Logger.getLogger( DTSweepContext.class.getName() ); // Inital triangle factor, seed triangle will extend 30% of // PointSet width to both left and right. diff --git a/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DelaunayTriangle.java b/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DelaunayTriangle.java index 3a8f7cf652..f125574402 100644 --- a/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DelaunayTriangle.java +++ b/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/DelaunayTriangle.java @@ -60,14 +60,11 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ import java.util.ArrayList; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +import java.util.logging.Logger; class DelaunayTriangle { - private final static Logger logger = LoggerFactory.getLogger( DelaunayTriangle.class ); + private final static Logger logger = Logger.getLogger( DelaunayTriangle.class.getName() ); /** Neighbor pointers */ public final DelaunayTriangle[] neighbors = new DelaunayTriangle[3]; @@ -160,7 +157,7 @@ else if( ( p1 == points[0] && p2 == points[1] ) || ( p1 == points[1] && p2 == po } else { - logger.error( "Neighbor error, please report!" ); + logger.severe( "Neighbor error, please report!" ); // throw new Exception("Neighbor error, please report!"); } } @@ -185,7 +182,7 @@ else if( t.contains( points[0], points[1] ) ) } else { - logger.error( "markNeighbor failed" ); + logger.severe( "markNeighbor failed" ); } } @@ -295,7 +292,7 @@ else if( point == points[2] ) { return points[0]; } - logger.error( "point location error" ); + logger.severe( "point location error" ); throw new RuntimeException("[FIXME] point location error"); } @@ -314,7 +311,7 @@ else if( point == points[2] ) { return points[1]; } - logger.error( "point location error" ); + logger.severe( "point location error" ); throw new RuntimeException("[FIXME] point location error"); } @@ -341,7 +338,7 @@ else if( oPoint == points[2] ) } else { - logger.error( "legalization error" ); + logger.severe( "legalization error" ); throw new RuntimeException("legalization bug"); } } diff --git a/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/Poly2Tri.java b/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/Poly2Tri.java index f0dcf87376..6b208a48a9 100644 --- a/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/Poly2Tri.java +++ b/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/Poly2Tri.java @@ -60,13 +60,11 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import java.util.logging.Logger; class Poly2Tri { - private final static Logger logger = LoggerFactory.getLogger( Poly2Tri.class ); + private final static Logger logger = Logger.getLogger( Poly2Tri.class.getName() ); private static final TriangulationAlgorithm _defaultAlgorithm = TriangulationAlgorithm.DTSweep; diff --git a/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/Polygon.java b/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/Polygon.java index 484e9b46d3..814325572e 100644 --- a/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/Polygon.java +++ b/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/Polygon.java @@ -63,13 +63,11 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import java.util.logging.Logger; class Polygon implements Triangulatable { - private final static Logger logger = LoggerFactory.getLogger( Polygon.class ); + private final static Logger logger = Logger.getLogger( Polygon.class.getName() ); protected ArrayList _points = new ArrayList(); protected ArrayList _steinerPoints; @@ -110,7 +108,7 @@ public Polygon( List points ) // Its something that often happen when importing polygon data from other formats if( points.get(0).equals( points.get(points.size()-1) ) ) { - logger.warn( "Removed duplicate point"); + logger.warning( "Removed duplicate point"); points.remove( points.size()-1 ); } _points.addAll( points ); diff --git a/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/TriangulationProcess.java b/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/TriangulationProcess.java index 28f4529f76..f6ab12dc38 100644 --- a/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/TriangulationProcess.java +++ b/common-tools/clas-jcsg/src/main/java/eu/mihosoft/vrl/v3d/ext/org/poly2tri/TriangulationProcess.java @@ -62,11 +62,7 @@ import java.lang.Thread.State; import java.util.ArrayList; import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - - +import java.util.logging.Logger; /** * @@ -75,7 +71,7 @@ */ class TriangulationProcess implements Runnable { - private final static Logger logger = LoggerFactory.getLogger( TriangulationProcess.class ); + private final static Logger logger = Logger.getLogger(TriangulationProcess.class.getName()); private final TriangulationAlgorithm _algorithm; @@ -261,7 +257,7 @@ public void run() Poly2Tri.triangulate( _tcx ); } _triangulationTime = ( System.nanoTime() - time ) / 1e6; - logger.info( "Triangulation of {} points [{}ms]", _pointCount, _triangulationTime ); + logger.info(() -> "Triangulation of "+_pointCount+" points ["+_triangulationTime+"ms]"); sendEvent( TriangulationProcessEvent.Done ); } catch( RuntimeException e ) @@ -269,7 +265,7 @@ public void run() if( _awaitingTermination ) { _awaitingTermination = false; - logger.info( "Thread[{}] : {}", _thread.getName(), e.getMessage() ); + logger.info(() -> "Thread["+_thread.getName()+")] : "+e.getMessage() ); sendEvent( TriangulationProcessEvent.Aborted ); } else @@ -281,7 +277,7 @@ public void run() catch( Exception e ) { e.printStackTrace(); - logger.info( "Triangulation exception {}", e.getMessage() ); + logger.info(() -> "Triangulation exception "+e.getMessage()); sendEvent( TriangulationProcessEvent.Failed ); } finally diff --git a/common-tools/clas-logging/pom.xml b/common-tools/clas-logging/pom.xml index be8daa21c6..233088707d 100644 --- a/common-tools/clas-logging/pom.xml +++ b/common-tools/clas-logging/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-logging - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/common-tools/clas-math/pom.xml b/common-tools/clas-math/pom.xml index defda31d3e..17fa23d823 100644 --- a/common-tools/clas-math/pom.xml +++ b/common-tools/clas-math/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-math - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/common-tools/clas-physics/pom.xml b/common-tools/clas-physics/pom.xml index 742da6f90a..c9f1441c0b 100644 --- a/common-tools/clas-physics/pom.xml +++ b/common-tools/clas-physics/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/common-tools/clas-reco/pom.xml b/common-tools/clas-reco/pom.xml index 18131885bc..975df92bdc 100644 --- a/common-tools/clas-reco/pom.xml +++ b/common-tools/clas-reco/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -36,52 +36,46 @@ jar-with-dependencies - - org.jlab.coda - jtools - 2.2 - - cnuphys magfield - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT cnuphys swimmer - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/Clas12Types.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/Clas12Types.java index 4daf8a9c13..656d9b9211 100644 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/Clas12Types.java +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/Clas12Types.java @@ -5,8 +5,6 @@ import org.jlab.clara.base.error.ClaraException; import org.jlab.clara.engine.ClaraSerializer; import org.jlab.clara.engine.EngineDataType; -import org.jlab.clas12.tools.MimeType; -import org.jlab.clas12.tools.property.JPropertyList; import org.jlab.jnp.hipo4.data.Event; @@ -30,22 +28,9 @@ public Object read(ByteBuffer buffer) throws ClaraException { } } - public static final EngineDataType EVIO = new EngineDataType(MimeType.EVIO.type(), EngineDataType.BYTES.serializer()); + public static final EngineDataType EVIO = new EngineDataType("binary/data-evio", EngineDataType.BYTES.serializer()); public static final EngineDataType HIPO = new EngineDataType("binary/data-hipo", new HipoSerializer()); - public static final EngineDataType PROPERTY_LIST = new EngineDataType(MimeType.PROPERTY_LIST.type(), new ClaraSerializer() { - - @Override - public ByteBuffer write(Object data) throws ClaraException { - JPropertyList pl = (JPropertyList) data; - return ByteBuffer.wrap(pl.getStringRepresentation(true).getBytes()); - } - - @Override - public Object read(ByteBuffer buffer) throws ClaraException { - return new JPropertyList(new String(buffer.array())); - } - }); } diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/DecoderEngine.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/DecoderEngine.java index 319b5f9ca4..8ddd4c0160 100644 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/DecoderEngine.java +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/DecoderEngine.java @@ -82,9 +82,9 @@ public EngineData execute(EngineData input) { } HipoDataEvent hipo; try { - CLASDecoder d = pool.take(); + CLASDecoder d = pool.poll(); hipo = new HipoDataEvent(d.getDecodedEvent(evio),schema); - pool.put(d); + pool.offer(d); output.setData("binary/data-hipo", hipo.getHipoEvent()); } catch (Exception e) { String msg = String.format("Error processing input event%n%n%s", ClaraUtil.reportException(e)); diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java index b0b4a98542..6e2271c4e3 100644 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java @@ -19,6 +19,7 @@ import java.util.Arrays; import org.jlab.coda.jevio.EvioException; import org.jlab.detector.decode.CLASDecoder4; +import org.jlab.detector.serial.Occupancer; import org.jlab.io.evio.EvioDataEvent; import org.jlab.io.evio.EvioSource; import org.jlab.io.hipo.HipoDataEvent; @@ -42,10 +43,15 @@ public class EngineProcessor { private SchemaFactory banksToKeep = null; private final List schemaExempt = Arrays.asList("RUN::config","DC::tdc"); - private CLASDecoder4 decoder = new CLASDecoder4(); + private final CLASDecoder4 decoder = new CLASDecoder4(); + private final Occupancer occupancer = new Occupancer((long)1<<39,100); public EngineProcessor(){} + public EngineProcessor(OptionParser parser) { + init(parser); + } + private ReconstructionEngine findEngine(String clazz) { for (String k : processorEngines.keySet()) { if (processorEngines.get(k).getClass().getName().equals(clazz)) { @@ -306,12 +312,13 @@ public void processEvent(DataEvent event){ } public void processFile(String file, String output){ - this.processFile(file, output, -1, -1); + this.processFile(file, output, 0, 0); } public void processEvent(DataEvent event, HipoDataSync writer) { processEvent(event); removeBanks(event); + occupancer.process(((HipoDataEvent)event).getHipoEvent()); writer.writeEvent(event); } @@ -392,8 +399,8 @@ protected static OptionParser getParser() { parser.addRequired("-i","input.evio/hipo"); parser.setRequiresInputList(false); parser.addOption("-c","0","use default configuration [0 - no, 1 - yes/default, 2 - all services] "); - parser.addOption("-s","-1","number of events to skip"); - parser.addOption("-n","-1","number of events to process"); + parser.addOption("-s","0","number of events to skip"); + parser.addOption("-n","0","number of events to process"); parser.addOption("-y","0","yaml file"); parser.addOption("-u","true","update dictionary from writer ? "); parser.addOption("-S",null,"schema directory"); @@ -404,62 +411,53 @@ protected static OptionParser getParser() { return parser; } - public static void main(String[] args){ - - OptionParser parser = EngineProcessor.getParser(); - parser.parse(args); - parser.syncLogLevel(LOGGER); - - List services = parser.getInputList(); - - String inputFile = parser.getOption("-i").stringValue(); - String outputFile = parser.getOption("-o").stringValue(); - - EngineProcessor proc = new EngineProcessor(); + protected final void init(OptionParser p) { + p.syncLogLevel(LOGGER); - int config = parser.getOption("-c").intValue(); - int nskip = parser.getOption("-s").intValue(); - int nevents = parser.getOption("-n").intValue(); - String yamlFileName = parser.getOption("-y").stringValue(); + if(p.getOption("-u").stringValue().contains("false")) + updateDictionary = false; - String update = parser.getOption("-u").stringValue(); - if(update.contains("false")==true) proc.updateDictionary = false; - - if(!yamlFileName.equals("0")) { - proc.parseYaml(yamlFileName); + // configure from YAML: + if(!p.getOption("-y").stringValue().equals("0")) { + parseYaml(p.getOption("-y").stringValue()); } - else if (config>0){ - if(config>2){ - proc.initCaloDebug(); - } else if(config==2){ - proc.initAll(); - } else { - proc.initDefault(); - } + // use a builtin engine list: + else if (p.getOption("-c").intValue() > 0) { + if (p.getOption("-c").intValue() > 2 ) initCaloDebug(); + else if (p.getOption("-c").intValue() == 2) initAll(); + else initDefault(); } + // command-line engine list: else { - for(String engine : services){ + for(String engine : p.getInputList()){ System.out.println("Adding reconstruction engine " + engine); - proc.addEngine(engine); + addEngine(engine); } } // command-line schema overrides YAML: - if (parser.getOption("-S").stringValue() != null) - proc.setBanksToKeep(parser.getOption("-S").stringValue()); + if (p.getOption("-S").stringValue() != null) + setBanksToKeep(p.getOption("-S").stringValue()); // command-line filename for background merging overrides YAML: - if (parser.getOption("-B").stringValue() != null) - proc.setBackgroundFiles(parser.getOption("-B").stringValue()); + if (p.getOption("-B").stringValue() != null) + setBackgroundFiles(p.getOption("-B").stringValue()); // command-line filename for post-processing overrides YAML: - if (parser.getOption("-P").stringValue() != null) { - proc.setPreloadFiles(parser.getOption("-P").stringValue(), - parser.getOption("-H").intValue()!=0, - parser.getOption("-R").intValue()!=0); + if (p.getOption("-P").stringValue() != null) { + setPreloadFiles(p.getOption("-P").stringValue(), + p.getOption("-H").intValue()!=0, + p.getOption("-R").intValue()!=0); } - - proc.processFile(inputFile,outputFile,nskip,nevents); } + public static void main(String[] args) { + OptionParser parser = EngineProcessor.getParser(); + parser.parse(args); + EngineProcessor proc = new EngineProcessor(parser); + proc.processFile(parser.getOption("-i").stringValue(), + parser.getOption("-o").stringValue(), + parser.getOption("-s").intValue(), + parser.getOption("-n").intValue()); + } } diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/ReconstructionEngine.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/ReconstructionEngine.java index fa53b15a1c..2c3280e576 100644 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/ReconstructionEngine.java +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/ReconstructionEngine.java @@ -78,6 +78,8 @@ public abstract class ReconstructionEngine implements Engine { abstract public boolean init(); abstract public void detectorChanged(int runNumber); + final Object detectorChangedLock = new Object(); + public ReconstructionEngine(String name, String author, String version){ engineName = name; engineAuthor = author; @@ -345,16 +347,18 @@ public void dropBanks(DataEvent event) { } } } - - public synchronized boolean checkRunNumber(DataEvent event) { + + public boolean checkRunNumber(DataEvent event) { int r = runNumberOverride; if (r <= 0 && event.hasBank("RUN::config")) { r = event.getBank("RUN::config").getInt("run",0); } if (r > 0) { - if (this.runNumbers.isEmpty() || r != this.runNumbers.get(this.runNumbers.size()-1)) { - this.runNumbers.add(r); - this.detectorChanged(r); + synchronized (detectorChangedLock) { + if (this.runNumbers.isEmpty() || r != this.runNumbers.get(this.runNumbers.size()-1)) { + this.runNumbers.add(r); + this.detectorChanged(r); + } } } return !this.ignoreInvalidRunNumbers || r>0; diff --git a/common-tools/clas-tracking/pom.xml b/common-tools/clas-tracking/pom.xml index 13cbe809aa..6de3ed7f02 100644 --- a/common-tools/clas-tracking/pom.xml +++ b/common-tools/clas-tracking/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas clas-tracking - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -33,23 +33,23 @@ org.jlab.clas swim-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/ProbChi2perNDF.java b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/ProbChi2perNDF.java new file mode 100644 index 0000000000..0a67deb03a --- /dev/null +++ b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/ProbChi2perNDF.java @@ -0,0 +1,23 @@ +package org.jlab.clas.tracking.utilities; + +import org.apache.commons.math3.special.Gamma; + +/** Chi-square probability utilities */ +public class ProbChi2perNDF { + + /** + * Returns the upper-tail probability (survival function, or p-value) of the + * chi-square distribution: P(X >= chi2) for X ~ χ²(ndf). + * @param chi2 the chi-square statistic + * @param ndf the number of degrees of freedom + * @return the probability of observing a chi-square value at least as large as {@code chi2}, in the range [0, 1] + */ + public static double prob(double chi2, int ndf) { + if(ndf <= 0) + return 0.0; + if(chi2 <= 0.0) { // edge cases follow ROOT's `TMath::Prob` conventions + return chi2 < 0.0 ? 0.0 : 1.0; + } + return Gamma.regularizedGammaQ(0.5 * ndf, 0.5 * chi2); + } +} diff --git a/common-tools/clas-utils/pom.xml b/common-tools/clas-utils/pom.xml index d771b9196e..9b9b7767e1 100644 --- a/common-tools/clas-utils/pom.xml +++ b/common-tools/clas-utils/pom.xml @@ -4,25 +4,24 @@ org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.apache.commons commons-text - 1.15.0 org.jlab.clas clas-logging - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT junit diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/Benchmark.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/Benchmark.java index 96ef935a8b..48495aee4b 100644 --- a/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/Benchmark.java +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/Benchmark.java @@ -1,26 +1,38 @@ package org.jlab.utils.benchmark; import java.util.Arrays; +import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.Timer; import java.util.TimerTask; import org.jlab.utils.benchmark.BenchmarkTimer.BenchmarkMultiTimer; -import org.jlab.utils.benchmark.BenchmarkTimer.BenchmarkTimerTotal; /** * * @author gavalian */ -public class Benchmark { - - private static final Benchmark benchmarkInstance = new Benchmark(); - private final Map timerStore = new LinkedHashMap<>(); +public class Benchmark implements Comparator { + + String name; + private static final Benchmark benchmarkInstance = new Benchmark(""); + private Map timerStore = new LinkedHashMap<>(); private Timer updateTimer = null; + private final ArrayList specials = new ArrayList<>(); - private Benchmark() {} - + public Benchmark(String name) { + this.name = name; + } + + public Benchmark(String name, String[] specials) { + this.name = name; + this.specials.addAll(Arrays.asList(specials)); + } + public static Benchmark getInstance(){ return benchmarkInstance; } @@ -39,36 +51,34 @@ public void reset(){ bt.reset(); } - public void addTimer(String name){ + public synchronized void addTimer(String name){ if (!timerStore.containsKey(name)) timerStore.put(name, new BenchmarkMultiTimer(name)); - else - System.err.println("[Benchmark] -----> error. timer with name ("+ name + ") already exists"); } public void pause(String name){ if (!timerStore.containsKey(name)) - timerStore.put(name, new BenchmarkMultiTimer(name)); + addTimer(name); else timerStore.get(name).pause(); } public void resume(String name){ if (!timerStore.containsKey(name)) - timerStore.put(name, new BenchmarkMultiTimer(name)); + addTimer(name); timerStore.get(name).resume(); } public void pause(int thread, String name){ if (!timerStore.containsKey(name)) - timerStore.put(name, new BenchmarkMultiTimer(name)); + addTimer(name); else timerStore.get(name).pause(thread); } public void resume(int thread, String name){ if (!timerStore.containsKey(name)) - timerStore.put(name, new BenchmarkMultiTimer(name)); + addTimer(name); timerStore.get(name).resume(thread); } @@ -76,13 +86,6 @@ public BenchmarkTimer getTimer(String name){ return timerStore.getOrDefault(name, null); } - public BenchmarkTimer getTotal(String name) { - BenchmarkTimerTotal total = new BenchmarkTimerTotal(name); - for (BenchmarkTimer b : timerStore.values()) - total.add(b); - return total; - } - @Override public String toString(){ StringBuilder s = new StringBuilder(); @@ -91,36 +94,51 @@ public String toString(){ int len = timers.iterator().next().toString().length(); char[] asterix = new char[len+8]; Arrays.fill(asterix,'*'); - String margins = new String(asterix); + String margins = new String(asterix) + "\n"; s.append(margins); - s.append("\n"); - s.append("* Benchmark Results \n"); + s.append("* "); + s.append(name); + s.append(" Benchmarks\n"); s.append(margins); - s.append("\n"); for (BenchmarkTimer b : timers) { s.append("* "); s.append(b); s.append(" *\n"); } - s.append("* "); - s.append(getTotal("")); - s.append(" *\n"); + s.append(String.format("* %-15s : #Calls %12.2f, Total = %12.2f sec, Unit = %12.3f msec *\n", + "TOTAL", + ((float)timers.stream().mapToInt(x -> x.numberOfCalls.get()).sum())/timers.size(), + timers.stream().mapToDouble(x -> x.getSeconds()).sum(), + timers.stream().mapToDouble(x -> x.getMillisecondsPerCall()).sum())); s.append(margins); - s.append("\n"); } return s.toString(); } - public static void main(String[] args){ - Benchmark b = getInstance(); - b.printTimer(10); - int loop = 0; - while(true){ - b.resume("COUNT"); - loop++; - b.pause("COUNT"); - try { Thread.sleep(2000); } - catch (InterruptedException ex) {} + public String[] toCSV() { + return new String[]{ + String.join(",",timerStore.keySet()) + ",TOTAL", + String.join(",",timerStore.values().stream().map(x -> String.format("%.2f",x.getMillisecondsPerCall())).toList()) + + "," + String.format("%.2f",timerStore.values().stream().mapToDouble(x -> x.getMillisecondsPerCall()).sum()) + }; + } + + public void sortByName() { + List keys = new ArrayList<>(timerStore.keySet()); + Collections.sort(keys, this); + Map timers = new LinkedHashMap<>(); + for (String s : keys) + timers.put(s, timerStore.get(s)); + timerStore = timers; + } + + @Override + public int compare(String s1, String s2) { + if (specials.contains(s1)) { + return specials.contains(s2) ? s1.compareTo(s2) : -1; + } else { + return specials.contains(s2) ? 1 : s1.compareTo(s2); } } + } diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/BenchmarkTimer.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/BenchmarkTimer.java index 803a754d8b..aa07bb2841 100644 --- a/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/BenchmarkTimer.java +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/BenchmarkTimer.java @@ -1,7 +1,7 @@ package org.jlab.utils.benchmark; import java.util.ArrayList; -import java.util.HashMap; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; @@ -11,9 +11,11 @@ */ public class BenchmarkTimer { + private static final int WARMUP_CALLS = 100; + public static class BenchmarkMultiTimer extends BenchmarkTimer { - HashMap timeAtResume = new HashMap<>(); - HashMap isPaused = new HashMap<>(); + ConcurrentHashMap timeAtResume = new ConcurrentHashMap<>(); + ConcurrentHashMap isPaused = new ConcurrentHashMap<>(); public BenchmarkMultiTimer(String name) { super(name); } public void resume(int thread) { if (!isPaused.containsKey(thread) || isPaused.get(thread)) { @@ -23,8 +25,8 @@ public void resume(int thread) { } public void pause(int thread) { if (!isPaused.get(thread)) { - numberOfCalls.incrementAndGet(); - totalTime.addAndGet(System.nanoTime() - timeAtResume.get(thread)); + if (numberOfCalls.incrementAndGet() > WARMUP_CALLS) + totalTime.addAndGet(System.nanoTime() - timeAtResume.get(thread)); isPaused.put(thread, true); } } @@ -36,16 +38,6 @@ public void reset(){ } } - public static class BenchmarkTimerTotal extends BenchmarkMultiTimer { - ArrayList benchmarks = new ArrayList<>(); - public BenchmarkTimerTotal(String name) { super(name); } - public void add(BenchmarkTimer b) { - benchmarks.add(b); - totalTime.addAndGet(b.totalTime.get()); - numberOfCalls.addAndGet(b.numberOfCalls.get()); - } - } - private String timerName = "generic"; private long timeAtResume = 0; private Boolean isPaused = true; @@ -72,8 +64,8 @@ public void resume(){ public void pause(){ if(isPaused==false){ - totalTime.addAndGet(System.nanoTime() - timeAtResume); - numberOfCalls.incrementAndGet(); + if (numberOfCalls.incrementAndGet() > WARMUP_CALLS) + totalTime.addAndGet(System.nanoTime() - timeAtResume); isPaused = true; } } @@ -85,7 +77,7 @@ public void reset(){ isPaused = true; } - public double getMiliseconds(){ + public double getMilliseconds(){ return totalTime.get() / 1.0e6; } @@ -93,11 +85,14 @@ public double getSeconds(){ return totalTime.get() / 1.0e9; } + public double getMillisecondsPerCall() { + return numberOfCalls.get() > WARMUP_CALLS ? getMilliseconds() / (numberOfCalls.get() - WARMUP_CALLS) : 0; + } + @Override public String toString() { - double timePerCall = 0.0; - if (numberOfCalls.get() != 0) timePerCall = getMiliseconds() / numberOfCalls.get(); return String.format("%-15s : #Calls %12d, Total = %12.2f sec, Unit = %12.3f msec", - getName(), numberOfCalls.get(), getSeconds(), timePerCall); + getName(), numberOfCalls.get()-WARMUP_CALLS, getSeconds(), getMillisecondsPerCall()); } + } diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/ProgressPrintout.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/ProgressPrintout.java index 2737572550..2964159283 100644 --- a/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/ProgressPrintout.java +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/ProgressPrintout.java @@ -10,6 +10,8 @@ * @author gavalian */ public class ProgressPrintout { + + private final int WARMUP_CALLS = 100; private TreeMap items = new TreeMap<>(); private Long previousPrintoutTime = (long) 0; @@ -35,9 +37,9 @@ public void setInterval(double interval){ public String getUpdateString(){ double totalElapsedTime = (this.previousPrintoutTime-this.startPrintoutTime)*1e-3; + double averageTime = 1000.0*totalElapsedTime/(this.numberOfCalls-WARMUP_CALLS); StringBuilder str = new StringBuilder(); - double averageTime = 1000.0*totalElapsedTime/this.numberOfCalls; - str.append(String.format("%s (%12d) : ", this.printoutLeadingString,this.numberOfCalls)); + str.append(String.format("%s (%12d) : ", this.printoutLeadingString,this.numberOfCalls-WARMUP_CALLS)); str.append(String.format(" time : %8.2f (sec) =>>> average time = %9.3f msec", totalElapsedTime,averageTime)); Set keys = this.items.keySet(); for(String key : keys){ @@ -45,6 +47,10 @@ public String getUpdateString(){ } return str.toString(); } + + public double getHz() { + return ((double)(numberOfCalls-WARMUP_CALLS)) / (previousPrintoutTime-startPrintoutTime) * 1000; + } public void showStatus(){ System.out.println("\n\n"); @@ -53,14 +59,17 @@ public void showStatus(){ } public void updateStatus(){ - this.numberOfCalls++; - Long currentTime = System.currentTimeMillis(); - Double elapsedTime = (currentTime - this.previousPrintoutTime)*1e-3; - //System.out.println("elapsed = " + elapsedTime); - if(elapsedTime>=this.printoutIntervalSeconds){ + if (++this.numberOfCalls < WARMUP_CALLS){ this.previousPrintoutTime = System.currentTimeMillis(); - //System.out.println(" passed time "); - System.out.println(this.getUpdateString()); + this.startPrintoutTime = this.previousPrintoutTime; + } + else if(this.printoutIntervalSeconds > 0){ + Long currentTime = System.currentTimeMillis(); + Double elapsedTime = (currentTime - this.previousPrintoutTime)*1e-3; + if(elapsedTime >= this.printoutIntervalSeconds) { + this.previousPrintoutTime = System.currentTimeMillis(); + System.out.println(this.getUpdateString()); + } } } @@ -83,6 +92,10 @@ public String getItemString(String itemname){ } return str.toString(); } + + public int getNumberOfCalls() { + return numberOfCalls; + } public static void main(String[] args){ ProgressPrintout progress = new ProgressPrintout(); diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/options/OptionParser.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/options/OptionParser.java index 1bdb2c5222..c362aff883 100644 --- a/common-tools/clas-utils/src/main/java/org/jlab/utils/options/OptionParser.java +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/options/OptionParser.java @@ -70,7 +70,12 @@ public void addRequired(String key,String desc){ option.setDescription(desc); requiredOptions.put(key, option); } - + + public void removeOption(String key) { + optionsDescriptors.remove(key); + requiredOptions.remove(key); + } + public void addOption(String key, String defaultValue){ check(key, optionsDescriptors.keySet()); OptionValue option = new OptionValue(key,defaultValue); diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/options/OptionValue.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/options/OptionValue.java index 684dba4aa7..b4d216e392 100644 --- a/common-tools/clas-utils/src/main/java/org/jlab/utils/options/OptionValue.java +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/options/OptionValue.java @@ -9,13 +9,13 @@ public class OptionValue { private String optionString = "-h"; - private String optionValue = ""; + private String optionValue = ""; private String optionDescription = ""; - private String optionDefault = "0"; + private String optionDefault = "0"; public OptionValue() { } - public OptionValue(String opt) { setOption(opt);} - public OptionValue(String opt,String value) { setOption(opt); setValue(value);} + public OptionValue(String opt) { setOption(opt); } + public OptionValue(String opt,String value) { setOption(opt); setValue(value); setDefault(value); } public final OptionValue setOption(String opt){ this.optionString = opt; return this;} public final OptionValue setValue(String value){ this.optionValue = value; return this;} @@ -27,11 +27,11 @@ public OptionValue() { } public String getDescription() { return this.optionDescription;} public String getDefault() { return this.optionDefault;} - public int intValue() { return Integer.parseInt(this.optionValue);} - public long longValue() { return Long.parseLong(this.optionValue);} + public int intValue() { return Integer.decode(this.optionValue);} + public long longValue() { return Long.decode(this.optionValue);} public double doubleValue() { return Double.parseDouble(this.optionValue);} public String stringValue() { return this.optionValue;} - + private int getOptionIndex(List options){ for(int i = 0; i < options.size(); i++){ if(options.get(i).equals(optionString)==true) diff --git a/common-tools/cnuphys/magfield/pom.xml b/common-tools/cnuphys/magfield/pom.xml index 84191cb07c..cfddf10912 100644 --- a/common-tools/cnuphys/magfield/pom.xml +++ b/common-tools/cnuphys/magfield/pom.xml @@ -1,23 +1,23 @@ - 4.0.0 + 4.0.0 - cnuphys - magfield - 14.2.0-SNAPSHOT - jar + cnuphys + magfield + 14.2.2-SNAPSHOT + jar - - cnuphys - clas12 - 14.2.0-SNAPSHOT - + + cnuphys + clas12 + 14.2.2-SNAPSHOT + - - - org.apache.commons - commons-math3 - - + + + org.apache.commons + commons-math3 + + diff --git a/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/MagneticFields.java b/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/MagneticFields.java index 0e5844a136..98637589c4 100644 --- a/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/MagneticFields.java +++ b/common-tools/cnuphys/magfield/src/main/java/cnuphys/magfield/MagneticFields.java @@ -884,6 +884,7 @@ public void initializeMagneticFields(String dataDir, String torusName, String so * Will proceed as long as one path * is not null. */ + @Deprecated public void initializeMagneticFields(String dataDir, String torusName, String solenoidName, String transverseSolenoidName) throws FileNotFoundException, MagneticFieldInitializationException { diff --git a/common-tools/cnuphys/pom.xml b/common-tools/cnuphys/pom.xml index 0d382fb5a0..5d39c6b0ff 100644 --- a/common-tools/cnuphys/pom.xml +++ b/common-tools/cnuphys/pom.xml @@ -4,13 +4,13 @@ cnuphys clas12 - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT pom org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/common-tools/cnuphys/snr/pom.xml b/common-tools/cnuphys/snr/pom.xml index be3d6ba73e..3e8db619ab 100644 --- a/common-tools/cnuphys/snr/pom.xml +++ b/common-tools/cnuphys/snr/pom.xml @@ -1,16 +1,16 @@ - 4.0.0 + 4.0.0 - cnuphys - snr - 14.2.0-SNAPSHOT - jar + cnuphys + snr + 14.2.2-SNAPSHOT + jar - - cnuphys - clas12 - 14.2.0-SNAPSHOT - + + cnuphys + clas12 + 14.2.2-SNAPSHOT + diff --git a/common-tools/cnuphys/snr/src/main/java/cnuphys/snr/NoiseReductionParameters.java b/common-tools/cnuphys/snr/src/main/java/cnuphys/snr/NoiseReductionParameters.java index 91a9b4ca00..096b44cd33 100644 --- a/common-tools/cnuphys/snr/src/main/java/cnuphys/snr/NoiseReductionParameters.java +++ b/common-tools/cnuphys/snr/src/main/java/cnuphys/snr/NoiseReductionParameters.java @@ -733,6 +733,7 @@ public ArrayList getClusters() { * @deprecated doesn't do anything, kept for backwards capability. * @param lookForTracks */ + @Deprecated public static void setLookForTracks(boolean lookForTracks) { } diff --git a/common-tools/cnuphys/splot/pom.xml b/common-tools/cnuphys/splot/pom.xml index 15ddfc5dcd..13fc78837e 100644 --- a/common-tools/cnuphys/splot/pom.xml +++ b/common-tools/cnuphys/splot/pom.xml @@ -1,29 +1,29 @@ - 4.0.0 + 4.0.0 + cnuphys + splot + 14.2.2-SNAPSHOT + jar + + cnuphys - splot - 14.2.0-SNAPSHOT - jar + clas12 + 14.2.2-SNAPSHOT + - + + cnuphys - clas12 - 14.2.0-SNAPSHOT - - - - - cnuphys - numRec - 1.0 - - - cnuphys - f2jutil - 1.0 - - + numRec + 1.0 + + + cnuphys + f2jutil + 1.0 + + diff --git a/common-tools/cnuphys/swimmer/pom.xml b/common-tools/cnuphys/swimmer/pom.xml index b468b6cd34..44c8e28895 100644 --- a/common-tools/cnuphys/swimmer/pom.xml +++ b/common-tools/cnuphys/swimmer/pom.xml @@ -1,31 +1,31 @@ - 4.0.0 + 4.0.0 + cnuphys + swimmer + 14.2.2-SNAPSHOT + jar + + cnuphys - swimmer - 14.2.0-SNAPSHOT - jar + clas12 + 14.2.2-SNAPSHOT + - + + cnuphys - clas12 - 14.2.0-SNAPSHOT - - - - - cnuphys - magfield - 14.2.0-SNAPSHOT - + magfield + 14.2.2-SNAPSHOT + - - cnuphys - splot - 14.2.0-SNAPSHOT - + + cnuphys + splot + 14.2.2-SNAPSHOT + - + diff --git a/common-tools/coat-libs/pom.xml b/common-tools/coat-libs/pom.xml index 12506fd5db..2e53c3b098 100644 --- a/common-tools/coat-libs/pom.xml +++ b/common-tools/coat-libs/pom.xml @@ -4,23 +4,15 @@ org.jlab.coat coat-libs - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT - - - freehep-repo-public - https://clasweb.jlab.org/.clas12maven/ - - - - @@ -32,7 +24,6 @@ org.jlab.coda et - 14.0 @@ -45,142 +36,108 @@ j4ml-clas12 - - org.jama - jamapack - 1.0 - - - - org.jlab.plugins - trackfitter - 1.0 - - - - org.jlab.plugins - jMath - 1.0 - - org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clara-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-logging - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-jcsg - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-analysis - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-math - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas swim-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-tracking - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-decay-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT cnuphys snr - 14.2.0-SNAPSHOT - - - - org.freehep - jminuit - - - - de.erichseifert - vectorgraphics2d - 1.0 - - - - net.objecthunter - exp4j + 14.2.2-SNAPSHOT - + - - src/main/resources - true - - **/pom.properties - - + + src/main/resources + true + + **/pom.properties + + diff --git a/common-tools/pom.xml b/common-tools/pom.xml index 2cb363df1a..5dd862b025 100644 --- a/common-tools/pom.xml +++ b/common-tools/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT pom org.jlab.clas coatjava - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/common-tools/swim-tools/pom.xml b/common-tools/swim-tools/pom.xml index f200d8d169..d18f42b4cc 100644 --- a/common-tools/swim-tools/pom.xml +++ b/common-tools/swim-tools/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas swim-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas common-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -21,37 +21,37 @@ org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT cnuphys magfield - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT cnuphys swimmer - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/etc/bankdefs/hipo4/occupancy.json b/etc/bankdefs/hipo4/occupancy.json new file mode 100644 index 0000000000..ec02d1efdb --- /dev/null +++ b/etc/bankdefs/hipo4/occupancy.json @@ -0,0 +1,272 @@ +[ + { + "name": "OCC::DC::tdc", + "group": 500, + "item": 10, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::DC::tot", + "group": 500, + "item": 11, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::ECAL::adc", + "group": 500, + "item": 12, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::ECAL::tdc", + "group": 500, + "item": 13, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::FTOF::adc", + "group": 500, + "item": 14, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"order" , "type":"B", "info":"order"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::FTOF::tdc", + "group": 500, + "item": 15, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"order" , "type":"B", "info":"order"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::CTOF::adc", + "group": 500, + "item": 16, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"order" , "type":"B", "info":"order"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::CTOF::tdc", + "group": 500, + "item": 17, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"order" , "type":"B", "info":"order"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::HTCC::adc", + "group": 500, + "item": 18, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::HTCC::tdc", + "group": 500, + "item": 19, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::LTCC::adc", + "group": 500, + "item": 20, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::LTCC::tdc", + "group": 500, + "item": 21, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::BST::adc", + "group": 500, + "item": 22, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::BMT::adc", + "group": 500, + "item": 23, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::FTCAL::adc", + "group": 500, + "item": 24, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::FTHODO::adc", + "group": 500, + "item": 25, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::FTTRK::adc", + "group": 500, + "item": 26, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::RICH::tdc", + "group": 500, + "item": 27, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::BAND::adc", + "group": 500, + "item": 28, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::BAND::tdc", + "group": 500, + "item": 29, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::CND::adc", + "group": 500, + "item": 30, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"order" , "type":"B", "info":"order"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + }, + { + "name": "OCC::CND::tdc", + "group": 500, + "item": 31, + "info": "Occupancy Bank", + "entries": [ + { "name":"sector" , "type":"B", "info":"sector"}, + { "name":"layer" , "type":"B", "info":"layer"}, + { "name":"component" , "type":"S", "info":"component"}, + { "name":"order" , "type":"B", "info":"order"}, + { "name":"hits" , "type":"F", "info":"number of hits"} + ] + } +] diff --git a/etc/bankdefs/util/bankSplit.py b/etc/bankdefs/util/bankSplit.py index 52b134174c..ec0ea5bf71 100755 --- a/etc/bankdefs/util/bankSplit.py +++ b/etc/bankdefs/util/bankSplit.py @@ -1,8 +1,9 @@ #!/usr/bin/env python -import json -import sys import os +import sys +import json +import glob # print usage if len(sys.argv)<2: @@ -54,6 +55,9 @@ def create(dirname, banklist): print("Single json files saved in " + workdirectory + singledirectory) +# occupancy banks: +occ = [os.path.basename(x)[:-5] for x in glob.glob('./singles/occupancy/*.json')] + # these should *always* be kept: mc = ["MC::Event", "MC::GenMatch", "MC::Header", "MC::Lund", "MC::Particle", "MC::RecMatch", "MC::True"] tag1 = ["RUN::config", "RAW::epics", "RAW::scaler", "RUN::scaler", "HEL::scaler", "COAT::config", "HEL::flip", "HEL::online", "HEL::decoder"] @@ -83,7 +87,7 @@ def create(dirname, banklist): trig = ["RAW::vtp","HTCC::rec","ECAL::adc","ECAL::calib","ECAL::clusters","ECAL::hits","ECAL::moments","ECAL::peaks","ECAL::tdc","ECAL::trigger"] # accumulate all the DST banks: -dst = rectbai + rectb + mc + tag1 + dets +dst = rectbai + rectb + mc + tag1 + occ + dets dsthb = dst + rechbai + rechb # generate the calib and mon schema: @@ -112,7 +116,12 @@ def create(dirname, banklist): level3 = list(dst) level3.extend(["DC::tdc", "DC::tot", "ECAL::adc", "ECAL::clusters", "FTOF::tdc", "FTOF::adc", "HitBasedTrkg::HBClusters", "HitBasedTrkg::HBTracks", "HTCC::adc", "RF::adc", "RF::tdc", "RUN::rf", "TimeBasedTrkg::TBClusters", "TimeBasedTrkg::TBTracks"]) -import glob +# Raw bank schema: +raw = glob.glob('./singles/data/*.json') +raw.extend(glob.glob('./singles/header/*.json')) +raw.extend(glob.glob('./singles/tag1/*.json')) +raw = [os.path.basename(x)[:-5] for x in raw] +create("raw/", set(raw)) rgl = glob.glob('./singles/full/ALERT*.json') rgl.extend(glob.glob('./singles/full/AHDC*.json')) @@ -135,4 +144,3 @@ def create(dirname, banklist): create("dchv/", set(dchv)) create("level3/", set(level3)) create("trigger/", set(trig)) - diff --git a/etc/data/magfield b/etc/data/magfield index ba858a8d51..a70d843563 160000 --- a/etc/data/magfield +++ b/etc/data/magfield @@ -1 +1 @@ -Subproject commit ba858a8d51cc5bd0b49ce881b32d44aa57e3e68b +Subproject commit a70d84356356068928979373c1f2c8b2203a21e8 diff --git a/etc/services/README.md b/etc/services/README.md index 5815034a31..d684f8f0f4 100644 --- a/etc/services/README.md +++ b/etc/services/README.md @@ -2,7 +2,6 @@ * Real Data * Warning, these must be set appropriately for the data in question: * the CCDB variation - * the run number for MLTD/MLTAI network * [`data-ai.yaml`](data-ai.yaml) * AI track finding * [`data-cv.yaml`](data-cv.yaml) diff --git a/etc/services/data-ai-2026.yaml b/etc/services/data-ai-classic.yaml similarity index 91% rename from etc/services/data-ai-2026.yaml rename to etc/services/data-ai-classic.yaml index 80fccf0326..38c26c7e42 100644 --- a/etc/services/data-ai-2026.yaml +++ b/etc/services/data-ai-classic.yaml @@ -20,18 +20,15 @@ services: name: FTEB - class: org.jlab.service.raster.RasterEngine name: RASTER -# DC denoising - - class: org.jlab.service.ai.DCDenoiseEngine - name: DCDN # DC clustering: nominal algoritm, filled the cluster bank for ai and conventional tracking - class: org.jlab.service.dc.DCHBClustering name: DCCR # This is where the AI plugin would go. THe AI code reads the HB clusters. - - class: org.jlab.service.ai.DCClsComboEngine - name: DCCC + - class: org.jlab.service.mltn.MLTDEngine + name: MLTD # DC using clustering on AI hits: NN assisted HB tracking - - class: org.jlab.service.dc.DCHBTrackingAI - name: DCHTAI + - class: org.jlab.service.dc.DCHBPostClusterAI + name: DCHAI - class: org.jlab.service.ftof.FTOFHBEngine name: FTOFHB - class: org.jlab.service.ec.ECEngine @@ -82,7 +79,9 @@ configuration: MAGFIELDS: magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat magfieldTorusMap: Full_torus_r251_phi181_z251_25Jan2021.dat - DCHTAI: + MLTD: + run: "6302" + DCHAI: outputBankPrefix: "HB" mime-types: diff --git a/etc/services/data-ai.yaml b/etc/services/data-ai.yaml index 38c26c7e42..80fccf0326 100644 --- a/etc/services/data-ai.yaml +++ b/etc/services/data-ai.yaml @@ -20,15 +20,18 @@ services: name: FTEB - class: org.jlab.service.raster.RasterEngine name: RASTER +# DC denoising + - class: org.jlab.service.ai.DCDenoiseEngine + name: DCDN # DC clustering: nominal algoritm, filled the cluster bank for ai and conventional tracking - class: org.jlab.service.dc.DCHBClustering name: DCCR # This is where the AI plugin would go. THe AI code reads the HB clusters. - - class: org.jlab.service.mltn.MLTDEngine - name: MLTD + - class: org.jlab.service.ai.DCClsComboEngine + name: DCCC # DC using clustering on AI hits: NN assisted HB tracking - - class: org.jlab.service.dc.DCHBPostClusterAI - name: DCHAI + - class: org.jlab.service.dc.DCHBTrackingAI + name: DCHTAI - class: org.jlab.service.ftof.FTOFHBEngine name: FTOFHB - class: org.jlab.service.ec.ECEngine @@ -79,9 +82,7 @@ configuration: MAGFIELDS: magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat magfieldTorusMap: Full_torus_r251_phi181_z251_25Jan2021.dat - MLTD: - run: "6302" - DCHAI: + DCHTAI: outputBankPrefix: "HB" mime-types: diff --git a/etc/services/data-aicv-uber.yml b/etc/services/data-aicv-uber.yml index d5ba19d256..9f1b6cca9a 100644 --- a/etc/services/data-aicv-uber.yml +++ b/etc/services/data-aicv-uber.yml @@ -11,7 +11,7 @@ configuration: magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat magfieldTorusMap: Full_torus_r251_phi181_z251_25Jan2021.dat HB: - run: "19000" + rawBankGroup: "NODENOISE" io-services: reader: class: org.jlab.io.clara.Clas12Reader diff --git a/etc/services/data-aicv.yaml b/etc/services/data-aicv.yaml index 7e62bcc414..db87ae7a18 100644 --- a/etc/services/data-aicv.yaml +++ b/etc/services/data-aicv.yaml @@ -20,18 +20,16 @@ services: name: FTEB - class: org.jlab.service.raster.RasterEngine name: RASTER -# DC clustering: nominal algoritm, filled the cluster bank for ai and conventional tracking + - class: org.jlab.service.ai.DCDenoiseEngine + name: DCDN - class: org.jlab.service.dc.DCHBClustering name: DCCR -# This is where the AI plugin would go. THe AI code reads the HB clusters. - - class: org.jlab.service.mltn.MLTDEngine - name: MLTD -# DC using clustering: regular HB tracking + - class: org.jlab.service.ai.DCClsComboEngine + name: DCCC - class: org.jlab.service.dc.DCHBPostClusterConv name: DCHB -# DC using clustering on AI hits: NN assisted HB tracking - - class: org.jlab.service.dc.DCHBPostClusterAI - name: DCHAI + - class: org.jlab.service.dc.DCHBTrackingAI + name: DCHTAI - class: org.jlab.service.ftof.FTOFHBEngine name: FTOFHB - class: org.jlab.service.ec.ECEngine @@ -91,12 +89,12 @@ configuration: MAGFIELDS: magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat magfieldTorusMap: Full_torus_r251_phi181_z251_25Jan2021.dat - DCHAI: + DCCR: + rawBankGroup: "NODENOISE" + DCHTAI: outputBankPrefix: "AI" DCTAI: outputBankPrefix: "AI" - MLTD: - run: "6302" EBTAI: outputBankPrefix: "RECAI" diff --git a/etc/services/denoise.yaml b/etc/services/denoise.yaml index 46a0cca21d..b89f15b369 100644 --- a/etc/services/denoise.yaml +++ b/etc/services/denoise.yaml @@ -20,21 +20,19 @@ services: name: FTEB - class: org.jlab.service.raster.RasterEngine name: RASTER -# DC clustering: nominal algoritm, filled the cluster bank for ai and conventional tracking + - class: org.jlab.service.ai.DCDenoiseEngine + name: DCDN - class: org.jlab.service.dc.DCHBClustering name: DCCR - class: org.jlab.service.dc.DCHBClustering name: DCRAI -# This is where the AI plugin would go. THe AI code reads the HB clusters. - - class: org.jlab.service.mltn.MLTDEngine - name: MLTD - - class: org.jlab.service.mltn.MLTDEngine - name: MLTAI -# DC using clustering: regular HB tracking - - class: org.jlab.service.dc.DCHBPostClusterAI + - class: org.jlab.service.ai.DCClsComboEngine + name: DCCC + - class: org.jlab.service.ai.DCClsComboEngine + name: DCCAI + - class: org.jlab.service.dc.DCHBTrackingAI name: DCHB -# DC using clustering on AI hits: NN assisted HB tracking - - class: org.jlab.service.dc.DCHBPostClusterAI + - class: org.jlab.service.dc.DCHBTrackingAI name: DCHAI - class: org.jlab.service.ftof.FTOFHBEngine name: FTOFHB @@ -99,10 +97,7 @@ configuration: #rawBankGroup: "DEFAULT" rawBankGroup: "NOISE1" outputBankPrefix: "DN" - MLTD: - run: "6302" - MLTAI: - run: "6302" + DCCAI: inputBankPrefix: "DN" outputBankPrefix: "aidn" DCHB: diff --git a/etc/services/eb.yaml b/etc/services/eb.yaml index 76109a39e6..84745172e7 100644 --- a/etc/services/eb.yaml +++ b/etc/services/eb.yaml @@ -6,8 +6,6 @@ io-services: class: org.jlab.io.clara.Clas12Writer name: Clas12Writer services: - - class: org.jlab.clas.reco.DecoderEngine - name: DECO - class: org.jlab.service.eb.EBTBEngine name: EBTB configuration: diff --git a/etc/services/mc-ai.yaml b/etc/services/mc-ai.yaml index 3b6a64255c..5b6f2b4fec 100644 --- a/etc/services/mc-ai.yaml +++ b/etc/services/mc-ai.yaml @@ -62,6 +62,8 @@ services: name: VTX - class: org.jlab.calibration.service.CalibBanksEngine name: CALIB + - class: org.jlab.service.mc.TruthMatch + name: MC configuration: global: variation: mc2026 diff --git a/etc/services/mc-aicv.yaml b/etc/services/mc-aicv.yaml index 6dcf7509b7..31a5af46bd 100644 --- a/etc/services/mc-aicv.yaml +++ b/etc/services/mc-aicv.yaml @@ -18,8 +18,8 @@ services: name: FTEB - class: org.jlab.service.raster.RasterEngine name: RASTER -# - class: org.jlab.service.ai.DCDenoiseEngine -# name: DCDN + - class: org.jlab.service.ai.DCDenoiseEngine + name: DCDN - class: org.jlab.service.dc.DCHBClustering name: DCCR - class: org.jlab.service.ai.DCClsComboEngine @@ -72,6 +72,8 @@ services: name: VTX - class: org.jlab.calibration.service.CalibBanksEngine name: CALIB + - class: org.jlab.service.mc.TruthMatch + name: MC configuration: global: variation: mc2026 @@ -84,6 +86,8 @@ configuration: MAGFIELDS: magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat magfieldTorusMap: Symm_torus_r2501_phi16_z251_24Apr2018.dat + DCCR: + rawBankGroup: "NODENOISE" RTPC: rtpcSimulation: "true" diff --git a/etc/services/mc-cv.yaml b/etc/services/mc-cv.yaml index 54d187522b..92c9d26020 100644 --- a/etc/services/mc-cv.yaml +++ b/etc/services/mc-cv.yaml @@ -61,6 +61,8 @@ services: name: VTX - class: org.jlab.calibration.service.CalibBanksEngine name: CALIB + - class: org.jlab.service.mc.TruthMatch + name: MC configuration: global: variation: mc2026 diff --git a/etc/services/rgd-clarode.yml b/etc/services/rgd-clarode.yml deleted file mode 100644 index e46daddc7e..0000000000 --- a/etc/services/rgd-clarode.yml +++ /dev/null @@ -1,85 +0,0 @@ -mime-types: - - binary/data-hipo -configuration: - global: - dcrbJitter: "true" - variation: rgd_fall2023 - io-services: - writer: - schema_dir: dst - services: - MAGFIELDS: - magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat - magfieldTorusMap: Full_torus_r251_phi181_z251_25Jan2021.dat - DCCR: - rawBankGroup: "NOISE1" - MLTD: - run: "18305" - DCHAI: - outputBankPrefix: "HB" -io-services: - reader: - class: org.jlab.io.clara.Clas12Reader - name: Clas12Reader - writer: - class: org.jlab.io.clara.Clas12Writer - name: Clas12Writer -services: - - class: org.jlab.clas.reco.DecoderEngine - name: DECO - - class: org.jlab.service.ai.DCDenoiseEngine - name: DCDN - - class: org.jlab.clas.swimtools.MagFieldsEngine - name: MAGFIELDS - - class: org.jlab.rec.ft.cal.FTCALEngine - name: FTCAL - - class: org.jlab.rec.ft.hodo.FTHODOEngine - name: FTHODO - - class: org.jlab.rec.ft.trk.FTTRKEngine - name: FTTRK - - class: org.jlab.rec.ft.FTEBEngine - name: FTEB - - class: org.jlab.service.raster.RasterEngine - name: RASTER - - class: org.jlab.service.dc.DCHBClustering - name: DCCR - - class: org.jlab.service.mltn.MLTDEngine - name: MLTD - - class: org.jlab.service.dc.DCHBPostClusterAI - name: DCHAI - - class: org.jlab.service.ftof.FTOFHBEngine - name: FTOFHB - - class: org.jlab.service.ec.ECEngine - name: EC - - class: org.jlab.rec.cvt.services.CVTEngine - name: CVTFP - - class: org.jlab.service.ctof.CTOFEngine - name: CTOF - - class: org.jlab.service.cnd.CNDCalibrationEngine - name: CND - - class: org.jlab.service.band.BANDEngine - name: BAND - - class: org.jlab.service.htcc.HTCCReconstructionService - name: HTCC - - class: org.jlab.service.ltcc.LTCCEngine - name: LTCC - - class: org.jlab.service.eb.EBHBEngine - name: EBHB - - class: org.jlab.service.dc.DCTBEngine - name: DCTB - - class: org.jlab.service.fmt.FMTEngine - name: FMT - - class: org.jlab.rec.cvt.services.CVTSecondPassEngine - name: CVTSP - - class: org.jlab.service.ftof.FTOFTBEngine - name: FTOFTB - - class: org.jlab.service.eb.EBTBEngine - name: EBTB - - class: org.jlab.rec.rich.RICHEBEngine - name: RICH - - class: org.jlab.service.rtpc.RTPCEngine - name: RTPC - - class: org.jlab.rec.service.vtx.VTXEngine - name: VTX - - class: org.jlab.calibration.service.CalibBanksEngine - name: CALIB diff --git a/etc/services/rgl-clarode.yml b/etc/services/rgl-clarode.yml deleted file mode 100644 index 9c92b0a1d2..0000000000 --- a/etc/services/rgl-clarode.yml +++ /dev/null @@ -1,66 +0,0 @@ -io-services: - reader: - class: org.jlab.io.clara.Clas12Reader - name: Clas12Reader - writer: - class: org.jlab.io.clara.Clas12Writer - name: Clas12Writer -services: - - class: org.jlab.clas.reco.DecoderEngine - name: DECO - - class: org.jlab.clas.swimtools.MagFieldsEngine - name: MAGFIELDS - - class: org.jlab.rec.ft.cal.FTCALEngine - name: FTCAL - - class: org.jlab.rec.ft.hodo.FTHODOEngine - name: FTHODO - - class: org.jlab.rec.ft.FTEBEngine - name: FTEB - - class: org.jlab.service.ai.DCDenoiseEngine - name: DCDN - - class: org.jlab.service.dc.DCHBClustering - name: DCCR - - class: org.jlab.service.dc.DCHBPostClusterConv - name: DCHB - - class: org.jlab.service.ftof.FTOFHBEngine - name: FTOFHB - - class: org.jlab.service.ec.ECEngine - name: EC - - class: org.jlab.service.ctof.CTOFEngine - name: CTOF - - class: org.jlab.service.cnd.CNDCalibrationEngine - name: CND - - class: org.jlab.service.band.BANDEngine - name: BAND - - class: org.jlab.service.htcc.HTCCReconstructionService - name: HTCC - - class: org.jlab.service.ltcc.LTCCEngine - name: LTCC - - class: org.jlab.service.eb.EBHBEngine - name: EBHB - - class: org.jlab.service.dc.DCTBEngine - name: DCTB - - class: org.jlab.service.ftof.FTOFTBEngine - name: FTOFTB - - class: org.jlab.service.eb.EBTBEngine - name: EBTB - - class: org.jlab.rec.rich.RICHEBEngine - name: RICH - - class: org.jlab.service.atof.ATOFEngine - name: ATOF - - class: org.jlab.service.ahdc.AHDCEngine - name: AHDC -configuration: - global: - variation: rgl_spring2025 - io-services: - writer: - schema_dir: dst - services: - MAGFIELDS: - magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat - magfieldTorusMap: Full_torus_r251_phi181_z251_25Jan2021.dat - AHDC: - Mode: "AI_Track_Finding" -mime-types: - - binary/data-hipo diff --git a/libexec/dependency-info.rb b/libexec/dependency-info.rb new file mode 100755 index 0000000000..8cce06eb58 --- /dev/null +++ b/libexec/dependency-info.rb @@ -0,0 +1,92 @@ +#!/usr/bin/env ruby +# +# map dependency to the repository from which it was obtained +# + +require 'yaml' +require 'fileutils' + +TOP_DIR = File.realpath "#{__dir__}/.." +OUT_DIR = "#{TOP_DIR}/target/info" +CLASSPATH_FILE_NAME = 'dependency-classpath.txt' +TREE_FILE_NAME = 'dependency-tree.txt' +REPO_LOCAL = 'local' +REPO_CENTRAL = 'maven-central' + +# get classpath for each module +system [ + 'mvn', + 'dependency:build-classpath', + "-Dmdep.outputFile='${project.build.directory}/#{CLASSPATH_FILE_NAME}'", + '--quiet', + "--file #{TOP_DIR}", +].join ' ' +raise "dependency:build-classpath goal failed" unless $?.success? + +# get the list of unique dependency JARs +jars = [] +Dir.glob("#{TOP_DIR}/**/target/#{CLASSPATH_FILE_NAME}").each do |classpath_file| + File.readlines(classpath_file, chomp: true).each do |line| + jars << line.split(':') + end +end +jars.flatten!.uniq!.sort! + +# get the remote repos +repos = {} +jars.each do |jar_path| + # SNAPSHOT normalizer: replace timestamp with 'SNAPSHOT' + def normalize(name) + name.sub(/\d{8}\.\d{6}-\d+/, 'SNAPSHOT') + end + # names + jar_dir = File.dirname jar_path + jar_name = normalize(File.basename jar_path) + repo_file = "#{jar_dir}/_remote.repositories" + # check if remote repo description exists + unless File.exist? repo_file + warn "WARNING: #{repo_file} does not exist" + next + end + # get info for this JAR + repo_lines = File.readlines(repo_file, chomp: true) + .reject { |l| l.start_with?('#') } + .select { |l| normalize(l.split('>', 2)[0]) == jar_name } + if repo_lines.empty? + warn "WARNING: could not find #{jar_name} in #{repo_file}" + next + end + # fill output hash + repo_lines.each do |repo_line| + repo_id = repo_line.split('>')[1].split('=')[0] + repo_id = repo_id.sub /-\h{32,}\z/, '' unless repo_id.nil? # drop the trailing digest (from GitHub `setup-java`'s `settings.xml`) + repo = case repo_id + when /code.jlab.org-.*/ then 'code.jlab.org' + when nil then REPO_LOCAL + when 'central' then REPO_CENTRAL + else repo_id + end + (repos[repo] ||= []) << jar_path.sub(/^.*.m2\/repository\//,'') + end +end + +# dump output as YAML +FileUtils.mkdir_p OUT_DIR +OUT_REPOS = "#{OUT_DIR}/repos.yaml" +File.open(OUT_REPOS, 'w') do |o| + o.puts repos + .sort_by{ |k,_| [ [REPO_LOCAL, REPO_CENTRAL].index(k) || 2, k] } + .to_h + .to_yaml +end +puts "Wrote #{OUT_REPOS}" + +# collect all dependency trees +OUT_TREES = "#{OUT_DIR}/trees.txt" +File.open(OUT_TREES, 'w') do |o| + Dir.glob("#{TOP_DIR}/**/target/#{TREE_FILE_NAME}").sort.each do |tree_file| + o.puts `cat #{tree_file}` + o.puts '' + end +end +puts "Wrote #{OUT_TREES}" diff --git a/libexec/profile b/libexec/profile index a16b534935..dc6088a323 100755 --- a/libexec/profile +++ b/libexec/profile @@ -25,7 +25,7 @@ done shift $((OPTIND-1)) executable=$1 arguments=${@:2} -logfile=asprof$stub.log +logfile=asprof_$event$stub.log which asprof >& /dev/null [ "$?" -ne 0 ] && echo 'ERROR: asprof is not in $PATH.' && echo -e $usage2 && exit 3 @@ -42,13 +42,17 @@ set -e $executable $arguments >> $logfile 2>&1 & set +e +# figure out the process id to profile: 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) +if [[ "$executable" == *clara* ]] +then + # go 2 deep for run-clara: + sleep 1 + pid_java=$(pgrep -P $pid_java | head -n 1) +fi echo info: pid java=$pid_java tail -f $logfile & pid_tail=$! diff --git a/libexec/scaling b/libexec/scaling index 6cad8e3450..01e714d2af 100755 --- a/libexec/scaling +++ b/libexec/scaling @@ -7,9 +7,9 @@ def cli(): cli.add_argument('-c','--clara', metavar='DIR',help='CLARA_HOME path (default=$CLARA_HOME)',default=os.getenv('CLARA_HOME',None)) cli.add_argument('-t','--threads',metavar='#',help='threads (default=8,16,24,34,44)',default='8,16,24,34,44') cli.add_argument('-e','--events', metavar='#',help='events per thread (default=555)',default=555,type=int) - cli.add_argument('-N','--numa', metavar='#',help='restrict to a NUMA socket (choices=[0,1])',choices=[0,1]) + cli.add_argument('-N','--numa', metavar='#',help='restrict to a NUMA socket (choices=[0,1])',choices=[0,1], type=int) 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('-T','--cputhr', help='restrict to same number of CPUs as threads',action='store_true') cli.add_argument('datafile', help='input EVIO/HIPO data file') cfg = cli.parse_args() cfg.threads = cfg.threads.split(',') @@ -17,8 +17,8 @@ def cli(): cli.error('cannot find CLARA installation via -c or $CLARA_HOME') 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' + elif os.path.exists(cfg.clara + '/plugins/clas12/bin/run-clara'): + cfg.run_clara = cfg.clara + '/plugins/clas12/bin/run-clara' else: cli.error('cannot find run-clara in $PATH or $CLARA_HOME') if cfg.cpus: @@ -55,7 +55,7 @@ def benchmark(cfg, threads, log): # use taskset for thread affinity: if cfg.cpus: if cfg.cputhr: - cmd.extend(['taskset','-c',','.join(cfg.cpus.split(',')[:threads])]) + cmd.extend(['taskset','-c',','.join(cfg.cpus.split(',')[:int(threads)])]) else: cmd.extend(['taskset','-c',cfg.cpus]) # add the run-clara command: @@ -122,7 +122,7 @@ def show(benchmarks): print(' '.join([str(x) for x in row])) def save(benchmarks): - with open('scaling.txt','w') as f: + with open('scaling-clara.txt','w') as f: for row in table(benchmarks): f.write(' '.join([str(x) for x in row])+'\n') @@ -130,11 +130,11 @@ 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) + r = subprocess.run(['gnuplot',g,'scaling-clara.txt'], capture_output=True, text=True) if r.returncode == 0: - with open('scaling.svg','w') as f: + with open('scaling-clara.svg','w') as f: f.write(r.stdout) - print('Info: created scaling.svg from scaling.txt and scaling.gpl!') + print('Info: created scaling-clara.svg from scaling-clara.txt and coatjava/libexec/scaling.gpl!') else: print(r.stdout) print(r.stderr) diff --git a/libexec/scaling.gpl b/libexec/scaling.gpl index 3c5598d0d4..41577fd517 100644 --- a/libexec/scaling.gpl +++ b/libexec/scaling.gpl @@ -43,7 +43,7 @@ set style line 37 pt 6 lt 1 lc rgb '#FDBF6F' # light orange set style line 38 pt 6 lt 1 lc rgb '#FF7F00' # dark orange # parse command line arguments: -datafile = 'scaling.txt' +datafile = 'scaling-clara.txt' if (ARGC > 0) { if (ARGV[1] eq "-u") { uberMode = 1 diff --git a/pom.xml b/pom.xml index 234a93dace..270ddf2736 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.jlab.clas coatjava - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT pom @@ -19,16 +19,38 @@ + - clas12-hipo-java + code.jlab.org-hipo-java https://code.jlab.org/api/v4/projects/919/packages/maven + - clas12maven + code.jlab.org-xmsg-java + https://code.jlab.org/api/v4/projects/959/packages/maven + + + + code.jlab.org-clara-java + https://code.jlab.org/api/v4/projects/243/packages/maven + + + + code.jlab.org-freehep-jminuit + https://code.jlab.org/api/v4/projects/1079/packages/maven + + + + code.jlab.org-ccdbrcdb-java + https://code.jlab.org/api/v4/projects/245/packages/maven + + + + clasweb-clas12maven https://clasweb.jlab.org/.clas12maven - jnp-maven + clasweb-jhep https://clasweb.jlab.org/.jhep/maven @@ -50,18 +72,6 @@ - - com.github.spotbugs - spotbugs - 4.10.3 - - - - jakarta.annotation - jakarta.annotation-api - 3.0.0 - - junit junit @@ -78,7 +88,7 @@ org.yaml snakeyaml - 2.6 + 2.7 @@ -102,12 +112,6 @@ linux - - org.slf4j - slf4j-api - 2.0.18 - - org.apache.commons commons-math3 @@ -116,26 +120,32 @@ org.apache.commons - commons-lang3 - 3.20.0 + commons-text + 1.15.0 org.jlab groot - 4.0.5 + 4.0.5 org.freehep - jminuit - 1.0 + freehep-jminuit + 1.0.2 + + + + org.jlab.coda + xmsg + 2.5 org.jlab.coda jclara - 4.3 + 6.2 @@ -163,6 +173,12 @@ + + org.jlab.coda + et + 14.0 + + org.jlab.jnp jnp-hipo @@ -172,13 +188,17 @@ org.jlab.jnp jnp-hipo4 - 4.5 + 4.5 j4ml j4ml-neuroph - 0.9-SNAPSHOT + 0.9-SNAPSHOT @@ -196,7 +216,18 @@ org.jlab.ccdbrcdb ccdbrcdb - 2.0 + 2.1 + + + + com.google.protobuf + protobuf-java + + @@ -205,48 +236,68 @@ 1.0.3 + + java3d + vecmath + 1.3.1 + + ai.djl bom - 0.36.0 + 0.38.0 pom import - - - net.objecthunter exp4j 0.4.8 - - - com.google.code.gson - gson - 2.13.1 - - - org.ejml ejml-simple 0.40 - + + + org.apache.commons + commons-lang3 + 3.20.0 + + + + + org.slf4j + slf4j-api + 1.7.6 + @@ -271,7 +322,7 @@ com.github.spotbugs spotbugs-maven-plugin - 4.10.3.0 + 4.10.4.1 spotbugs-exclude.xml @@ -302,7 +353,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.15.0 + 3.16.0 21 UTF-8 @@ -356,6 +407,7 @@ analyze-only + ${project.build.directory}/dependency-tree.txt true @@ -384,12 +436,7 @@ - - - - com.google.protobuf:protobuf-java - - + @@ -455,7 +502,7 @@ org.apache.maven.plugins maven-deploy-plugin - 3.1.4 + 3.2.0 ${project.build.directory}/.flattened-pom.xml diff --git a/reconstruction/ai/pom.xml b/reconstruction/ai/pom.xml index 5625476b6b..58c2c48dd1 100644 --- a/reconstruction/ai/pom.xml +++ b/reconstruction/ai/pom.xml @@ -1,16 +1,16 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-ai - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -18,19 +18,19 @@ org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -40,4 +40,4 @@ - + diff --git a/reconstruction/ai/src/main/java/org/jlab/service/ai/DCClsComboEngine.java b/reconstruction/ai/src/main/java/org/jlab/service/ai/DCClsComboEngine.java index aa959e1dea..dc08ac1ee1 100644 --- a/reconstruction/ai/src/main/java/org/jlab/service/ai/DCClsComboEngine.java +++ b/reconstruction/ai/src/main/java/org/jlab/service/ai/DCClsComboEngine.java @@ -21,6 +21,7 @@ import ai.djl.translate.TranslatorContext; import java.io.IOException; import java.nio.file.Paths; +import java.util.Optional; import java.util.logging.Level; import java.util.logging.Logger; import org.jlab.clas.reco.ReconstructionEngine; @@ -31,8 +32,8 @@ import org.jlab.rec.ai.dcCluster.DCClusterCombo; public class DCClsComboEngine extends ReconstructionEngine { - final String inputBank = "HitBasedTrkg::Clusters"; - final String outputBank = "ai::tracks"; + String inputBank = "HitBasedTrkg::Clusters"; + String outputBank = "ai::tracks"; final static String CONF_THREADS = "threads"; @@ -124,6 +125,11 @@ public boolean init() { LOGGER.log(Level.SEVERE, null, ex); return false; } + + String inputBankPrefix = Optional.ofNullable(this.getEngineConfigString("inputBankPrefix")).orElse(""); + String outputBankPrefix = Optional.ofNullable(this.getEngineConfigString("outputBankPrefix")).orElse("ai"); + inputBank = "HitBasedTrkg::"+inputBankPrefix+"Clusters"; + outputBank = outputBankPrefix+"::tracks"; return true; } diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index a1b86132a2..0abae58aa7 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-alert - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -22,62 +22,57 @@ org.apache.commons commons-math3 - - org.apache.commons - commons-lang3 - compile - org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT compile org.jlab.clas clas-analysis - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT test org.jlab.clas clas-tracking - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT compile org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT compile org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT compile org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT compile org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT compile org.jlab.clas swim-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT compile @@ -137,7 +132,7 @@ ${project.build.directory}/lib/services - ai.djl + ai.djl,com.google.code.gson diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/alert/AI/TrackCandidatesGenerator.java b/reconstruction/alert/src/main/java/org/jlab/rec/alert/AI/TrackCandidatesGenerator.java index e121b28862..8cfb5b5f80 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/alert/AI/TrackCandidatesGenerator.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/alert/AI/TrackCandidatesGenerator.java @@ -1,8 +1,8 @@ package org.jlab.rec.alert.AI; -import org.apache.commons.lang3.mutable.MutableBoolean; - -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; /** * The TrackConstruction class is responsible for constructing all possible track @@ -81,18 +81,18 @@ private double mod(double x, double y) { * @param number_of_track_candidates The current count of track candidates. * @return A list of all possible combinations of integers from {@code v1} and {@code v2}. */ - private ArrayList> cartesianProduct(ArrayList> v1, ArrayList v2, MutableBoolean too_much_track_candidates, int number_of_track_candidates) { + private ArrayList> cartesianProduct(ArrayList> v1, ArrayList v2, AtomicBoolean too_much_track_candidates, int number_of_track_candidates) { ArrayList> result = new ArrayList<>(); for (ArrayList i : v1) { - if (too_much_track_candidates.booleanValue()) break; + if (too_much_track_candidates.get()) break; for (int j : v2) { - if (too_much_track_candidates.booleanValue()) break; + if (too_much_track_candidates.get()) break; ArrayList n = new ArrayList<>(i); n.add(j); result.add(n); if (number_of_track_candidates + result.size() >= MAX_NUMBER_OF_TRACK_CANDIDATES) { - too_much_track_candidates.setValue(true); + too_much_track_candidates.set(true); break; } } @@ -155,8 +155,7 @@ else if (interClusters.get(all_superpreclusters.get(i)).getPreclusters().get(0). superpreclusters_s5.add(all_superpreclusters.get(i)); } - MutableBoolean too_much_track_candidates = new MutableBoolean(); // Need to be a mutable boolean to be able to change it in the cartesian_product method - too_much_track_candidates.setFalse(); + AtomicBoolean too_much_track_candidates = new AtomicBoolean(false); // Needs to be mutable so cartesianProduct can set it // Find all possible combinations of superpreclusters on different superlayers ArrayList> combinations_s1_s2 = cartesianProduct(new ArrayList<>(List.of(superpreclusters_s1)), superpreclusters_s2, too_much_track_candidates, number_of_track_candidates); @@ -166,7 +165,7 @@ else if (interClusters.get(all_superpreclusters.get(i)).getPreclusters().get(0). // Keep track of the number of track candidates number_of_track_candidates += combinations_s1_s2_s3_s4_s5.size(); - if (too_much_track_candidates.booleanValue()) sucess = false; // If the number of track candidates exceeds the maximum limit, set success to false + if (too_much_track_candidates.get()) sucess = false; // If the number of track candidates exceeds the maximum limit, set success to false // Add all track candidates to the list of all track candidates // And switch back from index to superprecluster diff --git a/reconstruction/band/pom.xml b/reconstruction/band/pom.xml index 544e4bb730..4ad62cb24c 100644 --- a/reconstruction/band/pom.xml +++ b/reconstruction/band/pom.xml @@ -4,35 +4,35 @@ org.jlab.clas12.detector clas12detector-band - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/reconstruction/bg/pom.xml b/reconstruction/bg/pom.xml index a2bd6ee862..36543ba8f9 100644 --- a/reconstruction/bg/pom.xml +++ b/reconstruction/bg/pom.xml @@ -1,16 +1,16 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-bg - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -18,21 +18,21 @@ org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-analysis - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT - + diff --git a/reconstruction/calib/pom.xml b/reconstruction/calib/pom.xml index 9f400c1fe3..a7475cc8ac 100644 --- a/reconstruction/calib/pom.xml +++ b/reconstruction/calib/pom.xml @@ -1,18 +1,16 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-calib - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -20,19 +18,19 @@ org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/reconstruction/cnd/pom.xml b/reconstruction/cnd/pom.xml index f012c5ac0b..be982e95de 100644 --- a/reconstruction/cnd/pom.xml +++ b/reconstruction/cnd/pom.xml @@ -4,45 +4,45 @@ org.jlab.clas12.detector clas12detector-cnd - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-cvt - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/reconstruction/cvt/pom.xml b/reconstruction/cvt/pom.xml index 2516e9eb29..a998ce4a94 100644 --- a/reconstruction/cvt/pom.xml +++ b/reconstruction/cvt/pom.xml @@ -4,20 +4,19 @@ org.jlab.clas12.detector clas12detector-cvt - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT java3d vecmath - 1.3.1 org.jlab @@ -26,71 +25,66 @@ cnuphys magfield - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-jcsg - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-analysis - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT test org.jlab.clas clas-tracking - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas swim-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-eb - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT test jar - - org.jlab.plugins - trackfitter - 1.0 - junit junit diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/Constants.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/Constants.java index 51303f0636..c3bacfd08e 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/Constants.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/Constants.java @@ -269,7 +269,7 @@ public static double getRCUT() { return RCUT; } - public static void setRCUT(double r) { + private static void setRCUT(double r) { RCUT = r; } @@ -281,7 +281,7 @@ public static double getZRANGE() { return ZRANGE; } - public static void setZRANGE(double zr) { + private static void setZRANGE(double zr) { ZRANGE = zr; } diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/banks/HitReader.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/banks/HitReader.java index 86174629b7..18ceecc6f0 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/banks/HitReader.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/banks/HitReader.java @@ -9,6 +9,8 @@ import org.jlab.detector.banks.RawDataBank; import org.jlab.detector.base.DetectorDescriptor; import org.jlab.detector.base.DetectorType; +import org.jlab.io.banks.BMT_adc; +import org.jlab.io.banks.BST_adc; import org.jlab.io.base.DataEvent; import org.jlab.rec.cvt.Constants; import org.jlab.rec.cvt.Geometry; @@ -112,11 +114,11 @@ public void fetch_BMTHits(DataEvent event, Swim swim, IndexedTable status, //if (bankDGTZ.getInt("ADC", i) < 1) { //continue; // gemc assigns strip value -1 for inefficiencies, we only consider strips with values between 1 to the maximum strip number for a given detector //} - int sector = bankDGTZ.getByte("sector", i); - int layer = bankDGTZ.getByte("layer", i); - int strip = bankDGTZ.getShort("component", i); - double ADCtoEdep = bankDGTZ.getInt("ADC", i); - double time = bankDGTZ.getFloat("time", i); + int sector = bankDGTZ.getByte(BMT_adc.sector, i); + int layer = bankDGTZ.getByte(BMT_adc.layer, i); + int strip = bankDGTZ.getShort(BMT_adc.component, i); + double ADCtoEdep = bankDGTZ.getInt(BMT_adc.ADC, i); + double time = bankDGTZ.getFloat(BMT_adc.time, i); int order = bankDGTZ.trueOrder(i); //if (order == 1) { // continue; @@ -260,10 +262,10 @@ public void fetch_SVTHits(DataEvent event, int omitLayer, int omitHemisphere, Map tdcs = new HashMap<>(); for (int i = 0; i < rows; i++) { if(bankDGTZ.getInt("ADC", i) < 0) { - int sector = bankDGTZ.getByte("sector", i); - int layer = bankDGTZ.getByte("layer", i); - int strip = bankDGTZ.getShort("component", i); - double time = bankDGTZ.getFloat("time", i); + int sector = bankDGTZ.getByte(BST_adc.sector, i); + int layer = bankDGTZ.getByte(BST_adc.layer, i); + int strip = bankDGTZ.getShort(BST_adc.component, i); + double time = bankDGTZ.getFloat(BST_adc.time, i); //if (order == 1) { // continue; @@ -286,13 +288,13 @@ public void fetch_SVTHits(DataEvent event, int omitLayer, int omitHemisphere, if (bankDGTZ.getInt("ADC", i) < 0) { continue; // ignore hits TDC hits with ADC==-1 } - int order = bankDGTZ.getByte("order", i); + int order = bankDGTZ.getByte(BST_adc.order, i); int id = i + 1; - int sector = bankDGTZ.getByte("sector", i); - int layer = bankDGTZ.getByte("layer", i); - int strip = bankDGTZ.getShort("component", i); - int ADC = bankDGTZ.getInt("ADC", i); - double time = 0;//bankDGTZ.getFloat("time", i); + int sector = bankDGTZ.getByte(BST_adc.sector, i); + int layer = bankDGTZ.getByte(BST_adc.layer, i); + int strip = bankDGTZ.getShort(BST_adc.component, i); + int ADC = bankDGTZ.getInt(BST_adc.ADC, i); + double time = 0;//bankDGTZ.getFloat(BST_adc.time, i); int tdcstrip = 1; if(strip>128) tdcstrip = 129; int key = DetectorDescriptor.generateHashCode(sector, layer, tdcstrip); diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/banks/RecoBankReader.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/banks/RecoBankReader.java index 2b9eff4114..792b8eee74 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/banks/RecoBankReader.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/banks/RecoBankReader.java @@ -9,6 +9,14 @@ import org.jlab.geom.prim.Line3D; import org.jlab.geom.prim.Point3D; import org.jlab.geom.prim.Vector3D; +import org.jlab.io.banks.BMT_Clusters; +import org.jlab.io.banks.BMT_Crosses; +import org.jlab.io.banks.BMT_Hits; +import org.jlab.io.banks.BST_Clusters; +import org.jlab.io.banks.BST_Crosses; +import org.jlab.io.banks.BST_Hits; +import org.jlab.io.banks.CVT_Seeds; +import org.jlab.io.banks.CVT_Tracks; import org.jlab.io.base.DataBank; import org.jlab.io.base.DataEvent; import org.jlab.rec.cvt.Constants; @@ -39,17 +47,17 @@ public static List readBSTHitBank(DataEvent event) { DataBank bank = event.getBank("BST::Hits"); for(int i = 0; i < bank.rows(); i++) { - int id = bank.getShort("ID", i); - int sector = bank.getByte("sector", i); - int layer = bank.getByte("layer", i); - int strip = bank.getShort("strip", i); - double energy = bank.getFloat("energy", i); - double time = bank.getFloat("time", i); - double fitResidual = bank.getFloat("fitResidual", i)*10; - int clusterId = bank.getShort("clusterID", i); - int trackId = bank.getShort("trkID", i); - int trkStatus = bank.getByte("trkingStat", i); - int status = bank.getByte("status", i); + int id = bank.getShort(BST_Hits.ID, i); + int sector = bank.getByte(BST_Hits.sector, i); + int layer = bank.getByte(BST_Hits.layer, i); + int strip = bank.getShort(BST_Hits.strip, i); + double energy = bank.getFloat(BST_Hits.energy, i); + double time = bank.getFloat(BST_Hits.time, i); + double fitResidual = bank.getFloat(BST_Hits.fitResidual, i)*10; + int clusterId = bank.getShort(BST_Hits.clusterID, i); + int trackId = bank.getShort(BST_Hits.trkID, i); + int trkStatus = bank.getByte(BST_Hits.trkingStat, i); + int status = bank.getByte(BST_Hits.status, i); Hit hit = new Hit(DetectorType.BST, BMTType.UNDEFINED, sector, layer, new Strip(strip, energy, time)); hit.getStrip().setLine(Geometry.getInstance().getSVT().getStrip(layer, sector, strip)); hit.getStrip().setModule(Geometry.getInstance().getSVT().getModule(layer, sector)); @@ -76,17 +84,17 @@ public static List readBMTHitBank(DataEvent event) { DataBank bank = event.getBank("BMT::Hits"); for(int i = 0; i < bank.rows(); i++) { - int id = bank.getShort("ID", i); - int sector = bank.getByte("sector", i); - int layer = bank.getByte("layer", i); - int strip = bank.getShort("strip", i); - double energy = bank.getFloat("energy", i); - double time = bank.getFloat("time", i); - double fitResidual = bank.getFloat("fitResidual", i)*10; - int clusterId = bank.getShort("clusterID", i); - int trackId = bank.getShort("trkID", i); - int trkStatus = bank.getByte("trkingStat", i); - int status = bank.getByte("status", i); + int id = bank.getShort(BMT_Hits.ID, i); + int sector = bank.getByte(BMT_Hits.sector, i); + int layer = bank.getByte(BMT_Hits.layer, i); + int strip = bank.getShort(BMT_Hits.strip, i); + double energy = bank.getFloat(BMT_Hits.energy, i); + double time = bank.getFloat(BMT_Hits.time, i); + double fitResidual = bank.getFloat(BMT_Hits.fitResidual, i)*10; + int clusterId = bank.getShort(BMT_Hits.clusterID, i); + int trackId = bank.getShort(BMT_Hits.trkID, i); + int trkStatus = bank.getByte(BMT_Hits.trkingStat, i); + int status = bank.getByte(BMT_Hits.status, i); Hit hit = new Hit(DetectorType.BMT, BMTGeometry.getDetectorType(layer), sector, layer, new Strip(strip, energy, time)); hit.getStrip().setStatus(status); hit.setId(id); @@ -109,32 +117,32 @@ public static Map readBSTClusterBank(DataEvent event, List readBMTClusterBank(DataEvent event, List readBSTCrossBank(DataEvent event, Map readBMTCrossBank(DataEvent event, Map readCVTSeedsBank(DataEvent event, double xb, do DataBank bank = event.getBank("CVT::Seeds"); for(int i = 0; i < bank.rows(); i++) { - int tid = bank.getShort("ID", i); - double pt = bank.getFloat("pt", i); - double phi0 = bank.getFloat("phi0", i); - double tandip = bank.getFloat("tandip", i); - double z0 = bank.getFloat("z0", i)*10; - double d0 = bank.getFloat("d0", i)*10; - int q = bank.getByte("q", i); - int type = bank.getByte("fittingMethod", i); -// double xb = bank.getFloat("xb", i); -// double yb = bank.getFloat("yb", i); + int tid = bank.getShort(CVT_Seeds.ID, i); + double pt = bank.getFloat(CVT_Seeds.pt, i); + double phi0 = bank.getFloat(CVT_Seeds.phi0, i); + double tandip = bank.getFloat(CVT_Seeds.tandip, i); + double z0 = bank.getFloat(CVT_Seeds.z0, i)*10; + double d0 = bank.getFloat(CVT_Seeds.d0, i)*10; + int q = bank.getByte(CVT_Seeds.q, i); + int type = bank.getByte(CVT_Seeds.fittingMethod, i); +// double xb = bank.getFloat(CVT_Seeds.xb, i); +// double yb = bank.getFloat(CVT_Seeds.yb, i); Helix helix = new Helix( pt, d0, phi0, z0, tandip, q, xb, yb); double[][] covmatrix = new double[5][5]; - covmatrix[0][0] = bank.getFloat("cov_d02", i)*10*10; - covmatrix[0][1] = bank.getFloat("cov_d0phi0", i)*10 ; - covmatrix[0][2] = bank.getFloat("cov_d0rho", i); - covmatrix[1][0] = bank.getFloat("cov_d0phi0", i)*10 ; - covmatrix[1][1] = bank.getFloat("cov_phi02", i); - covmatrix[1][2] = bank.getFloat("cov_phi0rho", i)/10 ; - covmatrix[2][0] = bank.getFloat("cov_d0rho", i); - covmatrix[2][1] = bank.getFloat("cov_phi0rho", i)/10 ; - covmatrix[2][2] = bank.getFloat("cov_rho2", i)/10/10; - covmatrix[3][3] = bank.getFloat("cov_z02", i)*10*10; - covmatrix[3][4] = bank.getFloat("cov_z0tandip", i)*10; - covmatrix[4][3] = bank.getFloat("cov_z0tandip", i)*10; - covmatrix[4][4] = bank.getFloat("cov_tandip2", i); - double circleChi2 = bank.getFloat("circlefit_chi2_per_ndf", i); - double lineChi2 = bank.getFloat("linefit_chi2_per_ndf", i); - double chi2 = bank.getFloat("chi2", i); - int ndf = bank.getShort("ndf", i); + covmatrix[0][0] = bank.getFloat(CVT_Seeds.cov_d02, i)*10*10; + covmatrix[0][1] = bank.getFloat(CVT_Seeds.cov_d0phi0, i)*10 ; + covmatrix[0][2] = bank.getFloat(CVT_Seeds.cov_d0rho, i); + covmatrix[1][0] = bank.getFloat(CVT_Seeds.cov_d0phi0, i)*10 ; + covmatrix[1][1] = bank.getFloat(CVT_Seeds.cov_phi02, i); + covmatrix[1][2] = bank.getFloat(CVT_Seeds.cov_phi0rho, i)/10 ; + covmatrix[2][0] = bank.getFloat(CVT_Seeds.cov_d0rho, i); + covmatrix[2][1] = bank.getFloat(CVT_Seeds.cov_phi0rho, i)/10 ; + covmatrix[2][2] = bank.getFloat(CVT_Seeds.cov_rho2, i)/10/10; + covmatrix[3][3] = bank.getFloat(CVT_Seeds.cov_z02, i)*10*10; + covmatrix[3][4] = bank.getFloat(CVT_Seeds.cov_z0tandip, i)*10; + covmatrix[4][3] = bank.getFloat(CVT_Seeds.cov_z0tandip, i)*10; + covmatrix[4][4] = bank.getFloat(CVT_Seeds.cov_tandip2, i); + double circleChi2 = bank.getFloat(CVT_Seeds.circlefit_chi2_per_ndf, i); + double lineChi2 = bank.getFloat(CVT_Seeds.linefit_chi2_per_ndf, i); + double chi2 = bank.getFloat(CVT_Seeds.chi2, i); + int ndf = bank.getShort(CVT_Seeds.ndf, i); Seed seed = new Seed(); seed.setId(tid); seed.setHelix(helix); @@ -400,8 +408,8 @@ public static Map readCVTSeedsBank(DataEvent event, double xb, do seed.setLineFitChi2PerNDF(lineChi2); seed.setChi2(chi2); seed.setNDF(ndf); - seed.percentTruthMatch = bank.getFloat("fracmctru", i); - seed.totpercentTruthMatch = bank.getFloat("fracmcmatch", i); + seed.percentTruthMatch = bank.getFloat(CVT_Seeds.fracmctru, i); + seed.totpercentTruthMatch = bank.getFloat(CVT_Seeds.fracmcmatch, i); List crossesOnTrk = new ArrayList<>(); for (int j = 0; j < 9; j++) { @@ -438,36 +446,36 @@ public static Map readCVTTracksBank(DataEvent event, double xb, d DataBank bank = event.getBank("CVT::Tracks"); for(int i = 0; i < bank.rows(); i++) { - int tid = bank.getShort("ID", i); - double pt = bank.getFloat("pt", i); - double phi0 = bank.getFloat("phi0", i); - double tandip = bank.getFloat("tandip", i); - double z0 = bank.getFloat("z0", i)*10; - double d0 = bank.getFloat("d0", i)*10; - int q = bank.getByte("q", i); -// double xb = bank.getFloat("xb", i); -// double yb = bank.getFloat("yb", i); + int tid = bank.getShort(CVT_Tracks.ID, i); + double pt = bank.getFloat(CVT_Tracks.pt, i); + double phi0 = bank.getFloat(CVT_Tracks.phi0, i); + double tandip = bank.getFloat(CVT_Tracks.tandip, i); + double z0 = bank.getFloat(CVT_Tracks.z0, i)*10; + double d0 = bank.getFloat(CVT_Tracks.d0, i)*10; + int q = bank.getByte(CVT_Tracks.q, i); +// double xb = bank.getFloat(CVT_Tracks.xb, i); +// double yb = bank.getFloat(CVT_Tracks.yb, i); Helix helix = new Helix( pt, d0, phi0, z0, tandip, q, xb, yb); double[][] covmatrix = new double[5][5]; - covmatrix[0][0] = bank.getFloat("cov_d02", i)*10*10; - covmatrix[0][1] = bank.getFloat("cov_d0phi0", i)*10 ; - covmatrix[0][2] = bank.getFloat("cov_d0rho", i); - covmatrix[1][0] = bank.getFloat("cov_d0phi0", i)*10 ; - covmatrix[1][1] = bank.getFloat("cov_phi02", i); - covmatrix[1][2] = bank.getFloat("cov_phi0rho", i)/10 ; - covmatrix[2][0] = bank.getFloat("cov_d0rho", i); - covmatrix[2][1] = bank.getFloat("cov_phi0rho", i)/10 ; - covmatrix[2][2] = bank.getFloat("cov_rho2", i)/10/10; - covmatrix[3][3] = bank.getFloat("cov_z02", i)*10*10; - covmatrix[3][4] = bank.getFloat("cov_z0tandip", i)*10; - covmatrix[4][3] = bank.getFloat("cov_z0tandip", i)*10; - covmatrix[4][4] = bank.getFloat("cov_tandip2", i); - // int status = bank.getShort("status", i); - // double chi2 = bank.getFloat("chi2", i); - // int ndf = bank.getShort("ndf", i); - // int pid = bank.getInt("pid", i); - int seedId = bank.getShort("seedID", i); - int status = Math.abs(bank.getShort("status", i)); + covmatrix[0][0] = bank.getFloat(CVT_Tracks.cov_d02, i)*10*10; + covmatrix[0][1] = bank.getFloat(CVT_Tracks.cov_d0phi0, i)*10 ; + covmatrix[0][2] = bank.getFloat(CVT_Tracks.cov_d0rho, i); + covmatrix[1][0] = bank.getFloat(CVT_Tracks.cov_d0phi0, i)*10 ; + covmatrix[1][1] = bank.getFloat(CVT_Tracks.cov_phi02, i); + covmatrix[1][2] = bank.getFloat(CVT_Tracks.cov_phi0rho, i)/10 ; + covmatrix[2][0] = bank.getFloat(CVT_Tracks.cov_d0rho, i); + covmatrix[2][1] = bank.getFloat(CVT_Tracks.cov_phi0rho, i)/10 ; + covmatrix[2][2] = bank.getFloat(CVT_Tracks.cov_rho2, i)/10/10; + covmatrix[3][3] = bank.getFloat(CVT_Tracks.cov_z02, i)*10*10; + covmatrix[3][4] = bank.getFloat(CVT_Tracks.cov_z0tandip, i)*10; + covmatrix[4][3] = bank.getFloat(CVT_Tracks.cov_z0tandip, i)*10; + covmatrix[4][4] = bank.getFloat(CVT_Tracks.cov_tandip2, i); + // int status = bank.getShort(CVT_Tracks.status, i); + // double chi2 = bank.getFloat(CVT_Tracks.chi2, i); + // int ndf = bank.getShort(CVT_Tracks.ndf, i); + // int pid = bank.getInt(CVT_Tracks.pid, i); + int seedId = bank.getShort(CVT_Tracks.seedID, i); + int status = Math.abs(bank.getShort(CVT_Tracks.status, i)); int type = status - (int) (status/10) * 10; Seed seed = cvtSeeds.get(seedId); seed.setId(tid); @@ -503,78 +511,4 @@ public static Map readCVTTracksBank(DataEvent event, double xb, d } } - /* - public static Map readCVTTracksBank(DataEvent event, double xb, double yb, Map cvtSeeds, - Map svtCrosses, Map bmtCrosses) { - - if(!event.hasBank("CVT::Tracks")) - return null; - else { - Map seeds = new HashMap<>(); - - DataBank bank = event.getBank("CVT::Tracks"); - for(int i = 0; i < bank.rows(); i++) { - int tid = bank.getShort("ID", i); - double pt = bank.getFloat("pt", i); - double phi0 = bank.getFloat("phi0", i); - double tandip = bank.getFloat("tandip", i); - double z0 = bank.getFloat("z0", i)*10; - double d0 = bank.getFloat("d0", i)*10; - int q = bank.getByte("q", i); -// double xb = bank.getFloat("xb", i); -// double yb = bank.getFloat("yb", i); - Helix helix = new Helix( pt, d0, phi0, z0, tandip, q, xb, yb); - double[][] covmatrix = new double[5][5]; - covmatrix[0][0] = bank.getFloat("cov_d02", i)*10*10; - covmatrix[0][1] = bank.getFloat("cov_d0phi0", i)*10 ; - covmatrix[0][2] = bank.getFloat("cov_d0rho", i); - covmatrix[1][0] = bank.getFloat("cov_d0phi0", i)*10 ; - covmatrix[1][1] = bank.getFloat("cov_phi02", i); - covmatrix[1][2] = bank.getFloat("cov_phi0rho", i)/10 ; - covmatrix[2][0] = bank.getFloat("cov_d0rho", i); - covmatrix[2][1] = bank.getFloat("cov_phi0rho", i)/10 ; - covmatrix[2][2] = bank.getFloat("cov_rho2", i)/10/10; - covmatrix[3][3] = bank.getFloat("cov_z02", i)*10*10; - covmatrix[3][4] = bank.getFloat("cov_z0tandip", i)*10; - covmatrix[4][3] = bank.getFloat("cov_z0tandip", i)*10; - covmatrix[4][4] = bank.getFloat("cov_tandip2", i); - // int status = bank.getShort("status", i); - // double chi2 = bank.getFloat("chi2", i); - // int ndf = bank.getShort("ndf", i); - // int pid = bank.getInt("pid", i); - int seedId = bank.getShort("seedID", i); - int type = bank.getByte("fittingMethod", i); - - Seed seed = cvtSeeds.get(seedId); - seed.setId(tid); - seed.setHelix(helix); - seed.getHelix().setCovMatrix(covmatrix); - seed.setStatus(type); - seed.FirstPassIdx = i; - List crossesOnTrk = new ArrayList<>(); - for (int j = 0; j < 9; j++) { - String hitStrg = "Cross"; - hitStrg += (j + 1); - hitStrg += "_ID"; - int cid = (int) bank.getShort(hitStrg, i); - if(svtCrosses.containsKey(cid)) { - crossesOnTrk.add(svtCrosses.get(cid)); - - } - if(bmtCrosses!=null) { - if(bmtCrosses.containsKey(cid)) { - crossesOnTrk.add(bmtCrosses.get(cid)); - } - } - } - - seed.setCrosses(crossesOnTrk); - - seeds.put(tid, seed); - } - return seeds; - } - } - */ - } diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/banks/RecoBankWriter.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/banks/RecoBankWriter.java index 581fb57def..64388e3aac 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/banks/RecoBankWriter.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/banks/RecoBankWriter.java @@ -18,6 +18,19 @@ import org.jlab.rec.cvt.trajectory.Helix; import org.jlab.rec.cvt.trajectory.StateVec; import org.jlab.geom.prim.Line3D; +import org.jlab.io.banks.BMT_Clusters; +import org.jlab.io.banks.BMT_Crosses; +import org.jlab.io.banks.BMT_Hits; +import org.jlab.io.banks.BST_Clusters; +import org.jlab.io.banks.BST_Crosses; +import org.jlab.io.banks.BST_Hits; +import org.jlab.io.banks.CVTRec_CosmicSeeds; +import org.jlab.io.banks.CVTRec_Cosmics; +import org.jlab.io.banks.CVTRec_KFTrajectory; +import org.jlab.io.banks.CVTRec_Tracks; +import org.jlab.io.banks.CVTRec_Trajectory; +import org.jlab.io.banks.CVTRec_UTracks; +import org.jlab.io.banks.CVT_Seeds; import org.jlab.rec.cvt.Constants; import org.jlab.rec.cvt.bmt.BMTType; import org.jlab.rec.cvt.hit.Hit; @@ -42,20 +55,20 @@ public static DataBank fillSVTHitBank(DataEvent event, List hitlist, String for (int i = 0; i < hitlist.size(); i++) { - bank.setShort("ID", i, (short) hitlist.get(i).getId()); + bank.setShort(BST_Hits.ID, i, (short) hitlist.get(i).getId()); - bank.setByte("layer", i, (byte) hitlist.get(i).getLayer()); - bank.setByte("sector", i, (byte) hitlist.get(i).getSector()); - bank.setShort("strip", i, (short) hitlist.get(i).getStrip().getStrip()); + bank.setByte(BST_Hits.layer, i, (byte) hitlist.get(i).getLayer()); + bank.setByte(BST_Hits.sector, i, (byte) hitlist.get(i).getSector()); + bank.setShort(BST_Hits.strip, i, (short) hitlist.get(i).getStrip().getStrip()); - bank.setFloat("energy", i, (float) hitlist.get(i).getStrip().getEdep()); - bank.setFloat("time", i, (float) hitlist.get(i).getStrip().getTime()); - bank.setFloat("fitResidual", i, (float) hitlist.get(i).getResidual()/10); - bank.setByte("trkingStat", i, (byte) hitlist.get(i).getTrkgStatus()); + bank.setFloat(BST_Hits.energy, i, (float) hitlist.get(i).getStrip().getEdep()); + bank.setFloat(BST_Hits.time, i, (float) hitlist.get(i).getStrip().getTime()); + bank.setFloat(BST_Hits.fitResidual, i, (float) hitlist.get(i).getResidual()/10); + bank.setByte(BST_Hits.trkingStat, i, (byte) hitlist.get(i).getTrkgStatus()); - bank.setShort("clusterID", i, (short) hitlist.get(i).getAssociatedClusterID()); - bank.setShort("trkID", i, (short) hitlist.get(i).getAssociatedTrackID()); - bank.setByte("status", i, (byte) hitlist.get(i).getStrip().getStatus()); + bank.setShort(BST_Hits.clusterID, i, (short) hitlist.get(i).getAssociatedClusterID()); + bank.setShort(BST_Hits.trkID, i, (short) hitlist.get(i).getAssociatedTrackID()); + bank.setByte(BST_Hits.status, i, (byte) hitlist.get(i).getStrip().getStatus()); } //bank.show(); return bank; @@ -80,19 +93,19 @@ public static DataBank fillSVTClusterBank(DataEvent event, List cluslis for (int j = 0; j < hitIdxArray.length; j++) { hitIdxArray[j] = -1; } - bank.setShort("ID", i, (short) cluslist.get(i).getId()); - bank.setByte("sector", i, (byte) cluslist.get(i).getSector()); - bank.setByte("layer", i, (byte) cluslist.get(i).getLayer()); - bank.setShort("size", i, (short) cluslist.get(i).size()); - bank.setFloat("ETot", i, (float) cluslist.get(i).getTotalEnergy()); - bank.setFloat("time", i, (float) cluslist.get(i).getTime()); - bank.setShort("seedStrip", i, (short) cluslist.get(i).getSeedStrip().getStrip()); - bank.setFloat("centroid", i, (float) cluslist.get(i).getCentroid()); - bank.setFloat("seedE", i, (float) cluslist.get(i).getSeedStrip().getEdep()); - bank.setFloat("centroidError", i, (float) cluslist.get(i).getResolution()/10); - bank.setFloat("centroidResidual", i, (float) cluslist.get(i).getCentroidResidual()/10); - bank.setFloat("seedResidual", i, (float) cluslist.get(i).getSeedResidual()/10); - bank.setShort("trkID", i, (short) cluslist.get(i).getAssociatedTrackID()); + bank.setShort(BST_Clusters.ID, i, (short) cluslist.get(i).getId()); + bank.setByte(BST_Clusters.sector, i, (byte) cluslist.get(i).getSector()); + bank.setByte(BST_Clusters.layer, i, (byte) cluslist.get(i).getLayer()); + bank.setShort(BST_Clusters.size, i, (short) cluslist.get(i).size()); + bank.setFloat(BST_Clusters.ETot, i, (float) cluslist.get(i).getTotalEnergy()); + bank.setFloat(BST_Clusters.time, i, (float) cluslist.get(i).getTime()); + bank.setShort(BST_Clusters.seedStrip, i, (short) cluslist.get(i).getSeedStrip().getStrip()); + bank.setFloat(BST_Clusters.centroid, i, (float) cluslist.get(i).getCentroid()); + bank.setFloat(BST_Clusters.seedE, i, (float) cluslist.get(i).getSeedStrip().getEdep()); + bank.setFloat(BST_Clusters.centroidError, i, (float) cluslist.get(i).getResolution()/10); + bank.setFloat(BST_Clusters.centroidResidual, i, (float) cluslist.get(i).getCentroidResidual()/10); + bank.setFloat(BST_Clusters.seedResidual, i, (float) cluslist.get(i).getSeedResidual()/10); + bank.setShort(BST_Clusters.trkID, i, (short) cluslist.get(i).getAssociatedTrackID()); for (int j = 0; j < cluslist.get(i).size(); j++) { if (j < hitIdxArray.length) { @@ -107,25 +120,25 @@ public static DataBank fillSVTClusterBank(DataEvent event, List cluslis bank.setShort(hitStrg, i, (short) hitIdxArray[j]); } - bank.setFloat("x1", i, (float)cluslist.get(i).origin().x()/10); - bank.setFloat("y1", i, (float)cluslist.get(i).origin().y()/10); - bank.setFloat("z1", i, (float)cluslist.get(i).origin().z()/10); - bank.setFloat("x2", i, (float)cluslist.get(i).end().x()/10); - bank.setFloat("y2", i, (float)cluslist.get(i).end().y()/10); - bank.setFloat("z2", i, (float)cluslist.get(i).end().z()/10); - bank.setFloat("cx", i, (float)cluslist.get(i).center().x()/10); - bank.setFloat("cy", i, (float)cluslist.get(i).center().y()/10); - bank.setFloat("cz", i, (float)cluslist.get(i).center().z()/10); - bank.setFloat("lx", i, (float)cluslist.get(i).getL().x()); - bank.setFloat("ly", i, (float)cluslist.get(i).getL().y()); - bank.setFloat("lz", i, (float)cluslist.get(i).getL().z()); - bank.setFloat("sx", i, (float)cluslist.get(i).getS().x()); - bank.setFloat("sy", i, (float)cluslist.get(i).getS().y()); - bank.setFloat("sz", i, (float)cluslist.get(i).getS().z()); - bank.setFloat("nx", i, (float)cluslist.get(i).getN().x()); - bank.setFloat("ny", i, (float)cluslist.get(i).getN().y()); - bank.setFloat("nz", i, (float)cluslist.get(i).getN().z()); - bank.setFloat("e", i, (float)cluslist.get(i).getResolution()/10); + bank.setFloat(BST_Clusters.x1, i, (float)cluslist.get(i).origin().x()/10); + bank.setFloat(BST_Clusters.y1, i, (float)cluslist.get(i).origin().y()/10); + bank.setFloat(BST_Clusters.z1, i, (float)cluslist.get(i).origin().z()/10); + bank.setFloat(BST_Clusters.x2, i, (float)cluslist.get(i).end().x()/10); + bank.setFloat(BST_Clusters.y2, i, (float)cluslist.get(i).end().y()/10); + bank.setFloat(BST_Clusters.z2, i, (float)cluslist.get(i).end().z()/10); + bank.setFloat(BST_Clusters.cx, i, (float)cluslist.get(i).center().x()/10); + bank.setFloat(BST_Clusters.cy, i, (float)cluslist.get(i).center().y()/10); + bank.setFloat(BST_Clusters.cz, i, (float)cluslist.get(i).center().z()/10); + bank.setFloat(BST_Clusters.lx, i, (float)cluslist.get(i).getL().x()); + bank.setFloat(BST_Clusters.ly, i, (float)cluslist.get(i).getL().y()); + bank.setFloat(BST_Clusters.lz, i, (float)cluslist.get(i).getL().z()); + bank.setFloat(BST_Clusters.sx, i, (float)cluslist.get(i).getS().x()); + bank.setFloat(BST_Clusters.sy, i, (float)cluslist.get(i).getS().y()); + bank.setFloat(BST_Clusters.sz, i, (float)cluslist.get(i).getS().z()); + bank.setFloat(BST_Clusters.nx, i, (float)cluslist.get(i).getN().x()); + bank.setFloat(BST_Clusters.ny, i, (float)cluslist.get(i).getN().y()); + bank.setFloat(BST_Clusters.nz, i, (float)cluslist.get(i).getN().z()); + bank.setFloat(BST_Clusters.e, i, (float)cluslist.get(i).getResolution()/10); } //bank.show(); return bank; @@ -145,40 +158,40 @@ public static DataBank fillSVTCrossBank(DataEvent event, List crosses, St DataBank bank = event.createBank(bankName, crosses.size()); for (int j = 0; j < crosses.size(); j++) { - bank.setShort("ID", j, (short) crosses.get(j).getId()); - bank.setByte("sector", j, (byte) crosses.get(j).getSector()); - bank.setByte("region", j, (byte) crosses.get(j).getRegion()); - bank.setFloat("x", j, (float) (crosses.get(j).getPoint().x()/10.)); - bank.setFloat("y", j, (float) (crosses.get(j).getPoint().y()/10.)); - bank.setFloat("z", j, (float) (crosses.get(j).getPoint().z()/10)); - bank.setFloat("err_x", j, (float) (crosses.get(j).getPointErr().x()/10.)); - bank.setFloat("err_y", j, (float) (crosses.get(j).getPointErr().y()/10.)); - bank.setFloat("err_z", j, (float) (crosses.get(j).getPointErr().z()/10.)); - bank.setFloat("x0", j, (float) (crosses.get(j).getPoint0().x()/10.)); - bank.setFloat("y0", j, (float) (crosses.get(j).getPoint0().y()/10.)); - bank.setFloat("z0", j, (float) (crosses.get(j).getPoint0().z()/10)); - bank.setFloat("err_x0", j, (float) (crosses.get(j).getPointErr0().x()/10.)); - bank.setFloat("err_y0", j, (float) (crosses.get(j).getPointErr0().y()/10.)); - bank.setFloat("err_z0", j, (float) (crosses.get(j).getPointErr0().z()/10.)); - bank.setShort("trkID", j, (short) crosses.get(j).getAssociatedTrackID()); + bank.setShort(BST_Crosses.ID, j, (short) crosses.get(j).getId()); + bank.setByte(BST_Crosses.sector, j, (byte) crosses.get(j).getSector()); + bank.setByte(BST_Crosses.region, j, (byte) crosses.get(j).getRegion()); + bank.setFloat(BST_Crosses.x, j, (float) (crosses.get(j).getPoint().x()/10.)); + bank.setFloat(BST_Crosses.y, j, (float) (crosses.get(j).getPoint().y()/10.)); + bank.setFloat(BST_Crosses.z, j, (float) (crosses.get(j).getPoint().z()/10)); + bank.setFloat(BST_Crosses.err_x, j, (float) (crosses.get(j).getPointErr().x()/10.)); + bank.setFloat(BST_Crosses.err_y, j, (float) (crosses.get(j).getPointErr().y()/10.)); + bank.setFloat(BST_Crosses.err_z, j, (float) (crosses.get(j).getPointErr().z()/10.)); + bank.setFloat(BST_Crosses.x0, j, (float) (crosses.get(j).getPoint0().x()/10.)); + bank.setFloat(BST_Crosses.y0, j, (float) (crosses.get(j).getPoint0().y()/10.)); + bank.setFloat(BST_Crosses.z0, j, (float) (crosses.get(j).getPoint0().z()/10)); + bank.setFloat(BST_Crosses.err_x0, j, (float) (crosses.get(j).getPointErr0().x()/10.)); + bank.setFloat(BST_Crosses.err_y0, j, (float) (crosses.get(j).getPointErr0().y()/10.)); + bank.setFloat(BST_Crosses.err_z0, j, (float) (crosses.get(j).getPointErr0().z()/10.)); + bank.setShort(BST_Crosses.trkID, j, (short) crosses.get(j).getAssociatedTrackID()); if (crosses.get(j).getDir() != null && !Double.isNaN(crosses.get(j).getDir().x()) && !Double.isNaN(crosses.get(j).getDir().y()) && !Double.isNaN(crosses.get(j).getDir().z()) ) { - bank.setFloat("ux", j, (float) crosses.get(j).getDir().x()); - bank.setFloat("uy", j, (float) crosses.get(j).getDir().y()); - bank.setFloat("uz", j, (float) crosses.get(j).getDir().z()); + bank.setFloat(BST_Crosses.ux, j, (float) crosses.get(j).getDir().x()); + bank.setFloat(BST_Crosses.uy, j, (float) crosses.get(j).getDir().y()); + bank.setFloat(BST_Crosses.uz, j, (float) crosses.get(j).getDir().z()); } else { - bank.setFloat("ux", j, 0); - bank.setFloat("uy", j, 0); - bank.setFloat("uz", j, 0); + bank.setFloat(BST_Crosses.ux, j, 0); + bank.setFloat(BST_Crosses.uy, j, 0); + bank.setFloat(BST_Crosses.uz, j, 0); } if (crosses.get(j).getCluster1() != null) { - bank.setShort("Cluster1_ID", j, (short) crosses.get(j).getCluster1().getId()); + bank.setShort(BST_Crosses.Cluster1_ID, j, (short) crosses.get(j).getCluster1().getId()); } if (crosses.get(j).getCluster2() != null) { - bank.setShort("Cluster2_ID", j, (short) crosses.get(j).getCluster2().getId()); + bank.setShort(BST_Crosses.Cluster2_ID, j, (short) crosses.get(j).getCluster2().getId()); } } @@ -194,20 +207,20 @@ public static DataBank fillBMTHitBank(DataEvent event, List hitlist, String for (int i = 0; i < hitlist.size(); i++) { - bank.setShort("ID", i, (short) hitlist.get(i).getId()); + bank.setShort(BMT_Hits.ID, i, (short) hitlist.get(i).getId()); - bank.setByte("layer", i, (byte) hitlist.get(i).getLayer()); - bank.setByte("sector", i, (byte) hitlist.get(i).getSector()); - bank.setShort("strip", i, (short) hitlist.get(i).getStrip().getStrip()); + bank.setByte(BMT_Hits.layer, i, (byte) hitlist.get(i).getLayer()); + bank.setByte(BMT_Hits.sector, i, (byte) hitlist.get(i).getSector()); + bank.setShort(BMT_Hits.strip, i, (short) hitlist.get(i).getStrip().getStrip()); - bank.setFloat("energy", i, (float) hitlist.get(i).getStrip().getEdep()); - bank.setFloat("time", i, (float) hitlist.get(i).getStrip().getTime()); - bank.setFloat("fitResidual", i, (float) hitlist.get(i).getResidual()/10); - bank.setByte("trkingStat", i, (byte) hitlist.get(i).getTrkgStatus()); + bank.setFloat(BMT_Hits.energy, i, (float) hitlist.get(i).getStrip().getEdep()); + bank.setFloat(BMT_Hits.time, i, (float) hitlist.get(i).getStrip().getTime()); + bank.setFloat(BMT_Hits.fitResidual, i, (float) hitlist.get(i).getResidual()/10); + bank.setByte(BMT_Hits.trkingStat, i, (byte) hitlist.get(i).getTrkgStatus()); - bank.setShort("clusterID", i, (short) hitlist.get(i).getAssociatedClusterID()); - bank.setShort("trkID", i, (short) hitlist.get(i).getAssociatedTrackID()); - bank.setByte("status", i, (byte) hitlist.get(i).getStrip().getStatus()); + bank.setShort(BMT_Hits.clusterID, i, (short) hitlist.get(i).getAssociatedClusterID()); + bank.setShort(BMT_Hits.trkID, i, (short) hitlist.get(i).getAssociatedTrackID()); + bank.setByte(BMT_Hits.status, i, (byte) hitlist.get(i).getStrip().getStatus()); } return bank; @@ -232,26 +245,26 @@ public static DataBank fillBMTClusterBank(DataEvent event, List cluslis for (int j = 0; j < hitIdxArray.length; j++) { hitIdxArray[j] = -1; } - bank.setShort("ID", i, (short) cluslist.get(i).getId()); - bank.setByte("sector", i, (byte) cluslist.get(i).getSector()); - bank.setByte("layer", i, (byte) cluslist.get(i).getLayer()); - bank.setShort("size", i, (short) cluslist.get(i).size()); - bank.setFloat("ETot", i, (float) cluslist.get(i).getTotalEnergy()); - bank.setFloat("time", i, (float) cluslist.get(i).getTime()); - bank.setShort("seedStrip", i, (short) cluslist.get(i).getSeedStrip().getStrip()); - bank.setFloat("centroid", i, (float) cluslist.get(i).getCentroid()); + bank.setShort(BMT_Clusters.ID, i, (short) cluslist.get(i).getId()); + bank.setByte(BMT_Clusters.sector, i, (byte) cluslist.get(i).getSector()); + bank.setByte(BMT_Clusters.layer, i, (byte) cluslist.get(i).getLayer()); + bank.setShort(BMT_Clusters.size, i, (short) cluslist.get(i).size()); + bank.setFloat(BMT_Clusters.ETot, i, (float) cluslist.get(i).getTotalEnergy()); + bank.setFloat(BMT_Clusters.time, i, (float) cluslist.get(i).getTime()); + bank.setShort(BMT_Clusters.seedStrip, i, (short) cluslist.get(i).getSeedStrip().getStrip()); + bank.setFloat(BMT_Clusters.centroid, i, (float) cluslist.get(i).getCentroid()); if(cluslist.get(i).getType()==BMTType.C) { - bank.setFloat("centroidValue", i, (float) cluslist.get(i).getCentroidValue()/10); - bank.setFloat("centroidError", i, (float) cluslist.get(i).getCentroidError()/10); + bank.setFloat(BMT_Clusters.centroidValue, i, (float) cluslist.get(i).getCentroidValue()/10); + bank.setFloat(BMT_Clusters.centroidError, i, (float) cluslist.get(i).getCentroidError()/10); } else { - bank.setFloat("centroidValue", i, (float) cluslist.get(i).getCentroidValue()); - bank.setFloat("centroidError", i, (float) cluslist.get(i).getCentroidError()); + bank.setFloat(BMT_Clusters.centroidValue, i, (float) cluslist.get(i).getCentroidValue()); + bank.setFloat(BMT_Clusters.centroidError, i, (float) cluslist.get(i).getCentroidError()); } - bank.setFloat("centroidResidual", i, (float) cluslist.get(i).getCentroidResidual()/10); - bank.setFloat("seedResidual", i, (float) cluslist.get(i).getSeedResidual()/10); - bank.setFloat("seedE", i, (float) cluslist.get(i).getSeedStrip().getEdep()); - bank.setShort("trkID", i, (short) cluslist.get(i).getAssociatedTrackID()); + bank.setFloat(BMT_Clusters.centroidResidual, i, (float) cluslist.get(i).getCentroidResidual()/10); + bank.setFloat(BMT_Clusters.seedResidual, i, (float) cluslist.get(i).getSeedResidual()/10); + bank.setFloat(BMT_Clusters.seedE, i, (float) cluslist.get(i).getSeedStrip().getEdep()); + bank.setShort(BMT_Clusters.trkID, i, (short) cluslist.get(i).getAssociatedTrackID()); for (int j = 0; j < cluslist.get(i).size(); j++) { if (j < hitIdxArray.length) { hitIdxArray[j] = cluslist.get(i).get(j).getId(); @@ -264,32 +277,32 @@ public static DataBank fillBMTClusterBank(DataEvent event, List cluslis hitStrg += "_ID"; bank.setShort(hitStrg, i, (short) hitIdxArray[j]); } - bank.setFloat("x1", i, (float)cluslist.get(i).origin().x()/10); - bank.setFloat("y1", i, (float)cluslist.get(i).origin().y()/10); - bank.setFloat("z1", i, (float)cluslist.get(i).origin().z()/10); - bank.setFloat("x2", i, (float)cluslist.get(i).end().x()/10); - bank.setFloat("y2", i, (float)cluslist.get(i).end().y()/10); - bank.setFloat("z2", i, (float)cluslist.get(i).end().z()/10); - bank.setFloat("cx", i, (float)cluslist.get(i).center().x()/10); - bank.setFloat("cy", i, (float)cluslist.get(i).center().y()/10); - bank.setFloat("cz", i, (float)cluslist.get(i).center().z()/10); - bank.setFloat("theta",i, (float)cluslist.get(i).theta()); - bank.setFloat("ax1", i, (float)cluslist.get(i).getAxis().origin().x()/10); - bank.setFloat("ay1", i, (float)cluslist.get(i).getAxis().origin().y()/10); - bank.setFloat("az1", i, (float)cluslist.get(i).getAxis().origin().z()/10); - bank.setFloat("ax2", i, (float)cluslist.get(i).getAxis().end().x()/10); - bank.setFloat("ay2", i, (float)cluslist.get(i).getAxis().end().y()/10); - bank.setFloat("az2", i, (float)cluslist.get(i).getAxis().end().z()/10); - bank.setFloat("lx", i, (float)cluslist.get(i).getL().x()); - bank.setFloat("ly", i, (float)cluslist.get(i).getL().y()); - bank.setFloat("lz", i, (float)cluslist.get(i).getL().z()); - bank.setFloat("sx", i, (float)cluslist.get(i).getS().x()); - bank.setFloat("sy", i, (float)cluslist.get(i).getS().y()); - bank.setFloat("sz", i, (float)cluslist.get(i).getS().z()); - bank.setFloat("nx", i, (float)cluslist.get(i).getN().x()); - bank.setFloat("ny", i, (float)cluslist.get(i).getN().y()); - bank.setFloat("nz", i, (float)cluslist.get(i).getN().z()); - bank.setFloat("e", i, (float)cluslist.get(i).getResolution()/10); + bank.setFloat(BMT_Clusters.x1, i, (float)cluslist.get(i).origin().x()/10); + bank.setFloat(BMT_Clusters.y1, i, (float)cluslist.get(i).origin().y()/10); + bank.setFloat(BMT_Clusters.z1, i, (float)cluslist.get(i).origin().z()/10); + bank.setFloat(BMT_Clusters.x2, i, (float)cluslist.get(i).end().x()/10); + bank.setFloat(BMT_Clusters.y2, i, (float)cluslist.get(i).end().y()/10); + bank.setFloat(BMT_Clusters.z2, i, (float)cluslist.get(i).end().z()/10); + bank.setFloat(BMT_Clusters.cx, i, (float)cluslist.get(i).center().x()/10); + bank.setFloat(BMT_Clusters.cy, i, (float)cluslist.get(i).center().y()/10); + bank.setFloat(BMT_Clusters.cz, i, (float)cluslist.get(i).center().z()/10); + bank.setFloat(BMT_Clusters.theta,i, (float)cluslist.get(i).theta()); + bank.setFloat(BMT_Clusters.ax1, i, (float)cluslist.get(i).getAxis().origin().x()/10); + bank.setFloat(BMT_Clusters.ay1, i, (float)cluslist.get(i).getAxis().origin().y()/10); + bank.setFloat(BMT_Clusters.az1, i, (float)cluslist.get(i).getAxis().origin().z()/10); + bank.setFloat(BMT_Clusters.ax2, i, (float)cluslist.get(i).getAxis().end().x()/10); + bank.setFloat(BMT_Clusters.ay2, i, (float)cluslist.get(i).getAxis().end().y()/10); + bank.setFloat(BMT_Clusters.az2, i, (float)cluslist.get(i).getAxis().end().z()/10); + bank.setFloat(BMT_Clusters.lx, i, (float)cluslist.get(i).getL().x()); + bank.setFloat(BMT_Clusters.ly, i, (float)cluslist.get(i).getL().y()); + bank.setFloat(BMT_Clusters.lz, i, (float)cluslist.get(i).getL().z()); + bank.setFloat(BMT_Clusters.sx, i, (float)cluslist.get(i).getS().x()); + bank.setFloat(BMT_Clusters.sy, i, (float)cluslist.get(i).getS().y()); + bank.setFloat(BMT_Clusters.sz, i, (float)cluslist.get(i).getS().z()); + bank.setFloat(BMT_Clusters.nx, i, (float)cluslist.get(i).getN().x()); + bank.setFloat(BMT_Clusters.ny, i, (float)cluslist.get(i).getN().y()); + bank.setFloat(BMT_Clusters.nz, i, (float)cluslist.get(i).getN().z()); + bank.setFloat(BMT_Clusters.e, i, (float)cluslist.get(i).getResolution()/10); if(debug && cluslist.get(i).getAssociatedTrackID()>0 && cluslist.get(i).getType()==BMTType.Z) { Line3D cln = new Line3D(cluslist.get(i).origin(), cluslist.get(i).end()); System.out.println("Check: N "+cluslist.get(i).getN().toString()+" \n"+ @@ -327,41 +340,41 @@ public static DataBank fillBMTCrossBank(DataEvent event, List crosses, St DataBank bank = event.createBank(bankName, crosses.size()); for (int j = 0; j < crosses.size(); j++) { - bank.setShort("ID", j, (short) crosses.get(j).getId()); - bank.setByte("sector", j, (byte) crosses.get(j).getSector()); - bank.setByte("region", j, (byte) crosses.get(j).getRegion()); - bank.setFloat("x", j, (float) (crosses.get(j).getPoint().x()/10.)); - bank.setFloat("y", j, (float) (crosses.get(j).getPoint().y()/10.)); - bank.setFloat("z", j, (float) (crosses.get(j).getPoint().z()/10)); - bank.setFloat("err_x", j, (float) (crosses.get(j).getPointErr().x()/10.)); - bank.setFloat("err_y", j, (float) (crosses.get(j).getPointErr().y()/10.)); - bank.setFloat("err_z", j, (float) (crosses.get(j).getPointErr().z()/10.)); - bank.setFloat("x0", j, (float) (crosses.get(j).getPoint0().x()/10.)); - bank.setFloat("y0", j, (float) (crosses.get(j).getPoint0().y()/10.)); - bank.setFloat("z0", j, (float) (crosses.get(j).getPoint0().z()/10)); - bank.setFloat("err_x0", j, (float) (crosses.get(j).getPointErr0().x()/10.)); - bank.setFloat("err_y0", j, (float) (crosses.get(j).getPointErr0().y()/10.)); - bank.setFloat("err_z0", j, (float) (crosses.get(j).getPointErr0().z()/10.)); - bank.setShort("trkID", j, (short) crosses.get(j).getAssociatedTrackID()); + bank.setShort(BMT_Crosses.ID, j, (short) crosses.get(j).getId()); + bank.setByte(BMT_Crosses.sector, j, (byte) crosses.get(j).getSector()); + bank.setByte(BMT_Crosses.region, j, (byte) crosses.get(j).getRegion()); + bank.setFloat(BMT_Crosses.x, j, (float) (crosses.get(j).getPoint().x()/10.)); + bank.setFloat(BMT_Crosses.y, j, (float) (crosses.get(j).getPoint().y()/10.)); + bank.setFloat(BMT_Crosses.z, j, (float) (crosses.get(j).getPoint().z()/10)); + bank.setFloat(BMT_Crosses.err_x, j, (float) (crosses.get(j).getPointErr().x()/10.)); + bank.setFloat(BMT_Crosses.err_y, j, (float) (crosses.get(j).getPointErr().y()/10.)); + bank.setFloat(BMT_Crosses.err_z, j, (float) (crosses.get(j).getPointErr().z()/10.)); + bank.setFloat(BMT_Crosses.x0, j, (float) (crosses.get(j).getPoint0().x()/10.)); + bank.setFloat(BMT_Crosses.y0, j, (float) (crosses.get(j).getPoint0().y()/10.)); + bank.setFloat(BMT_Crosses.z0, j, (float) (crosses.get(j).getPoint0().z()/10)); + bank.setFloat(BMT_Crosses.err_x0, j, (float) (crosses.get(j).getPointErr0().x()/10.)); + bank.setFloat(BMT_Crosses.err_y0, j, (float) (crosses.get(j).getPointErr0().y()/10.)); + bank.setFloat(BMT_Crosses.err_z0, j, (float) (crosses.get(j).getPointErr0().z()/10.)); + bank.setShort(BMT_Crosses.trkID, j, (short) crosses.get(j).getAssociatedTrackID()); if (crosses.get(j).getDir() != null && !Double.isNaN(crosses.get(j).getDir().x()) && !Double.isNaN(crosses.get(j).getDir().y()) && !Double.isNaN(crosses.get(j).getDir().z()) ) { - bank.setFloat("ux", j, (float) crosses.get(j).getDir().x()); - bank.setFloat("uy", j, (float) crosses.get(j).getDir().y()); - bank.setFloat("uz", j, (float) crosses.get(j).getDir().z()); + bank.setFloat(BMT_Crosses.ux, j, (float) crosses.get(j).getDir().x()); + bank.setFloat(BMT_Crosses.uy, j, (float) crosses.get(j).getDir().y()); + bank.setFloat(BMT_Crosses.uz, j, (float) crosses.get(j).getDir().z()); } else { - bank.setFloat("ux", j, 0); - bank.setFloat("uy", j, 0); - bank.setFloat("uz", j, 0); + bank.setFloat(BMT_Crosses.ux, j, 0); + bank.setFloat(BMT_Crosses.uy, j, 0); + bank.setFloat(BMT_Crosses.uz, j, 0); } if (crosses.get(j).getCluster1() != null) { - bank.setShort("Cluster1_ID", j, (short) crosses.get(j).getCluster1().getId()); - bank.setByte("layer", j, (byte) crosses.get(j).getCluster1().getLayer()); + bank.setShort(BMT_Crosses.Cluster1_ID, j, (short) crosses.get(j).getCluster1().getId()); + bank.setByte(BMT_Crosses.layer, j, (byte) crosses.get(j).getCluster1().getLayer()); } if (crosses.get(j).getCluster2() != null) { - bank.setShort("Cluster2_ID", j, (short) crosses.get(j).getCluster2().getId()); + bank.setShort(BMT_Crosses.Cluster2_ID, j, (short) crosses.get(j).getCluster2().getId()); } } @@ -444,49 +457,49 @@ public static DataBank fillSeedBank(DataEvent event, List seeds, String ba for (int i = 0; i < seeds.size(); i++) { if(seeds.get(i)==null) continue; - bank.setByte("fittingMethod", i, (byte) seeds.get(i).getStatus()); - bank.setShort("ID", i, (short) seeds.get(i).getId()); + bank.setByte(CVT_Seeds.fittingMethod, i, (byte) seeds.get(i).getStatus()); + bank.setShort(CVT_Seeds.ID, i, (short) seeds.get(i).getId()); Helix helix = seeds.get(i).getHelix(); - bank.setByte("q", i, (byte) (Math.signum(Constants.getSolenoidScale())*helix.getCharge())); - bank.setFloat("p", i, (float) helix.getPXYZ(seeds.get(i).getHelix().B).mag()); - bank.setFloat("pt", i, (float) helix.getPt(seeds.get(i).getHelix().B)); - bank.setFloat("phi0", i, (float) helix.getPhiAtDCA()); - bank.setFloat("tandip", i, (float) helix.getTanDip()); - bank.setFloat("z0", i, (float) (helix.getZ0()/10.0)); - bank.setFloat("d0", i, (float) (helix.getDCA()/10.0)); + bank.setByte(CVT_Seeds.q, i, (byte) (Math.signum(Constants.getSolenoidScale())*helix.getCharge())); + bank.setFloat(CVT_Seeds.p, i, (float) helix.getPXYZ(seeds.get(i).getHelix().B).mag()); + bank.setFloat(CVT_Seeds.pt, i, (float) helix.getPt(seeds.get(i).getHelix().B)); + bank.setFloat(CVT_Seeds.phi0, i, (float) helix.getPhiAtDCA()); + bank.setFloat(CVT_Seeds.tandip, i, (float) helix.getTanDip()); + bank.setFloat(CVT_Seeds.z0, i, (float) (helix.getZ0()/10.0)); + bank.setFloat(CVT_Seeds.d0, i, (float) (helix.getDCA()/10.0)); double[][] covmatrix = helix.getCovMatrix(); if (covmatrix != null) { - bank.setFloat("cov_d02", i, (float) covmatrix[0][0]/10/10 ); - bank.setFloat("cov_d0phi0", i, (float) covmatrix[0][1]/10 ); - bank.setFloat("cov_d0rho", i, (float) covmatrix[0][2] ); - bank.setFloat("cov_phi02", i, (float) covmatrix[1][1] ); - bank.setFloat("cov_phi0rho", i, (float) covmatrix[1][2]*10 ); - bank.setFloat("cov_rho2", i, (float) covmatrix[2][2]*10*10 ); - bank.setFloat("cov_z02", i, (float) covmatrix[3][3]/10/10 ); - bank.setFloat("cov_z0tandip", i, (float) covmatrix[3][4]/10 ); - bank.setFloat("cov_tandip2", i, (float) covmatrix[4][4] ); + bank.setFloat(CVT_Seeds.cov_d02, i, (float) covmatrix[0][0]/10/10 ); + bank.setFloat(CVT_Seeds.cov_d0phi0, i, (float) covmatrix[0][1]/10 ); + bank.setFloat(CVT_Seeds.cov_d0rho, i, (float) covmatrix[0][2] ); + bank.setFloat(CVT_Seeds.cov_phi02, i, (float) covmatrix[1][1] ); + bank.setFloat(CVT_Seeds.cov_phi0rho, i, (float) covmatrix[1][2]*10 ); + bank.setFloat(CVT_Seeds.cov_rho2, i, (float) covmatrix[2][2]*10*10 ); + bank.setFloat(CVT_Seeds.cov_z02, i, (float) covmatrix[3][3]/10/10 ); + bank.setFloat(CVT_Seeds.cov_z0tandip, i, (float) covmatrix[3][4]/10 ); + bank.setFloat(CVT_Seeds.cov_tandip2, i, (float) covmatrix[4][4] ); } else { - bank.setFloat("cov_d02", i, -999); - bank.setFloat("cov_d0phi0", i, -999); - bank.setFloat("cov_d0rho", i, -999); - bank.setFloat("cov_phi02", i, -999); - bank.setFloat("cov_phi0rho", i, -999); - bank.setFloat("cov_rho2", i, -999); - bank.setFloat("cov_z02", i, -999); - bank.setFloat("cov_tandip2", i, -999); + bank.setFloat(CVT_Seeds.cov_d02, i, -999); + bank.setFloat(CVT_Seeds.cov_d0phi0, i, -999); + bank.setFloat(CVT_Seeds.cov_d0rho, i, -999); + bank.setFloat(CVT_Seeds.cov_phi02, i, -999); + bank.setFloat(CVT_Seeds.cov_phi0rho, i, -999); + bank.setFloat(CVT_Seeds.cov_rho2, i, -999); + bank.setFloat(CVT_Seeds.cov_z02, i, -999); + bank.setFloat(CVT_Seeds.cov_tandip2, i, -999); } - bank.setFloat("xb", i, (float) (helix.getXb()/10.0)); - bank.setFloat("yb", i, (float) (helix.getYb()/10.0)); - bank.setFloat("fracmctru", i, (float) seeds.get(i).percentTruthMatch); - bank.setFloat("fracmcmatch", i, (float) seeds.get(i).totpercentTruthMatch); + bank.setFloat(CVT_Seeds.xb, i, (float) (helix.getXb()/10.0)); + bank.setFloat(CVT_Seeds.yb, i, (float) (helix.getYb()/10.0)); + bank.setFloat(CVT_Seeds.fracmctru, i, (float) seeds.get(i).percentTruthMatch); + bank.setFloat(CVT_Seeds.fracmcmatch, i, (float) seeds.get(i).totpercentTruthMatch); // fills the list of cross ids for crosses belonging to that reconstructed track fillTrkCrossBank(bank,clusmap, seeds.get(i).getCrosses(), i); - bank.setFloat("circlefit_chi2_per_ndf", i, (float) seeds.get(i).getCircleFitChi2PerNDF()); - bank.setFloat("linefit_chi2_per_ndf", i, (float) seeds.get(i).getLineFitChi2PerNDF()); - bank.setFloat("chi2", i, (float) seeds.get(i).getChi2()); - bank.setShort("ndf", i, (short) seeds.get(i).getNDF()); + bank.setFloat(CVT_Seeds.circlefit_chi2_per_ndf, i, (float) seeds.get(i).getCircleFitChi2PerNDF()); + bank.setFloat(CVT_Seeds.linefit_chi2_per_ndf, i, (float) seeds.get(i).getLineFitChi2PerNDF()); + bank.setFloat(CVT_Seeds.chi2, i, (float) seeds.get(i).getChi2()); + bank.setShort(CVT_Seeds.ndf, i, (short) seeds.get(i).getNDF()); } //bank.show(); @@ -510,18 +523,18 @@ public static DataBank fillTrackBank(DataEvent event, List trkcands, Stri for (int i = 0; i < trkcands.size(); i++) { if(trkcands.get(i)==null) continue; - bank.setByte("nKFIters", i, (byte) trkcands.get(i).getKFIterations()); - bank.setShort("ID", i, (short) trkcands.get(i).getId()); - bank.setByte("q", i, (byte)trkcands.get(i).getQ()); - bank.setFloat("p", i, (float) trkcands.get(i).getP()); - bank.setFloat("pt", i, (float) trkcands.get(i).getPt()); + bank.setByte(CVTRec_Tracks.nKFIters, i, (byte) trkcands.get(i).getKFIterations()); + bank.setShort(CVTRec_Tracks.ID, i, (short) trkcands.get(i).getId()); + bank.setByte(CVTRec_Tracks.q, i, (byte)trkcands.get(i).getQ()); + bank.setFloat(CVTRec_Tracks.p, i, (float) trkcands.get(i).getP()); + bank.setFloat(CVTRec_Tracks.pt, i, (float) trkcands.get(i).getPt()); Helix helix = trkcands.get(i).getHelix(); - bank.setFloat("phi0", i, (float) helix.getPhiAtDCA()); - bank.setFloat("tandip", i, (float) helix.getTanDip()); - bank.setFloat("z0", i, (float) (helix.getZ0()/10.)); - bank.setFloat("d0", i, (float) (helix.getDCA()/10.)); - bank.setFloat("xb", i, (float) (helix.getXb()/10.0)); - bank.setFloat("yb", i, (float) (helix.getYb()/10.0)); + bank.setFloat(CVTRec_Tracks.phi0, i, (float) helix.getPhiAtDCA()); + bank.setFloat(CVTRec_Tracks.tandip, i, (float) helix.getTanDip()); + bank.setFloat(CVTRec_Tracks.z0, i, (float) (helix.getZ0()/10.)); + bank.setFloat(CVTRec_Tracks.d0, i, (float) (helix.getDCA()/10.)); + bank.setFloat(CVTRec_Tracks.xb, i, (float) (helix.getXb()/10.0)); + bank.setFloat(CVTRec_Tracks.yb, i, (float) (helix.getYb()/10.0)); // this is the format of the covariance matrix for helical tracks // cov matrix = // | d_dca*d_dca d_dca*d_phi_at_dca d_dca*d_curvature 0 0 | @@ -531,43 +544,43 @@ public static DataBank fillTrackBank(DataEvent event, List trkcands, Stri // | 0 0 0 0 d_tandip*d_tandip |X double[][] covmatrix = helix.getCovMatrix(); if (covmatrix != null) { - bank.setFloat("cov_d02", i, (float) covmatrix[0][0]/10/10 ); - bank.setFloat("cov_d0phi0", i, (float) covmatrix[0][1]/10 ); - bank.setFloat("cov_d0rho", i, (float) covmatrix[0][2] ); - bank.setFloat("cov_phi02", i, (float) covmatrix[1][1] ); - bank.setFloat("cov_phi0rho", i, (float) covmatrix[1][2]*10 ); - bank.setFloat("cov_rho2", i, (float) covmatrix[2][2]*10*10 ); - bank.setFloat("cov_z02", i, (float) covmatrix[3][3]/10/10 ); - bank.setFloat("cov_z0tandip", i, (float) covmatrix[3][4]/10 ); - bank.setFloat("cov_tandip2", i, (float) covmatrix[4][4] ); + bank.setFloat(CVTRec_Tracks.cov_d02, i, (float) covmatrix[0][0]/10/10 ); + bank.setFloat(CVTRec_Tracks.cov_d0phi0, i, (float) covmatrix[0][1]/10 ); + bank.setFloat(CVTRec_Tracks.cov_d0rho, i, (float) covmatrix[0][2] ); + bank.setFloat(CVTRec_Tracks.cov_phi02, i, (float) covmatrix[1][1] ); + bank.setFloat(CVTRec_Tracks.cov_phi0rho, i, (float) covmatrix[1][2]*10 ); + bank.setFloat(CVTRec_Tracks.cov_rho2, i, (float) covmatrix[2][2]*10*10 ); + bank.setFloat(CVTRec_Tracks.cov_z02, i, (float) covmatrix[3][3]/10/10 ); + bank.setFloat(CVTRec_Tracks.cov_z0tandip, i, (float) covmatrix[3][4]/10 ); + bank.setFloat(CVTRec_Tracks.cov_tandip2, i, (float) covmatrix[4][4] ); } else { - bank.setFloat("cov_d02", i, -999); - bank.setFloat("cov_d0phi0", i, -999); - bank.setFloat("cov_d0rho", i, -999); - bank.setFloat("cov_phi02", i, -999); - bank.setFloat("cov_phi0rho", i, -999); - bank.setFloat("cov_rho2", i, -999); - bank.setFloat("cov_z02", i, -999); - bank.setFloat("cov_z0tandip", i, -999); - bank.setFloat("cov_tandip2", i, -999); + bank.setFloat(CVTRec_Tracks.cov_d02, i, -999); + bank.setFloat(CVTRec_Tracks.cov_d0phi0, i, -999); + bank.setFloat(CVTRec_Tracks.cov_d0rho, i, -999); + bank.setFloat(CVTRec_Tracks.cov_phi02, i, -999); + bank.setFloat(CVTRec_Tracks.cov_phi0rho, i, -999); + bank.setFloat(CVTRec_Tracks.cov_rho2, i, -999); + bank.setFloat(CVTRec_Tracks.cov_z02, i, -999); + bank.setFloat(CVTRec_Tracks.cov_z0tandip, i, -999); + bank.setFloat(CVTRec_Tracks.cov_tandip2, i, -999); } if(trkcands.get(i).getTrackPosAtCTOF()!=null) { - bank.setFloat("c_x", i, (float) (trkcands.get(i).getTrackPosAtCTOF().x() / 10.)); // convert to cm - bank.setFloat("c_y", i, (float) (trkcands.get(i).getTrackPosAtCTOF().y() / 10.)); // convert to cm - bank.setFloat("c_z", i, (float) (trkcands.get(i).getTrackPosAtCTOF().z() / 10.)); // convert to cm - bank.setFloat("c_ux", i, (float) trkcands.get(i).getTrackDirAtCTOF().x()); - bank.setFloat("c_uy", i, (float) trkcands.get(i).getTrackDirAtCTOF().y()); - bank.setFloat("c_uz", i, (float) trkcands.get(i).getTrackDirAtCTOF().z()); - bank.setFloat("pathlength", i, (float) (trkcands.get(i).getPathToCTOF() / 10.)); // conversion to cm + bank.setFloat(CVTRec_Tracks.c_x, i, (float) (trkcands.get(i).getTrackPosAtCTOF().x() / 10.)); // convert to cm + bank.setFloat(CVTRec_Tracks.c_y, i, (float) (trkcands.get(i).getTrackPosAtCTOF().y() / 10.)); // convert to cm + bank.setFloat(CVTRec_Tracks.c_z, i, (float) (trkcands.get(i).getTrackPosAtCTOF().z() / 10.)); // convert to cm + bank.setFloat(CVTRec_Tracks.c_ux, i, (float) trkcands.get(i).getTrackDirAtCTOF().x()); + bank.setFloat(CVTRec_Tracks.c_uy, i, (float) trkcands.get(i).getTrackDirAtCTOF().y()); + bank.setFloat(CVTRec_Tracks.c_uz, i, (float) trkcands.get(i).getTrackDirAtCTOF().z()); + bank.setFloat(CVTRec_Tracks.pathlength, i, (float) (trkcands.get(i).getPathToCTOF() / 10.)); // conversion to cm } // fills the list of cross ids for crosses belonging to that reconstructed track fillTrkCrossBank(bank,clusmap, trkcands.get(i), i); - bank.setShort("status", i, (short) ((short) trkcands.get(i).getStatus())); - bank.setShort("seedID", i, (short) trkcands.get(i).getSeed().getId()); - bank.setFloat("chi2", i, (float) trkcands.get(i).getChi2()); - bank.setShort("ndf", i, (short) trkcands.get(i).getNDF()); - bank.setInt("pid", i, trkcands.get(i).getPID()); + bank.setShort(CVTRec_Tracks.status, i, (short) ((short) trkcands.get(i).getStatus())); + bank.setShort(CVTRec_Tracks.seedID, i, (short) trkcands.get(i).getSeed().getId()); + bank.setFloat(CVTRec_Tracks.chi2, i, (float) trkcands.get(i).getChi2()); + bank.setShort(CVTRec_Tracks.ndf, i, (short) trkcands.get(i).getNDF()); + bank.setInt(CVTRec_Tracks.pid, i, trkcands.get(i).getPID()); } //bank.show(); return bank; @@ -584,17 +597,17 @@ public static DataBank fillUTrackBank(DataEvent event, List trkcands, Str if(trkcands.get(i)==null) continue; Helix helix = trkcands.get(i).getSecondaryHelix(); - bank.setShort("ID", i, (short) trkcands.get(i).getId()); - bank.setByte("nKFIters", i, (byte) trkcands.get(i).getKFIterations()); - bank.setByte("q", i, (byte)trkcands.get(i).getQ()); - bank.setFloat("p", i, (float) helix.getPXYZ(Constants.getSolenoidMagnitude()).mag()); - bank.setFloat("pt", i, (float) helix.getPt(Constants.getSolenoidMagnitude())); - bank.setFloat("phi0", i, (float) helix.getPhiAtDCA()); - bank.setFloat("tandip", i, (float) helix.getTanDip()); - bank.setFloat("z0", i, (float) (helix.getZ0()/10.)); - bank.setFloat("d0", i, (float) (helix.getDCA()/10.)); - bank.setFloat("xb", i, (float) (helix.getXb()/10.0)); - bank.setFloat("yb", i, (float) (helix.getYb()/10.0)); + bank.setShort(CVTRec_UTracks.ID, i, (short) trkcands.get(i).getId()); + bank.setByte(CVTRec_UTracks.nKFIters, i, (byte) trkcands.get(i).getKFIterations()); + bank.setByte(CVTRec_UTracks.q, i, (byte)trkcands.get(i).getQ()); + bank.setFloat(CVTRec_UTracks.p, i, (float) helix.getPXYZ(Constants.getSolenoidMagnitude()).mag()); + bank.setFloat(CVTRec_UTracks.pt, i, (float) helix.getPt(Constants.getSolenoidMagnitude())); + bank.setFloat(CVTRec_UTracks.phi0, i, (float) helix.getPhiAtDCA()); + bank.setFloat(CVTRec_UTracks.tandip, i, (float) helix.getTanDip()); + bank.setFloat(CVTRec_UTracks.z0, i, (float) (helix.getZ0()/10.)); + bank.setFloat(CVTRec_UTracks.d0, i, (float) (helix.getDCA()/10.)); + bank.setFloat(CVTRec_UTracks.xb, i, (float) (helix.getXb()/10.0)); + bank.setFloat(CVTRec_UTracks.yb, i, (float) (helix.getYb()/10.0)); // this is the format of the covariance matrix for helical tracks // cov matrix = // | d_dca*d_dca d_dca*d_phi_at_dca d_dca*d_curvature 0 0 | @@ -604,31 +617,31 @@ public static DataBank fillUTrackBank(DataEvent event, List trkcands, Str // | 0 0 0 0 d_tandip*d_tandip |X double[][] covmatrix = helix.getCovMatrix(); if (covmatrix != null) { - bank.setFloat("cov_d02", i, (float) covmatrix[0][0]/10/10 ); - bank.setFloat("cov_d0phi0", i, (float) covmatrix[0][1]/10 ); - bank.setFloat("cov_d0rho", i, (float) covmatrix[0][2] ); - bank.setFloat("cov_phi02", i, (float) covmatrix[1][1] ); - bank.setFloat("cov_phi0rho", i, (float) covmatrix[1][2]*10 ); - bank.setFloat("cov_rho2", i, (float) covmatrix[2][2]*10*10 ); - bank.setFloat("cov_z02", i, (float) covmatrix[3][3]/10/10 ); - bank.setFloat("cov_z0tandip", i, (float) covmatrix[3][4]/10 ); - bank.setFloat("cov_tandip2", i, (float) covmatrix[4][4] ); + bank.setFloat(CVTRec_UTracks.cov_d02, i, (float) covmatrix[0][0]/10/10 ); + bank.setFloat(CVTRec_UTracks.cov_d0phi0, i, (float) covmatrix[0][1]/10 ); + bank.setFloat(CVTRec_UTracks.cov_d0rho, i, (float) covmatrix[0][2] ); + bank.setFloat(CVTRec_UTracks.cov_phi02, i, (float) covmatrix[1][1] ); + bank.setFloat(CVTRec_UTracks.cov_phi0rho, i, (float) covmatrix[1][2]*10 ); + bank.setFloat(CVTRec_UTracks.cov_rho2, i, (float) covmatrix[2][2]*10*10 ); + bank.setFloat(CVTRec_UTracks.cov_z02, i, (float) covmatrix[3][3]/10/10 ); + bank.setFloat(CVTRec_UTracks.cov_z0tandip, i, (float) covmatrix[3][4]/10 ); + bank.setFloat(CVTRec_UTracks.cov_tandip2, i, (float) covmatrix[4][4] ); } else { - bank.setFloat("cov_d02", i, -999); - bank.setFloat("cov_d0phi0", i, -999); - bank.setFloat("cov_d0rho", i, -999); - bank.setFloat("cov_phi02", i, -999); - bank.setFloat("cov_phi0rho", i, -999); - bank.setFloat("cov_rho2", i, -999); - bank.setFloat("cov_z02", i, -999); - bank.setFloat("cov_z0tandip", i, -999); - bank.setFloat("cov_tandip2", i, -999); + bank.setFloat(CVTRec_UTracks.cov_d02, i, -999); + bank.setFloat(CVTRec_UTracks.cov_d0phi0, i, -999); + bank.setFloat(CVTRec_UTracks.cov_d0rho, i, -999); + bank.setFloat(CVTRec_UTracks.cov_phi02, i, -999); + bank.setFloat(CVTRec_UTracks.cov_phi0rho, i, -999); + bank.setFloat(CVTRec_UTracks.cov_rho2, i, -999); + bank.setFloat(CVTRec_UTracks.cov_z02, i, -999); + bank.setFloat(CVTRec_UTracks.cov_z0tandip, i, -999); + bank.setFloat(CVTRec_UTracks.cov_tandip2, i, -999); } - bank.setShort("status", i, (short) ((short) trkcands.get(i).getStatus())); - bank.setShort("seedID", i, (short) trkcands.get(i).getSeed().getId()); - bank.setFloat("chi2", i, (float) trkcands.get(i).getSecondaryChi2()); - bank.setShort("ndf", i, (short) trkcands.get(i).getSecondaryNDF()); - bank.setInt("pid", i, trkcands.get(i).getPID()); + bank.setShort(CVTRec_UTracks.status, i, (short) ((short) trkcands.get(i).getStatus())); + bank.setShort(CVTRec_UTracks.seedID, i, (short) trkcands.get(i).getSeed().getId()); + bank.setFloat(CVTRec_UTracks.chi2, i, (float) trkcands.get(i).getSecondaryChi2()); + bank.setShort(CVTRec_UTracks.ndf, i, (short) trkcands.get(i).getSecondaryNDF()); + bank.setInt(CVTRec_UTracks.pid, i, trkcands.get(i).getPID()); } //bank.show(); return bank; @@ -688,24 +701,24 @@ public static DataBank fillTrajectoryBank(DataEvent event, List trks, Str } for (StateVec stVec : trks.get(i).getTrajectory()) { - bank.setShort("id", k, (short) trks.get(i).getId()); - bank.setByte("detector", k, (byte) stVec.getSurfaceDetector()); - bank.setByte("sector", k, (byte) stVec.getSurfaceSector()); - bank.setByte("layer", k, (byte) stVec.getSurfaceLayer()); - bank.setFloat("x", k, (float) (stVec.x()/10.)); - bank.setFloat("y", k, (float) (stVec.y()/10.)); - bank.setFloat("z", k, (float) (stVec.z()/10.)); - bank.setFloat("cx", k, (float) (stVec.ux())); - bank.setFloat("cy", k, (float) (stVec.uy())); - bank.setFloat("cz", k, (float) (stVec.uz())); - bank.setFloat("p", k, (float) (stVec.getP())); - bank.setFloat("phi", k, (float) stVec.getTrkPhiAtSurface()); - bank.setFloat("theta", k, (float) stVec.getTrkThetaAtSurface()); - bank.setFloat("langle", k, (float) stVec.getTrkToModuleAngle()); - bank.setFloat("centroid", k, (float) stVec.getCalcCentroidStrip()); - bank.setFloat("path", k, (float) stVec.getPath()/10); - bank.setFloat("dx", k, (float) stVec.getDx()/10); - bank.setFloat("edge", k, (float) stVec.getEdge()/10); + bank.setShort(CVTRec_Trajectory.id, k, (short) trks.get(i).getId()); + bank.setByte(CVTRec_Trajectory.detector, k, (byte) stVec.getSurfaceDetector()); + bank.setByte(CVTRec_Trajectory.sector, k, (byte) stVec.getSurfaceSector()); + bank.setByte(CVTRec_Trajectory.layer, k, (byte) stVec.getSurfaceLayer()); + bank.setFloat(CVTRec_Trajectory.x, k, (float) (stVec.x()/10.)); + bank.setFloat(CVTRec_Trajectory.y, k, (float) (stVec.y()/10.)); + bank.setFloat(CVTRec_Trajectory.z, k, (float) (stVec.z()/10.)); + bank.setFloat(CVTRec_Trajectory.cx, k, (float) (stVec.ux())); + bank.setFloat(CVTRec_Trajectory.cy, k, (float) (stVec.uy())); + bank.setFloat(CVTRec_Trajectory.cz, k, (float) (stVec.uz())); + bank.setFloat(CVTRec_Trajectory.p, k, (float) (stVec.getP())); + bank.setFloat(CVTRec_Trajectory.phi, k, (float) stVec.getTrkPhiAtSurface()); + bank.setFloat(CVTRec_Trajectory.theta, k, (float) stVec.getTrkThetaAtSurface()); + bank.setFloat(CVTRec_Trajectory.langle, k, (float) stVec.getTrkToModuleAngle()); + bank.setFloat(CVTRec_Trajectory.centroid, k, (float) stVec.getCalcCentroidStrip()); + bank.setFloat(CVTRec_Trajectory.path, k, (float) stVec.getPath()/10); + bank.setFloat(CVTRec_Trajectory.dx, k, (float) stVec.getDx()/10); + bank.setFloat(CVTRec_Trajectory.edge, k, (float) stVec.getEdge()/10); k++; } @@ -733,23 +746,23 @@ public static DataBank fillKFTrajectoryBank(DataEvent event, List trkcand //Fill trajectory for Eloss debugging for (int index : trkcands.get(i).getKFTrajectories().keySet()) { HitOnTrack t = trkcands.get(i).getKFTrajectories().get(index); - bank.setShort("id", k, (short) trkcands.get(i).getId()); //trackid - bank.setByte("detector", k, (byte) MLayer.getDetectorType(index).getDetectorId()); - bank.setByte("layer", k, (byte) MLayer.getType(index).getLayer()); - bank.setByte("index", k, (byte) index); - bank.setFloat("x", k, (float) (t.x/10.)); - bank.setFloat("y", k, (float) (t.y/10.)); - bank.setFloat("z", k, (float) (t.z/10.)); - bank.setFloat("px", k, (float) (t.px)); - bank.setFloat("py", k, (float) (t.py)); - bank.setFloat("pz", k, (float) (t.pz)); - bank.setFloat("path", k, (float) (t.path)); - bank.setFloat("dx", k, (float) (t.dx)); - bank.setFloat("dE", k, (float) (t.dE)); - bank.setFloat("trackRes", k, (float) (t.residual)); - bank.setFloat("transportedRes", k, (float) (t.transportedResidual)); - bank.setFloat("filteredRes", k, (float) (t.filteredResidual)); - bank.setFloat("smoothedRes", k, (float) (t.smoothedResidual)); + bank.setShort(CVTRec_KFTrajectory.id, k, (short) trkcands.get(i).getId()); //trackid + bank.setByte(CVTRec_KFTrajectory.detector, k, (byte) MLayer.getDetectorType(index).getDetectorId()); + bank.setByte(CVTRec_KFTrajectory.layer, k, (byte) MLayer.getType(index).getLayer()); + bank.setByte(CVTRec_KFTrajectory.index, k, (byte) index); + bank.setFloat(CVTRec_KFTrajectory.x, k, (float) (t.x/10.)); + bank.setFloat(CVTRec_KFTrajectory.y, k, (float) (t.y/10.)); + bank.setFloat(CVTRec_KFTrajectory.z, k, (float) (t.z/10.)); + bank.setFloat(CVTRec_KFTrajectory.px, k, (float) (t.px)); + bank.setFloat(CVTRec_KFTrajectory.py, k, (float) (t.py)); + bank.setFloat(CVTRec_KFTrajectory.pz, k, (float) (t.pz)); + bank.setFloat(CVTRec_KFTrajectory.path, k, (float) (t.path)); + bank.setFloat(CVTRec_KFTrajectory.dx, k, (float) (t.dx)); + bank.setFloat(CVTRec_KFTrajectory.dE, k, (float) (t.dE)); + bank.setFloat(CVTRec_KFTrajectory.trackRes, k, (float) (t.residual)); + bank.setFloat(CVTRec_KFTrajectory.transportedRes, k, (float) (t.transportedResidual)); + bank.setFloat(CVTRec_KFTrajectory.filteredRes, k, (float) (t.filteredResidual)); + bank.setFloat(CVTRec_KFTrajectory.smoothedRes, k, (float) (t.smoothedResidual)); k++; } } @@ -770,44 +783,44 @@ public static DataBank fillStraightSeedsBank(DataEvent event, List crossIdxArray = new ArrayList<>(); - bank.setShort("ID", i, (short) seed.get(i).getId()); - bank.setFloat("chi2", i, (float) seed.get(i).getChi2()); - bank.setShort("ndf", i, (short) (seed.get(i).size()-2)); - bank.setFloat("trkline_yx_slope", i, (float) seed.get(i).getRay().getYXSlope()); - bank.setFloat("trkline_yx_interc", i, (float) (seed.get(i).getRay().getYXInterc()/10.)); - bank.setFloat("trkline_yz_slope", i, (float) seed.get(i).getRay().getYZSlope()); - bank.setFloat("trkline_yz_interc", i, (float) (seed.get(i).getRay().getYZInterc()/10.)); + bank.setShort(CVTRec_CosmicSeeds.ID, i, (short) seed.get(i).getId()); + bank.setFloat(CVTRec_CosmicSeeds.chi2, i, (float) seed.get(i).getChi2()); + bank.setShort(CVTRec_CosmicSeeds.ndf, i, (short) (seed.get(i).size()-2)); + bank.setFloat(CVTRec_CosmicSeeds.trkline_yx_slope, i, (float) seed.get(i).getRay().getYXSlope()); + bank.setFloat(CVTRec_CosmicSeeds.trkline_yx_interc, i, (float) (seed.get(i).getRay().getYXInterc()/10.)); + bank.setFloat(CVTRec_CosmicSeeds.trkline_yz_slope, i, (float) seed.get(i).getRay().getYZSlope()); + bank.setFloat(CVTRec_CosmicSeeds.trkline_yz_interc, i, (float) (seed.get(i).getRay().getYZInterc()/10.)); // get the cosmics ray unit direction vector Vector3D u = new Vector3D(seed.get(i).getRay().getYXSlope(), 1, seed.get(i).getRay().getYZSlope()).asUnit(); // calculate the theta and phi components of the ray direction vector in degrees - bank.setFloat("theta", i, (float) Math.toDegrees(u.theta())); - bank.setFloat("phi", i, (float) Math.toDegrees(u.phi())); + bank.setFloat(CVTRec_CosmicSeeds.theta, i, (float) Math.toDegrees(u.theta())); + bank.setFloat(CVTRec_CosmicSeeds.phi, i, (float) Math.toDegrees(u.phi())); double[][] covmatrix = seed.get(i).getCovMat(); if(covmatrix!=null) { - bank.setFloat("cov_x02", i, (float) (covmatrix[0][0]/10/10)); - bank.setFloat("cov_x0z0", i, (float) (covmatrix[0][1]/10/10)); - bank.setFloat("cov_x0tx", i, (float) (covmatrix[0][2]/10)); - bank.setFloat("cov_x0tz", i, (float) (covmatrix[0][3]/10)); - bank.setFloat("cov_z02", i, (float) (covmatrix[1][1]/10/10)); - bank.setFloat("cov_z0tx", i, (float) (covmatrix[1][2]/10)); - bank.setFloat("cov_z0tz", i, (float) (covmatrix[1][3]/10)); - bank.setFloat("cov_tx2", i, (float) (covmatrix[2][2])); - bank.setFloat("cov_txtz", i, (float) (covmatrix[2][3])); - bank.setFloat("cov_tz2", i, (float) (covmatrix[3][3])); + bank.setFloat(CVTRec_CosmicSeeds.cov_x02, i, (float) (covmatrix[0][0]/10/10)); + bank.setFloat(CVTRec_CosmicSeeds.cov_x0z0, i, (float) (covmatrix[0][1]/10/10)); + bank.setFloat(CVTRec_CosmicSeeds.cov_x0tx, i, (float) (covmatrix[0][2]/10)); + bank.setFloat(CVTRec_CosmicSeeds.cov_x0tz, i, (float) (covmatrix[0][3]/10)); + bank.setFloat(CVTRec_CosmicSeeds.cov_z02, i, (float) (covmatrix[1][1]/10/10)); + bank.setFloat(CVTRec_CosmicSeeds.cov_z0tx, i, (float) (covmatrix[1][2]/10)); + bank.setFloat(CVTRec_CosmicSeeds.cov_z0tz, i, (float) (covmatrix[1][3]/10)); + bank.setFloat(CVTRec_CosmicSeeds.cov_tx2, i, (float) (covmatrix[2][2])); + bank.setFloat(CVTRec_CosmicSeeds.cov_txtz, i, (float) (covmatrix[2][3])); + bank.setFloat(CVTRec_CosmicSeeds.cov_tz2, i, (float) (covmatrix[3][3])); } else { - bank.setFloat("cov_x02", i, -999); - bank.setFloat("cov_x0z0", i, -999); - bank.setFloat("cov_x0tx", i, -999); - bank.setFloat("cov_x0tz", i, -999); - bank.setFloat("cov_z02", i, -999); - bank.setFloat("cov_z0tx", i, -999); - bank.setFloat("cov_z0tz", i, -999); - bank.setFloat("cov_tx2", i, -999); - bank.setFloat("cov_txtz", i, -999); - bank.setFloat("cov_tz2", i, -999); + bank.setFloat(CVTRec_CosmicSeeds.cov_x02, i, -999); + bank.setFloat(CVTRec_CosmicSeeds.cov_x0z0, i, -999); + bank.setFloat(CVTRec_CosmicSeeds.cov_x0tx, i, -999); + bank.setFloat(CVTRec_CosmicSeeds.cov_x0tz, i, -999); + bank.setFloat(CVTRec_CosmicSeeds.cov_z02, i, -999); + bank.setFloat(CVTRec_CosmicSeeds.cov_z0tx, i, -999); + bank.setFloat(CVTRec_CosmicSeeds.cov_z0tz, i, -999); + bank.setFloat(CVTRec_CosmicSeeds.cov_tx2, i, -999); + bank.setFloat(CVTRec_CosmicSeeds.cov_txtz, i, -999); + bank.setFloat(CVTRec_CosmicSeeds.cov_tz2, i, -999); } // the array of cross ids is filled in order of the SVT cosmic region 1 to 8 starting from the bottom-most double layer for (int j = 0; j < seed.get(i).size(); j++) { @@ -848,45 +861,45 @@ public static DataBank fillStraightTracksBank(DataEvent event, List crossIdxArray = new ArrayList<>(); - bank.setShort("ID", i, (short) cosmics.get(i).getId()); - bank.setFloat("chi2", i, (float) cosmics.get(i).getChi2()); - bank.setShort("ndf", i, (short) (cosmics.get(i).getNDF())); - bank.setShort("status", i, (short) cosmics.get(i).getStatus()); - bank.setFloat("trkline_yx_slope", i, (float) cosmics.get(i).getRay().getYXSlope()); - bank.setFloat("trkline_yx_interc", i, (float) (cosmics.get(i).getRay().getYXInterc()/10.)); - bank.setFloat("trkline_yz_slope", i, (float) cosmics.get(i).getRay().getYZSlope()); - bank.setFloat("trkline_yz_interc", i, (float) (cosmics.get(i).getRay().getYZInterc()/10.)); + bank.setShort(CVTRec_Cosmics.ID, i, (short) cosmics.get(i).getId()); + bank.setFloat(CVTRec_Cosmics.chi2, i, (float) cosmics.get(i).getChi2()); + bank.setShort(CVTRec_Cosmics.ndf, i, (short) (cosmics.get(i).getNDF())); + bank.setShort(CVTRec_Cosmics.status, i, (short) cosmics.get(i).getStatus()); + bank.setFloat(CVTRec_Cosmics.trkline_yx_slope, i, (float) cosmics.get(i).getRay().getYXSlope()); + bank.setFloat(CVTRec_Cosmics.trkline_yx_interc, i, (float) (cosmics.get(i).getRay().getYXInterc()/10.)); + bank.setFloat(CVTRec_Cosmics.trkline_yz_slope, i, (float) cosmics.get(i).getRay().getYZSlope()); + bank.setFloat(CVTRec_Cosmics.trkline_yz_interc, i, (float) (cosmics.get(i).getRay().getYZInterc()/10.)); // get the cosmics ray unit direction vector Vector3D u = new Vector3D(cosmics.get(i).getRay().getYXSlope(), 1, cosmics.get(i).getRay().getYZSlope()).asUnit(); // calculate the theta and phi components of the ray direction vector in degrees - bank.setFloat("theta", i, (float) Math.toDegrees(u.theta())); - bank.setFloat("phi", i, (float) Math.toDegrees(u.phi())); + bank.setFloat(CVTRec_Cosmics.theta, i, (float) Math.toDegrees(u.theta())); + bank.setFloat(CVTRec_Cosmics.phi, i, (float) Math.toDegrees(u.phi())); double[][] covmatrix = cosmics.get(i).getCovMat(); if(covmatrix!=null) { - bank.setFloat("cov_x02", i, (float) (covmatrix[0][0]/10/10)); - bank.setFloat("cov_x0z0", i, (float) (covmatrix[0][1]/10/10)); - bank.setFloat("cov_x0tx", i, (float) (covmatrix[0][2]/10)); - bank.setFloat("cov_x0tz", i, (float) (covmatrix[0][3]/10)); - bank.setFloat("cov_z02", i, (float) (covmatrix[1][1]/10/10)); - bank.setFloat("cov_z0tx", i, (float) (covmatrix[1][2]/10)); - bank.setFloat("cov_z0tz", i, (float) (covmatrix[1][3]/10)); - bank.setFloat("cov_tx2", i, (float) (covmatrix[2][2])); - bank.setFloat("cov_txtz", i, (float) (covmatrix[2][3])); - bank.setFloat("cov_tz2", i, (float) (covmatrix[3][3])); + bank.setFloat(CVTRec_Cosmics.cov_x02, i, (float) (covmatrix[0][0]/10/10)); + bank.setFloat(CVTRec_Cosmics.cov_x0z0, i, (float) (covmatrix[0][1]/10/10)); + bank.setFloat(CVTRec_Cosmics.cov_x0tx, i, (float) (covmatrix[0][2]/10)); + bank.setFloat(CVTRec_Cosmics.cov_x0tz, i, (float) (covmatrix[0][3]/10)); + bank.setFloat(CVTRec_Cosmics.cov_z02, i, (float) (covmatrix[1][1]/10/10)); + bank.setFloat(CVTRec_Cosmics.cov_z0tx, i, (float) (covmatrix[1][2]/10)); + bank.setFloat(CVTRec_Cosmics.cov_z0tz, i, (float) (covmatrix[1][3]/10)); + bank.setFloat(CVTRec_Cosmics.cov_tx2, i, (float) (covmatrix[2][2])); + bank.setFloat(CVTRec_Cosmics.cov_txtz, i, (float) (covmatrix[2][3])); + bank.setFloat(CVTRec_Cosmics.cov_tz2, i, (float) (covmatrix[3][3])); } else { - bank.setFloat("cov_x02", i, -999); - bank.setFloat("cov_x0z0", i, -999); - bank.setFloat("cov_x0tx", i, -999); - bank.setFloat("cov_x0tz", i, -999); - bank.setFloat("cov_z02", i, -999); - bank.setFloat("cov_z0tx", i, -999); - bank.setFloat("cov_z0tz", i, -999); - bank.setFloat("cov_tx2", i, -999); - bank.setFloat("cov_txtz", i, -999); - bank.setFloat("cov_tz2", i, -999); + bank.setFloat(CVTRec_Cosmics.cov_x02, i, -999); + bank.setFloat(CVTRec_Cosmics.cov_x0z0, i, -999); + bank.setFloat(CVTRec_Cosmics.cov_x0tx, i, -999); + bank.setFloat(CVTRec_Cosmics.cov_x0tz, i, -999); + bank.setFloat(CVTRec_Cosmics.cov_z02, i, -999); + bank.setFloat(CVTRec_Cosmics.cov_z0tx, i, -999); + bank.setFloat(CVTRec_Cosmics.cov_z0tz, i, -999); + bank.setFloat(CVTRec_Cosmics.cov_tx2, i, -999); + bank.setFloat(CVTRec_Cosmics.cov_txtz, i, -999); + bank.setFloat(CVTRec_Cosmics.cov_tz2, i, -999); } // the array of cross ids is filled in order of the SVT cosmic region 1 to 8 starting from the bottom-most double layer for (int j = 0; j < cosmics.get(i).size(); j++) { @@ -937,18 +950,18 @@ public static DataBank fillStraightTracksTrajectoryBank(DataEvent event, List { + public HitMapPool() { + super(); + for (int i=0; i<64; i++) + add(new Hit[NSTRIP][NLAYR][NSEC]); + } + @Override + public Hit[][][] poll() { + Hit[][][] x = super.poll(); + for (int i=0; i findClusters(List hits2) // the number of strips depends on the layer + public static ArrayList findClusters(List hits2) // the number of strips depends on the layer { - ArrayList clusters = new ArrayList<>(); - // a Hit Array is used to identify clusters - HitArray = new Hit[nstrip][nlayr][nsec]; + Hit[][][] HitArray = pool.poll(); // initializing non-zero Hit Array entries // with valid hits @@ -46,64 +60,68 @@ public ArrayList findClusters(List hits2) // the number of strips int l = hit.getLayer(); int s = hit.getSector(); - if (w > 0 && w < nstrip) { + if (w > 0 && w < NSTRIP) { HitArray[w - 1][l - 1][s - 1] = hit; } - } + int cid = 1; // cluster id, will increment with each new good cluster + ArrayList clusters = new ArrayList<>(); // for each layer and sector, a loop over the strips // is done to define clusters in that module's layer // clusters are delimited by strips with no hits - for (int s = 0; s < nsec; s++) { - for (int l = 0; l < nlayr; l++) { + for (int s = 0; s < NSEC; s++) { + for (int l = 0; l < NLAYR; l++) { int si = 0; // strip index in the loop // looping over all strips - while (si < nstrip) { + while (si < NSTRIP) { // if there's a hit, it's a cluster candidate - if (HitArray[si][l][s] != null || (si < nstrip - 1 && HitArray[si + 1][l][s] != null)) { - // vector of hits in the cluster candidate - ArrayList hits = new ArrayList<>(); - + if (HitArray[si][l][s] != null || (si < NSTRIP - 1 && HitArray[si + 1][l][s] != null)) { + + Cluster this_cluster = null; + // adding all hits in this and all the subsequent // strip until there's a strip with no hit - while ((si < nstrip - 1 && HitArray[si + 1][l][s] != null) || (HitArray[si][l][s] != null && si < nstrip)) { + while ((si < NSTRIP - 1 && HitArray[si + 1][l][s] != null) || (HitArray[si][l][s] != null && si < NSTRIP)) { if (HitArray[si][l][s] != null) { // continue clustering skipping over bad hit - hits.add(HitArray[si][l][s]); + if (this_cluster == null) { + Hit seed = HitArray[si][l][s]; + this_cluster = new Cluster(seed.getDetector(), seed.getType(), seed.getSector(), l + 1, cid++); + this_cluster.setId(clusters.size() + 1); + } + this_cluster.add(HitArray[si][l][s]); } si++; } + + if (this_cluster != null) { - // define new cluster - Cluster this_cluster = new Cluster(hits.get(0).getDetector(), hits.get(0).getType(), hits.get(0).getSector(), l + 1, cid++); - this_cluster.setId(clusters.size() + 1); - // add hits to the cluster - this_cluster.addAll(hits); - if(hits.size()>2) { - for(int hi = 1; hi 2) { + for(int hi = 1; hi findClusters(List hits2) // the number of strips } } } + pool.offer(HitArray); return clusters; } 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 2dfc4b60e0..f2d587133a 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 @@ -27,7 +27,6 @@ public class Cross extends ArrayList implements Comparable { */ private static final long serialVersionUID = 5317526429163382618L; public boolean isInSeed = false; - private double cCrossRadius = 0; /** * @param detector SVT or BMT diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/CircleFitter.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/CircleFitter.java index df954d983b..4b147e3370 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/CircleFitter.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/CircleFitter.java @@ -34,8 +34,8 @@ public class CircleFitter { private double _dca; // the distance of closest approach to the origin private double _chi2; // the chi^2 value of the fit - private double _xpca; // x coord. of the point of closest approach to the origin - private double _ypca; // y coord. of the point of closest approach to the origin + //private double _xpca; // x coord. of the point of closest approach to the origin + //private double _ypca; // y coord. of the point of closest approach to the origin private double[] _covr; // the elements of the symmetric 3x3 covariance matrix of the parameters rho, phi, dca @@ -231,8 +231,8 @@ public boolean fitStatus(List xm, List ym, List wm, int _rho = rhoFit + Delta_rho; _phi = phiFit + Delta_phi; _dca = docaFit + Delta_doca; - _xpca = _xx0 + _dca * Math.sin(phiFit); - _ypca = _yy0 - _dca * Math.cos(phiFit); + //_xpca = _xx0 + _dca * Math.sin(phiFit); + //_ypca = _yy0 - _dca * Math.cos(phiFit); if(_rho==0 || Double.isNaN(_rho)) return false; @@ -320,8 +320,8 @@ private void propagatePars(double xr, double yr, double x, double y, double cosp _phi += 2. * Math.PI; } // update parameters - _xpca = _xref + _dca * Math.sin(_phi); - _ypca = _yref - _dca * Math.cos(_phi); + //_xpca = _xref + _dca * Math.sin(_phi); + //_ypca = _yref - _dca * Math.cos(_phi); } public CircleFitPars getFit() { diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/CosmicFitter.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/CosmicFitter.java index e8032d2aa4..ab0cdd9bf5 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/CosmicFitter.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/CosmicFitter.java @@ -6,7 +6,7 @@ import org.jlab.geom.prim.Point3D; import org.jlab.geom.prim.Vector3D; import org.jlab.rec.cvt.trajectory.Ray; -import trackfitter.fitter.utilities.ProbChi2perNDF; +import org.jlab.clas.tracking.utilities.ProbChi2perNDF; /** * A fitter which does sequential fit (for x, y coordinates) and then (for r, z @@ -21,7 +21,6 @@ public class CosmicFitter { private CosmicFitPars _rayfitoutput; private LineFitPars _linefitparsRhoZ; - private LineFitPars _linefitparsYX; /** * Status of the HelicalTrackFit */ @@ -164,7 +163,7 @@ public FitStatus fit2(List X, List Y, List Z, List(X.size()), X.size()); + _linefitYX.fitStatus(Y, X, errRt, new ArrayList<>(X.size()), X.size()); _linefitRhoZ = new LineFitter(); boolean linefitstatusOK = _linefitRhoZ.fitStatus(Rho, Z, errRho, ErrZ, Z.size()); @@ -174,7 +173,6 @@ public FitStatus fit2(List X, List Y, List Z, List X, List Y, List Z, List X, List Y, List Z, List 0) { averageChi2 = chi2 / passed_fits; if (averageChi2 > avechi2Max) { diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/LineFitPars.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/LineFitPars.java index 78aa9c5f56..200e95154d 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/LineFitPars.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/LineFitPars.java @@ -1,7 +1,7 @@ package org.jlab.rec.cvt.fit; import org.jlab.rec.cvt.trajectory.Ray; -import trackfitter.fitter.utilities.ProbChi2perNDF; +import org.jlab.clas.tracking.utilities.ProbChi2perNDF; /** * The fit parameters of a line fit returned by LineFitter diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/StraightTrackFitter.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/StraightTrackFitter.java index 0a3c4be174..3a848528be 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/StraightTrackFitter.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/fit/StraightTrackFitter.java @@ -79,7 +79,6 @@ public FitStatus fit(List X, List Y, List Z, List X, List Y, List Z, List0.1) { - fit_dca = y/Math.cos(fit_phi_at_dca); - } else { - fit_dca = -x/Math.sin(fit_phi_at_dca); - } + double fit_dca = Math.cos(fit_phi_at_dca)>0.1 ? + y/Math.cos(fit_phi_at_dca) : + -x/Math.sin(fit_phi_at_dca); //Line fit _linefit = new LineFitter(); diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/services/CVTReconstruction.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/services/CVTReconstruction.java index 05bfe8869d..516cd203e0 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/services/CVTReconstruction.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/services/CVTReconstruction.java @@ -85,12 +85,11 @@ public List> findClusters() { List clusters = new ArrayList<>(); //2) find the clusters from these hits - ClusterFinder clusFinder = new ClusterFinder(); if(this.getSVThits().size()>0) { - clusters.addAll(clusFinder.findClusters(this.getSVThits())); + clusters.addAll(ClusterFinder.findClusters(this.getSVThits())); } if(this.getBMThits().size() > 0) { - clusters.addAll(clusFinder.findClusters(this.getBMThits())); + clusters.addAll(ClusterFinder.findClusters(this.getBMThits())); } CVTclusters.add(new ArrayList<>()); diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/track/Track.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/track/Track.java index eea7abe5e6..d6d47f2280 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/track/Track.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/track/Track.java @@ -3,7 +3,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -24,7 +23,7 @@ import org.jlab.rec.cvt.trajectory.Helix; import org.jlab.rec.cvt.trajectory.StateVec; import org.jlab.rec.cvt.trajectory.Trajectory; -import trackfitter.fitter.utilities.ProbChi2perNDF; +import org.jlab.clas.tracking.utilities.ProbChi2perNDF; /** * A class representing track candidates in the CVT. A track has a trajectory @@ -328,9 +327,9 @@ else if(this.getChi2() > Constants.CHI2CUT * (this.getNDF() + 5)) return false; if(this.getNDF() < Constants.NDFCUT) return false; - if(this.getHelix().radius() < Constants.getInstance().getRCUT()) + if(this.getHelix().radius() < Constants.getRCUT()) return false; - if(Math.abs(Geometry.getInstance().getTargetZOffset()-this.getHelix().getZ0()) > Geometry.getInstance().getTargetHalfLength()+Constants.getInstance().getZRANGE()) + if(Math.abs(Geometry.getInstance().getTargetZOffset()-this.getHelix().getZ0()) > Geometry.getInstance().getTargetHalfLength()+Constants.getZRANGE()) return false; else return true; diff --git a/reconstruction/dc/pom.xml b/reconstruction/dc/pom.xml index 442f872abd..b7ef31a228 100644 --- a/reconstruction/dc/pom.xml +++ b/reconstruction/dc/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-dc - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -33,79 +33,74 @@ cnuphys magfield - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT test org.jlab.clas clas-tracking - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-ai - 14.2.0-SNAPSHOT - + 14.2.2-SNAPSHOT + org.jlab.clas clas-jcsg - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-analysis - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT test org.jlab.clas clas-math - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT cnuphys snr - 14.2.0-SNAPSHOT - - - org.jlab.plugins - trackfitter - 1.0 + 14.2.2-SNAPSHOT org.jlab.clas swim-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT junit diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java index 6fca3cdab2..e9e88f56b8 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java @@ -148,11 +148,11 @@ private int getDCRBJitter(int sector, int layer, int wire, int order) { if(dcrbjitters!=null && reverseTT!=null) { long hash = IndexedTable.DEFAULT_GENERATOR.hashCode(sector, layer, wire, order); if(!reverseTT.hasEntryByHash(hash)) - LOGGER.log(Level.SEVERE, "Missing TT entry for slco = " + sector + " " + layer + " " + wire + " " + order); + LOGGER.log(Level.SEVERE, () -> "Missing TT entry for slco = " + sector + " " + layer + " " + wire + " " + order); int crate = reverseTT.getIntValueByHash("crate", hash); int slot = reverseTT.getIntValueByHash("slot", hash); if(!dcrbjitters.hasEntry(crate, slot)) - LOGGER.log(Level.SEVERE, "Missing DC::jitter entry for crate/slot = " + crate + "/" + slot); + LOGGER.log(Level.SEVERE, () -> "Missing DC::jitter entry for crate/slot = " + crate + "/" + slot); jitter = dcrbjitters.getIntValue("jitter", crate, slot); } return jitter; @@ -315,7 +315,7 @@ private void read_HBHits(TimeToDistanceEstimator tde) { String pointName = bankNames.getInputIdsBank(); String recBankName = bankNames.getRecEventBank(); - LOGGER.log(Level.FINEST,"Reading hb banks for "+ bankName + ", " + pointName + " " + recBankName); + LOGGER.log(Level.FINEST, () -> "Reading hb banks for "+ bankName + ", " + pointName + " " + recBankName); _HBHits = new ArrayList<>(); @@ -439,7 +439,7 @@ private void read_HBHits(TimeToDistanceEstimator tde) { //if(hit.betaFlag == 0) if(passHit(hit.betaFlag)) { this._HBHits.add(hit); - LOGGER.log(Level.FINEST, "Passing "+hit.printInfo()+" for "+ bankNames.getHitsBank()); + LOGGER.log(Level.FINEST, () -> "Passing "+hit.printInfo()+" for "+ bankNames.getHitsBank()); } } } @@ -512,7 +512,7 @@ private void read_NNHits() { hit.NNTrkP = this.aimatch.get(clusterID)[0]; hit.NNTrkTheta = this.aimatch.get(clusterID)[1]; hit.NNTrkPhi = this.aimatch.get(clusterID)[2]; - LOGGER.log(Level.FINEST, "NN"+hit.printInfo()); + LOGGER.log(Level.FINEST, () -> "NN"+hit.printInfo()); this._DCHits.add(hit); } } @@ -613,6 +613,7 @@ private void setToPionHypothesis(DataEvent event, int trkId, FittedHit hit) { bank.getShort("pindex", i)); pz = event.getBank(partBankName).getFloat("pz", bank.getShort("pindex", i)); + break; } } @@ -640,6 +641,7 @@ private double readBeta(DataEvent event, int trkId) { bank.getShort("index", i) == trkId - 1) { _beta = event.getBank(partBankName).getFloat("beta", bank.getShort("pindex", i)); + break; } } //if(_beta>1.0) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java index d018dd3c8d..a542d0dfed 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java @@ -13,7 +13,7 @@ import org.jlab.rec.dc.segment.Segment; import org.jlab.rec.dc.track.Track; -import trackfitter.fitter.utilities.*; +import org.jlab.clas.tracking.utilities.ProbChi2perNDF; /** * A class to fill the reconstructed DC banks @@ -36,8 +36,8 @@ public RecoBankWriter(Banks names) { public void updateListsWithClusterInfo(List fhits, List clusters) { - ArrayList rmHits = new ArrayList(); - ArrayList addHits = new ArrayList(); + List rmHits = new ArrayList<>(); + List addHits = new ArrayList<>(); for (int i = 0; i < clusters.size(); i++) { clusters.get(i).set_Id(i + 1); for (int j = 0; j < clusters.get(i).size(); j++) { @@ -204,8 +204,6 @@ public DataBank fillHBClustersBank(DataEvent event, List cluslist DataBank bank = event.createBank(name, cluslist.size()); int[] hitIdxArray = new int[12]; - if(cluslist==null) - return bank; for (int i = 0; i < cluslist.size(); i++) { if (cluslist.get(i) == null || cluslist.get(i).get_Id() == -1) { continue; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterFinder.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterFinder.java index 9887337d42..593db28aea 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterFinder.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/cluster/ClusterFinder.java @@ -41,7 +41,6 @@ public class ClusterFinder { public ClusterFinder() { } - private static final Logger LOGGER = Logger.getLogger(ClusterFinder.class.getName()); // cluster finding algorithm // the loop is done over sector and superlayers diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/cross/Cross.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/cross/Cross.java index 7cf6263e99..5349aaefb8 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/cross/Cross.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/cross/Cross.java @@ -407,9 +407,8 @@ public void set_CrossDirIntersSegWires() { double val_it1 = this._seg1.get_fittedCluster().get_clusterLineFitIntercept(); double val_it2 = this._seg2.get_fittedCluster().get_clusterLineFitIntercept(); - LOGGER.log(Level.FINEST, this._seg1.printInfo()+this._seg2.printInfo()+" insterWire: seg1 "+new Point3D(val_sl1, val_it1,999).toString()+ - " seg2 "+new Point3D(val_sl2, val_it2,999).toString() - ); + LOGGER.log(Level.FINEST, () -> this._seg1.printInfo()+this._seg2.printInfo()+" insterWire: seg1 "+new Point3D(val_sl1, val_it1,999).toString()+ + " seg2 "+new Point3D(val_sl2, val_it2,999).toString()); for(int i =0; i " .....insterWire: seg1 "+new Point3D(val_sl1, val_it1,z).toString()+ + " seg2 "+new Point3D(val_sl2, val_it2,z).toString()); double x = 0.5 * (val_it1 + val_it2) + 0.5 * z * (val_sl1 + val_sl2); double y = 0.5 * wy_over_wx * (val_it2 - val_it1) + 0.5 * wy_over_wx * z * (val_sl2 - val_sl1); if(hit.getCrossDirIntersWire()!=null && hit.getCrossDirIntersWire().x()!=x) - LOGGER.log(Level.FINEST, "Already exists "+hit.getCrossDirIntersWire().toString()+" for " - +hit.printInfo() +"new "+new Point3D(x,y,z).toString()); + LOGGER.log(Level.FINEST, () -> "Already exists "+hit.getCrossDirIntersWire().toString()+" for " + +hit.printInfo() +"new "+new Point3D(x,y,z).toString()); hit.setCrossDirIntersWire(new Point3D(x,y,z)); } diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/cross/CrossListFinder.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/cross/CrossListFinder.java index 5399b2dadb..968139284b 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/cross/CrossListFinder.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/cross/CrossListFinder.java @@ -15,7 +15,7 @@ import org.jlab.rec.dc.segment.Segment; import org.jlab.rec.dc.timetodistance.TimeToDistanceEstimator; import org.jlab.utils.groups.IndexedTable; -import trackfitter.fitter.LineFitter; +import org.jlab.rec.dc.track.fit.basefit.LineFitter; /** * A class with methods used to find lists of crosses. This is the Pattern Recognition step used in track seeding, to diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/hit/FittedHit.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/hit/FittedHit.java index 08c35c3422..c9dec90771 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/hit/FittedHit.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/hit/FittedHit.java @@ -1,7 +1,6 @@ package org.jlab.rec.dc.hit; import eu.mihosoft.vrl.v3d.Vector3d; -import org.jlab.clas.clas.math.FastMath; import org.jlab.clas.swimtools.Swimmer; import org.jlab.detector.geant4.v2.DCGeant4Factory; import org.jlab.geom.prim.Line3D; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/nn/PatternRec.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/nn/PatternRec.java index bde2e522b5..8ba3813030 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/nn/PatternRec.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/nn/PatternRec.java @@ -12,7 +12,6 @@ import org.jlab.rec.dc.Constants; import org.jlab.rec.dc.cluster.Cluster; import org.jlab.rec.dc.cluster.ClusterCleanerUtilities; -import org.jlab.rec.dc.cluster.ClusterFinder; import org.jlab.rec.dc.cluster.ClusterFitter; import org.jlab.rec.dc.cluster.ClusterFitter.CoordSys; import org.jlab.rec.dc.cluster.FittedCluster; @@ -32,7 +31,6 @@ public class PatternRec { private static final Logger LOGGER = Logger.getLogger(PatternRec.class.getName()); - private final ClusterFinder clf = new ClusterFinder(); private final ClusterCleanerUtilities ct = new ClusterCleanerUtilities(); private final ClusterFitter cf = new ClusterFitter(); private final CrossMaker crf = new CrossMaker(); @@ -114,7 +112,7 @@ public CrossList RecomposeCrossList(List clusters, if(entry.getValue().size()==3) crossList.add(entry.getValue()); for(Cross c : entry.getValue()) - LOGGER.log(Level.FINEST, "AI"+c.printInfo()+c.get_Segment1().printInfo()+c.get_Segment2().printInfo()); + LOGGER.log(Level.FINEST, () -> "AI"+c.printInfo()+c.get_Segment1().printInfo()+c.get_Segment2().printInfo()); } return crossList; } diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/segment/Segment.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/segment/Segment.java index 83f85af139..ea5124663f 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/segment/Segment.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/segment/Segment.java @@ -2,12 +2,10 @@ import java.util.ArrayList; import java.util.List; -import java.util.logging.Logger; import org.jlab.detector.geant4.v2.DCGeant4Factory; import org.jlab.geom.prim.Plane3D; import org.jlab.geom.prim.Point3D; import org.jlab.geom.prim.Vector3D; -import org.jlab.clas.clas.math.FastMath; import org.jlab.rec.dc.Constants; import org.jlab.rec.dc.cluster.FittedCluster; import org.jlab.rec.dc.hit.FittedHit; @@ -23,8 +21,6 @@ public class Segment extends ArrayList implements Comparable, Cloneable { - private static final Logger LOGGER = Logger.getLogger(Segment.class.getName()); - private static final long serialVersionUID = -997960312423538455L; private FittedCluster _fittedCluster; public boolean isOnTrack = false; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/segment/SegmentFinder.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/segment/SegmentFinder.java index ddb8b3091e..8b3fb311c0 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/segment/SegmentFinder.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/segment/SegmentFinder.java @@ -2,7 +2,6 @@ import java.util.ArrayList; import java.util.List; -import org.jlab.clas.clas.math.FastMath; import org.jlab.detector.geant4.v2.DCGeant4Factory; import org.jlab.io.base.DataBank; import org.jlab.io.base.DataEvent; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/T2DFunctions.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/T2DFunctions.java index 4892d5ceb8..f41c6026b6 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/T2DFunctions.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/T2DFunctions.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package org.jlab.rec.dc.timetodistance; /** 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 c73a539019..d21bd960c0 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 @@ -4,7 +4,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.logging.Logger; import org.jlab.detector.base.DetectorType; import org.jlab.detector.base.GeometryFactory; import org.jlab.geom.base.ConstantProvider; @@ -23,8 +22,6 @@ public class TableLoader { public TableLoader() { } - public static final Logger LOGGER = Logger.getLogger(TableLoader.class.getName()); - private static boolean T2DLOADED = false; public static final int NBINST=2000; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TimeToDistanceEstimator.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TimeToDistanceEstimator.java index 998541d165..3c249a38dd 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TimeToDistanceEstimator.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/timetodistance/TimeToDistanceEstimator.java @@ -1,7 +1,5 @@ package org.jlab.rec.dc.timetodistance; -import java.util.logging.Level; -import java.util.logging.Logger; import org.jlab.rec.dc.Constants; import static org.jlab.rec.dc.timetodistance.TableLoader.BfieldValues; import static org.jlab.rec.dc.timetodistance.TableLoader.calc_Time; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/Track.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/Track.java index 3b1023a0d1..df01cefe4f 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/Track.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/Track.java @@ -58,8 +58,6 @@ public void setFinalStateVec(StateVec finalStateVec) { private double _totPathLen; private Point3D _trakOrig; private Vector3D _pOrig; - private Point3D _Vtx0_TiltedCS; - private Vector3D _pAtOrig_TiltedCS; private String _trking; private int _FitNDF; private double _NDFDAF; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java index b643cfccc7..f90b26236a 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackCandListFinder.java @@ -8,7 +8,6 @@ import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; -import org.jlab.clas.clas.math.FastMath; import org.jlab.clas.swimtools.Swim; import org.jlab.detector.geant4.v2.DCGeant4Factory; import org.jlab.geom.prim.Line3D; @@ -24,8 +23,8 @@ import org.jlab.rec.dc.trajectory.Trajectory; import org.jlab.rec.dc.trajectory.TrajectoryFinder; -import trackfitter.fitter.LineFitPars; -import trackfitter.fitter.LineFitter; +import org.jlab.rec.dc.track.fit.basefit.LineFitter; +import org.jlab.rec.dc.track.fit.basefit.LineFitPars; import org.jlab.clas.tracking.kalmanfilter.Surface; import org.jlab.clas.tracking.kalmanfilter.zReference.KFitter; @@ -47,7 +46,7 @@ public class TrackCandListFinder { private static final Logger LOGGER = Logger.getLogger(TrackCandListFinder.class.getName()); - long startTime, startTime2 = 0; + long startTime; /** * the tracking status = HitBased or TimeBased @@ -95,47 +94,47 @@ private boolean PassNSuperlayerTracking(List crossesInTrk, Track cand) { return pass; } - private double getHitBasedFitChi2ToCrosses(int sector, double x1, double y1, double z1, - double x2, double y2, double z2, double x3, - double y3, double z3, double p, int q, double x, - double y, double z, double tanThX, double tanThY, Swim dcSwim) { - double pz = p / Math.sqrt(tanThX * tanThX + tanThY * tanThY + 1); - - dcSwim.SetSwimParameters(x, y, z, - -pz * tanThX, -pz * tanThY, -pz, - -q); - double chi2 = 0; // assume err =1 on points - double[] R = dcSwim.SwimToPlaneTiltSecSys(sector, z3); - if (R == null) { - return Double.POSITIVE_INFINITY; - } - - //chi2 += (R[0] - x3) * (R[0] - x3) + (R[1] - y3) * (R[1] - y3); - chi2 += (Math.sqrt(R[0] * R[0] + R[1] * R[1]) - Math.sqrt(x3 * x3 + y3 * y3)) * (Math.sqrt(R[0] * R[0] + R[1] * R[1]) - Math.sqrt(x3 * x3 + y3 * y3)); - dcSwim.SetSwimParameters(R[0], R[1], R[2], - R[3], R[4], R[5], - -q); - R = dcSwim.SwimToPlaneTiltSecSys(sector, z2); - if (R == null) { - return Double.POSITIVE_INFINITY; - } - - dcSwim.SetSwimParameters(R[0], R[1], R[2], - R[3], R[4], R[5], - -q); - chi2 += (R[0] - x2) * (R[0] - x2) + (R[1] - y2) * (R[1] - y2); - dcSwim.SetSwimParameters(R[0], R[1], R[2], - R[3], R[4], R[5], - -q); - R = dcSwim.SwimToPlaneTiltSecSys(sector, z1); - if (R == null) { - return Double.POSITIVE_INFINITY; - } - - chi2 += (R[0] - x1) * (R[0] - x1) + (R[1] - y1) * (R[1] - y1); - - return chi2; - } + // private double getHitBasedFitChi2ToCrosses(int sector, double x1, double y1, double z1, + // double x2, double y2, double z2, double x3, + // double y3, double z3, double p, int q, double x, + // double y, double z, double tanThX, double tanThY, Swim dcSwim) { + // double pz = p / Math.sqrt(tanThX * tanThX + tanThY * tanThY + 1); + // + // dcSwim.SetSwimParameters(x, y, z, + // -pz * tanThX, -pz * tanThY, -pz, + // -q); + // double chi2 = 0; // assume err =1 on points + // double[] R = dcSwim.SwimToPlaneTiltSecSys(sector, z3); + // if (R == null) { + // return Double.POSITIVE_INFINITY; + // } + // + // //chi2 += (R[0] - x3) * (R[0] - x3) + (R[1] - y3) * (R[1] - y3); + // chi2 += (Math.sqrt(R[0] * R[0] + R[1] * R[1]) - Math.sqrt(x3 * x3 + y3 * y3)) * (Math.sqrt(R[0] * R[0] + R[1] * R[1]) - Math.sqrt(x3 * x3 + y3 * y3)); + // dcSwim.SetSwimParameters(R[0], R[1], R[2], + // R[3], R[4], R[5], + // -q); + // R = dcSwim.SwimToPlaneTiltSecSys(sector, z2); + // if (R == null) { + // return Double.POSITIVE_INFINITY; + // } + // + // dcSwim.SetSwimParameters(R[0], R[1], R[2], + // R[3], R[4], R[5], + // -q); + // chi2 += (R[0] - x2) * (R[0] - x2) + (R[1] - y2) * (R[1] - y2); + // dcSwim.SetSwimParameters(R[0], R[1], R[2], + // R[3], R[4], R[5], + // -q); + // R = dcSwim.SwimToPlaneTiltSecSys(sector, z1); + // if (R == null) { + // return Double.POSITIVE_INFINITY; + // } + // + // chi2 += (R[0] - x1) * (R[0] - x1) + (R[1] - y1) * (R[1] - y1); + // + // return chi2; + // } /* ** a: parameter a for fitting function f(x) = a*z^2 + b*z + c in xz plane @@ -208,7 +207,7 @@ private int calcInitTrkQ(double a, double TORSCALE) { } public List getTrackCandsAI(CrossList crossList, DCGeant4Factory DcDetector, Swim dcSwim, HBTrackStateEstimator hbTSEstimator){ - List cands = new ArrayList(); + List cands = new ArrayList<>(); for (List aCrossList : crossList) { Track cand = new Track(); @@ -260,7 +259,6 @@ public List getTrackCandsAI(CrossList crossList, DCGeant4Factory DcDetect rk.SwimToZ(sector, initSV, dcSwim, measSurfaces.get(0).wireLine[0].end().z(), new float[3]); KFitter kFZRef = new KFitter(true, 1, 1, dcSwim, Constants.getInstance().Z, Libr.JNP); - Matrix initCMatrix = new Matrix(); initSV.CM = new Matrix(); kFZRef.init(measSurfaces, initSV); @@ -319,13 +317,11 @@ public List getTrackCandsAI(CrossList crossList, DCGeant4Factory DcDetect */ public List getTrackCands(CrossList crossList, DCGeant4Factory DcDetector, double TORSCALE, Swim dcSwim, boolean donotapplyCuts) { - List cands = null; if (Math.abs(TORSCALE) < 0.001) { - cands = this.findStraightTracks(crossList, DcDetector, TORSCALE, dcSwim); + return this.findStraightTracks(crossList, DcDetector, TORSCALE, dcSwim); } else { - cands = this.findCurvedTracks(crossList, DcDetector, TORSCALE, dcSwim, donotapplyCuts); + return this.findCurvedTracks(crossList, DcDetector, TORSCALE, dcSwim, donotapplyCuts); } - return cands; } /** @@ -375,13 +371,10 @@ private void getStraightTrack(Track cand) { FitPars2 = linefit.getFit(); } - double X0 = -99999; - double Y0 = -99999; - if (FitPars1 != null && FitPars2 != null) { - X0 = FitPars1.intercept(); - Y0 = FitPars2.intercept(); + double X0 = FitPars1.intercept(); + double Y0 = FitPars2.intercept(); Point3D trkR1X = new Point3D(FitPars1.slope() * x[0] + FitPars1.intercept(), FitPars2.slope() * x[0] + FitPars2.intercept(), x[0]); Point3D trkR3X = new Point3D(FitPars1.slope() * x[2] + FitPars1.intercept(), @@ -411,30 +404,6 @@ private void getStraightTrack(Track cand) { } } - /** - * @param x x coordinate in the lab frame - * @param y y coordinate in the lab frame - * @return the sector in the DC lab frame system corresponding to the (x,y) - * coordinates - */ - private int getSector(double x, double y) { - double phi = Math.toDegrees(FastMath.atan2(y, x)); - double ang = phi + 30; - while (ang < 0) { - ang += 360; - } - int sector = 1 + (int) (ang / 60.); - - if (sector == 7) { - sector = 6; - } - - if ((sector < 1) || (sector > 6)) { - System.err.println("Track sector not found...."); - } - return sector; - } - /** * @param cand the track candidate * @param traj the track trajectory @@ -534,24 +503,6 @@ public void setTrackPars(Track cand, return; } - int status = 99999; - - int LR = 0; - for (Cross crs : cand) { - Segment s1 = crs.get_Segment1(); - Segment s2 = crs.get_Segment2(); - - for (FittedHit h : s1) { - LR += h._lr; - } - for (FittedHit h : s2) { - LR += h._lr; - } - - } - - status = LR; - double xOrFix = Vt[0]; double yOrFix = Vt[1]; double zOrFix = Vt[2]; @@ -724,9 +675,9 @@ private Integer getKey(Track trk) { public void removeOverlappingTracksOld(List trkcands) { if(Constants.DEBUG) { - LOGGER.log(Level.FINEST, "Found "+trkcands.size()+" HB seeds "); + LOGGER.log(Level.FINEST, () -> "Found "+trkcands.size()+" HB seeds "); for(int i = 0; i< trkcands.size(); i++) { - LOGGER.log(Level.FINEST, "cand "+i); + LOGGER.log(Level.FINEST, "cand {0}", i); for(Cross c : trkcands.get(i)) { LOGGER.log(Level.FINEST, c.printInfo()); } @@ -752,9 +703,9 @@ public void removeOverlappingTracksOld(List trkcands) { trkcands.add(entry.getValue()); }); if(Constants.DEBUG) { - LOGGER.log(Level.FINEST, "After Overlap Remvr "+trkcands.size()+" HB seeds "); + LOGGER.log(Level.FINEST, () -> "After Overlap Remvr "+trkcands.size()+" HB seeds "); for(int i = 0; i< trkcands.size(); i++) { - LOGGER.log(Level.FINEST, "cand "+i); + LOGGER.log(Level.FINEST, "cand {0}", i); for(Cross c : trkcands.get(i)) { LOGGER.log(Level.FINEST, c.printInfo()); } @@ -765,9 +716,9 @@ public void removeOverlappingTracksOld(List trkcands) { public void removeOverlappingTracks(List trkcands) { if(Constants.DEBUG) { - LOGGER.log(Level.FINEST, "Found "+trkcands.size()+" HB seeds "); + LOGGER.log(Level.FINEST, () -> "Found "+trkcands.size()+" HB seeds "); for(int i = 0; i< trkcands.size(); i++) { - LOGGER.log(Level.FINEST, "cand "+i); + LOGGER.log(Level.FINEST, "cand {0}", i); for(Cross c : trkcands.get(i)) { LOGGER.log(Level.FINEST, c.printInfo()); } @@ -800,24 +751,6 @@ else if(t1.get_FitChi2()/t1.get_FitNDF()==t2.get_FitChi2()/t2.get_FitNDF() && i> trkcands.addAll(selectedTracks); } - /** - * @param selectedTracks the list of selected tracks - * @param selectedTrk the selected track - * @return a boolean indicating if the track is in the list - */ - private boolean ListContainsTrack(List selectedTracks, Track selectedTrk) { - boolean isInList = false; - for (Track trk : selectedTracks) { - if (trk == null) { - continue; - } - if (trk.get_Id() == selectedTrk.get_Id()) { - isInList = true; - } - } - return isInList; - } - /** * @param track the track * @param trkcands the list of candidates @@ -928,38 +861,34 @@ public void setHitDoubletsInfo(Segment seg) { } } - private double calcCurvSign(Track cand) { - double P0x = cand.get(0).get_Point().z(); - double P1x = cand.get(1).get_Point().z(); - double P2x = cand.get(2).get_Point().z(); - double P0y = cand.get(0).get_Point().x(); - double P1y = cand.get(1).get_Point().x(); - double P2y = cand.get(2).get_Point().x(); - - if (Math.abs(P1x - P0x) < 1.0e-18 || Math.abs(P2x - P1x) < 1.0e-18) { - return 0.0; - } - - // Find the intersection of the lines joining the innermost to middle and middle to outermost point - double ma = (P1y - P0y) / (P1x - P0x); - double mb = (P2y - P1y) / (P2x - P1x); - - if (Math.abs(mb - ma) < 1.0e-18) { - return 0.0; - } - - double xcen = 0.5 * (ma * mb * (P0y - P2y) + mb * (P0x + P1x) - ma * (P1x + P2x)) / (mb - ma); - double ycen = (-1. / mb) * (xcen - 0.5 * (P1x + P2x)) + 0.5 * (P1y + P2y); - - return Math.signum(ycen); - } + // private double calcCurvSign(Track cand) { + // double P0x = cand.get(0).get_Point().z(); + // double P1x = cand.get(1).get_Point().z(); + // double P2x = cand.get(2).get_Point().z(); + // double P0y = cand.get(0).get_Point().x(); + // double P1y = cand.get(1).get_Point().x(); + // double P2y = cand.get(2).get_Point().x(); + // + // if (Math.abs(P1x - P0x) < 1.0e-18 || Math.abs(P2x - P1x) < 1.0e-18) { + // return 0.0; + // } + // + // // Find the intersection of the lines joining the innermost to middle and middle to outermost point + // double ma = (P1y - P0y) / (P1x - P0x); + // double mb = (P2y - P1y) / (P2x - P1x); + // + // if (Math.abs(mb - ma) < 1.0e-18) { + // return 0.0; + // } + // + // double xcen = 0.5 * (ma * mb * (P0y - P2y) + mb * (P0x + P1x) - ma * (P1x + P2x)) / (mb - ma); + // double ycen = (-1. / mb) * (xcen - 0.5 * (P1x + P2x)) + 0.5 * (P1y + P2y); + // + // return Math.signum(ycen); + // } private List findStraightTracks(CrossList crossList, DCGeant4Factory DcDetector, double TORSCALE, Swim dcSwim) { - if(LOGGER.getLevel()==Level.FINEST) { - startTime2 = System.currentTimeMillis(); - } - List cands = new ArrayList<>(); if (crossList.isEmpty()) { return cands; @@ -974,7 +903,7 @@ private List findStraightTracks(CrossList crossList, DCGeant4Factory DcDe startTime = System.currentTimeMillis(); } Trajectory traj = trjFind.findTrajectory(aCrossList, DcDetector, dcSwim); - LOGGER.log(Level.FINEST, "Trajectory finding = " + (System.currentTimeMillis() - startTime)); + LOGGER.log(Level.FINEST, () -> "Trajectory finding = " + (System.currentTimeMillis() - startTime)); if (traj == null) { @@ -996,7 +925,7 @@ private List findStraightTracks(CrossList crossList, DCGeant4Factory DcDe cand.get(0).get_Dir().y() / cand.get(0).get_Dir().z()); cand.set_StateVecAtReg1MiddlePlane(VecAtReg1MiddlePlane); - LOGGER.log(Level.FINEST, "Kalman fitter - 2 = " + (System.currentTimeMillis() - startTime)); + LOGGER.log(Level.FINEST, () -> "Kalman fitter - 2 = " + (System.currentTimeMillis() - startTime)); KFitterStraight kFZRef = new KFitterStraight(true, 1, 1, dcSwim, Constants.getInstance().Z, Libr.JNP); List measSurfaces = getMeasSurfaces(cand, DcDetector); @@ -1051,11 +980,6 @@ private List findStraightTracks(CrossList crossList, DCGeant4Factory DcDe private List findCurvedTracks(CrossList crossList, DCGeant4Factory DcDetector, double TORSCALE, Swim dcSwim, boolean donotapplyCuts) { - - if(LOGGER.getLevel()==Level.FINEST) { - startTime2 = System.currentTimeMillis(); - } - List cands = new ArrayList<>(); if (crossList.isEmpty()) { return cands; @@ -1075,7 +999,7 @@ private List findCurvedTracks(CrossList crossList, DCGeant4Factory DcDete } Trajectory traj = trjFind.findTrajectory(aCrossList, DcDetector, dcSwim); - LOGGER.log(Level.FINEST, "Trajectory finding = " + (System.currentTimeMillis() - startTime)); + LOGGER.log(Level.FINEST, () -> "Trajectory finding = " + (System.currentTimeMillis() - startTime)); if (traj == null) { @@ -1143,7 +1067,7 @@ private List findCurvedTracks(CrossList crossList, DCGeant4Factory DcDete } int q = this.calcInitTrkQ(traj.getA(), TORSCALE); - LOGGER.log(Level.FINEST, "calcInitTrkQ = " + (System.currentTimeMillis() - startTime)); + LOGGER.log(Level.FINEST, () -> "calcInitTrkQ = " + (System.currentTimeMillis() - startTime)); if (p > 11) { p = 11; @@ -1162,15 +1086,11 @@ private List findCurvedTracks(CrossList crossList, DCGeant4Factory DcDete cand.get(0).get_Dir().y() / cand.get(0).get_Dir().z()); cand.set_StateVecAtReg1MiddlePlane(VecAtReg1MiddlePlane); - - StateVec fitStateVec = null; // prefer to initialize the seed with region 2 cross due to higher background in region 1 - int crossIdxinList = 1; - if (cand.get(1).isPseudoCross) { - crossIdxinList = 0; - } + + final int crossIdxinList = cand.get(1).isPseudoCross ? 0 : 1; - LOGGER.log(Level.FINEST, "Kalman fitter - 2 = " + (System.currentTimeMillis() - startTime)); + LOGGER.log(Level.FINEST, () -> "Kalman fitter - 2 = " + (System.currentTimeMillis() - startTime)); KFitter kFZRef = new KFitter(true, 10, 1, dcSwim, Constants.getInstance().Z, Libr.JNP); List measSurfaces = getMeasSurfaces(cand, DcDetector); @@ -1181,12 +1101,10 @@ private List findCurvedTracks(CrossList crossList, DCGeant4Factory DcDete kFZRef.runFitter(); - if (kFZRef.finalStateVec == null) { - continue; - } else { + if (kFZRef.finalStateVec != null) { if (kFZRef.chi2 < Constants.MAXCHI2) { - fitStateVec = new StateVec(kFZRef.finalStateVec.x, + StateVec fitStateVec = new StateVec(kFZRef.finalStateVec.x, kFZRef.finalStateVec.y, kFZRef.finalStateVec.tx, kFZRef.finalStateVec.ty); q = (int) Math.signum(kFZRef.finalStateVec.Q); p = 1. / Math.abs(kFZRef.finalStateVec.Q); diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackListFinder.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackListFinder.java deleted file mode 100644 index a4c76843ed..0000000000 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/TrackListFinder.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.jlab.rec.dc.track; - -import java.util.ArrayList; -import java.util.List; - - -/** - * This class selects the best track candidate if there are multiple candidates - * TODO - * @author ziegler - * - */ -public class TrackListFinder { - - public TrackListFinder() { - // TODO Auto-generated constructor stub - } - - public List getTracks(List cands) { - List tracks = new ArrayList<>(); - if(cands.isEmpty()) { - System.err.print("Error no tracks found"); - return cands; - } - int index = 0; - - for(Track trk : cands) { - - index++; - } - return tracks; - } - -} diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/KFitterDoca.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/KFitterDoca.java index dc93e2e965..93980b22ef 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/KFitterDoca.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/KFitterDoca.java @@ -2,8 +2,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.logging.Logger; - import org.jlab.clas.swimtools.Swim; import org.jlab.detector.geant4.v2.DCGeant4Factory; import org.jlab.rec.dc.track.Track; @@ -16,8 +14,6 @@ */ public class KFitterDoca { - private static final Logger LOGGER = Logger.getLogger(KFitterDoca.class.getName()); - public boolean setFitFailed = false; private StateVecsDoca sv; @@ -29,10 +25,8 @@ public class KFitterDoca { private CovMat initialCovMat; public List kfStateVecsAlongTrajectory; public int totNumIter = 30; - private double newChisq = Double.POSITIVE_INFINITY; public boolean filterOn = true; public double chi2 = 0; - private double chi2kf = 0; public int NDF = 0; public int ConvStatus = 1; @@ -77,7 +71,6 @@ public final void init(Track trk, DCGeant4Factory DcDetector, int c) { sv.init(trk, sv.Z[0], this, c); } public int interNum = 0; - double initChi2 = Double.POSITIVE_INFINITY; public void runFitter(int sector) { this.chi2 = Double.POSITIVE_INFINITY; double initChi2 = Double.POSITIVE_INFINITY; @@ -85,7 +78,6 @@ public void runFitter(int sector) { int svzLength = sv.Z.length; if(TBT==true) { - this.chi2kf = 0; // Get the input parameters for (int k = 0; k < svzLength - 1; k++) { sv.transport(sector, k, k + 1, @@ -106,7 +98,6 @@ public void runFitter(int sector) { // IntStream.range(1,totNumIter ).parallel().forEach(i -> { for (int i = 1; i <= totNumIter; i++) { interNum = i; - this.chi2kf = 0; if (i > 1) { //get new state vec at 1st measurement after propagating back from the last filtered state @@ -226,7 +217,7 @@ public Matrix filterCovMat(double[] H, Matrix Ci, double V) { return result_inv; } - private double KFScale = 4; + private final double KFScale = 4; private void filter(int k) { if(Double.isNaN(sv.trackTraj.get(k).x) || Double.isNaN(sv.trackTraj.get(k).y) || Double.isNaN(sv.trackTraj.get(k).tx) ||Double.isNaN(sv.trackTraj.get(k).ty ) @@ -274,8 +265,6 @@ private void filter(int k) { } //if(this.interNum>1) // signMeas = Math.signum(h); - double c2 = ((signMeas*Math.abs(mv.measurements.get(k).doca[0]) - sign*Math.abs(h)) - * (signMeas*Math.abs(mv.measurements.get(k).doca[0]) - sign*Math.abs(h)) / V); //if(signMeas!=Math.signum(h) && this.interNum>1) LOGGER.log(Level.FINEST, sv.trackTraj.get(k).printInfo()+" h "+(float)h); double x_filt = sv.trackTraj.get(k).x + K[0] * (signMeas*Math.abs(mv.measurements.get(k).doca[0]) - sign*Math.abs(h)); double y_filt = sv.trackTraj.get(k).y + K[1] * (signMeas*Math.abs(mv.measurements.get(k).doca[0]) - sign*Math.abs(h)); @@ -315,12 +304,8 @@ private void filter(int k) { tx_filt += K[2] * (signMeas*Math.abs(mv.measurements.get(k).doca[1]) - sign*Math.abs(h)); ty_filt += K[3] * (signMeas*Math.abs(mv.measurements.get(k).doca[1]) - sign*Math.abs(h)); Q_filt += K[4] * (signMeas*Math.abs(mv.measurements.get(k).doca[1]) - sign*Math.abs(h)); - - c2 += ((signMeas*Math.abs(mv.measurements.get(k).doca[1]) - sign*Math.abs(h)) - * (signMeas*Math.abs(mv.measurements.get(k).doca[1]) - sign*Math.abs(h)) / V); } - chi2kf += c2; if(filterOn) { sv.trackTraj.get(k).x = x_filt; sv.trackTraj.get(k).y = y_filt; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/MeasVecsDoca.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/MeasVecsDoca.java index 59e3388e1c..c7e253fe7d 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/MeasVecsDoca.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/MeasVecsDoca.java @@ -3,7 +3,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.logging.Logger; import org.jlab.detector.geant4.v2.DCGeant4Factory; import org.jlab.geom.prim.Line3D; import org.jlab.geom.prim.Point3D; @@ -13,9 +12,7 @@ public class MeasVecsDoca { - private static final Logger LOGGER = Logger.getLogger(MeasVecsDoca.class.getName()); - - public List measurements = new ArrayList(); + public List measurements = new ArrayList<>(); public int ndf=0; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/RungeKuttaDoca.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/RungeKuttaDoca.java index e7c2a273c0..56121f8e0a 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/RungeKuttaDoca.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/RungeKuttaDoca.java @@ -1,6 +1,5 @@ package org.jlab.rec.dc.track.fit; -import java.util.ArrayList; import org.jlab.jnp.matrix.*; import org.jlab.clas.swimtools.Swim; @@ -21,12 +20,11 @@ public void SwimToZ(int sector, StateVecsDoca.StateVec vec, Swim swim, double z0 swim.Bfield(sector, vec.x, vec.y, vec.z, bf); vec.B = Math.sqrt(bf[0]*bf[0] + bf[1]*bf[1] + bf[2]*bf[2]); - double s = vec.B; final double travelSign = Math.signum(z0 - vec.z); double BatMeas = 0; while(travelSign * vec.z < travelSign * z0) { - s = travelSign * stepSize; + double s = travelSign * stepSize; if (travelSign*(vec.z+s) > travelSign*z0) s = travelSign*Math.abs(z0-vec.z); this.RK4transport(sector, s, swim, vec); diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/StateVecsDoca.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/StateVecsDoca.java index 27811e7f00..b3bf26cb30 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/StateVecsDoca.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/StateVecsDoca.java @@ -3,8 +3,6 @@ import org.jlab.jnp.matrix.*; import java.util.HashMap; import java.util.Map; -import java.util.logging.Logger; -import org.jlab.clas.clas.math.FastMath; import org.jlab.clas.pdg.PhysicsConstants; import org.jlab.clas.swimtools.Swim; import org.jlab.rec.dc.Constants; @@ -16,15 +14,9 @@ */ public class StateVecsDoca { - private static final Logger LOGGER = Logger.getLogger(StateVecsDoca.class.getName()); - - private final double Bmax = 2.366498; // averaged - - final double speedLight = 0.002997924580; public double[] Z; - // public List bfieldPoints = new ArrayList(); - public Map trackTraj = new HashMap(); - public Map trackCov = new HashMap(); + public Map trackTraj = new HashMap<>(); + public Map trackCov = new HashMap<>(); public StateVec StateVec; @@ -32,12 +24,9 @@ public class StateVecsDoca { public Matrix F = new Matrix(); private final Matrix fMS = new Matrix(); private final Matrix copyMatrix = new Matrix(); - private final double[] A = new double[2]; - private final double[] dA = new double[4]; private final float[] bf = new float[3]; - private final float[] lbf = new float[3]; - private Swim dcSwim; - private RungeKuttaDoca rk; + private final Swim dcSwim; + private final RungeKuttaDoca rk; /** * State vector representing the track in the sector coordinate system at the measurement layer @@ -73,23 +62,15 @@ public Matrix transport(int sector, int i, double Zf, StateVec iVec, CovMat covM fVec.B = iVec.B; //fCov.covMat = covMat.covMat; Matrix5x5.copy(covMat.covMat, fCov.covMat); - double s = 0; double z = Z[i]; double BatMeas = iVec.B; while(Math.signum(Zf - Z[i]) *zMath.signum(Zf - Z[i]) *Zf) s=Math.signum(Zf - Z[i]) *Math.abs(Zf-z); rk.RK4transport(sector, s, dcSwim, covMat, fVec, fCov); @@ -162,25 +143,16 @@ public void transport(int sector, int i, int f, StateVec iVec, CovMat covMat) { fVec.ty = iVec.ty; fVec.Q = iVec.Q; fVec.B = iVec.B; - //fCov.covMat = covMat.covMat; Matrix5x5.copy(covMat.covMat, fCov.covMat); - double s = 0; double z = Z[i]; double BatMeas = iVec.B; while(Math.signum(Z[f] - Z[i]) *zMath.signum(Z[f] - Z[i]) *Z[f]) s=Math.signum(Z[f] - Z[i]) *Math.abs(Z[f]-z); @@ -277,18 +249,9 @@ public void transportFixed(int sector, int i, int f, StateVec iVec, CovMat covMa if (j == nSteps - 1) { s = Math.signum(Z[f] - Z[i]) * Math.abs(z - Z[f]); } - //LOGGER.log(Level.FINEST, " RK step num "+(j+1)+" = "+(float)s+" nSteps = "+nSteps); - double x = fVec.x; - double y = fVec.y; z = fVec.z; - double tx = fVec.tx; - double ty = fVec.ty; - double Q = fVec.Q; - double dPath = fVec.deltaPath; covMat.covMat = fCov.covMat; - rk.RK4transport(sector, s, dcSwim, covMat, fVec, fCov); - } this.trackTraj.put(f, fVec); @@ -341,13 +304,8 @@ public void init(Track trkcand, double z0, KFitterDoca kf, int c) { rk.SwimToZ(trkcand.get(0).get_Sector(), initSV, dcSwim, z0, bf); - if (initSV != null) { + this.trackTraj.put(0, initSV); - this.trackTraj.put(0, initSV); - } else { - kf.setFitFailed = true; - return; - } //LOGGER.log(Level.FINEST, (0)+"] init "+this.trackTraj.get(0).x+","+this.trackTraj.get(0).y+","+ // this.trackTraj.get(0).z+","+this.trackTraj.get(0).tx+","+this.trackTraj.get(0).ty+" "+1/this.trackTraj.get(0).Q); double err_sl1 = trkcand.get(0).get_Segment1().get_fittedCluster().get_clusterLineFitSlopeErr(); diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/basefit/LineFitPars.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/basefit/LineFitPars.java index 46d078eb01..d6414be29d 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/basefit/LineFitPars.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/basefit/LineFitPars.java @@ -1,6 +1,6 @@ package org.jlab.rec.dc.track.fit.basefit; -import trackfitter.fitter.utilities.ProbChi2perNDF; +import org.jlab.clas.tracking.utilities.ProbChi2perNDF; /** * The fit parameters of a line fit returned by LineFitter diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/basefit/LineFitter.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/basefit/LineFitter.java index 443db3eb7d..28f3aa6c40 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/basefit/LineFitter.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/fit/basefit/LineFitter.java @@ -1,6 +1,5 @@ package org.jlab.rec.dc.track.fit.basefit; -import java.util.ArrayList; import java.util.List; /** A least square fitting method @@ -15,9 +14,9 @@ public class LineFitter { // the constructor public LineFitter() { } - private final List w = new ArrayList(); + // fit status - public boolean fitStatus(List x, List y, List sigma_x, List sigma_y, int nbpoints) { + public boolean fitStatus(double[] x, double[] y, double[] sigma_x, double[] sigma_y, int nbpoints) { boolean fitStat = false; if (nbpoints>=2) { // must have enough points to do the fit @@ -25,22 +24,21 @@ public boolean fitStatus(List x, List y, List sigma_x, L // initialize weight-sum and moments double Sw, Sx, Sy, Sxx, Sxy; Sw = Sx = Sy = Sxx = Sxy =0.; + double[] w = new double[nbpoints]; - w.clear(); - ((ArrayList) w).ensureCapacity(nbpoints); for (int i = 0; i0 @@ -61,8 +59,8 @@ public boolean fitStatus(List x, List y, List sigma_x, L double chi_2 = 0.; double pointchi_2[] = new double[nbpoints]; //individual chi2 for each fitted point for (int j = 0; j x, List y, List sigma_x, L // if there is a fit return true return fitStat; } + + // fit status (overload) + public boolean fitStatus(List x, List y, List sigma_x, List sigma_y, int nbpoints) { + return fitStatus( + x.stream().mapToDouble(Double::doubleValue).toArray(), + y.stream().mapToDouble(Double::doubleValue).toArray(), + sigma_x.stream().mapToDouble(Double::doubleValue).toArray(), + sigma_y.stream().mapToDouble(Double::doubleValue).toArray(), + nbpoints); + } + // return the fit result public LineFitPars getFit() { return _linefitresult; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/Surface.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/Surface.java index 542dab5405..474494a3bf 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/Surface.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/Surface.java @@ -1,7 +1,6 @@ package org.jlab.rec.dc.trajectory; import org.jlab.detector.base.DetectorType; -import org.jlab.geom.prim.Arc3D; import org.jlab.geom.prim.Line3D; import org.jlab.geom.prim.Plane3D; import org.jlab.geom.prim.Point3D; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/TrackVec.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/TrackVec.java index 656562eafa..149eb0c1d1 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/TrackVec.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/TrackVec.java @@ -1,8 +1,8 @@ package org.jlab.rec.dc.trajectory; import Jama.*; -import org.jlab.clas.clas.math.FastMath; import org.jlab.rec.dc.Constants; + /** * Describes a track pars in the DC. * @author ziegler diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/Trajectory.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/Trajectory.java index ddb69ebf94..f2b82f3e9e 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/Trajectory.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/Trajectory.java @@ -2,7 +2,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.logging.Logger; import org.jlab.clas.swimtools.Swim; import org.jlab.detector.base.DetectorType; import org.jlab.geom.prim.Point3D; @@ -23,8 +22,6 @@ public class Trajectory extends ArrayList { public Trajectory() { } - private static final Logger LOGGER = Logger.getLogger(Trajectory.class.getName()); - private int id; private int sector; private double integratedBdL; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/TrajectoryFinder.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/TrajectoryFinder.java index 9fa71474d4..c153425457 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/TrajectoryFinder.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/TrajectoryFinder.java @@ -7,7 +7,7 @@ import org.jlab.geom.prim.Vector3D; import org.jlab.rec.dc.Constants; import org.jlab.rec.dc.cross.Cross; -import trackfitter.fitter.LineFitter; +import org.jlab.rec.dc.track.fit.basefit.LineFitter; import Jama.Matrix; /** @@ -175,7 +175,7 @@ public void fitTrajectory(List candCrossList) { } lineFit = new LineFitter(); - boolean linefitstatusOK = lineFit.fitStatus(z, theta_x, new double[3], theta_x_err, 3); + lineFit.fitStatus(z, theta_x, new double[3], theta_x_err, 3); TrajChisqProbFitXZ = lineFit.getFit().getProb(); x_fitCoeff = quadraticLRFit(z, x, x_err); diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/TrajectorySurfaces.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/TrajectorySurfaces.java index 06241218dc..54decc9120 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/TrajectorySurfaces.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/TrajectorySurfaces.java @@ -16,7 +16,6 @@ import org.jlab.rec.dc.Constants; import java.io.PrintWriter; -import java.util.logging.Logger; import org.jlab.geom.detector.ec.ECLayer; import org.jlab.geom.detector.ec.ECSuperlayer; import org.jlab.geom.detector.fmt.FMTLayer; @@ -33,8 +32,6 @@ */ public class TrajectorySurfaces { - public static Logger LOGGER = Logger.getLogger(TrajectorySurfaces.class.getName()); - private List> detectorPlanes = new ArrayList<>(); public List> getDetectorPlanes() { @@ -62,9 +59,8 @@ public void loadSurface(double targetPosition, double targetLength, DCGeant4Fact Constants.getInstance().Z[11]= dcDetector.getWireMidpoint(0, 5, 0, 0).z; Constants.getInstance().Z[12]= dcDetector.getWireMidpoint(0, 5, 5, 0).z; //DcDetector.getWireMidpoint(this.get_Sector()-1, this.get_Superlayer()-1, this.get_Layer()-1, this.get_Wire()-1).z; - - double d = 0; - Vector3D n,P; + Vector3D n; + for(int isector =0; isector<6; isector++) { int sector = isector+1; diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/Vertex.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/Vertex.java index 3d862eec1a..1f3e89883b 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/Vertex.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/trajectory/Vertex.java @@ -1,7 +1,6 @@ package org.jlab.rec.dc.trajectory; import java.util.Random; -//import org.apache.commons.math3.util.FastMath; import org.jlab.clas.clas.math.FastMath; import org.jlab.clas.swimtools.Swim; import org.jlab.geom.prim.Line3D; diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCEngine.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCEngine.java index cd1eaddaf6..9e00490f75 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCEngine.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCEngine.java @@ -12,7 +12,6 @@ import org.jlab.rec.dc.banks.Banks; import org.jlab.clas.tracking.kalmanfilter.zReference.KFitter; import org.jlab.clas.tracking.kalmanfilter.zReference.DAFilter; -import org.jlab.rec.ai.dcHBTrackState.HBTrackStateEstimator; public class DCEngine extends ReconstructionEngine { @@ -218,7 +217,7 @@ private void initBanks() { this.getBanks().init(outBankPrefix); if(inBankPrefix!=null && outBankPrefix!=null) this.getBanks().init(inBankPrefix, outBankPrefix); - LOGGER.log(Level.INFO,"["+this.getName()+"] bank names set for " + this.getBanks().toString()); + LOGGER.log(Level.INFO, () -> "["+this.getName()+"] bank names set for " + this.getBanks().toString()); } public Banks getBanks() { @@ -238,7 +237,7 @@ public int getRun(DataEvent event) { return 0; } DataBank bank = event.getBank("RUN::config"); - LOGGER.log(Level.FINEST,"["+this.getName()+"] EVENT "+bank.getInt("event", 0)); + LOGGER.log(Level.FINEST, () -> "["+this.getName()+"] EVENT "+bank.getInt("event", 0)); int run = bank.getInt("run", 0); return run; diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java index 75998a1325..4d5099e431 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java @@ -100,11 +100,11 @@ public boolean processDataEventUser(DataEvent event) { CrossList crosslist = pr.RecomposeCrossList(segments, Constants.getInstance().dcDetector); crosses = new ArrayList<>(); - LOGGER.log(Level.FINEST, "num cands = "+crosslist.size()); + LOGGER.log(Level.FINEST, () -> "num cands = "+crosslist.size()); for (List clist : crosslist) { crosses.addAll(clist); for(Cross c : clist) - LOGGER.log(Level.FINEST, "Pass Cross"+c.printInfo()); + LOGGER.log(Level.FINEST, () -> "Pass Cross"+c.printInfo()); } if (crosses.isEmpty()) { for(Segment seg : segments) { diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterConv.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterConv.java index df442203c9..52acb25796 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterConv.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterConv.java @@ -228,11 +228,11 @@ public boolean processDataEventUser(DataEvent event) { trkcands.addAll(mistrkcands); - LOGGER.log(Level.FINEST, "Found after 5STg "+mistrkcands.size()+" HB seeds "); + LOGGER.log(Level.FINEST, () -> "Found after 5STg "+mistrkcands.size()+" HB seeds "); for(int i = 0; i< trkcands.size(); i++) { - LOGGER.log(Level.FINEST, "cand "+i); + LOGGER.log(Level.FINEST, "cand {0}", i); for(Cross c : trkcands.get(i)) { - LOGGER.log(Level.FINEST, c.printInfo()); + LOGGER.log(Level.FINEST, () -> c.printInfo()); } LOGGER.log(Level.FINEST, "------------------------------------------------------------------ "); } diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBTrackingAI.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBTrackingAI.java index 80651c3c42..38f4db4dfe 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBTrackingAI.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBTrackingAI.java @@ -122,11 +122,11 @@ else if(Swimmer.getTorScale() > 0) CrossList crosslist = pr.RecomposeCrossList(segments, Constants.getInstance().dcDetector); crosses = new ArrayList<>(); - LOGGER.log(Level.FINEST, "num cands = "+crosslist.size()); + LOGGER.log(Level.FINEST, () -> "num cands = "+crosslist.size()); for (List clist : crosslist) { crosses.addAll(clist); for(Cross c : clist) - LOGGER.log(Level.FINEST, "Pass Cross"+c.printInfo()); + LOGGER.log(Level.FINEST, () -> "Pass Cross"+c.printInfo()); } if (crosses.isEmpty()) { for(Segment seg : segments) { diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java index a483d218e2..4bf0281c17 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java @@ -103,12 +103,10 @@ public boolean processDataEventUser(DataEvent event) { ClusterCleanerUtilities ct = new ClusterCleanerUtilities(); List fhits = new ArrayList<>(); - List clusters = new ArrayList<>(); - List segments = new ArrayList<>(); List crosses = new ArrayList<>(); List trkcands = new ArrayList<>(); - LOGGER.log(Level.FINEST, "TB AI "+ this.getName()); + LOGGER.log(Level.FINEST, () -> "TB AI "+ this.getName()); //instantiate bank writer RecoBankWriter rbc = new RecoBankWriter(this.getBanks()); @@ -125,7 +123,7 @@ public boolean processDataEventUser(DataEvent event) { //2) find the clusters from these hits ClusterFinder clusFinder = new ClusterFinder(); - clusters = clusFinder.FindTimeBasedClusters(event, hits, cf, ct, + List clusters = clusFinder.FindTimeBasedClusters(event, hits, cf, ct, this.getConstantsManager().getConstants(run, Constants.TIME2DIST), Constants.getInstance().dcDetector, tde); for(FittedCluster c : clusters) { c.set_Id(c.get(0).get_AssociatedClusterID()); @@ -140,7 +138,7 @@ public boolean processDataEventUser(DataEvent event) { List pclusters = segFinder.selectTimeBasedSegments(clusters); - segments = segFinder.get_Segments(pclusters, event, Constants.getInstance().dcDetector, false); + List segments = segFinder.get_Segments(pclusters, event, Constants.getInstance().dcDetector, false); if(segments.isEmpty()) { // need 6 segments to make a trajectory for(FittedCluster c : clusters) { @@ -353,7 +351,7 @@ public boolean processDataEventUser(DataEvent event) { //trk.set_Id(trkId); trkcandFinder.matchHits(trk.getStateVecs(), trk, Constants.getInstance().dcDetector, dcSwim); trk.calcTrajectory(trkId, dcSwim, trk.get_Vtx0(), trk.get_pAtOrig(), trk.get_Q()); - LOGGER.log(Level.FINEST, trk.toString()); + LOGGER.log(Level.FINEST,() -> trk.toString()); for(Cross c : trk) { c.set_CrossDirIntersSegWires(); @@ -596,7 +594,6 @@ public List getMeasSurfaces(Track trk, DCGeant4Factory DcDetector) { double LR = Math.signum(trk.get_ListOfHBSegments().get(s).get(h).get_XWire()-trk.get_ListOfHBSegments().get(s).get(h).get_X()); hot._doca[0]*=-LR; hot._hitError = trk.get_ListOfHBSegments().get(s).get(h).get_DocaErr()*trk.get_ListOfHBSegments().get(s).get(h).get_DocaErr(); - //LOGGER.log(Level.FINEST, " Z "+Z+" ferr "+(float)(hot._Unc /(hot._hitError/4.))); hot._Unc[0] = hot._hitError; hot.region = trk.get_ListOfHBSegments().get(s).get(h).get_Region(); hot.sector = trk.get_ListOfHBSegments().get(s).get(h).get_Sector(); @@ -693,11 +690,11 @@ private int get_Status(Track track) { miss=l+1; if(miss%2==0 && SegMap.containsKey(l)) { //missing sl in 2,4,6 track.setSingleSuperlayer(SegMap.get(l)); //isolated sl in 1,3,5 - LOGGER.log(Level.FINEST, "Missing superlayer "+miss+" seg "+SegMap.get(l).printInfo()); + //LOGGER.log(Level.FINEST, "Missing superlayer {0} seg {1}", new Object[]{miss, SegMap.get(l).printInfo()}); } else if(miss%2==1 && SegMap.containsKey(l+2)) { //missing sl in 1,3,5 track.setSingleSuperlayer(SegMap.get(l+2)); //isolated sl in 2,4,6 - LOGGER.log(Level.FINEST, "Missing superlayer "+miss+" seg "+track.getSingleSuperlayer().printInfo()); + //LOGGER.log(Level.FINEST, "Missing superlayer {0} seg {1}", new Object[]{miss, track.getSingleSuperlayer().printInfo()}); } } } diff --git a/reconstruction/eb/pom.xml b/reconstruction/eb/pom.xml index fb99ad57a5..826d50e223 100644 --- a/reconstruction/eb/pom.xml +++ b/reconstruction/eb/pom.xml @@ -1,16 +1,16 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-eb - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -21,74 +21,74 @@ cnuphys magfield - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT test org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-analysis - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT test org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas swim-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-dc - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-ec - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-tof - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-htcc - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-ltcc - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT junit @@ -97,4 +97,4 @@ - + diff --git a/reconstruction/ec/pom.xml b/reconstruction/ec/pom.xml index eafc525b3d..b6e1bad0b9 100644 --- a/reconstruction/ec/pom.xml +++ b/reconstruction/ec/pom.xml @@ -1,16 +1,16 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-ec - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -21,38 +21,38 @@ org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-analysis - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT test org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT junit @@ -60,4 +60,4 @@ - + diff --git a/reconstruction/fmt/pom.xml b/reconstruction/fmt/pom.xml index 700b012fd6..a4aa362519 100644 --- a/reconstruction/fmt/pom.xml +++ b/reconstruction/fmt/pom.xml @@ -1,16 +1,16 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-fmt - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -21,37 +21,37 @@ org.jlab.clas swim-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/reconstruction/ft/pom.xml b/reconstruction/ft/pom.xml index e9c6649208..0cd4a0f0ff 100644 --- a/reconstruction/ft/pom.xml +++ b/reconstruction/ft/pom.xml @@ -1,16 +1,16 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-ft - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -21,32 +21,32 @@ org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/reconstruction/htcc/pom.xml b/reconstruction/htcc/pom.xml index 288552ff81..3188550cf6 100644 --- a/reconstruction/htcc/pom.xml +++ b/reconstruction/htcc/pom.xml @@ -4,35 +4,35 @@ org.jlab.clas12.detector clas12detector-htcc - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/reconstruction/ltcc/pom.xml b/reconstruction/ltcc/pom.xml index 7bbe1f3011..b7dcbbcf66 100644 --- a/reconstruction/ltcc/pom.xml +++ b/reconstruction/ltcc/pom.xml @@ -4,20 +4,16 @@ org.jlab.clas12.detector clas12detector-ltcc - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT - - jakarta.annotation - jakarta.annotation-api - org.jlab groot @@ -25,27 +21,27 @@ org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCCluster.java b/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCCluster.java index f6a91e0bf3..1ccc7d5534 100644 --- a/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCCluster.java +++ b/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCCluster.java @@ -7,7 +7,6 @@ import org.jlab.io.base.DataBank; import org.jlab.io.base.DataEvent; -//import org.jMath.Vector.threeVec; import java.util.List; import java.util.ArrayList; import org.jlab.geom.prim.Vector3D; diff --git a/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCClusterCorrection.java b/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCClusterCorrection.java index 086038d90d..59eebc1f8f 100644 --- a/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCClusterCorrection.java +++ b/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCClusterCorrection.java @@ -5,8 +5,6 @@ */ package org.jlab.service.ltcc; -//import org.jMath.Vector.threeVec; - import org.jlab.geom.prim.Vector3D; @@ -27,13 +25,13 @@ public class LTCCClusterCorrection { /* * static member function calcPosition * arguments: - - threeVec clusterPos: estimated cluster position from the + - Vector3D clusterPos: estimated cluster position from the reconstruction - double p: track momentum - int charge: track charge - double torus: torus field setting - double solenoid: solenoid field setting - * returns (threeVec): a vector with a more accurate cluster position + * returns (Vector3D): a vector with a more accurate cluster position */ public static Vector3D calcPosition(Vector3D clusterPos, double p, int charge, double torus, double solenoid) { diff --git a/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCHit.java b/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCHit.java index af0556a406..e7c152bd77 100644 --- a/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCHit.java +++ b/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCHit.java @@ -7,7 +7,6 @@ import java.util.LinkedList; import java.util.List; -import jakarta.annotation.Nullable; import org.jlab.detector.banks.RawDataBank; import org.jlab.geom.prim.Vector3D; @@ -86,9 +85,9 @@ public static List loadHits(DataEvent event) { LTCCHit(RawDataBank bank, int index, - @Nullable IndexedTable spe, - @Nullable IndexedTable timing_offset, - @Nullable IndexedTable status_table) { + IndexedTable spe, + IndexedTable timing_offset, + IndexedTable status_table) { this.sector = bank.getByte("sector", index); this.segment = bank.getShort("component", index); this.side = bank.trueOrder(index) + 1; diff --git a/reconstruction/mc/pom.xml b/reconstruction/mc/pom.xml index 872c98daf7..4d09cbf610 100644 --- a/reconstruction/mc/pom.xml +++ b/reconstruction/mc/pom.xml @@ -1,38 +1,38 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-mc - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/reconstruction/mltn/pom.xml b/reconstruction/mltn/pom.xml index 1de62110c9..671df16992 100644 --- a/reconstruction/mltn/pom.xml +++ b/reconstruction/mltn/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12.detector clas12detector-mltn - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -38,13 +38,13 @@ org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/reconstruction/mu/pom.xml b/reconstruction/mu/pom.xml index 58f29085fb..a3cf4a5710 100644 --- a/reconstruction/mu/pom.xml +++ b/reconstruction/mu/pom.xml @@ -1,16 +1,16 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-mu - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -25,42 +25,42 @@ org.jlab.clas swim-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-jcsg - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/reconstruction/pom.xml b/reconstruction/pom.xml index 38436578e2..9e5c9c69ae 100644 --- a/reconstruction/pom.xml +++ b/reconstruction/pom.xml @@ -4,13 +4,13 @@ org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT pom org.jlab.clas coatjava - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/reconstruction/raster/pom.xml b/reconstruction/raster/pom.xml index b9795cbcaa..150f4fa472 100644 --- a/reconstruction/raster/pom.xml +++ b/reconstruction/raster/pom.xml @@ -1,16 +1,16 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-raster - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -21,23 +21,23 @@ org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT - + diff --git a/reconstruction/recoil/pom.xml b/reconstruction/recoil/pom.xml index 998ef3513a..d09f918957 100644 --- a/reconstruction/recoil/pom.xml +++ b/reconstruction/recoil/pom.xml @@ -1,16 +1,16 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-recoil - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -21,28 +21,28 @@ org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-jcsg - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT - + diff --git a/reconstruction/rich/pom.xml b/reconstruction/rich/pom.xml index a81b1a4188..5159ef804b 100644 --- a/reconstruction/rich/pom.xml +++ b/reconstruction/rich/pom.xml @@ -1,57 +1,57 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-rich - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.freehep - jminuit + freehep-jminuit org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-jcsg - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/reconstruction/rtpc/pom.xml b/reconstruction/rtpc/pom.xml index bd06a0366a..a298877a1a 100644 --- a/reconstruction/rtpc/pom.xml +++ b/reconstruction/rtpc/pom.xml @@ -1,23 +1,23 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-rtpc - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT cnuphys magfield - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.apache.commons @@ -26,34 +26,34 @@ org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-tracking - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT compile org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT - + diff --git a/reconstruction/rtpc/src/main/java/org/jlab/rec/rtpc/Geometry.java b/reconstruction/rtpc/src/main/java/org/jlab/rec/rtpc/Geometry.java index 9652c3b283..d3d43e8805 100644 --- a/reconstruction/rtpc/src/main/java/org/jlab/rec/rtpc/Geometry.java +++ b/reconstruction/rtpc/src/main/java/org/jlab/rec/rtpc/Geometry.java @@ -4,11 +4,6 @@ import java.io.FileNotFoundException; import java.io.PrintWriter; -/*import org.jMath.Vector.threeVec; - -import trackfitter.surface.Line; -import trackfitter.track.Helix;*/ - public class Geometry { public Geometry() { diff --git a/reconstruction/swaps/pom.xml b/reconstruction/swaps/pom.xml index 8dc2957f43..50fa34f07a 100644 --- a/reconstruction/swaps/pom.xml +++ b/reconstruction/swaps/pom.xml @@ -1,16 +1,16 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-swaps - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -18,21 +18,21 @@ org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT - + diff --git a/reconstruction/tof/pom.xml b/reconstruction/tof/pom.xml index 3f46ab0838..1888278e21 100644 --- a/reconstruction/tof/pom.xml +++ b/reconstruction/tof/pom.xml @@ -1,16 +1,16 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-tof - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -18,43 +18,43 @@ org.jlab.clas clas-jcsg - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-physics - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-utils - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT diff --git a/reconstruction/uber/pom.xml b/reconstruction/uber/pom.xml index 31436a2ee0..bf83c3a651 100644 --- a/reconstruction/uber/pom.xml +++ b/reconstruction/uber/pom.xml @@ -1,114 +1,119 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-uber - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas swim-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT + + + org.jlab.clas12.detector + clas12detector-ai + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-dc - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-ec - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-tof - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-htcc - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-ltcc - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-ft - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-cnd - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-band - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-cvt - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-raster - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-vtx - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-calib - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-rtpc - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-rich - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-eb - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-mltn - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas12.detector clas12detector-fmt - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT - + diff --git a/reconstruction/uber/src/main/java/org/jlab/service/uber/Uber.java b/reconstruction/uber/src/main/java/org/jlab/service/uber/Uber.java index e3aac26011..7258743b09 100644 --- a/reconstruction/uber/src/main/java/org/jlab/service/uber/Uber.java +++ b/reconstruction/uber/src/main/java/org/jlab/service/uber/Uber.java @@ -29,7 +29,10 @@ import org.jlab.service.mltn.MLTDEngine; import org.jlab.service.rtpc.RTPCEngine; import org.jlab.calibration.service.CalibBanksEngine; +import org.jlab.service.ai.DCClsComboEngine; +import org.jlab.service.ai.DCDenoiseEngine; import org.jlab.service.dc.DCHBPostClusterConv; +import org.jlab.service.dc.DCHBTrackingAI; import org.jlab.service.dc.DCTBEngineAI; import org.jlab.service.eb.EBHBAIEngine; import org.jlab.service.eb.EBTBAIEngine; @@ -82,8 +85,8 @@ public HitBasedCV() { } } - public static class HitBasedAI extends UberEngine { - public HitBasedAI() { + public static class HitBasedAIClassic extends UberEngine { + public HitBasedAIClassic() { super("HB","uber","1.0"); add(new DCHBClustering(), new MLTDEngine(), @@ -97,8 +100,24 @@ public HitBasedAI() { } } - public static class HitBasedAICV extends UberEngine { - public HitBasedAICV() { + public static class HitBasedAI extends UberEngine { + public HitBasedAI() { + super("HB","uber","1.0"); + add(new DCDenoiseEngine(), + new DCHBClustering(), + new DCClsComboEngine(), + new DCHBTrackingAI("HB"), + new BANDEngine(), + new HTCCReconstructionService(), + new LTCCEngine(), + new FTOFHBEngine(), + new ECEngine(), + new EBHBEngine()); + } + } + + public static class HitBasedAIClassicCV extends UberEngine { + public HitBasedAIClassicCV() { super("HB","uber","1.0"); add(new DCHBClustering(), new MLTDEngine(), @@ -114,6 +133,24 @@ public HitBasedAICV() { } } + public static class HitBasedAICV extends UberEngine { + public HitBasedAICV() { + super("HB","uber","1.0"); + add(new DCDenoiseEngine(), + new DCHBClustering(), + new DCClsComboEngine(), + new DCHBPostClusterConv(), + new DCHBTrackingAI("AI"), + new BANDEngine(), + new HTCCReconstructionService(), + new LTCCEngine(), + new FTOFHBEngine(), + new ECEngine(), + new EBHBEngine(), + new EBHBAIEngine()); + } + } + public static class TimeBasedCV extends UberEngine { public TimeBasedCV() { super("TB","uber","1.0"); diff --git a/reconstruction/urwt/pom.xml b/reconstruction/urwt/pom.xml index e405e05fdd..5acff1d22a 100644 --- a/reconstruction/urwt/pom.xml +++ b/reconstruction/urwt/pom.xml @@ -1,16 +1,16 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-urwt - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT @@ -21,28 +21,28 @@ org.jlab.clas clas-detector - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-jcsg - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT - clas12detector-urwt + clas12detector-urwt diff --git a/reconstruction/vtx/pom.xml b/reconstruction/vtx/pom.xml index 9353773c1b..14faea5fbf 100644 --- a/reconstruction/vtx/pom.xml +++ b/reconstruction/vtx/pom.xml @@ -1,45 +1,45 @@ - + 4.0.0 org.jlab.clas12.detector clas12detector-vtx - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar org.jlab.clas12 reconstruction - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas swim-tools - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT jar cnuphys swimmer - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-reco - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-io - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT org.jlab.clas clas-geometry - 14.2.0-SNAPSHOT + 14.2.2-SNAPSHOT - +