|
|
(30 intermediate revisions by 4 users not shown) |
Line 13: |
Line 13: |
| | | |
| | | |
− | [[Main_Page|<B>PREX Main</B>]] << [[Weekly Analysis Coordinator]] << [[WAC Notes]] | + | [[Main_Page|<B>PREX Main</B>]] << [[Weekly Analysis Coordinator]] << [[WAC Notes]] << [[WAC Collection PREXII]] |
| <br><br> | | <br><br> |
| | | |
− | = Daily = | + | == CREX == |
| + | After the experience of PREX II, some simplifications and automation scripts have been developed. |
| | | |
− | == Data Monitoring ==
| + | * Logging into apar@adaq# |
− | 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.
| + | * execute: |
− | | + | '''gowac''' |
− | Also see [[PVDB]] and [[Online analysis]] for more useful tools
| + | * Follow the instructions listed there |
− | | + | * The only things requiring manual adjustment are RCDB condition changes, including slug number and arm flag (for magnet trips) - '''these are explained in [[PVDB]]''' |
− | Set the RCND environment variables on an aonl computer with:
| + | * Everything should be explained, but if not then ask a prior WAC for help |
− | 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 [https://github.com/JeffersonLab/prex-prompt 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 [https://hallaweb.jlab.org/parity/prex/onlinePlots/ 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 [https://github.com/leafybillow/collector 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]$ setenv CAM_OUTPUTDIR /chafs2/work1/apar/aggRootfiles/slugRootfiles/grandRootfile
| |
− | [apar@adaq2 ~/PREX/prompt/Aggregator/drawPostpan]$ root -l -b -q plotAgg.C'("slugRootfiles/minirun_slug","plots/minirun_slug", slug, ihwp, wein, hrs)'
| |
− | The first parameter points to location of accumulated minirun files.
| |
− | The second parameter points to location of output plots and text file.
| |
− | The third parameter is the slug number and needs to be entered by user.
| |
− | Enter ihwp = 1 for in, 2 for out
| |
− | Enter wein = 1 for right, 2 for left
| |
− | Enter hrs = 0 for both, 1 for right only, 2 for left only
| |
− | * 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); or ROOT::RDataFrame d1(*tchainName)
| |
− | auto cutData = d.Filter("cuts");
| |
− | auto hist1 = cutData.Define("defined1","math*branch1.leaf1").Histo1D("defined1");
| |
− | auto hist2 = cutData.Define("defined2","math*branch2.leaf2").Histo1D("defined2");
| |
− | hist1->Draw()
| |
− | This executes all of the actual histo filling and math, traversing the tree, all at once (they are "Lazy"). See [https://root.cern.ch/doc/v614/classROOT_1_1RDataFrame.html 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
| |
| | | |
| [[Category:HOW TO]] [[Category:WAC]] | | [[Category:HOW TO]] [[Category:WAC]] |