Difference between revisions of "JAPAN Doc Portal"

From PREX Wiki
Jump to navigationJump to search
Line 74: Line 74:
 
  -- Generating done
 
  -- Generating done
 
  -- Build files have been written to: /home/ciprian/prex/japan/build
 
  -- Build files have been written to: /home/ciprian/prex/japan/build
 +
 +
== Minimal Working Configuration Files ==
 +
 +
To get a minimal working version of a Japan config file you need to do the following steps in order
 +
git clone git@github.com:JeffersonLab/japan (https://github.com/JeffersonLab/japan)
 +
cd japan
 +
mkdir build
 +
cd build
 +
cmake ../
 +
make
 +
cd ../Parity/prminput
 +
* The engine assumes several environment variables exist, so be sure to define them first
 +
setenv QW_DATA [path to CODA data files]
 +
setenv QW_ROOTFILES [path to where you want to store output files]
 +
* Then populate [config_name].conf with the following options (a conf file stands in place of a long string of command line options, and Japan default assumes that a qwparity.conf file exists and fails if it is not overwritten with --config [config_name].conf instead).
 +
vim [config_name].conf
 +
* The engine will search for a default data file name "QwRun_#.log" and so you should overwrite the prefix and data extension with the following .conf options
 +
codafile-stem = [CODA file stem (prex_ALL_)]
 +
codafile-ext = [extension (dat)]
 +
* The engine will search for a default map file for the detector names and channel map in "detectors.map" and should be overwritten with
 +
detectors = [map name (prex_detectors.map)]
 +
* Because the ROCs for the Parity DAQ are < 31 we need to add a flag (either in a separate conf file or by itself)
 +
add-config = prexbankflag.conf
 +
** Where prexbankflag.conf contains
 +
allow-low-subbank-ids = yes
 +
* The engine will automatically give the Rootfile prefix as "Qweak_#.trees.root" and can be overwritten with
 +
rootfile-stem = [stem (prexALL_)]
 +
* To use the analyzer on the command line now you will need to pass your config file and the run number (or else it will use runnumber 0)
 +
./build/qwparity --conf [config name.conf] -r [run number]
 +
With all of these in place the analyzer will behave in a user defined and consistent way.
 +
 +
=== Additional configuration options ===
 +
Other options that can be utilized are as follows:
 +
* To use the data handlers you should include them in their own map
 +
datahandlers = [data handler map]
 +
* To define the event ring stability cut
 +
ring.size = [event length]
 +
ring.stability_cut = 1
 +
* To enable storing differences (in addition to yields and asyms)
 +
enable-differences = 1
 +
* To turn off normalization (w.r.t. BCM charge)
 +
QwDetectorArray.normalize = 0
 +
QwBlindDetectorArray.normalize = 0
 +
* To allow bursts (miniruns)
 +
enable-burstsum = 1
 +
print-burstsum = 1
 +
burstlength = [length of patterns to burst over]
 +
* To enable running sums
 +
enable-runningsum = 0
 +
print-runningsum = 0
 +
=== Online Japan ===
 +
To run in online mode you will want to add the following features:
 +
online      = yes
 +
ET.hostname = adaq3.jlab.org
 +
ET.session  = par2
 +
ET.station  = realtime
 +
* Set the interpreted run number to a very high value so we always pick up the most recent parameter files
 +
online.RunNumber = 999999
 +
mapfile-update-interval = 500
 +
* Circular buffer: Default is 0, set it to 0 to save significant computation time not using the circular buffer
 +
circular-buffer = 0
 +
* ROOT compression to minimum to save time
 +
compression-level = 0
 +
* Trimming output can be done with the following
 +
enable-tree-trim = yes
 +
chainfiles = no
 +
single-output-file = TRUE
 +
disable-slow-tree = yes
 +
disable-mps-tree = yes
 +
disable-histos = yes
 +
disable-burst-tree = yes
 +
enable-burstsum = no
 +
enable-differences = no
 +
enable-alternateasym  = no
  
 
== Recently Asked Questions ==
 
== Recently Asked Questions ==

Revision as of 15:52, 24 May 2019

Documentation for new Prex/Crex analysis is curated here

Important Resources

Resources

Using JAPAN on adaq cluster

In the apar account, execute "gojapan" to setup the environment variables and change to the "official" copy of JAPAN (~apar/PREX/japan).

Some typical calls to the analyzer:

  • ./build/qwparity --config prexCH.conf --detectors prexCH_detectors_no_hel.map -r 1107
    This does the analysis for parity_CH mode data files (run 1107 in this particular case), where the helicity patterns are treated as always being quartets with polarities "+ - - +".
  • ./build/qwparity --config prex.conf -r 1036
    This analyzes the parity_ALL mode data files, using the injector helicity data to build quartets. The current default analysis mode is in quartets, if the DAQ is changed to octets or other patterns, we will need to update the injector helicity configuration used by the analyzer.
  • ./build/qwparity --config prexinj.conf -r ####
    This analyzes the parity_INJ mode data files. The current default analysis mode is in quartets, if the DAQ is changed to octets or other patterns, we will need to update the injector helicity configuration used by the analyzer.

Example install of Japan on ifarm - not in apar@adaq3 or even for main DAQ data

To analyze any CODA DAQ .dat file with JAPAN, do the following

source /site/12gev_phys/softenv.csh 2.3
cd /directory/to/store/japan/
git clone https://github.com/JeffersonLab/japan
cd japan
git checkout tedf-test-stand
source setup_japan.tcsh
mkdir build; cd build; cmake ..; make; cd ..
./build/qwparity --config tedf_testing.conf -r [number]
    • The config file (contained within the Parity/prminput folder) should contain all of the necessary information for JAPAN to decode the data
    • Care must be taken to ensure that the maps correspond to what configuration the DAQ channels were in during the data collection for that run
    • Run numbers can be used automatically to do this, but the user must define the map files appropriately so it works
    • It is important to turn off the beam current normalization for channel readouts
  • The raw .dat data files should be copied over network (see guide) into a folder you have read and write privileges on (in the ifarm perhaps, especially in /volatile or /scratch directories, see guide)
    • These resultant root files will only be accessible to you, so if you need to share then consider just using the standard arap@adaq3:~/PREX/japan install, and if there are features you need to add to that instance of the analyzer then use the Github repo.
  • The ROOT output should go into your (setup_japan.tcsh initialized environment variable location) ${QW_ROOTFILES}, for analysis done on the corresponding .dat file in ${QW_DATA}
  • After analyzing your run, be sure to look at the JAPAN outputs and read the Error Summary list

Compilation

The code as is compiles fine on ifarm machines (1401 or 1402). For local installation you need to have:

  • mysql++
  • root with minuit2 library
  • boost libraries

Verified compilation with:

-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /bin/cc
-- Check for working C compiler: /bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /bin/c++
-- Check for working CXX compiler: /bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- System name Linux
-- Found ROOT 6.12/04 in /home/ciprian/root/root6/root/build
-- Boost version: 1.53.0
-- Found the following Boost libraries:
--   program_options
--   filesystem
--   system
--   regex
No QwAnalysis dictionaries needed for ROOT 6.12/04.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ciprian/prex/japan/build

Minimal Working Configuration Files

To get a minimal working version of a Japan config file you need to do the following steps in order

git clone git@github.com:JeffersonLab/japan (https://github.com/JeffersonLab/japan)
cd japan
mkdir build
cd build
cmake ../
make
cd ../Parity/prminput
  • The engine assumes several environment variables exist, so be sure to define them first
setenv QW_DATA [path to CODA data files]
setenv QW_ROOTFILES [path to where you want to store output files]
  • Then populate [config_name].conf with the following options (a conf file stands in place of a long string of command line options, and Japan default assumes that a qwparity.conf file exists and fails if it is not overwritten with --config [config_name].conf instead).
vim [config_name].conf
  • The engine will search for a default data file name "QwRun_#.log" and so you should overwrite the prefix and data extension with the following .conf options
codafile-stem = [CODA file stem (prex_ALL_)]
codafile-ext = [extension (dat)]
  • The engine will search for a default map file for the detector names and channel map in "detectors.map" and should be overwritten with
detectors = [map name (prex_detectors.map)]
  • Because the ROCs for the Parity DAQ are < 31 we need to add a flag (either in a separate conf file or by itself)
add-config = prexbankflag.conf
    • Where prexbankflag.conf contains
allow-low-subbank-ids = yes
  • The engine will automatically give the Rootfile prefix as "Qweak_#.trees.root" and can be overwritten with
rootfile-stem = [stem (prexALL_)]
  • To use the analyzer on the command line now you will need to pass your config file and the run number (or else it will use runnumber 0)
./build/qwparity --conf [config name.conf] -r [run number]

With all of these in place the analyzer will behave in a user defined and consistent way.

Additional configuration options

Other options that can be utilized are as follows:

  • To use the data handlers you should include them in their own map
datahandlers = [data handler map]
  • To define the event ring stability cut
ring.size = [event length] 
ring.stability_cut = 1
  • To enable storing differences (in addition to yields and asyms)
enable-differences = 1 
  • To turn off normalization (w.r.t. BCM charge)
QwDetectorArray.normalize = 0 
QwBlindDetectorArray.normalize = 0
  • To allow bursts (miniruns)
enable-burstsum = 1 
print-burstsum = 1 
burstlength = [length of patterns to burst over]
  • To enable running sums
enable-runningsum = 0 
print-runningsum = 0 

Online Japan

To run in online mode you will want to add the following features:

online      = yes 
ET.hostname = adaq3.jlab.org
ET.session  = par2
ET.station  = realtime
  • Set the interpreted run number to a very high value so we always pick up the most recent parameter files
online.RunNumber = 999999
mapfile-update-interval = 500 
  • Circular buffer: Default is 0, set it to 0 to save significant computation time not using the circular buffer
circular-buffer = 0 
  • ROOT compression to minimum to save time
compression-level = 0 
  • Trimming output can be done with the following
enable-tree-trim = yes 
chainfiles = no
single-output-file = TRUE
disable-slow-tree = yes
disable-mps-tree = yes
disable-histos = yes 
disable-burst-tree = yes 
enable-burstsum = no
enable-differences = no
enable-alternateasym  = no

Recently Asked Questions

How to establish pedestals for a channel

  • For beam-off pedestals
    • Plot values like "cav4bx.hw_sum_raw/cav4bx.num_samples" during a known period of beam off, and find the mean.
    • Then you will add lines to the prexCH_beamline_pedestal.1199-.map and prexCH_beamline_pedestal.1230-.map for your channels
    • In each line, the channel name is first, then the pedestal, then the gain

I need to do cuts on non-zero ErrorFlags while working on evt tree. Do I need to do the same thing while working on mul tree too or the mul tree itself makes cuts on non-zero ErrorFlag?

  • You would also need to do the cuts in the mul tree

When I applied ErrorFlag==0 cut, I am left with only a few entries out of the run. Is there something wrong or it is normal.

  • For a high-beam-off run, it is likely normal
    • Take a look at "yield_bcm_an_ds10" with and without the cut
    • You'll see how many events have non-zero beam current

ErrorFlag ==0 events are those with non-zero beam current, right?

  • prexCH_beamline_eventcuts.map contains the condition of ErrorFlag
  • At the moment the ErrorFlag is set by the one "global" cut (a line marked with a "g" in the event cuts file) and that is on bcm_an_ds3
    • Its value must be above 1 uA and below 1e6 uA, and there is an eye-balled stability cut as well

How do I use the HV GUI, especially for SAM running?