Skip to content

JeffersonLab/icalibrate

Repository files navigation

icalibrate CI

Ion chamber calibration desktop application for Jefferson Lab. This software is developed with Java Swing.

Screenshot



Overview

The iCalibrate application provides operators the ability to perform hall ion chamber calibration. The app presents operators with a wizard dialog to guide them through the process of gathering dose rate measurements. Based on options provided by operators the software will ramp the hall laser attenuator incrementally and measure dose rates at the various resulting currents. The software will then use the gathered data to graph a scatter plot with a fit to allow quickly determining an appropriate trip setpoint. The data can be saved in a Hall Calibration Dataset (HCD) file to be later recalled if necessary. The ability to apply computed setpoints to the EPICS control system or alternatively to output a SNAP file for future use is also provided.

Install

This application requires a Java 8+ JVM and standard library to run.

Download from Releases or build the distribution yourself.

Launch with:

UNIX:

bin/icalibrate

Windows:

bin/icalibrate.bat

Note: To enable debug logging, run with CA writes disabled, and logbook set to TLOG use the testRun Gradle task

Configure

config/icalibrate.properties
Property Desription Default
NAMES_FROM_CED Whether Ion Chamber Names should be queryed from the CED, else properties of the form HALLA_EPICS_NAME_CSV are used (Hall C and D too) true
WRITE_ALLOWED Whether the application can write to EPICS, else calibrations are dry-run simulations true
LOGBOOK_CSV Comma separated values of Jefferson Lab logbook names to write log entries to; set to TLOG for testing ELOG
MASTER_FSD_VOLTAGE_PV EPICS PV name to monitor for FSD trips ISD0I011G
DEFAULT_HCD_FILE_DIR Default location for file chooser when opening and savings dataset files /usr/opsuser/mccops/IonChambers

Each of Hall A, C, and D have one of these properties (Hall A shown):

Property Description
HALLA_CURRENT_READ_PV PV to determine current
HALLA_PASS_READ_PV PV to determine pass
HALLA_DOSE_READ_PV_SUFFIX PV suffix for dose readback
HALLA_DOSE_SETPOINT_READ_PV_SUFFIX PV suffix for dose read setpoint
HALLA_DOSE_SETPOINT_WRITE_PV_SUFFIX PV suffix for dose write setpoint
HALLA_FRIENDLY_NAME_PV_SUFFIX PV suffix for human readable ion chamber name
HALLA_TARGET_PV Target name PV
HALLA_MAX_CURRENT Max hall current
HALLA_CURRENT_UNITS Units for hall current
HALLA_MAX_MARGIN Max hall margin
HALLA_NEGATIVE_MARGIN_CSV Comma separated values of target names which default to a negative margin
HALLA_EPICS_NAME_CSV Comma separated values of EPICS PV base name for Ion Chambers; only used if NAMES_FROM_CED is false
HALLA_FRIENDLY_NAME_CSV Comma separated values of Human Readable names for Ion Chambers; only used if NAMES_FROM_CED is false
HALLA_CED_NAME_CSV Comma separated values of CED names for Ion Chambers; only used if NAMES_FROM_CED is false

Build

This project is built with Java 17 (compiled to Java 8 bytecode), and uses the Gradle 7 build tool to automatically download dependencies and build the project from source:

git clone https://github.com/JeffersonLab/icalibrate.git
cd icalibrate
gradlew build

Note: If you do not already have Gradle installed, it will be installed automatically by the wrapper script included in the source

Note for JLab On-Site Users: Jefferson Lab has an intercepting proxy

Develop

The app can be run in a mode that does not require the CED (an on-site connection) using the NAMES_FROM_CED property.

Note: Javadocs can be generated with the command:

gradlew javadoc

Note: The graphical Java Swing forms were built using the Apache Netbeans Matisse builder tool. It's recommended that graphical component modifications be made using this tool, which modifies the XML *.form files. The XML is used to dyanamically generate Java Swing code.

Release

  1. Bump the version number in build.gradle and commit and push to GitHub (using Semantic Versioning).
  2. Run the Gradle distribution target:
gradlew assembleDist
  1. Create a new release on the GitHub Releases page corresponding to same version in build.gradle (Enumerate changes and link issues). Attach the generated distribution zip to the release.

Deploy

At Jefferson Lab the app and all of it's data is stored on the ops network fileystem at /cs/opshome/IonChambers and can be launched via JMenu using search keyword icalibrate. Deploying a new version typically looks like (version 2.0.0 shown):

ssh sqam@devl00
cd /tmp
wget https://github.com/JeffersonLab/icalibrate/releases/download/v2.0.0/icalibrate-2.0.0.zip
unzip icalibrate-2.0.0.zip
mv icalibrate-2.0.0 /cs/opshome/IonChambers/icalibrate/2.0.0
cd /cs/opshome/IonChambers
unlink pro
ln -s icalibrate/2.0.0 pro

See Also