From HELIOS Digital DAQ
Jump to navigation Jump to search

Specific Instructions for Experiments

ISS Experiments

iss000-development, mg28 [Sharp, 09/2018], hg206 [Kay, 10/2018]

DAQ Information

  • Information on rebooting the DAQ can be found here :System use and a video specific for the iss experiments is here [2]
  • Video showing how to start a run and what the DAQ looks like when running can be found here [3]

Array High Voltage Control

  • Video to show starting up the Si Array HV can be found here [4]

Computer Information

  • DAQ Computer - linux box mounted in the daq crate for daq control. Sits under the NAT BOX (helios @anldaqrouter std pswrd).
  • MAC Computer - for analysis and remote login control of the DAQ Computer (heliosdigios @anlanamac NOT std pswrd - lowercase name of device at ANL).

Software Information

  • lumped all software [daq control, sorting, monitoring, etc.] to a single git repo [5]
  • Cloned versions of git repo on MAC at ~/experiments/iss000 and on DAQ at ~/experiments/iss000

To start the daq Commander on the DAQ Computer:

gotodaq (or cd ~/experiments/iss000/daq)

To sort data on the DAQ (local) Computer (anldaqrouter): First go to the working analysis directory, then start sorting process on run of interest (ok to do this on run that is currently taking data). This will do a number of different things: 1) it will first run the GEBMerge program (GEBSort director) to combine and timesort all raw data and outputs to the merged file. Then it will run GEBSort (GEBSort directory) which is the event builder and outputs to a .root file. Finally, it runs the TSelector GeneralSort.C (sort_codes directory) which passes the raw data into the human-readable names, e.g., xf, xn, e, etc...A copy of this file is placed in the ../root_data/ director (gen_run#.root). The most recent gen.root file is also in the working directory.

gotoana (cd experiments/iss000/analysis)
cd working
./process_run_local.sh <RUNNUMBER>

The above process will continue to run until it is killed (Ctr-C). A good time to do this is when it says, XXX seconds until next sort...You can look at the gen_run#.root file manually at this point. Otherwise, you can run the following to generate a few pre-made histograms and canvases.

root -l ../root_data/gen_run#.root

Then you have the filled histograms. You may also do the following for example after the Monitors.C has finished.

.L ../sort_codes/Utils.C

Will show some of the pre-made canvases and draw functions.

To sort data on the MAC Computer: Sorting data on the MAC Computer (anlanamac) is very similar to the local daq sorting with a couple of small differences. Namely, you have to pull the data locally first before sorting (which requires typing of the password each time), and also, the sort does not continually run. So each time you want to look at the data collected you have to run the (./process_run.sh ##).

After logging into the MAC Computer (heliosdigios@anlanamac)

cd working
./process_run.sh <RUNNUMBER> 
<ENTER anldaqrouter PSSWRD>

Now you will have the GEBMerge, GEBSort, and GeneralSort's completed and a local gen_run#.root file available. You can make the histograms same as before with this.

root -l ../../root_data/gen_run#.root
.L ../sort_codes/Utils.C

Data Locations On the LCRC at /lcrc/project/HELIOS/iss000

Trace analysis code User Guide [Ryan, 10/2018]

Git repository

git repository of the code is here [6].


I wish to make a one-click calibration and data-analysis codes for helios. In Monitors.C and Utils.C, I already modified so that the energy spectrum can be obtained and fit. However, the energy spectrum is incorrect if the calibration on e, xf, and xn are bad. So, I develop many codes for the calibrations.

Also, the code can cope with whether or not the gen_root*.root contains trace.

The basic idea is that

  1. using alpha source for a 1st-step calibration
  2. by compare the E-Z plot with kinematics calculation, further improve the energy calibration.
  3. after the calibration is done, out a new root file for the physics.

To do that, and also simplify the user experience, I grouped everything into


This macro will guide you through the calibration and finally, will output a new root file that contain all essential qualities for analysis, for the physics.

Of course, this codes is far from perfect, e.g. no graphical user interface, possible bugs, etc.

Code Overview

The essential folders are "AutoCali" and "Simulation"

AutoCali = contains all codes for analysis

extension with *.h are TSelector class

extension with *.C are simple root macro

Starting point

  • AutoCalibrationTrace.C -- a macro to guide through the calibration (can deal with trace data, if any)

The calibrations are using

  • Cali_xf_xn.C -- using alpha.source to calibrate xf = - xn, possibly energy.
  • Cali_xf_xn_to_e.C -- calibrate xf + xn = e
  • Cali_compareF.C --- calibrate e with the help of simulation
  • Cali_e_single.C . -- calibrate e for single detector
  • GetCoinTimeCorrectionCutG.C -- using TCutG for getting coincident time correction parameters.


  • Cali_littleTree_trace.h -- make a smaller tree with only e, x, z for fast energy calibration in Cali_compareF.C
  • Cali_e_trace.C -- make a new root file with all essential data (e, z, Ex, thetaCM, etc.) for analysis.


  • Monitors.h-- yes, similar to the Monitors.h you know of, with an additional twists
  • Inspector.h -- similar to Monitors.C
  • Check_e_x.C -- check after C_littleTree_trace.h
  • Check_e_z.C -- check after C_e_trace.h
  • Check_alignment.C -- check the energy and position alignment between each detectors


  • RDTCutCreator.C -- a macro to create TCutG on the recoil detectors and save the cuts into rdtCuts.root.


  • GeneralSortTrace.h -- GeneralSort.h with trace
  • GeneralSortTraceProof.h -- Proof version of GeneralSortTrace.h
  • Proof_onGeneralSortTrace.C -- a macro to run GeneralSortTraceProof.h

Simulation = contains codes for simulate transfer reaction, heliomatics, etc.

Class Library

  • HELIOS_LIB.h -- contains all classes, e.g. transferReaction, HELIOS, etc.
  • constant.h -- some physical constants.
  • Isotope.h -- a class for getting mass of different isotopes

Reaction example code:

  • transfer.C -- for transfer reaction in HELIOS
  • knockout.C -- for knockout reaction in HELIOS

Essential files for the example codes:

  • detectorGeo.txt -- the definition of detectors geometry
  • excitation_energies.txt -- the energy level of the recoil particle for transfer reaction
  • separation_energies.txt -- the energy level for knockout reaction.
  • mass16.txt -- the mass table


create a folder for the experiments, for example ISS_28Mg.

mkdir ISS_28Mg
cd ISS_28Mg

I assume you already run the process_run.sh and obtained the gen_run*.root.

I assume you already did the calibration. (well, if not, the program still run, just no calibration)

create a symbolic link to the root_data

ln -s path_to_root_data data

Open AutoCali/AutoCalibrationTrace.C in any editor, say emacs

emacs ../AutoCali/AutoCalibrationTrace.C &

add the root file into the TChain. line ~ 55

then run

root -l ../AutoCali/AutoCalibrationTrace.C 

then you will have many choices, like this:

========= Auto Calibration w/ Trace ============== 
--------- GeneralSortTrace.C --> sorted.root------  
0 = alpha source calibration for xf - xn.
1 = xf+xn to e calibration. 
2 = Generate smaller root file with e, x, z, detID, coinTimeUC (aware of Gate)
3 = coinTimeUC calibration. (MANUAL) 
--------- transfer.root require below ------------
4 = e calibration by compare with simulation.
5 = Generate new root with calibrated data. 
Choose action :

Please choose #5.

After that, you will get a A_*root file. with a calibration.

data calibration


  1. use alpha source to calibrate energy, xf and xn
  2. use the data to calibrate xf+xn=e

if the energy calibration using alpha source is not good enough (for example, the alpha source only has 1 energy is useful)

  1. make a littleTree
  2. calibrate by compare with simulation

open AutoCalibrationTrace.C in any editor

add the root files in the TChain.

cd ISS_28Mg
root -l ../AutoCali/AutoCalibrationTrace.C+


========= Auto Calibration w/ Trace ============== 
--------- GeneralSortTrace.C --> sorted.root------  
0 = alpha source calibration for xf - xn.
1 = xf+xn to e calibration. 
2 = Generate smaller root file with e, x, z, detID, coinTimeUC (aware of Gate)
3 = coinTimeUC calibration. (MANUAL) 
--------- transfer.root require below ------------
4 = e calibration by compare with simulation.
5 = Generate new root with calibrated data. 
Choose action :

choose #0.

The alpha source calibration will be done and the calibration parameters will be save in


After that, you can choose #1 to have xf+xn = e calibrated, the parameters will be save in



to enable the GEBSort produce trace data in run*.root, we need to modify the codes


in line 102


uncomment them, and recompile the code

make -B offline

after that, run the process_run.sh

./process_run.sh #

That will give a run#.root with trace data, in a float array.

To analysis the trace, it is better to convert the trace float array into TGraph. The AutoCali/GeneralSortTrace.h or AutoCali/GeneralSortTraceProof.h is designed to do so.

to run the The AutoCali/GeneralSortTrace.h,

root -l run_#.root

More detail can be seen by edit the code.

AutoCali/GeneralSortTraceProof.h is made for Proof. We need to use AutoCali/Proof_onGeneralSortTrace.C to include many runs and use the Proof interface.

At this moment, the AutoCali/GeneralSortTraceProof.h can only save the result in a fixed name.

h061_mg26 [McNeel, 3/2018]

Analysis directory on the iMAC [gotoexp]


To process a run on the iMAC

gotoexp ; cd working
./process_run.sh #

Where # is the run number of interest. This command will first pull the data from the DigiOS computer:

get_digios_data #

Then merge all data in a time-sorted fashion:

gebmerge.sh #

Then events are created based on the input file GEBSort.chat

gebsortmerged.sh #

The output file is run#.root. Finally, a general sort is carried out to map the data into the proper HELIOS parameters:

root -l ../root_data/run#.root


root -l proccess_run.C(#,0)

The output file is gen.root which is copied to ../root_data/gen_run#.root

To generate the monitor spectra, you can run:

root -l ../root_data/gen_run#.root

Note, that the GeneralSort.C and Monitors.C are located on the svn at


A new branch for all of the DigiOS DAQ control software is here:


Data is stored locally on the DigiOS DAQ Computer at


and a copy will eventually be available on the iMAC at


H060_Pb208 [Kay, 3/2018]

There is an ELOG.

New branch for all of the DigiOS stuff has been made.


Local working directory on MAC


Data is saved on DigiOS


H057_He6 [Chen, 8/2017]

To Do List

  • Needs for beam testing
    • Control of the digitizer channels for setting threshold, trigger, etc
    • A way to quickly process and view the data for beam tuning [online, offline, etc]
  • Needs for experiment
    • Mapping of the signals [new more simple map?]
    • Look into data readout
    • Better online monitors
    • Fix for GEBSort_nogeb on MAC


daq control - /global/devel/systems/helios/h057 data - /media/Digios Data/data/h057_he6

Take Data

In the directory that you would like the data to be saved on the digios daq computer, execute:

start_digios_run <run #>

Move Data In the directory you want to put the data on the MAC computer

get_digios_data <run #>

Sorting Data

sorting the root file uses codes located in svn.anl.gov/repos/DigiOS/SiDet/trunk

H054_F21 [Chen, Hoffman, 4/2017]


Sorting the data

  • cp data from digios1 daq computer location /media/Digios Data/data/h054_f21 to malaguena data location /music/helios2/H054_F21/digios/data
  1. cd /music/helios2/H054_F21/digios/data
  2. rsync --progress --protect-args --size-only -avzPe ssh "dgs@digios1:/media/Digios Data/data/h054_f21/h054*" . [NOTE: not sure this gives you the fastest transfer speeds CRH 8/17]
  • merge data files from malaguena working directory /music/helios2/H054_F21/digios/working
  1. ./gebmerge.sh RUNNUMBER
  • sort the data files from malaguena working directory
  1. ./gebsortmerged.sh RUNNUMBER
  • generate general root file from malaguena working directory
  1. root -l ../root_data/h054_runRUNNUMBER.root
  2. tree->Process("../codes_trunk/GeneralSort.C+")
  3. creates gen.root file in working directory
  • generate Monitor histograms from malaguena working directory
  1. root -l gen.root
  2. gen_tree->Process("../codes_trunk/Monitors.C+")