Search/Navigation:
Related:
SLAC/EPP
/HPS Public
Jefferson Lab/Hall B
/HPS Run Wiki
S30XL-LESA/LDMX
It is assumed in the instructions below that hps-distribution-bin.jar refers to a local copy of the HPS Java distribution from the target dir with an actual version.
For instance, after building the HPS Java project locally, my distribution jar can be found here.
cd hps-java-trunk; ls distribution/target/hps-distribution-3.6-SNAPSHOT-bin.jar
In the commands below, the version, here "3.6-SNAPSHOT", is left out for brevity, but when executing commands you need to point to an actual distribution jar you have built or downloaded.
The jar file contains all of the project's dependencies in a distribution that can be run standalone using the java command.
Assuming you have followed the instructions at Installing HPS Java, you can run the standalone jar file two ways.
Using the -jar switch from the command line will run the main from the class JobManager, which is listened in the manifest inside the jar.
java -jar ./distribution/target/hps-distribution-bin.jar [args]
Without any arguments it will print the command line options and then exit.
You can also run the main method from any class in the jar.
java -cp ./distribution/target/hps-distribution-bin.jar org.hps.evio.EvioToLcio [args]
Some XML steering files have variables that need to be resolved with command line arguments.
For instance, suppose the XML file has this variable definition.
<driver name="MyDriver" type="org.example.MyDriver"> <someNumber>${numVar}</someNumber> </driver>
The var would need to be resolved with a command like this.
java -cp ./distribution/target/hps-distribution-bin.jar org.hps.evio.EvioToLcio -DnumVar=1234 [...]
All variables defined in the XML files must be resolved from the command line or an error will occur.
The command line tools are affected by different environment settings which are set through Java system properties.
This is a table of the system properties that can affect HPS Java.
Name | Description | Values |
---|---|---|
java.util.logging.config.file | Java logging config file | defined in logging package doc |
java.util.logging.config.class | Java logging config class | defined in logging package doc |
hep.aida.IAnalysisFactory | AIDA backend factory class |
|
disableSvtAlignmentConstants | Disables reading of SVT alignment constants from conditions db | true |
org.hps.conditions.connection.file | Properties file with connection settings for conditions database | |
org.hps.conditions.connection.resource | Resource that points to properties file with connection settings for conditions database |
|
These values are set as system properties in Java itself.
java -DdisableSvtAlignmentConstants=true [...]
When set in this way, these values are accessible as Java system properties at runtime.
The JVM accepts a number of command line arguments that alter its behavior.
In particular, you will likely want to increase the default heap space, as the default is too low for running HPS Java.
java -Xmx2g [...]
That will change the heap space to 2 gigabytes.
Also, you may want to run the JVM in server mode.
java -server [...]
The server VM has been optimized for peak operating speed rather than responsiveness.
All instructions given here assume you're using the steering files included with the release. If you write your own, you can point hps-java to it by omitting the "-r" and using the file path of your .lcsim file:
java -jar hps-distribution.jar -i recon.slcio my_steering_files/MyAnalysis.lcsim -DoutputFile=analysis_plots
The standard steering files are in trunk/steering-files/src/main/resources/org/hps/steering/.
HPS Java uses the built-in logging facilities of Java described in the logging package documentation.
Every package in HPS Java has a default level which is set in the following config file.
hps-java-trunk/logging/src/main/resources/org/hps/logging/config/logging.properties
This config, or any other custom logging config file, can be activated from the command line by setting the config file property to its path.
cd hps-java-trunk; java -Djava.util.logging.config.file=logging/src/main/resources/org/hps/logging/config/logging.properties
Each logger is configured for an entire package rather than individual classes.
# evio org.hps.evio.level = CONFIG
In this config, any class in the org.hps.evio package will have a log level of CONFIG.
These are the available log levels, in descending order.
Level | Description | Use |
---|---|---|
SEVERE | severe error message usually meaning program should halt | unrecoverable errors that halt the program |
WARNING | warning message indicating a non-fatal error or problem | warning messages |
INFO | informational messages | informational messages that should usually print when the program runs |
CONFIG | configuration messages | printing out config information for a class or tool |
FINE | debug print outs | high level debugging messages that should not typically be active |
FINER | more verbose debug print outs | more verbose debugging messages |
FINEST | most verbose debug messages | the most verbose debugging messages |
ALL | print all error messages | when logger should always print all messages |
OFF | disable all messages | when logger should be completely disabled from printing |
Each logger inherits by default from the global log setting.
This is defined in the config file as follows.
# default global level .level = WARNING
So if a package is not explicitly configured, it will inherit the WARNING log level from the global logger.
A logger should typically be defined as follows in an HPS Java class.
package org.example; import java.util.logging.Logger; class MyClass { static private final Logger LOGGER = Logger.getLogger(MyClass.class.getPackage().getName()); void someMethod() { LOGGER.info("some method was called"); } }
The class uses a package rather than class logger.
The handler and the level should not be assigned in the code, as this will instead be configured in the logging config file.