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


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 

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