WAC Collection
Documentation |
HOW TOs for shift crew |
Expert Tools |
All Expert Contacts |
PREX Main << Weekly Analysis Coordinator << WAC Notes
Daily
Data Monitoring
The WAC is primarily tasked with verifying the quality of the data taken during each shift - the WAC Notes pages are the ideal place for this information.
Also see PVDB and Online analysis for more useful tools
Set the RCND environment variables on an aonl computer with:
setenv RCDB_CONNECTION mysql://rcdb@hallcdb.jlab.org:3306/a-rcdb
Analysis Minding
It is necessary that the WAC keep track of the various runs, conditions, cuts, channel maps, and pedestal changes as a function of time and file system.
Reanalyzing with updated cuts as needed
The WAC is responsible for updating the "official" rootfiles for everyone else to use (and everyone else is not permitted to change these root files without WAC permission).
Utilizing the "Prompt" WAC version of the "operations" branch of Japan is the ideal way to accomplish this.
Prompt Code
The prompt code lives in the master branch of Prex-Prompt
An easy script to launch a new terminal, log into a new processor, and run a copy of prompt in the right environment is a cascade of shell scripts living in the ~/scripts/ folder Disclaimer: this technique is computationally intensive, though convenient, also the aggregator shell script appears to hate it...
[apar@aonl1 ~/scripts]$ ./terminal_prompt_1.sh adaq3 3602
Tracking Data over time
The run-wise plots are uploaded to the folder /u/group/halla/www/hallaweb/html/parity/prex/onlinePlots, which is visible from Haweb
The WAC is also responsible for keeping track of the data over the course of "slugs" (generally defined as in/out insertions of the IHWP or flips of the Wein).
- There are several codebases, initially we used Tao's postpan collection tool, the "Collector".
- This was then enhanced with a more general drawing and textfile printing macro.
- For general data analysis and daily aggregation, this has since been replaced with the root-file reading and histogram filling/parsing set of methods referred to as the "Aggregator"
- The Aggregator is designed for pulling the data out of rootfiles directly and calculating histogram based quantities off of that (rather than trusting intermediary programs to have the extensibility needed for arbitrary data manipulations)
Collector Code
The collector code lives in Tao's collector repository
To Collect:
- login as apar@adaq3
- cd into ~/PREX/prompt/collector
- source ../../setup_japan.tcsh
WAC List Creation
- create a list of run number you want to (see for example test.list)
- use PVDB/RCND/RCDB commands/website
- make a slug#.list
Collector:
- run the command: ./collector -d ../results/ -l test.list (Note:replace test with your file name)
- a root file named prexPrompt_test.root will be stored in the rootfiles directory
- to produce plots stay in the collector directory and run ./aggregate
- you will be asked to enter a test part of the rootfile, enter it and hit Enter
- a aggregate_plots_test.pdf file will be created in the plots directory.
Draw Post Pan:
- cd into drawPostpan
- [apar@adaq1 ~/PREX/prompt/collector/drawPostpan]$ root -l -b -q drawPostPan.C'("../rootfiles/prexPrompt_slug10.root","slug10-Left","list.txt")'
Aggregator
To reanalyze and make new run and minirun files for each run
- Optional: Make your slug list, then if the run/minirun individual stub files haven't been made yet do:
gojapan ; cd ../prompt/ ; ./agg_prompt_list.sh ~/PREX/prompt/collector/run_list/slug7.list
- Once the aggregator is done running on all runs in a given slug you can hadd them together and add the units branch to them with
~/PREX/prompt/accumulate_aggFiles_list.sh ~/PREX/prompt/Aggregator/drawPostpan/run_lists/slug11.list slug11.root
- Then to make plots/csv file do
[apar@adaq2 ~/PREX/prompt/Aggregator/drawPostpan]$ root -l -b -q plotAgg.C'("slugRootfiles/run_slug9.root","run_slug9")'
- To look at the data by hand, find the output slug aggregated files and do:
root /chafs2/work1/apar/aggRootfiles/slugRootfiles/run_slug11.root root [1] agg->Draw("reg_asym_usl_mean:run_number","","*")
Proposed Data Frame update
A Data frame is a useful ROOT 6.12 construct for managing data. It marries some of the Draw() data managing functionality into a MultiThread safe and TTree data traversal optimized framework:
ROOT::RDataFrame d("mul",_file0); auto hist1 = d.Define("defined1","math*branch1.leaf1").Filter("cuts").Histo1D("defined1"); auto hist2 = d.Define("defined2","math*branch2.leaf2").Filter("cuts").Histo1D("defined2"); hist1->Draw()
This executes all of the actual draws at once (they are "Lazy"). See documentation for more.
Caveat: it needs the exact branch.leaf name, it won't search for the first leaf for you.
Plan:
- Loop over a config input text file to get the draw commands, cuts and output names (if blank or NULL then just use the draw command as output name)
- Define all of those using .Define and .Filter and .Histo1D
- GetMean, RMS, Errors, and nEntries for each
- Make a totally fresh agg tree and entry with the same traditional structure/or add a line to be appended into agg file