Experiments: Difference between revisions

From HELIOS Digital DAQ
Jump to navigation Jump to search
 
(10 intermediate revisions by the same user not shown)
Line 72: Line 72:


=== Overview ===
=== Overview ===
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
# using alpha source for a 1st-step calibration
# by compare the E-Z plot with kinematics calculation, further improve the energy calibration.
# 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
AutoCali/AutoCalibrationTrace.C
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"
The essential folders are "AutoCali" and "Simulation"
Line 77: Line 98:
'''AutoCali = contains all codes for analysis'''
'''AutoCali = contains all codes for analysis'''


extension with *.h are TSelector class
extension with <span style="color:green">*.h </span> are TSelector class
extension with *.C are simple root macro
 
extension with <span style="color:blue">*.C</span> are simple root macro
 
Starting point
* <span style="color:blue">AutoCalibrationTrace.C </span>  -- a macro to guide through the calibration (can deal with trace data, if any)


The calibrations are using  
The calibrations are using  
* Cali_xf_xn.C   -- using alpha.source to calibrate xf = - xn, possibly energy.
* <span style="color:blue">Cali_xf_xn.C </span>  -- using alpha.source to calibrate xf = - xn, possibly energy.
* Cali_xf_xn_to_e.C  -- calibrate xf + xn = e
* <span style="color:blue">Cali_xf_xn_to_e.C</span> -- calibrate xf + xn = e
* Cali_compareF.C --- calibrate e with the help of simulation
* <span style="color:blue">Cali_compareF.C</span> --- calibrate e with the help of simulation
* Cali_e_single.C . -- calibrate e for single detector
* <span style="color:blue">Cali_e_single.C</span> . -- calibrate e for single detector
* GetCoinTimeCorrectionCutG.C -- using TCutG for getting coincident time correction parameters.
* <span style="color:blue">GetCoinTimeCorrectionCutG.C</span> -- using TCutG for getting coincident time correction parameters.


TSelectors
TSelectors
* Cali_littleTree_trace.h -- make a smaller tree with only e, x, z for fast energy calibration in Cali_compareF.C  
* <span style="color:green">Cali_littleTree_trace.h</span> -- 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.  
* <span style="color:blue">Cali_e_trace.C</span> -- make a new root file with all essential data (e, z, Ex, thetaCM, etc.) for analysis.  


Checking
Checking
* Monitors.h -- yes, similar to the Monitors.h you know of, with an additional twists
* <span style="color:green">Monitors.h</span>-- yes, similar to the Monitors.h you know of, with an additional twists
* Inspector.h -- similar to Monitors.C
* <span style="color:green">Inspector.h</span> -- similar to Monitors.C
* Check_e_x.C -- check after C_littleTree_trace.h
* <span style="color:blue">Check_e_x.C</span> -- check after C_littleTree_trace.h
* Check_e_z.C -- check after C_e_trace.h
* <span style="color:blue">Check_e_z.C</span> -- check after C_e_trace.h
* Check_alignment.C -- check the energy and position alignment between each detectors
* <span style="color:blue">Check_alignment.C</span> -- check the energy and position alignment between each detectors
 
TCutGCreator
* <span style="color:blue">RDTCutCreator.C</span> -- a macro to create TCutG on the recoil detectors and save the cuts into rdtCuts.root.


Trace
Trace
* GeneralSortTrace.h -- GeneralSort.h with trace
* <span style="color:green">GeneralSortTrace.h</span> -- GeneralSort.h with trace
* GeneralSortTraceProof.h -- Proof version of GeneralSortTrace.h
* <span style="color:green">GeneralSortTraceProof.h</span> -- Proof version of GeneralSortTrace.h
* Proof_onGeneralSortTrace.C -- a macro to run GeneralSortTraceProof.h
* <span style="color:blue">Proof_onGeneralSortTrace.C</span> -- a macro to run GeneralSortTraceProof.h


'''Simulation = contains codes for simulate transfer reaction, heliomatics, etc.'''  
'''Simulation = contains codes for simulate transfer reaction, heliomatics, etc.'''  
Line 129: Line 157:
I assume you already run the process_run.sh and obtained the gen_run*.root.
I assume you already run the process_run.sh and obtained the gen_run*.root.


I assume you already did the calibration.
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
create a symbolic link to the root_data
Line 135: Line 163:
  ln -s path_to_root_data data
  ln -s path_to_root_data data


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


  emacs ../AutoCali/AutoCalibration.C &
  emacs ../AutoCali/AutoCalibrationTrace.C &


add the root file into the TChain.  line ~ 55
add the root file into the TChain.  line ~ 55
Line 143: Line 171:
then run  
then run  


  root -l ../AutoCali/AutoCalibration.C  
  root -l ../AutoCali/AutoCalibrationTrace.C  


then you will have many choices, like this:
then you will have many choices, like this:
Line 166: Line 194:


==== data calibration ====
==== data calibration ====
Idea
# use alpha source to calibrate energy, xf and xn
# 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)
# make a littleTree
# 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+
then
========= 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
correction_xf_xn.dat
correction_e_alpha.dat
After that, you can choose #1 to have xf+xn = e calibrated, the parameters will be save in
correction_xfxn_e.dat
=== Trace ===
to enable the GEBSort produce trace data in run*.root, we need to modify the codes
GEBSort/bin_rcnp.c
in line 102
  //tree->Branch("trace",EL->trace,"trace[NumHits][1024]/S");
  //tree->GetBranch("trace")->SetCompressionSettings(205);
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 <span style="color:green">AutoCali/GeneralSortTrace.h</span> or <span style="color:green">AutoCali/GeneralSortTraceProof.h</span> is designed to do so.
to run the The <span style="color:green">AutoCali/GeneralSortTrace.h</span>,
root -l run_#.root
[root]tree->Process("GeneralSortTrace.C+")
More detail can be seen by edit the code.
<span style="color:green">AutoCali/GeneralSortTraceProof.h</span> is made for Proof.
We need to use <span style="color:blue">AutoCali/Proof_onGeneralSortTrace.C</span> to include many runs and use the Proof interface.
At this moment, the <span style="color:green">AutoCali/GeneralSortTraceProof.h</span> can only save the result in a fixed name.


==h061_mg26 [McNeel, 3/2018]==
==h061_mg26 [McNeel, 3/2018]==

Latest revision as of 14:34, October 2, 2018

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)
./helioscommander

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
gen_tree->Process("../sort_codes/Monitors.C++")

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
listDraws()

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)

gotoexp
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
gen_tree->Process("../sort_codes/Monitors.C++")
.L ../sort_codes/Utils.C
listDraws()
xfxn()

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].

Overview

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

AutoCali/AutoCalibrationTrace.C

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.

TSelectors

  • 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.

Checking

  • 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

TCutGCreator

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

Trace

  • 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

Operational

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

Idea

  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+

then

========= 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

correction_xf_xn.dat
correction_e_alpha.dat

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

correction_xfxn_e.dat

Trace

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

GEBSort/bin_rcnp.c

in line 102

 //tree->Branch("trace",EL->trace,"trace[NumHits][1024]/S");
 //tree->GetBranch("trace")->SetCompressionSettings(205);

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
[root]tree->Process("GeneralSortTrace.C+")

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]

~/experiments/h061_mg26

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
tree->Process("../codes/GeneralSort.C++")

or

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
gen_tree->Process("../codes/Monitors.C++")

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

https://svn.anl.gov/repos/helios/DigiOS/SiDet/trunk

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

https://svn.anl.gov/repos/helios/DigiOS/edm/branches/h061

Data is stored locally on the DigiOS DAQ Computer at

/media/DIGIOSDATA3/data/h061_mg26

and a copy will eventually be available on the iMAC at

~/experiments/h061_mg26/data

H060_Pb208 [Kay, 3/2018]

There is an ELOG.

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

https://svn.anl.gov/repos/helios/DigiOS/edm/branches/h060/

Local working directory on MAC

~/experiments/h060_pb208

Data is saved on DigiOS

/media/DIGIOSDATA2/data/h060_pb208

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

Locations

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 #>
stop_digios

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]

Locations

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+")