New analysis code being developed for 2014 data format
New code is being developed by Daniel Arcaro with help from Eric Hazen and Dan Gastler to analyze
the new/final data format documented here:
AMC13CommonFirmwareProposal.
Also Ted Laird has written a tool to convert to root format:
P.S. If you end up dumping the AMC13 monitor buffers, but would like
to convert the dumps to .root files with TTrees of
std::vector, so that you can use "ordinary" analysis
programs to analyze them, feel free to use this program:
badcoffee.cpp
Bug reports are quite welcome. (to Ted Laird)
Finding the Data
See
EricFindingCMSData
for some help.
Converting Data
The two options for file types processed by this code are binary and root files. The code to switch from one to another or vice versa is here:
Binary to Root:
https://github.com/elaird/hcalraw
(From Ted Laird)
- First run make in the cpp folder
- The main tool for making badcoffee binary files is hcalraw/cpp/badcoffee.cpp. Usage is cat a.dat | ./badcoffee fed#.
Root to Binary:
http://edf.bu.edu/svn/edf/arcaro/cms/trunk/pythontools/
rootdumper/ or
http://edf.bu.edu/svn/edf/arcaro/cms/trunk/analyzer/
dumpraw/
- The dumpraw code is a cmssw analyzer and requires a cmssw environment. The rootdumper only requires root.
- The rootdumper is built by running the Makefile in rootdumper/cpp.
- Run the code using ./oneRun.py --rootFile=HTB_007850.root --feds=928 --nEvents=101 --outputFile=data1.dat
- The dumpraw analyzer can be built with the same directions as the CMSSW section below.
- Run the code using cmsRun .../python/ConfFile_cfg.py
Unpacker
Unpacker consists of three classes to parse AMC13 data format: FedEvent, FedBlock, and FedAMC. Various tools have also been created to utilize these classes and analyze the data. All code can be found here:
http://edf.bu.edu/svn/edf/arcaro/cms/trunk/
Class documentation:
http://ohm.bu.edu/~djarcaro/Documentation/unpacker.pdf
Unpacker Build and Run Instructions
Check out and build:
$svn co http://edf.bu.edu/svn/edf/arcaro/cms/trunk/unpacker and http://edf.bu.edu/svn/edf/arcaro/cms/trunk/tools
$cd tools
$make
List of tools and their uses:
- dump64: Prints the raw data to screen in hex with 64bits per line. Used to sort through data by hand.
- use: $ ./dump64 file.dat (usually followed by | less)
- dump: Main dump tool to parse events and check for errors.
- use: $ ./dump file.dat -v 1 -e 1 -c
- -v flag for amount of information about the event printed to screen
- -c flag to turn CRC checking on or off
- -e flag to print specific errors to screen
Unpacker histogram option
If root is installed dumptmp.cc can be made by $make root=1. dumptmp is identical to dump but also creates a root file with a histogram of the error array for easier visualization with large files.
CMSSW
The dump software has also been implemented in a cmssw analyzer to extract raw data from global/local root files and unpack it. This requires a cmssw environment (most likely lxplus). The code can be found here
http://edf.bu.edu/svn/edf/arcaro/cms/trunk/analyzer/
and .../trunk/cmsswtools. General instructions to make an analyzer can be found here:
https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookWriteFrameworkModule
.
Recipe to build the analyzer code:
$ cmsrel CMSSW_#_#_# ($ scram list if you want to see the version choices) (The version should match the one that created the root file. Use edmProvDump name.root to check the version.)
$ cd CMSSW_#_#_#/src
$ cmsenv (equivalent: eval `scramv1 runtime -csh`)
$ svn co http://edf.bu.edu/svn/edf/arcaro/cms/trunk/analyzer/
$ svn co http://edf.bu.edu/svn/edf/arcaro/cms/trunk/cmsswtools
$ scram b
To run the analyzer first set the parameters in the python file analyzer/parse/python/ConfFile_cfg.py. The most important parameters (besides the file name) are the HcalTBSource vs PoolSource and the rootType string input. Change these to correspond to either a local or global root file. The python script is set to run over multiple files in a directory. To then run the analyzer:
$ cmsRun analyzer/parse/python/ConfFile_cfg.py.
All of this should be done using the same version of CMSSW as what the root file was produced with. To determine this use $ edmProvDump rootfile.root to see the CMSSW version number and other attributes of the file. There are also other edm functions that are quite useful (of course only on lxplus).
Bugs
To Do List
New Features