Notes on the initial data formats classes¶
19-Mar-2014, Kurt Biery: To help demonstrate how LBNE 35ton data formats might be included into the artdaq framework, we have created a couple of initial data format classes (for millislices and microslices) and a sample FragmentGenerator.
1-Apr-2014, John Freeman: Kurt's added nanoslices and a fragment generator, "TPCMilliSliceSimulatorWithCopy", which produces a millislice (sectioned into microslices, in turn sectioned into nanoslices). I've added an Art module, "MilliSliceDump", to make it possible to see the output of this fragment generator.
Class/method/attribute naming¶
References¶
- LBNE DocDB # 7416, "Data Formats", by Jon Paley
- NOvA DAQDataFormats classes (https://cdcvs.fnal.gov/redmine/projects/novadaq/repository/show/DAQDataFormats)
Using the classes¶
These classes are currently (4/1/14) being developed on the "develop" git branch of lbne-artdaq ; to work with this branch, run "git checkout develop" from anywhere within the local repository, and then rebuild ("buildtool -c"). This assumes the environment has already been set up; see Installing and building the lbne-artdaq code for more on this.
Running the tests¶
Very simple: running "buildtool -t" will run a suite of tests used to ensure that the classes used for the provisional LBNE 35ton data format all work
A "driver" example¶
If one runs "driver -c TPCMilliSliceSimulator.fcl", the TPCMilliSliceSimulatorWithCopy fragment generator will produce artdaq fragments corresponding to millislices, which are then processed by the MilliSliceDump Art module. This module will print out to screen the number of microslices in the millislice, the number of nanoslices per millislice, and then the sample values within the first nanoslice of each millislice. Users can edit the FHiCL parameters in TPCMilliSliceSimulator.fcl to change the number of events (millislices) generated, as well as the number of microslices per millislice, the number of nanoslices per microslice, and the number of values produced per nanoslice. An example of the output you might see (April 1, 2014) is as follows:
Run 101, subrun 0, event 1 has 1 fragment(s) of type TPC MilliSlice fragment 0 consists of: 188 bytes 4 microslices MilliSlice fragment 0, microslice 0 consists of: 44 bytes 2 nanoslices First nanoslice: 30720 30721 30722 30723 30724 MilliSlice fragment 0, microslice 1 consists of: 44 bytes 2 nanoslices First nanoslice: 30730 30731 30732 30733 30734 MilliSlice fragment 0, microslice 2 consists of: 44 bytes 2 nanoslices First nanoslice: 30740 30741 30742 30743 30744 MilliSlice fragment 0, microslice 3 consists of: 44 bytes 2 nanoslices First nanoslice: 30750 30751 30752 30753 30754 PROCESS NAME | MODULE LABEL | PRODUCT INSTANCE NAME | DATA PRODUCT TYPE............ | PRODUCT FRIENDLY TYPE | SIZE Driver...... | daq......... | TPC.................. | std::vector<artdaq::Fragment> | artdaq::Fragments.... | ...1 Total products (present, not present): 1 (1, 0). TrigReport ---------- Event Summary ------------ TrigReport Events total = 1 passed = 1 failed = 0 TrigReport ------ Modules in End-Path: end_path ------------ TrigReport Trig Bit# Visited Passed Failed Error Name TrigReport 0 0 1 1 0 0 milliSliceDump TrigReport 0 0 1 1 0 0 out1 TimeReport ---------- Time Summary ---[sec]---- TimeReport CPU = 0.001109 Real = 0.001000