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)
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/
Class documentation:
http://ohm.bu.edu/~djarcaro/Documentation/unpacker.pdf
Build and Run Instructions:
Check out and build:
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
Root and Histogram Options:
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/analyzer
. 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)
$ cd CMSSW_#_#_#/src
$ cmsenv (equivalent: eval `scramv1 runtime -csh`)
$ svn co
http://edf.bu.edu/svn/edf/arcaro/analyzer/
$ cd analyzer/parse/plugins
$ svn co
http://edf.bu.edu/svn/edf/arcaro/unpacker/
$ cp unpacker/* ./
You should now have all the
FedEvent source code in the plugins folder alongside
BuildFile.xml and parse.cc
$ cd ..
$ scram b
To Do List
Bugs
- Add a doxygen configuration file and "doc" target to makefile so one can do 'make doc' and get the doxygen output.
New Features
DONE:
- In FedEvent::PreParse the expression
if(GetNAMC() > 0 || GetNAMC() < 13)
is always true. I think you mean to use &&
instead of ||
.
- In FedEvent::PreParse there are two possibilities for size: a) 2 and b) 4...14. It should throw an exception if any other value is passed. The comments should reflect this.
- Check for consistency of LMSEPVC bits through an entire event
- MS should be "10" for first block, "11" for intermediate blocks, "01" for final blocks.
- C should be 1 when MS="01".
- EP should always be "11" I think
- Check Blk_No, AmcNo, BoardID in block headers for consistency throughout event
- Add option to dump entire AMC payloads
--
EricHazen - 04 Aug 2014