Release notes for DAQ/HLT-I S/W Release tdaq-02-00-00


General notes from s/w librarian

Packages and tags used in the release

ac v4r4p5
AccessManager AccessManager-00-06-02
clips clips-06-24-00
cmdl cmdl-01-04-14
cmem_rcc v2r0p23
coca coca-01-09-03
config config-02-00-00
coral_auth coral_auth-01-10-00
dal dal-01-15-05
DAQPanel DAQPanel-07-00-04
DataflowPolicy v1r6p0
dbe dbe-00-01-02
dccommon v1r1p19
dcmessages v2r4p6
ddc ddc-05-05-00
DFConfiguration v9r4p6
DFDebug v2r0p19
DFExceptions v3r1p0
DFM v2r21p2
DFRelease DFnightly-00-01-01
DFSubSystemItem v6r4p0
DFTests v2r1p6
DFThreads v2r4p1
dnc dnc-01-00-06
dqm_config dqm_config-00-06-01
dqm_display dqm_display-00-01-04
dqmf dqmf-00-06-01
dvs dvs-00-33-02
dvs_gui dvs_gui-00-00-06
dynlibs v1r3p2
ed ed-00-02-20
efd efd-01-15-18
efio v2r10p2
emon emon-00-04-02
errorRecovery v3r2p21
ErrorReporting v3r0p1
FarmTools FarmTools-02-01-04
file_sampler tdaq-02-00-00
gatherer v8r8p81
genconfig genconfig-03-00-00
gnam gnam-04-02-00
gnamDummyLib gnamDummyLib-01-03-00
histmon histmon-00-02-27
hltinterface v0r0p21
igui igui-01-01-52
Igui Igui-00-00-04
instrumentation v1r3p7
io_rcc v2r0p41
ipc ipc-04-08-09
is is-05-06-03
ispy ispy-00-00-27
Jers Jers-01-00-05
ktidbexplorer ktidbexplorer_pre-02-00-00_00
l2dummy v1r8p17
l2pu v1r19p28
l2rh v2r1p7
L2streamTest v1r2p1
l2sv v1r14p17
ls ls-01-02-09
mda mda-05-00-01
mda_browser mda_browser-00-00-03
MonaIsa tdaq-02-00-00
MonGatherer MonGatherer-02-16-00
mrs mrs-01-09-09
msg v1r2p4
msgconf v1r4p10
msginput v1r3p1
msgsctp v1r2p3
msgtcp v1r2p1
msgudp v1r2p3
NetPanel NetPanel-01-01-01
NSG NSG-02-00-02
oh oh-00-00-88
ohp ohp-03-03-02
ohpplugins ohpplugins-01-01-00
oks oks-04-00-05
oks2cool oks2cool_pre-02-00-01_00
oks2coral oks2coral-02-02-00
oksconfig oksconfig-02-03-02
OMD OMD-00-00-44
omni omni-04-01-03
omniPy omniPy-00-00-01
onasic onasic_pre-02-00-01_00
OnlinePolicy online-00-23-00
OnlineRecovery OnlineRecovery-02-02-04
OnlineRelease OnlineRelease-00-00-63
opmon opmon-00-00-09
owl owl-00-00-27
PackageID v1r0p19
PartitionMaker PartitionMaker-06-06-05
PmgGui PmgGui-00-00-11
ProcessManager ProcessManager-01-02-30
pt v4r5p2
ptdummy v3r12p3
PTIO PTIO-03-10-06
queues v1r0p16
rcc_corbo v2r0p4
rcc_error v2r0p5
rcc_rodbusy v2r0p8
rcc_time_stamp v2r0p9
rcdal rcdal-00-02-00
RCDBitString v1r4p2
RCDExampleModules v2r3p5
RCDExampleTriggers v0r3p2
RCDJtagChain v1r3p0
RCDLtp v2r0p3
RCDLtpi v2r0p1
RCDLtpiModule v2r0p1
RCDLTPModule v2r0p3
RCDMenu v1r4p0
RCDModuleDesign v4r1p0
RCDTtc v2r0p0
RCDUtilities v1r4p0
RCDVme v2r0p0
RCInfo RCInfo-00-02-03
RCUtils RCUtils-01-03-01
rdb rdb-06-00-02
rdbconfig rdbconfig-01-08-00
rm rm-02-02-16
Rm-Gui Rm-Gui-01-00-03
rn rn-02-00-00
robin_ppc v0r0p89
RobinTestSuite v2r1p26
RODBusy v2r0p0
RODBusyModule v2r0p0
roib v2r7p5
ROSApplication v6r6p5
ROSBufferManagement v2r4p0
ROSCore v9r0p1
rose v1r19p14
ROSEventFragment v2r2p2
ROSEventInputManager v2r2p0
ROSfilar v2r0p35
ROSGetInput v2r0p4
ROSInterruptScheduler v1r0p5
ROSIO v7r3p6
ROSMemoryPool v2r2p1
ROSModules v2r8p6
ROSMonitor v1r1p7
ROSObjectAllocation v2r0p1
ROSRCDdrivers ROSRCDdrivers-00-00-43
ROSRobin v0r1p71
ROSslink v2r0p11
ROSsolar v2r0p50
ROSUtilities v2r5p0
RunController RunController-01-08-14
SFI v4r11p13
SFIOEmulators SFIOEmulators-00-08-05
SFO v2r17p5
siom v1r12p0
sysmon v2r2p15
sysmonapps v2r3p10
system system-00-00-12
TDAQExternal TDAQExternal-00-12-02
TDAQPolicy TDAQPolicy-00-07-12
thread_allocator v1r0p7
threads v1r1p13
tidb2 tidb2_pre-02-00-00_00
tmgr tmgr-01-06-01
training training-00-05-02
transport v1r1p12
TriP TriP-00-00-43
ttcpr v2r2p0
TTCviModule v2r0p0
vme_rcc v2r0p50
wmi wmi-00-05-01
xmext xmext-01-02-09

Changes in packages (in ABC order)

AccessManager |  clips |  config |  DAQPanel |  dbe |  dcmessages |  DFConfiguration |  DFM |  dqm_config |  dqmf |  dvs |  dvs_gui |  efd |  efio |  emon |  gatherer |  genconfig |  gnam |  igui |  Igui |  ispy |  ls |  mda_browser |  MonGatherer |  mrs |  oks |  oks2coral |  oksconfig |  OMD |  OnlineRecovery |  PmgGui |  ProcessManager |  PTIO |  rcc_time_stamp |  RCDLtp |  RCDLtpi |  RCDLtpiModule |  RCDLTPModule |  rdbconfig |  rn |  RODBusy |  RODBusyModule |  ROSCore |  ROSEventFragment |  ROSInterruptScheduler |  ROSIO |  ROSModules |  ROSRCDdrivers |  ROSRobin |  RunController |  SFI |  SFO |  tmgr |  training |  TriP |  TTCviModule |  vme_rcc |  wmi | 

AccessManager

Policies

The XACML policies generated by the Policy Adminitration Point code use the "Ordered Permit Overrides" policy algorithm instead of "Deny Overrides" policy algorithm.
New resource categories:

Server

Client API

Reads first the configuration from the file /sw/tdaq/AccessManager/cfg/client.cfg, then from environment. If the configuration file is not found, then an information messages is logged to indicate this. The production environment must make sure the file is available (even if it's empty). The configuration file must contain lines with the following format:

#The line with comments must start with '#' character
VARIABLE_NAME=VARIABLE_VALUE

C++ API
Java API

Tools


clips

Description

The package is importing third-party s/w package, CLIPS - "C" Language Intagrated Production System, a framework for building embeddable rule-based expert systems. It is used in tdaq s/w in diagnostics and recovery packages.
CLIPS home page

Changes in tdaq-02-00-00

New CLIPS version
Package updated with latest production version of CLIPS, 6.24.00
Documentation


config

C++ API Changes

To support 64-bits platform the ConfiObject get() and set() methods use typedefs from <stdint.h> instead of non-safe built-in C++ types. One has to replace any occurrences of explicitly used in such methods signed and unsigned char, short and long types as shown in the following table:

OKS Type
Old C++ Type
New C++ Type
 s8 (8-bits signed integer)
unsigned char
uint8_t
 u8 (8-bits unsigned integer)
signed char
int8_t
s16 (16-bits signed integer)
unsigned short
uint16_t
u16 (16-bits unsigned integer)
signed short
int16_t
s32 (32-bits signed integer)
unsigned long
uint32_t
u32 (32-bits unsigned integer)
signed long
int32_t

Java Changes

The methods of config.Configuration class are synchronized for multi-thread safety.


DAQPanel

The DAQPanel is part of the TDAQ release since tdaq-02-00-00. A detailed descripion of changes is available in the ChangeLog file available in the package root directory.

To start the DAQPanel just execute the daqPanel binary; the following command line options are available:
To have default values for the setup script, database name and partition name when the Get Default button is pushed the following environment variables have to be defined: TDAQ_SETUP_SCRIPT (the setup script full path), TDAQ_DB_DATA_DEFAULT (the database file full path), TDAQ_PARTITION_DEFAULT (the partition name).

Some applications will not be started because only available (or using customized scripts) at P1:

         



dbe

General description

  • Official web page of DBE package contain links to known issues, User Guide etc.
  • What is implemented:
  • What is NOT implemented:
  •             
  • Options/Arguments:

  • dcmessages

    Changes since tdaq-01-09-03


       





    DFConfiguration

    General changes

    ....

    Configuration Schema Changes since tdaq-01-09-01

    Changes related to EF
    Changes related to EB

    Information Service Info Description Changes since tdaq-01-09-01

    dc_is_info

    ros_is_info

    Configuration Data Changes (examples) since tdaq-01-09-01



    DFM

    Changes since tdaq-01-09-03



    dqm_config

    New features:


    dqmf

    New features:

        DQM Agent application provides now a possibility of adding user-specific plug-ins as its Input or Output streams. An implementation of the Input stream can be used to get histograms which have to be checked by DQ algorithms. A user specific instance of the Output stream is usable for writing the DQ Results to some user specific place, e.g. text file, database, HTML pages, etc.

    Some changes are required for all DQ configurations !!!

        Now each DQAgent must have at least 1 DQInput and 1 DQOutput streams associated with it in the OKS configuration database. The file daq/sw/dqm-default-streams.data.xml provides configuration objects for the default general streams. Each agent must reference at least the DefaultInput (via the DQInputs relationship) and DefaultOutput (via the DQOutputs relationship) objects. In addition to that an agent which want its results to be written to the COOL database must be linked with the CoolOutput object as well.

    Implementing custom stream

        In order to implement a custom Output (or Input) stream a user has to do the following steps:
    class DQFileOutput : public dqm_core::Output
    {
    bool m_active;
    std::string m_filename;
    std::ofstream m_out;

    // Constructor mas have fixed format. The parameters vector
    // contains parameters from the OKS configuration DB
    // Constructor may throw any exception which is based on ers::Issue
    DQFileOutput( const std::vector<std::string> & parameters ) throw ( ers::Issue )
    : m_active( false )
    m_filename( parameters.size() ? parameters[0].s_str() : "" )
    m_out( m_filename )
    {
    if ( !m_out )
    throw ers::CantOpenFile( m_filename );
    }

    void publishResult( const std::string & name, const dqm_core::Result & result )
    throw ( dqm_core::Exception )
    {
    if ( m_active )
    m_out << result << " has been produced for the '" << name << "' parameter" << std::endl;
    }

    void activate() {
    m_active = true;
    }

    void deactivate() {
    m_active = false;
    }
    };
    namespace
    {
    dqm_core::OutputFactoryT<DQFileOutput> __factory__( "DQFileOutput" );
    }
    IMPORTANT: The value of the Name attribute must be the same as the string which has been passed to the factory registration object, i.e. "DQFileOutput".
    <obj class="DQOutput" id="MyFileOutput">
     <attr name="Name" type="string">"DQFileOutput"</attr>
     <attr name="Library" type="string">"lib_my_dq_output.so"</attr>
     <attr name="Parameters" type="string" num="1">
      "/tmp/DQResults.txt"
     </attr>
    </obj>
    <obj class="DQAgent" id="Calorimeter">
    ...
    <rel name="DQInputs" num="1">
    "DQInput" "DefaultInput"
    </rel>
    <rel name="DQOutputs" num="2">
    "DQOutput" "DefaultOutput"
    "DQOutput" "MyFileOutput"
    </rel>
    </obj>


    dvs


    dvs_gui

    New package to implement gui for dvs core

      1. Combine tests output
      2. Save tests output
      3. Refresh test output panel
      4. Interactive session
      5. Test mask selector
      6. Log viewer settings

    efd

    General changes



    efio

    Changes since tdaq-01-09-03



    emon

    General changes

    C++ API changes

    New Monitoring task API
    Using this address a monitoring task will be attached to a single sampler of the given name and type.
    This address can be used to attach the monitor to the list of samplers (defined by the given names) of the given type.
    Using this address a monitoring task will be attached to the number of samplers of the given type.
    unsigned int lvl1_type = ...;

    std::vector<unsigned char> lvl1_bits;
    lvl1_bits.push_back( 13 );
    lvl1_bits.push_back( 131 );
    std::string stream_type = "physics";

    std::vector<std::string> stream_names;
    stream_names.push_back( "electron" );
    stream_names.push_back( "photon" );
    emon::SelectionCriteria criteria(
    lvl1_type,
    emon::SmartBitValue( lvl1_bits, emon::logic::AND, emon::origin::BEFORE_VETO ),
    emon::SmartStreamValue( stream_type, stream_names, emon::logic::OR ),
    emon::StatusWord( ) );
    Empty emon::StatusWord constructor will create a value with the Ignore flag set to true, i.e. it will be ignored in the process of event selection.
    This class provides 2 constructors:
       EventIterator(    const IPCPartition & partition,
                         const SamplingAddress & address,
                         const SelectionCriteria & criteria,
                         size_t buffer_size = 100,
                         bool dispersion = false ) throw ( emon::Exception );
      
       EventIterator(    const IPCPartition & partition,
                        const emon::dal::SamplingParameters & params )
                                       throw ( emon::Exception );
    The second constructor reads all the necessary parameters from the given DAL object.
    New Event Sampler API
    m_lvl1_trigger_type.
    m_value (unsigned char);
    m_ignore (bool);
    m_lvl1_trigger_bits.
    m_bit_positions (std::vector<unsigned char>)
    m_logic (enum emon::Logic { emon::logic::AND, emon::logic::OR, emon::logic::IGNORE })
    m_origin (enum emon::Origin { emon::origin::BEFORE_PRESCALE, emon::origin::AFTER_PRESCALE, emon::origin::AFTER_VETO } )
    m_stream_tags.
    m_type (std::string);
    m_names (std::vector<std::string>)
    m_logic (enum emon::Logic { emon::logic::AND, emon::logic::OR, emon::logic::IGNORE })
    m_status_word.
    m_value (unsigned int);
    m_ignore (bool);


    gatherer

    The parameters of type string 'SumAlgorithm' and 'SumOrAverage' were substituted with enum 'SummingMode' and 'ResultContent' respectively. For the range of parameters see the schema.

    
    

    genconfig

    C++ API Changes

    Integer Types
    To support 64-bits platform the generated get() and set() methods use typedefs from <stdint.h> instead of non-safe built-in C++ types. One has to replace any occurrences of explicitly used in such methods signed and unsigned char, short and long types as shown in the following table:

    OKS Type
    Old C++ Type
    New C++ Type
     s8 (8-bits signed integer)
    unsigned char
    uint8_t
     u8 (8-bits unsigned integer)
    signed char
    int8_t
    s16 (16-bits signed integer)
    unsigned short
    uint16_t
    u16 (16-bits unsigned integer)
    signed short
    int16_t
    s32 (32-bits signed integer)
    unsigned long
    uint32_t
    u32 (32-bits unsigned integer)
    signed long
    int32_t

    Generated Enum Values
    The valid values of enumeration types are generated. Such generated values can be used for get and set methods. The user's code in such case can look like:
    const TestModule& obj;
    if(obj.
    get_Frequency() == TestModule::Frequency::Low) { ... }
    else if(obj.
    get_Frequency() == TestModule::Frequency::High) { ... }
    else
    if(obj.get_Frequency() == TestModule::Frequency::Default) { ... }
    else ...
    instead of:
    const TestModule& obj;
    if(obj.get_Frequency() == "low") { ... }
    else if(obj.get_Frequency() == "High") { ... }
    else if(obj.get_Frequency() == "default") { ... }
    else ...
    This allows to write more safe code from the following points of view:
    Also, this simplifies possible future replacement of strings used for enumeration by more appropriate C++ enum type (using new code no changes from user side will be need at all).

    The valid values are generated as const strings put inside wrapper type (struct) with name of attribute. To avoid clushes with C++ keywords and to satisfy variable name syntax requrements, the following rules are applied:
    Example of generated code for TestModule::frequency enum attribute with range="default,low,High,1KHz,5KHz":
     /**
      *  Valid enumeration values for get and set "Frequency" attribute methods.
      */

    struct Frequency {
      static const std::string Default;
      static const std::string Low;
      static const std::string High;
      static const std::string _1KHz;
     
    static const std::string _5KHz;
    };

    Java Changes

    The generated methods of DAL classes are synchronized for multi-thread safety.




    gnam

    Changes from tdaq-01-09-01 to tdaq-02-00-00

    New configuration schema
    1. The gnam schema has been changed following the new emon APIs. The GnamSampler class has been deleted, since the same configuration information is now prodided by the SamplingParameters class defined by emon. Thereby, the GnamApplication class now requires a SamplingParameters instances in the SamplerSpecification relationship. Moreover the SamplerBufferSize attribute has been deleted, since the information is carried by the SamplingParameters class.
    GnamHisto changes
    1. Added a new wrapper method:

    igui

    Introduction

    The IGUI (Integrated Graphical User Interface) web page is at:
       http://atlas-onlsw.web.cern.ch/Atlas-onlsw/components/igui/welcome.html

    General changes  


    Bug fixes

    Igui

    This is the new IGUI implementation. The current version has limited functionalities but can be used to control a running partition (it is not possible yet to use it during the partition start up).

    It includes:
    Recovery commands may be sent to controllers selecting one of them and using the contextual menu appearing when the right mouse button is clicked.

    Database committing and reloading is handled centrally (via the Commit & Reload button placed in the tool-bar at the top of the main frame) and all the panels do not need anymore to implement such an action using custom buttons.

    The IguiPanel interface has been modified to meet the changes in the Igui core design and user panel developers can find any needed information in the javadoc documentation:

    $TDAQ_INST_PATH/share/doc/Igui/javadoc/Igui/index.html.

    To start the new Igui the following script can be used:
    Igui_start -p <partition> -d <database> <vm properties>


    ispy

    The ispy package is a Python interface to IPC, the Information Service (IS) and the Online Histogramming Service (OH). It allows easy access from a scripting language to all the information in IS and OH.

    To use the package, simply start the tdaq_python interpreter:

        % tdaq_python
        Python 2.5 (r25:51908, Oct 18 2007, 16:26:11)
        [GCC 3.4.6 20060404 (Red Hat 3.4.6-8)] on linux2
        Type "help", "copyright", "credits" or "license" for more information.
        >>> import ipc
        >>> import ispy
        >>> import oh
    

    The following classes from IS are available in Python:

    The following minimal script shows how to use them in a simple way:

    #!/usr/bin/env tdaq_python
    
    part_name = 'rhauser_test'
    
    import sys
    from ipc import IPCPartition
    from ispy import *
    
    p = IPCPartition(part_name)
    
    if not p.isValid():
        print "Partition:",p.name(),"is not valid"
        sys.exit(1)
    
    x = ISObject(p, 'DF.L2SV-1', 'L2SV')
    print "Exists: ",x.isExist()
    
    x.checkout()
    print x
    
    sum = ISObject(p,'DF.L2SV-Summary', 'L2SV')
    sum.LVL2_events = x.LVL2_events
    sum.checkin(False)
    
    

    Several utility classes are provide to make it easier to read arbitrary information from IS. See the examples directory for how to use them.

    The ispygui.py is a simple application using Tcl/Tk to give an overview of the dataflow part of a running partition.

    The callback routines can now be used in separate python threads, the actual code is protected and deals nicely with the interpreter.

    The following classes are available from the OH package. Note that many methods are pythonized in such a way that the user does not have to use a method that is specific for TH1, TGraph etc.


    ls

    Introduction

    This package substitues the obsolete logService. A new requirement whereby database technologies other than ORACLE had to be dropped came in around spiring 2007. This new requirement meant the re-writing of the logService package, which was higly dependent on MySQL. This opportunity was taken to refactorize the code, especially the log manager, which was never very user friendly. The database access in C++ is done using the CORAL interface, which hides the underlying technology. For the log manager, JAVA was the language chosen, since it brings in the flexibility requiered to make this tool more intuitive. The resulting java application can be run from the console, or remotely using the Java Web Start technology.

    Known issues/bugs

    In the Log Manager, when righ-clicking on the Messages Table (right hand side panel) or Partition Table (left hand side panel) a Refresh button pops up. This is used to update the current view of partitions and messages, respectively. Refreshing these objects only works if one right-clicks the mouse without moving it; that is, press and release without changing the X and Y pointer of the mouse. This may be a problem with Java. In the meantime, one can also perform a Refresh via the options in the top menu File: 'Refresh tree' and 'Refresh table'.

    To be implemented

    Add an option to display statistics, internal and from IS.

    Changes from previous release

    The layout of the Log Manager has slightly changed. There are two distinctive search criterias now. One related to the Log Message table (the same as in the previous release) and a new search associated to the Partition Tree (left panel). This new search allows users to find a node, be it a Partition or Partition and User, among the hundreds that form the left hand side Tree panel. The Log Manager expands this node and makes it visible, thus facilitaing the navigation through this tree. One can also enter a run number - the Partition and User are not needed but they can also be specified - which will expand the Parition.User node and display the corresponding Log Messages in the table.

    Migrate to the deSEALed version of CORAL.

    Example applications

    None exist at the moment.

    Applications

    Log Manager

    Usage: log_manager 
    Instruction on how to use to be written.
    The Log Manager can also be run using Java Web Start technology from the link:
    
    
    If possible, it is preferrable to launch this tool as a Java application rather than from the link above.

    lsReceiver

    Description: This application subscribes to the MRS service to receive and log on a database messages produced by TDAQ applications.
    Usage: lsReceiver [-p partition-name] [-u user-name] [-n IS-server-name] [-s threshold-size] -c connect-string [-S subscribe-expression]
    Options/Arguments:
            -p partitionName     Partition name
            -u userName          User name
            -n ISserverName      Name of the Information Service to publish the message rate into.
            -c connectionString  Database connection string. 

    Test units

    logTest

    Description: Test binary for the Log Receiver application.
    Usage: logTest -c connect-string [-p partition-name] [-l complexity-level]
    Options/Arguments:
            -p partitionName      Partition name
            -l level           Level of Complexity of the test [1: open/close - 2: tests the Log Service Infrastructure].
            -c connectionString  Database connection string. 

    Utilities

    logSelect

    Description: Application to retrieve log messages for a given partition according to the search criteria specified. By default, messages are dumped on std::cout.
    Usage: logSelect -c connect-string -p partition-name [-i message-name] [-m machine-name] 
                     [-a application-name] [-l time-low] [-u time-up] [-s severity]  
                     [-x text] [-r parameters] [-d order-list] [-e max-rows] [-f offset-row]
    Options/Arguments:
            -p partitionName      Partition name
            -c connectionString   Database connection string. 
            -i message-name       Message name or ID.
            -m machine-name       Machine name where the message was issued.
            -a application-name   Application name where the message was issued.
            -l time-low           Lower time threshold.
            -u time-up            Upper time threshold.
            -s severity           Message severity:
                                     1 - FATAL
                                     2 - ERROR
                                     3 - WARNING
                                     4 - DEBUG
                                     5 - INFORMATION
                                     6 - SUCCESS
            -x text               Text in the message body.
            -r parameters         Message parameters.
            -d order-list         Parameter to sort the messages by.
            -e max-rows           Maximum number of rows to retrieve from the database; 100 by default. If 0, all entries are retrieved.
            -f offset-row         Offset in the table to retrieve the messages from.

    logDelete

    Description: Application to remove log messages for a given partition according to the search criteria specified.
    Usage: logDelete -c connect-string -p partition-name [-i message-name] [-m machine-name] 
                     [-a application-name] [-l time-low] [-u time-up] [-s severity]  
                     [-x text] [-r parameters]
    Options/Arguments:
            -p partitionName      Partition name
            -c connectionString   Database connection string. 
            -i message-name       Message name or ID.
            -m machine-name       Machine name where the message was issued.
            -a application-name   Application name where the message was issued.
            -l time-low           Lower time threshold.
            -u time-up            Upper time threshold.
            -s severity           Message severity:
                                     1 - FATAL
                                     2 - ERROR
                                     3 - WARNING
                                     4 - DEBUG
                                     5 - INFORMATION
                                     6 - SUCCESS
            -x text               Text in the message body.
            -r parameters         Message parameters.

    logGetPartitionNames

    Description: Application to retrieve the list of partition names.
    Usage: logGetPartitionNames -c connectionString 
    Options/Arguments:
            -c connectionString  Database connection string. 

    logCleanDatabase

    Description: Application to clean the database by removing all the existing tables.
    Usage: logCleanDatabase -c connectionString 
    Options/Arguments:
            -c connectionString  Database connection string. 


    mda_browser

    General features

    This is new package which provides single binary called mda_browser. This applications can be used to browser archived histograms. The GUI is based on the one of the OH Display and the way of interacting with it is quite straightforward. Just run it and browse the tree on the left side which consists from 4 main layers:
    Each type of items has different icon so they can be easily distinguishable. For any item which is selected in the tree all available histograms appear in the right hand panel. Double clicking on a histogram will result in an attempt to display it. Here there are several possibilities which are automatically checked by the browser:
    1. If this histogram is available in the file which has already been downloaded from CASTOR then it will be immediately displayed
    2. Otherwise if the browser is running in ATCN (on a Point 1 machine) then it will try to get this histogram from the COCA cache directory
    3. If all of the above failed then a user will see a pop-up message asking whether he/she wants to download the necessary file from CASTOR. If the "Yes" button is pressed then download is started in the background and it's possible to continue browsing the archive content. As soon as download is finished the new ROOT Canvas window will be created with the requested histogram. In order to monitor the status of the CASTOR files download one can switch on the Download Monitor window by pressing the last button in the browser's tool bar.

    MonGatherer

    Changed the schema.

    The parameters of type string 'SumAlgorithm' and 'SumOrAverage' were substituted with enum 'SummingMode' and 'ResultContent' respectively. For the range of parameters see the schema.This mainly concerns the gatherer, but since the MonGatherer reads parameters from the gatherer, I'm documenting this change here.

    Removed delay between updating of histogramming and updating the sums collected by the Gatherer.

    In tdaq-01-09-01 the sums were published when one of histograms is updated. This caused a delay. This is fixed by keeping the total number of providers in memory and publishing the sums only when the current number of providers equal one, kept in memory.

    Synchromization of different tiers of the gatherers at STOP transition.

    After STOP, the MonGatherer exits only after publish. If no publish, it exits after the timeout.

    AdvancedMerge for 1D labeled histograms.

    As in root, only 1D and TProfile are implemented. If a new labels occurs, it is added to the list of labels.
    
    

    mrs

    General changes

  • A new application (mrs_mirror) was added. mrs_mirror is a MRS receiver sending all received messages to the mirror partition. This application allows to see the MRS messages in the mirror partition used for remote monitoring.
  •              Options/Arguments:
  • New message suppression control on private MRS servers (workers) is implemented. If suppression is turned on, the time from last appearance of suppressed message is measured. If measured time interval is larger then limit (parameter "-d", by default 30 s), the suppression for given similar messages is reset and published information about number of suppressed messages.
  • For log information the ERS_LOG macro is used.
  • The functions MRSCallbackMsg::getERSTime() and MRSCallbackMsg::getERSPackageName() are NOT producing error message in case of usage on message without ERS content (i.e. message created by MRS API). No change in user code is required.

  • oks

    C++ API Changes

    Use new integer types from <stdint.h> to support 64-bits platform as shown in the following table:

    OKS Type
    Old C++ Type
    New C++ Type
     s8 (8-bits signed integer)
    unsigned char
    uint8_t
     u8 (8-bits unsigned integer)
    signed char
    int8_t
    s16 (16-bits signed integer)
    unsigned short
    uint16_t
    u16 (16-bits unsigned integer)
    signed short
    int16_t
    s32 (32-bits signed integer)
    unsigned long
    uint32_t
    u32 (32-bits unsigned integer)
    signed long
    int32_t

    OKS Server

    On Point-1 access to database repository will be controoled by the OKS Server. Read more about it on the TWiki page.

    OKS Data Editor Changes


    oks2coral



    oksconfig



    OMD

    Changes


    OnlineRecovery

    Introduction

    The OnlineRecovery package is responsible for all recovery mechanisms from the RunControl point of view. It consists of two main parts. The first is a plug-in to the new RunController and will reproduce all recovery related behavior seen in the old RunControl (such as restart, ignore, etc). In addition it will include some more advanced recovery mechanism and also better statistics. The second part is a stand-alone server which will handle errors with a system wide impact and will also receive information from the RunController plug-ins.

    RunController expert system

    This is integrated as a plug-in to the new RunController. It receives updates directly from the controller and decides what to do in error-cases (such as ignoring, restarting, etc). It implements the ExpertSystemInterface defined in the RunController package.

    Server

    The OnlineRecovery server is responsible for handling all system wide errors. Currently the automatic disabling of RODs and the notification to the corresponding ROS has been enabled.

    Core functionality

    The OnlineRecovery takes the decision what to do in case of applications dying, going into the error state, failed test, etc. Normally the action taken will be according to the configuration settings for the specific application (IF-FAILS, IF-DIES, IF-ERROR) with the following exceptions:
    A detailed description of core and specialized OnlineRecovery behavior can be found at on the cc webpage

    Expert system server

    Currently the main responsibility of the expert system server is dealing with stopless recovery. This is done whenever a ROD is reported as faulty by a RODBusyModule. The corresponding InputChannels and their ROS(s) are found. The ROD and the channels are them automatically disabled. The information about disabled channels are stored in COOL. The behavior of the recovery can be dynamically configured with a combination of three different settings: These settings can be modified either using the error_viewer application described below, or using the dedicated buttons in the DAQPanel (P1 only).

    Changes since tdaq-01-09-01

    Known bugs

    Utilities

    A graphical utility that allows a complete view of all errors in the system is available. It is possible to select partition and expert system server to retrieve the list of errors from.
    error_viewer 

    PmgGui

    Introduction
    The PmgGui package includes GUI interfaces to the ProcessManager system.

    Changes wrt tdaq-01-09-01

    PmgISPanel

    ProcessManager

    Changes since tdaq-01-09-01

    Server
    Helpers
              -W [ --Wait ]                            Wheter to wait for the process to exit (defau
                                                                lt is FALSE). If TRUE then the process err
                                                                and out logs will be printed on the terminal
              -T [ --WaitTimeout ] arg (=0)   Time to wait for the process to start or exit

             



    PTIO

    Introduction

    Library providing event input interface for PT. There are 3 available implementations that allows the PT to get events from EFD, emon or file.

    Changes since tdaq-01-09-01


    rcc_time_stamp

    Introduction

    Please contact markus.joos@cern.ch if you need the documentation for this package.

    General changes since release tdaq-01-08-00

    Changes in API

    None.

    Known bugs, problems and limitations

    Currently none.



    RCDLtp

    Introduction

    This package contains low-level software for the Local Trigger Processor. Please see https://edms.cern.ch/document/584060/1 for further details.

    General changes

    No major changes.

    RCDLtpi

    Introduction

    This package contains low-level software for the Local Trigger Processor. Please see https://edms.cern.ch/document/584060/1 for further details.

    General changes

    No major changes

    RCDLtpiModule

    Introduction

    This package allows the LTPi to be configured in the standard way. More details can be found on TWiki: LTPi user guide

    General changes


    RCDLTPModule

    Introduction

    This package contains RCD Software for the Local Trigger Processor. Please see ATLAS Timing Signal Distribution and https://edms.cern.ch/document/588024/1 for further details.

    General changes


    rdbconfig



    rn



    RODBusy

    Introduction

    This package contains C++ version of low-level software for the RODBusy module based on RCDVme.

    General changes

    No major changes

    RODBusyModule

    Introduction

    This package contains RCD Software for the RODBusyModule. Please see for further details.

    General changes



    ROSCore

    Introduction

    The ROSCore package is the heart of a ROS/RCD implementation. It includes the IOManager class that some people like to use as the name of the whole application.

    Changes since tdaq-01-09-01



    ROSEventFragment

    General changes since release tdaq-01-09-00

    Changes in API

    Known bugs, problems and limitations



    ROSInterruptScheduler

    Introduction

      Contact markus.joos@cern.ch if you need documentation for this package.

    Changes with respect to release tdaq-01-09-00

     Known bugs, problems and limitations

    Currently none.



    ROSIO

    Changes since tdaq-01-09-00


    ROSModules

    Introduction

      The package is described in EDMS_IOM and EDMS_RCD.

    General changes since release TDAQ-01-09-00

     Known bugs, problems and limitations

    Currently none.



    ROSRCDdrivers

    Introduction

    The documentation for this package is kept in EDMS.

    General changes since release tdaq-01-09-00

    Changes in API

    None.

    Known bugs, problems and limitations

    Currently none.



    ROSRobin

    Introduction

    If you need documentation for this package please contact markus.joos@cern.ch

    General changes since release tdaq-01-09-00

    Changes in API

    Known bugs, problems and limitations

    Currently none.



    RunController

    Introduction

    This package contains the Run Control for the TDAQ. It provides two C++ interfaces which allow the user to introduce case-specific actions carried out when a command is received: UserRoutines.h and Controllable.h. The two interfaces have completely different purposes!
    A developer shall extend from UserRoutines.h only if he is customizing a controller at an intermediate level of the run control tree (i.e. with child applications). He can create UserRoutines objects to be called at the corresponding state-transitions and commands before and/or after they are processed by the Controller itself (i.e. transmitted to the children).

    A developer of leaf applications (run control applications without children) shall only extend the Controllable.h interface. He creates a Controllable object to be called at the corresponding state-transitions and commands.

    Changes from previous release

    The major change with respect to tdaq-01-09-01 sees the rc_setup as a standalone binary completly decoupled from the RunController framework. This makes for a more robust application that can better recover or output information in case of errors. It should now be easier to understand and maintain the code.

    Also important is the migration of the initial PMG and HW testing from the Online Recovery to the RunController. It is now the latter that drives this initial testing procedure and reports to the Online Recovery accordingly.

    Other changes refer to bug fixes.

    Migration to the new Run Controller

    In oder to migrate from the old Run Control to the new Run Controller interface, users must follow these steps:
    1. In the requirements file (only applicable to TDAQ packages), remove the statement 'use ClipsServer' and/or 'use RunControl' and add instead 'use RunController'
    2. The namespace for all run control classes is now daq::rc::, while it was a mixture of RC::, CS:: and rc:: in the past.
    3. The old Run Control headers must be replaced as follows:
      1. RunControl/Controllable.h --> RunController/Controllable.h
      2. RunControl/ItemCtrl.h --> RunController/ItemCtrl.h
      3. rc/UserRoutines.h --> RunController/UserRoutines.h
      4. rc/Controller.h --> RunController/Controller.h
      5. RunControl/UserExceptions.h --> RunController/UserExceptions.h
    4. In the databases, the Binary rc_empty_controller must be replaced by run_controller. The script RCUtils: old2newRC.sh is available to perform this action automatically.
    5. The Constructor of the Controller class has changed. The new constructor needs the following parameters:
      Controller (const std::string & partitionName, const std::string & segmentName, const std::string & parentName, const std::string &expertSystemRules, UserRoutines * preUserRoutines, const std::string & postUserRoutinesLib)
    6. The API of the UserRoutines class has changed:
      1. dropped controller method
      2. dropped send method
      3. dropped raiseError method (and ers::fatal message automatically causes the controller to go into ERROR state)
      4. mout method dropped
      5. mrsReceiver method dropped
      6. noAction method dropped
      7. resetAction dropped
      8. clearError replaced by clearAction
      9. runParameter and updateRunParameter methods replaced by getRunParameter.

    Dealing with substates

    Substates can be introduced into an intermediate Controller by extending the UserRoutines class and passing it to the Controller as a plug-in. More on this below. Substates are performed when the FSM transition they are associated to is 'finished'. Before the Controller transitions to this FSM state it performs all the substates (there can one on or more) by broadcasting them to the children and waiting for these to acknowledge the termination of a given state. Only when all the substates have been perfromed, does the Controller tranistion to the original FSM state.
    For leaf applications substates are dealt with as before, as special types of user commands.

    Operation

    The Root Controller is now in charge of doing the bootsrapping of the system. When launching the setup_daq script, rc_setup is invoked to start the pmsgerver, IPC server, RDB server and the IS servers: Setup and RunCtrl. Once these applications are running, rc_setup exits, and the setup_daq script launches the actual Root Controller. This two-step operation is necessary since the Root Controller requires of the above mentioned applications to start running the remaining Online Segment infrastructure applications. The main reason in fact is that rc_setup reads the database configuration from OKS (since there is not RDB server running). The Root Controller must however access and subscribe to the database via RDB, and logically can only do so if this service is running beforehand. The Setup and RunCtrl IS servers are required to publish the status, state, test result, etc. of the applications being controlled by the Root Controller and any other controller. This information is read by the IGUI to update the inforamtion displayed to the user. With this new philosphy, the setup server has been removed completly from the TDAQ system.

    Each controller is in charge of starting, stopping, distributing commands to and reacting to errors from its children (other controllers or applications). If a Controller dies and is restarted, it goes into the state of its children (if they are all in a consistent state); if there are no children, it goes through all required state transitions in order to reach the state of the parent. This mimics the behaviour of applications that extend from the Controllable interface.

    Errors

    The RunController hardly takes any decisions when errors occurred. Instead, the corresponding error are forwarded to the Expert System (Online Recovery) which takes a decision accordingly. This decision currently depends on the settings defined on the configuration database. Three fields are available to the user to define the behaviour: IfFails, IfDies, IfError. Note on restart: If the option restart is selected for any of these fields and the restart fails repeatedly, it will cause an error instead.

    Timeouts

    There are currently two different timeouts:
    Action timeout - used for transition and standard commands (RESTART, STOP, etc). For a controller the actual transition timeout used is its action-timout plus the highest action timeout among its children.
    Short timeout - Used for killing applications.
    Init timeout - After an application is started by a controller, the former must send a pmg_sync to notify that it has started correctly. Not doing this within the init timeout, will cause an error on the controller side. This implies that the init timeout should always be LESS than the ACTION timeout). This synchronization is handled internally for all RunControl applications and should not be done in the user code.

    Substates

    Substates are performed before the Controller transitions to a given FSM state, that is, when all its children have successfully moved to that state. Before the Controller actually transitions, it propagates the user-defined substates to its children. When all these perform the action associated to the substate, the Controller will either propagate the next substate if any, or terminate the original FSM transition.

    Substating is possible by extending the UserRoutines class. The user must generate a library and pass it to the Controller via the command line argument -u. This facilitates the development of the substates logic as there is no need to recompile the controller code and allows the loading of any substate plugin by simply changing the Parameters field of the Controller in the configuration database.

    The example RunController/examples/ExampleSubstate.cc can be taken as a starting point. In order to define substates for, let's say, transition Configure, the user must extend daq::rc::UserRoutines::configureAction as follows:

      bool MySubstates::configureAction()
    {
    if (true == currentSubstate_.empty()) {
    currentSubstate_ = "configureSubstate_1";
    }
    else if (0 == currentSubstate_.compare("configureSubstate_1")) {
    currentSubstate_ = "configureSubstate_2";
    }
    else {
    currentSubstate_ = "";
    }

    doSubstate(currentSubstate_);

    return true;
    }

    In this example MySubstates inherits from daq::rc::UserRoutines. The user must keep track of which substate is currently being handled and the order of substates if there are more than one. In the example above, we use the string currentSubstate_. The method daq::rc::UserRoutines::doSubstate(const std::string& substate) is the interface to the Run Controller to pass the next substate name. When the last substate is processed, the user must call doSubstate("") with an empty string. This informs the Controller that substating is finished.

    Known issues/bugs

    None

    To be implemented

    The Controller that launches the initial applications in the rc_setup binary is reactive to the Online Recovery. In other words, it waits for the latter to 'tell it' what to do: start, test, exit, etc. However, the Expert System should be reactive and not active. Therefore, it should be the controller in the rc_setup the one that drives this initial bootstrapping, updating the Online Recovery as necessary.

    Example applications

    None exist at the moment.

    Applications

    rc_setup

    Description: Binary to start the basic infrastructure needed by the Root Controller.
    Options/Arguments:
            -p partition      Name of the IPC partition (default $TDAQ_PARTITION)
            -d database       Name of the database (TDAQ_DB)
            -s segmentname    Name of the segment
            -n controller     Name of the controller
            -R expertSystem   Expert System library name (without the 'lib' prefix or the '.so' extension, followed by the arguments if any.

    run_controller

    Description: The RunController is a general purpose control entity for the ATLAS Online infrastructure.
    Options/Arguments:
            -p partition      Name of the IPC partition (default $TDAQ_PARTITION)
            -P parentname     Name of the parent
            -s segmentname    Name of the segment
            -n controller     Name of the controller
            -u substates      Library with the substates definition. The library name has to be given without the 'lib' prefix nor the '.so' extension.
            -R expertSystem   Expert System library name (without the 'lib' prefix or the '.so' extension, followed by the arguments if any.

    rc_test_controller

    Description: Test unit for rc_controller binaries.
    Options/Arguments:
            -p partition    IPC partition name (default $TDAQ_PARTITION)
            -n controller   Controller names

    SFI

    Changes since tdaq-01-09-03


       



    SFO

    Changes since tdaq-01-09-03

    SFO-Tier0 handshake DB
  • The support a new, optional, table has been added. The "overlap" table will hold end-of-run counters per stream as well as stream overlaps.
  • Database connection has been ported to the new "non-Seal" Coral version. In order to enable Coral debugging one should set the environmental variable SFO_DEBUG_CORAL
  • SFO Application

       

    tmgr

    Changes since tdaq-01-09-xx

    Fixes and improvements
    Fixed issue with non-displaying output of a test, retrieved via process manager API.
    New features
    Core schema change: OnlineSegment has a new relationship "TestHosts" to a ComputerSet object. This computer set may contain Computers which will be randomly selected for launching tests (for those tests which have no explicit host defined). This mechanism replaces finding this set by a hardcoded ID, as it was in previous implementation.

    Partition default host is not considered anymore as default host to start tests which have no explicitly host defined. Now, only local host is counted (unless "TestHosts" is

    Known bugs, problems and limitations

    Changes forseen for next major release


    training

    Introduction

    A new version of the Training Manual (Version 4.0) is available at:
        $TDAQ_INST_PATH/share/doc/training/training_doc.pdf

    General changes

    To be done



    TriP

    General changes in tdaq-02-00-00

    Changes for the user

    To be implemented

    
    

    TTCviModule

    Introduction

    This package contains RCD Software for the TTCvi Module. Please see for further details.

    General changes



    vme_rcc

    Introduction

    The documentation for this package is kept in EDMS.

    General changes since release tdaq-01-09-00:

    Changes in API:

    None.

    Known bugs, problems and limitations:

    Currently none.



    wmi

    Introduction

    Web Monitoring Interface, one of the software components of the TDAQ Software sub-system of the ATLAS TDAQ, is intended to give to remote users a view of the status of the data acquisition system and its sub-systems.

    New features


    Generated: Thu Dec 18 00:34:18 CET 2008 by /afs/cern.ch/atlas/project/tdaq/cmt/adm/bin/do_release_notes (c)