CMS RU-Builder
     
The CMS RU-builder is a XDAQ distributed application that collects super-fragments from one
set of nodes and builds those super-fragments into entire events in another set of nodes.

The CMS RU-builder is part of a larger system called the CMS event-builder. The design of the event builder is presented in:

The CMS collaboration, The Trigger and Data Acquisition project, Volume II, Data Acquisition 31 & High-Level Trigger.
CERN/LHCC 2002-26, ISBN 92-9083-111-4
Useful links

 

RU builder releases
CVS tag / Date / Docs Features
rubuilder_G_V01_14_00
16 SEP 2008
pdf doc doxygen
  • [2114312] Add total amount of processed data of BU to flashlist 2008-09-16 07:34
  • [2114306] Build single rpm for RUBuilder 2008-09-16 07:30
rubuilder_G_V01_13_00
8 SEP 2008
pdf doc doxygen
  • [2099832] Manually switch RU into 'TimedOutTolerating' state 2008-09-08 02:23
  • [2094850] EVB RU crash in TimedOutTolerating state 2008-09-05 04:53
rubuilder_G_V01_12_00
21 AUG 2008
pdf doc doxygen
  • [2064803] Lock all accesses to info spaces 2008-08-21 06:21
  • [2064782] RU fault tolerant against missing superfragments 2008-08-21 06:08
rubuilder_G_V01_11_00
22 JUL 2008
pdf doc doxygen
  • [2008592] Clean up some unused code in RU builder 2008-07-02 01:52
  • [2008587] Make eventNumber flashlist reporting clearer 2008-07-02 01:45
  • [1979381] rubuilder:: too verbose in notifyQualified() 2008-05-30 07:43
  • [1872627] rubuilder::ru lowestBuInstance exported twice 2008-01-16 01:49
  • [1845406] RUbuilder::ru bad table field name 2007-12-06 02:16
  • [1838756] ambiguous infospace in rubuilder 2007-11-26 06:52
  • [1834602] rubuilder::ru bad sequence table creation 2007-11-19 07:41
rubuilder_G_V01_06_00
11 OCT 07
pdf doc doxygen
  • 1811514 Increment version number to 1.6.0 2007-10-11 12:26
  • 1811414 Create web-page icons for RUI2FU 2007-10-11 09:41
  • 1811360 Add icon resources to CVS 2007-10-11 08:38
  • 1810956 Add value of elements() to FIFO HTML 2007-10-10 15:53
  • 1810116 Fill out empty RU DOxygen comments 2007-10-09 12:19
  • 1810098 Add DOxygen comments to FIFO binary semaphores 2007-10-09 11:38
  • 1809499 Make BU, EVM, RU and RUI2FU reason for failed thread-safe 2007-10-08 14:40
  • 1809459 Make RUI and TA reason for failed thread-safe 2007-10-08 13:25
  • 1809438 Make reason for failed and fault dexcription thread-safe 2007-10-08 12:55
  • 1808184 Make FED source ID data structures of the FU thread-safe 2007-10-05 16:16
  • 1807764 Reverse modifications made to xgi bindings 2007-10-04 21:06
  • 1806982 Make BU, EVM and RU web pages thread safe 2007-10-03 14:56
  • 1806895 Make the FU, RUI and TA web pages thread safe 2007-10-03 11:50
  • 1806554 Move printParamsTable to rubuilder::utils 2007-10-02 20:34
  • 1806442 Fix 1x1_TA_RUI_FU "self test" bug 2007-10-02 16:26
  • 1806425 FU should notify sentinel of duplicate FED source ids 2007-10-02 16:04
  • 1806392 Example FU should check for duplicate FED source IDs 2007-10-02 15:21
  • 1805473 Remove redundant "Resized xxxFIFO" log messages 2007-10-01 08:28
  • 1805467 FU FED traverseral logic should use fed_header.h MACROS 2007-10-01 08:15
  • 1804400 Remove usigned signed comparison warnings 2007-09-28 16:22
  • 1804345 Use type int for array indices 2007-09-28 14:42 1 Clo
  • 1803697 Use fed_header.h macros in trigger generator code 2007-09-27 16:16
  • 1803347 Use stdint.h integer types for constants 2007-09-27 09:40
  • 1802915 Fix RU "FED source id bug" 2007-09-26 16:32
  • 1802549 Add BU class name to FU parameters 2007-09-26 08:41
  • 1802032 Add element labels to DebugRlist and BlockRlist 2007-09-25 13:15
  • 1801190 Make a copy of toolbox::rlist 2007-09-24 14:14
  • 1801153 Fix the "tolerating pair FIFO overflow" bug in the RU 2007-09-24 13:33
  • 1799757 Add full FIFO web pages to BU, EVM and RU 2007-09-21 16:37
  • 1798935 Fix bug in RU enabled to tolerating switchover logic 2007-09-20 16:09
  • 1798034 Fix "stopped BU work loop" bug 2007-09-19 14:56
  • 1797789 Make EVM worker loop thread wait when no work to be done 2007-09-19 11:24
  • 1797740 Make BU worker loop thread wait when no work to be done 2007-09-19 09:30
  • 1797147 Separate push_back exceptions from work loop notficiations 2007-09-18 15:47
  • 1796957 Improve exception handling of RU waiting work loop 2007-09-18 09:49
  • 1796328 Parameterize the size of dummy triggers 2007-09-17 16:37
  • 1796295 Make RU worker loop thread wait when no work to be done 2007-09-17 15:41
rubuilder_G_V01_05_00
14 SEP 07
  • 1794529 Increment version number to 1.5.0 2007-09-14 08:28
  • 1791696 Refresh EVM::ruBuilderIsFlushed on default web page 2007-09-10 16:26
  • 1791688 Update EVM::ruBuilderIsFlushed on web page refresh 2007-09-10 16:16
  • 1791676 Make EVM::ruBuilderIsFlushed tri-state 2007-09-10 15:45
  • 1788404 Add foundTA exported parameter to EVM 2007-09-05 12:03
  • 1787884 Remove memory pool thresholds from RUI 2007-09-04 15:49
  • 1787063 Improve "RU builder is flushed" logic 2007-09-03 12:53
rubuilder_G_V01_04_00
22 AUG 07
  • 1779457 Increment version number to 1.4.0 2007-08-22 14:22
  • 1778694 Set maximums: 80 RUs and 300 Bus 2007-08-21 15:28
  • 1779440 Remove xdaq2rc depencies from FU, TA and RUI 2007-08-22 14:01
  • 1777623 Add flash lists to rubuilder TriDAS directory 2007-08-20 12:29
  • 1770664 Increment version number to 1.3.1 2007-08-09 08:44
  • 1770215 Move SENT_TO_FU BU resource state change 2007-08-08 18:39
RUBUILDER_G_V1_3_0
7 AUG 07
pdf doc
  • Moved from TriDAS/daq/evb to TriDAS/daq/rubuilder
  • Common code between applications is now in TriDAS/daq/rubuilder/utils and compiles to librubuilderutils.so
EVB_S_18305_V3_9_8
6 SEP 06
pdf doc
  • Removed old versions of createStateNotificationMsg()
  • Preparation for 32-bit/64-bit platform compatibility - replaced xdata::UnsignedLong with xdata types that explicity specify their width in bits
  • Flash lists updated to be conformant with latest MTCC flash list conventions
EVB_S_18305_V3_9_7
23 AUG 06
  • Compatible with XDAQ CORE 3.7
  • Uses xdata::Serializable.toString()
  • Removed "using namespace std"
  • Uses standard library const_iterator as opposed to just iterator
EVB_S_18305_V3_9_6
20 JUL 06
  • Occupancy flash lists created for BU, EVM and RU
  • Fixed bug in BU, EVM and RU calcDeltaTime() method
  • Lowered level of "Did not find sentinel" log from WARN to INFO
  • The exception history of I2O exceptions are now logged
  • Separate flash lists have been created for online and database monitoring
  • Event number flash lists created for BU, EVM and RU
  • Corrected exception handling of dummy trigger generation
  • EVM now sends pairs to RU when generating dummy triggers
EVB_S_18305_V3_9_5
11 JUL 06
  • Fixed RMS calculation bug in BU, EVM and RU applications
EVB_S_18305_V3_9_4
07 JUN 06
  • RU builder can operate with all RUs masked or without any RUs
EVB_S_18305_V3_9_3
30 MAY 06
  • All application FSTNs have Failed->Failed transition triggered by event "Fail"
  • BU application has a resource summary web page for debugging
EVB_S_18305_V3_9_2
23 MAY 06
  • Application web pages display a last updated timestamp
  • BU application has web page that dumps the state of all resources
  • Application title bars have been homogenized
EVB_S_18305_V3_9_1
08 MAY 06
  • RUBuilderTester works with arbitrary application instances
  • Hypertext links to HyperDAQ application use "service" and not "lid"
  • RUBuilderTester application web pages provide a list of received exceptions
  • RUBuilderTester application web pages provide a list of received asynchronous state change notifications
  • Exceptions are now handled correctly in the method BU::configureAction
EVB_S_18305_V3_9
08 MAY 06
pdf doc
  • The BU, EVM and RU use the xdaq2rc library to send asynchronous state change messages to run-control
  • RU FSM extended to indicate whether or not the RU is tolerating or back-pressuring when it detects an event number mismatch or a time out in the event data stream
  • The RU is now decoupled from BU instance numbers to facilitate the prototyping of multiple slices
  • Bug fix – The BU and EVM now correctly resynchronize with the RU mask when they are configured
  • The HTTP content type of the BU, EVM, RU and example applications is now explicitly set
EVB_S_18305_V3_8
29 MAR 06
pdf doc
  • Capacity of EVM trigger FIFO is now configurable
  • Monitor profiles for BU, EVM and RU are now included in release
  • RU has two new states: MismatchDetected and TimedOut
  • RU builder can tolerate event number mismatches and timeouts
  • EVM provides separate message counts for TA->EVM and RUI->EVM communication
  • EVM and BU can dump triggers to log
  • BU, EVM and RU export runNumber
  • BU, EVM and RU send asynchronous notifications of error states
EVB_S_18305_V3_7_1
31 JAN 06
pdf doc
  • SOAP state change requests that cause applications to go to the “Failed” state are replied with SOAP faults that contain the reason for failure.
  • The example applications (FU, RUI and TA) have debug web pages.
  • All applications have a simple Finite State Machine (FSM) web page.
  • The EVM can accept trigger data from the Fed Builder Output (FBO).
  • The EVM and BUs can be parameterised to mask out RUs.
  • The BUs contains a prototype of asynchronous state notification code for the "Failed" state.
  • The EVM contains a prototype event id gauge to be used during the development of the Data Flow Controller (DFC).
  • The sentinel context “rubuilder” has been created, replacing the “i2oException” context which was too specific.
EVB_S_18305_V3_7
30 JAN 06
pdf doc
 
EVB_S_18305_V3_6
27 OCT 05
pdf doc
  • Example FU no longer segmentation faults when a fragment size is too small
  • RUBuilderTester application now supports pt ATCP
  • EVM trigger dummy generator now wraps at 24-bits
  • Monitoring counters can now be reset
EVB_S_18305_V3_5
04 OCT 05
pdf doc
  • Bug fix: Example FU now correctly uses the FRL header mask FRL_SEGSIZE_MASK
  • Bug fix: Example RUI and FU now correctly fill the sourceid field of the FED header
  • Bug fix: Removed 0xDEADFACE check from example FU
  • I2o exception logs now include “instance” to avoid confusion with PC DNS names
  • Web pages of BU, EVM and RU are more intuitive with respect to data flow
EVB_S_18305_V3_4
26 AUG 05
pdf doc
  • The BU now keeps an event in memory until a FU discards it. The previous version of the BU used a “fire and forget” strategy with respect to sending events to FUs.
  • The BU has been tested to prove that it continues to work after one of its client FUs crash.
  • The example FU now checks for mismatches between the size of a super-fragment calculated from FRL headers and that calculated from FED trailers.
  • The web interface of each application now displays the version number of the application.
  • The web interface of each application is now more readable when icons are not available or disabled.
  • The I2oExceptionHandlers have been merged into their corresponding applications for the sake of simplicity.
EVB_S_18305_V3_3
16 AUG 05
pdf doc
  • Example RUI generates super-fragments with FRL and FED headers/trailers
  • Example FU checks FRL and FED headers/trailers of RUI super-fragments
  • Bug fix - RU builder applications no longer crash their executive when they go to the Failed state
EVB_S_18305_V3_2
08 JUL 05
pdf doc
  • Example TA and FU use FRL and FED headers/trailers within trigger messages
  • Loggers are named using the class names and instance numbers of their respective applications
  • Exported parameters are divided into 4 groups: “Standard” configuration, “Debug” configuration, “Standard” monitoring and “Debug” monitoring
  • BU, EVM and RU applications calculate and export statistics about data throughput
  • BU, EVM and RU applications publish monitoring information into info spaces specifically created for use within the future XDAQ monitoring framework
  • Each application now has an I2O exception handler that logs asynchronous exceptions raised by peer transports when dealing with RU builder I2O messages
  • The RUBuilderTester gathers and displays more monitoring information
  • The web interface of each application has been improved (this is subjective)
EVB_S_18305_V3_0
02 MAY 05
pdf doc
  • Runs with XDAQ 3.1
  • Synchronous state changes
  • Simpler I2O interface
  • Example applications: FU, RUI an TA
  • Self test feature implemented with the RUBuilderTester application
EVB_S_18305_V2_1
01 NOV 04
pdf doc
  • The EVM is more efficient when sending “event id / trigger” pairs to the RUs.
  • FUs can now have arbitrary instance numbers. In version 2.0 they had to be from 0 to 64.
  • RU builder applications now export message and payload counts for the I2O messages they send and receive.
  • RU builder applications can now be parameterized as to whether or not they call exit(-1) when they enter the “Failed” state.
EVB_S_18305_V2_0
24 MAY 04
pdf doc
  • The builder unit output objects (BUOs) of version 1.0 have been replaced with an I2O interface between builder units and filter units. This interface is referred to as the BU/FU interface.
  • Arbitrary opaque trigger data can now be received by the event manager (EVM) and assembled into the events built by the builder units (BUs).
  • Fast control messages that are not fully packed are now sent when they are older than a configurable amount of time (see appendix A for a description of fast control messages).
  • A RU builder application can now be halted. When a RU builder application is in the halted state, it flushes all internal data structures and frees all incoming I2O messages.
xdaq2rc releases
CVS tag / Date Features
xdaq2rc_S_34022_V1_4
5 SEP 06
Wiki
  • Replaced xdata:UnsignedLong with xdata::UnsignedInteger32
xdaq2rc_S_34022_V1_3
5 SEP 06
Wiki
  • Replaced fundamental type long with int64_t from stdint.h
xdaq2rc_S_34022_V1_2
22 AUG 06
Wiki
  • Compatible with XDAQ CORE 3.7
xdaq2rc_S_34022_V1_1
11 JUL 06
Wiki
  • Added versioning code