Project

General

Profile

-------------------------------------------

----- Mu2e TDAQ TEST STAND -----

-------------------------------------------

This wiki is organized into two main sections of tips:
  • Subsystem "how to use otsdaq"
  • Expert "helpful tips"

Tracker test beam tips

working directory (also location for RunNNNN.txt files) = /home/mu2etrk/test_stand/ots

startup commands in terminal
  • source setup_ots.sh tracker
  • ots

ots --wiz

Firefox URL look at logfiles in terminal
  • tailconsole
  • taildtc
recompile:
  • mrb b

Subsystems: how to use otsdaq

After the base otsdaq is in place for Mu2e, there are 6 things subsystems should know about otsdaq:
  1. How to startup otsdaq (from the command line)
  2. State Machine (otsdaq icon = "State Machine")
  3. High level-logger (otsdaq icon = "Console")
  4. Database parameters, including subsystem-specific parameters (otsdaq icon = "Configure")
  5. Subsystem front-end interface software (otsdaq icon = "Code editor", if desired)
  6. How to compile otsdaq (from the command line, including your subsystem code)
  7. How to commit your changes to the repository (from the command line, using git)

How to startup otsdaq

Hardware table is [[https://cdcvs.fnal.gov/redmine/projects/mu2e-daq-computing/wiki]]

SYSTEM MU2EUSER BASEMACHINE OTS_MAIN_PORT otsdaq URL "wiz-mode" URL
hwdev (Greg) mu2ehwdev http://mu2edaq14.fnal.gov/ 3055 https://mu2edaq01.fnal.gov:3055/urn:xdaq-application:lid=200 https://mu2edaq01.fnal.gov:3055/urn:xdaq-application:lid=290/Verify?code=fa37
tracker (Vivian) mu2etrk http://mu2edaq11.fnal.gov/ 3065 https://mu2edaq01.fnal.gov:3065/urn:xdaq-application:lid=200 https://mu2edaq01.fnal.gov:3065/urn:xdaq-application:lid=290/Verify?code=fa37
calo (Dariush) mu2ecalo http://mu2edaq11.fnal.gov/ 3025 https://mu2edaq01.fnal.gov:3025/urn:xdaq-application:lid=200 https://mu2edaq01.fnal.gov:3025/urn:xdaq-application:lid=290/Verify?code=fa37
stm mu2estm http://mu2edaq11.fnal.gov/ 3035 https://mu2edaq01.fnal.gov:3035/urn:xdaq-application:lid=200 https://mu2edaq01.fnal.gov:3035/urn:xdaq-application:lid=290/Verify?code=fa37
trigger (Giani) mu2etrigger http://mu2edaq11.fnal.gov/ 3045 https://mu2edaq01.fnal.gov:3045/urn:xdaq-application:lid=200 https://mu2edaq01.fnal.gov:3045/urn:xdaq-application:lid=290/Verify?code=fa37
tem (Andrei) mu2etem http://mu2edaq11.fnal.gov/ 4045 http://localhost:4045/urn:xdaq-application:lid=200 http://localhost:4045/urn:xdaq-application:lid=290/Verify?code=fa37
crv (Glenn) mu2ecrv http://mu2edaq12.fnal.gov/ 3085 https://mu2edaq01.fnal.gov:3085/urn:xdaq-application:lid=200 https://mu2edaq01.fnal.gov:3085/urn:xdaq-application:lid=290/Verify?code=fa37
dqmcalo (Simona) mu2etrigger http://mu2edaq11.fnal.gov/ 3095 https://mu2edaq01.fnal.gov:3095/urn:xdaq-application:lid=200 https://mu2edaq01.fnal.gov:3095/urn:xdaq-application:lid=290/Verify?code=fa37
sync (Greg) mu2edaq http://mu2edaq06.fnal.gov/ 2015 https://mu2edaq01.fnal.gov/urn:xdaq-application:lid=200 https://mu2edaq01.fnal.gov:3015/urn:xdaq-application:lid=290/Verify?code=fa37
dcs (Antonio) mu2edcs http://mu2edaq11.fnal.gov/ 5019 https://mu2edaq01.fnal.gov:5019/urn:xdaq-application:lid=200 https://mu2edaq01.fnal.gov:5019/urn:xdaq-application:lid=290/Verify?code=fa37
shift (Antonio) mu2eshift http://mu2edaq12.fnal.gov/ 3075 https://mu2edaq01.fnal.gov:3075/urn:xdaq-application:lid=200 https://mu2edaq01.fnal.gov:3075/urn:xdaq-application:lid=290/Verify?code=fa37
shift1 (Antonio) mu2eshift http://mu2edaq12.fnal.gov/ 4015 http://localhost:4015/urn:xdaq-application:lid=200 http://localhost:4015/urn:xdaq-application:lid=290/Verify?code=fa37
shift2 (Stefan, Oliver) mu2eshift http://mu2edaq11.fnal.gov/ 4025 http://localhost:4025/urn:xdaq-application:lid=200 http://localhost:4025/urn:xdaq-application:lid=290/Verify?code=fa37
  • Note if ots is running in wiz mode then the regular ots URL will produce a "HTTP Request Error" message, and vice versa.
Command 1: from your local machine, initialize kerberos I find it useful to have at least 3 windows open: one to compile code, one to (re-)start otsdaq, one to tail logfiles
  • Window 1: compile code (mrb) from mu2edaq13
    • ssh -K -X -Y MU2EUSER@mu2edaq01 (this is the gateway to the private network)
    • ssh mu2edaq13
    • cd ~/test_stand/ots
    • source setup_ots.sh <SYSTEM>
  • Window 2: startup ots from BASEMACHINE
    • ssh -K -X -Y MU2EUSER@mu2edaq01 (this is the gateway to the private network)
    • ssh BASEMACHINE
    • cd ~/test_stand/ots
    • source setup_ots.sh <SYSTEM>
    • ots (starts otsdaq)
      • if you have a distributed setup: srcs/otsdaq_mu2e/tools/distributed_setup_ots.sh <SYSTEM>
  • Window 3: tail logfiles of CFO, DTC0, and/or DTC1
    • ssh -K -X -Y MU2EUSER@mu2edaq01 (this is the gateway to the private network)
    • ssh BASEMACHINE
    • tailcfo (to tail CFO logfile)
    • taildtc0 (to tail DTC0 logfile)
    • taildtc1 (to tail DTC1 logfile)

Open chrome or firefox on your local machine, open the otsdaq URL in the table above.

With

ssh  -KXY -L OTS_MAIN_PORT:BASEMACHINE:OTS_MAIN_PORT MU2EUSER@mu2edaq01.fnal.gov

it is possible to open a port-forwarding tunnel. Then in the browser on your local machine you can connect to ots via the URL
 http://localhost:OTS_MAIN_PORT/urn:xdaq-application:lid=200 

(this has been tested to work with the shift1 and shift2 SYSTEMs)
 

Note: the logfiles and access ports rely on the following assumptions on the database in your system
device "Port"
gateway ${OTS_MAIN_PORT}
CFO0 ${OTS_MAIN_PORT}+1
DTC0 ${OTS_MAIN_PORT}+2
DTC1 ${OTS_MAIN_PORT}+3
CAPTAN ${OTS_MAIN_PORT}

State Machine: "State Machine"

  • Go to icon "State Machine"
  • Click on "Parameter setup" (lower left hand corner), select defaultSystemConfig
  • click "Initialize"
  • Final State = "Halted"

Action: starts XDAQ processes (the underlying software used to communicate between machines)

What happens when you click "Configure"?

  • Starting point = "Halted"
  • click "Configure"
  • Final State = "Configured"

Action: instantiate software classes associated with each hardware device (e.g., CFO, DTC, subsystem ROCs), then call the ::Configure() method in the order in which the ConfigurePriority is set.

If ::configure() calls "IndicateIterationWork();", otsdaq will loop through all the devices again in the ConfigurePriority order, calling ::configure() for the devices which have indicated they still need to be touched. For the sync demo, we have the following...

  1. loop iteration 0
    • CFO: disable event start characters, disable SERDES Tx and RX, turn off event windows, turn off 40 MHz markers
    • DTC: soft reset FPGA
  2. loop iteration 1
    • CFO: set crystal/clock to 200 MHz
    • DTC: set crystal/clock to 200 MHz
  3. loop iteration 2
    • CFO:
    • DTC: configure Jitter Attenuator
  4. loop iteration 3
    • CFO: reset SERDES PLLs, reset SERDEX Tx
    • DTC:
  5. loop iteration 4
    • CFO:
    • DTC0: wait for links to lock in CFO and enabled ROCs (firmware should reset these automatically, first Tx, then Rx, upon detection of lost lock of Rx CFO in iteration 3)
    • DTC1: wait for links to lock in CFO and enabled ROCs (firmware should reset these automatically, first Tx, then Rx, upon detection of lost lock of clock Rx, above)
  6. loop iteration 5
    • CFO:
    • DTC: enable markers to all ROC links, enable Tx and Rx to all ROC links, set control register (0x9000) to 0
    • ROC: Reset DCS FIFOs (register 0), setup to align links upon receipt of characters (register 22), write/readback event window offset
  7. loop iteration 6
    • CFO: reset SERDES Rx; enable event window start characters, enable SERDES Tx and Rx, set Event Window interval time (in 200 MHz units - 5 ns), set 40 MHz marker interval time (in 40 MHz units - 25 ns)
    • All: report link status when "Configured"

What happens when you click "Start"? Perform loopback measurement

  • Click "Start"

Final output = average value of distributions for each ROC

The order of ROC loopback is:
  • CFOLink0, DTC0, ROC0
  • CFOLink0, DTC0, ROC1
  • ...
  • CFOLink0, DTC0, ROCN
  • CFOLink0, DTC1, ROC0
  • CFOLink0, DTC1, ROC1
  • ...
  • CFOLink0, DTCM, ROCN
  • CFOLink1, DTC1, ROC0
  • CFOLink1, DTC1, ROC1
  • ...

In the code, for each loopback step, it uses startPriority to first setup all DTCs in a chain to communicate to the specific ROC, then actually do the loopback with the CFO. Uses configuration parameter DTC:location_in_chain.

For each DTC, it either...
  • IF selecting a ROC on this DTC, write to 0x9100 -> 0x00000000. IF not doing loopback on this DTC, pass the loopback signal through: write to 0x9100 ->0x10000000
  • Select a ROC to loopback by writing to 0x9114 -> 0x00004040 | (0x101 << activeROC) [enables TX and Rx to CFO (bit 6) and appropriate ROC]
After having configured all the DTCs, on the CFO it perform the following sequence "NumberOfLoopbacks" times to build a histogram of delay measurements
  • Write 0x9380 -> 0x00000000 to take it out of delay measurement mode
  • Write 0x9114 -> 0x00000000 to disable tx and rx data
  • Write 0x9114 -> (0x00000101 << linkToLoopback) to enable tx and rx for the specific linkToLoopback
  • Write 0x9380 -> (0x00000100 << linkToLoopback) to put linkToLoopback into "delay measurement mode"
  • Write 0x9380 -> (0x00000101 << linkToLoopback) to begin delay measurement
  • wait 2 usec
  • Read delay value (in 200 MHz cycles) at 0x9360

What happens when you click "Stop"? Pulse CAPTAN and read timestamps of data

This subsection needs finishing....

Configure the system, then use Macro Maker to read and write registers

  • CAPTAN (external data source)
    • 0x1001 Data count (number of pulses to send)
    • 0x1002 Data period: spacing = [(N+1) * 64] ns steps

First write 0x1002, then 0x1001 to send. Writing 0x1002 stops sending pulses.

High-level logger: "Console"

  • Go to icon "Console"
  • High level logging (i.e., target audience = shift crew) is done in otsdaq by using the function
     __MCOUT_INFO__("text to be inserted, with " << value << __E__); 

Database parameters (including subsystem-specific parameters): otsdaq icon = "Configure"

Databases structure in otsdaq_mu2e/databases/filesystemdb/test_db

Data (in databases) in otsdaq_mu2e/Data/

The parameters described below give the setup as follows:
  • One "Chain" defined by CFO link 0: CFO (mounted in mu2edaq04) -> DTC0 (in mu2edaq05) -> DTC1 (in mu2edaq06)
  • One or two ROCs attached to DTC0 or DTC1
  • One CAPTAN to send synchronous data to ROCs
  • Gateway application (i.e., the GUI) running on mu2edaq06 --> this means access the otsdaq top-level GUI with browser at: https://mu2edaq06.fnal.gov:2015/urn:xdaq-application:lid=200/

Context parameters

The following "Context" parameters (software application) are easiest to look at with ActiveContext Tree-View -> XDAQContextConfiguration...

Application configuration parameters
  • Address = IP associated with device (host machine to run application)
  • Port = port associated with Address
  • Status = On/off = ienable / do not enable in software setup
device "address" "Port"
gateway http://mu2edaq06.fnal.gov/ ${OTS_MAIN_PORT} (i.e., 2015)
CFO0 http://mu2edaq04.fnal.gov/ ${OTS_MAIN_PORT}+1 (i.e., 2016)
DTC0 http://mu2edaq05.fnal.gov/ ${OTS_MAIN_PORT}+2 (i.e., 2017)
DTC1 http://mu2edaq14.fnal.gov/ ${OTS_MAIN_PORT}+3 (i.e., 2018)
DTC2 http://mu2edaq07.fnal.gov/ ${OTS_MAIN_PORT}+4 (i.e., 2019)
CAPTAN http://mu2edaq06.fnal.gov/ ${OTS_MAIN_PORT} (i.e., 2019)

State machine parameters

The following state machine parameters are easiest to look at with ActiveContext Tree-View -> XDAQContextConfiguration...

Supervisor configuration parameters
  • "XXXPriority" defines order in which action is performed. Equal numbers = let the program decide.

CFO

  • ConfigurePriority = 1
  • StartPriority = 3
  • StopPriority = 4

DTC0

  • ConfigurePriority = 2
  • StartPriority = 1
  • StopPriority = 2

DTC1

  • ConfigurePriority = 3
  • StartPriority = 2
  • StopPriority = 3

CAPTAN0

  • ConfigurePriority = 0
  • StartPriority = 0
  • StopPriority = 1

Device parameters

The following "Device" parameters are easiest to look at under ActiveConfiguration -> TreeView -> click on double arrow next to the "Interface" Configuration -> go to Table-view

CFO

  • UID = unique identifier (e.g. CFO0)
  • ConfigureClock = 0/1 = don't/do configure the clock at "Configure"
  • DeviceIndex = [0-M] = linux filename associated with PCIExpress card (/dev/mu2eN) to communicate with card

Re: DeviceIndex, the file associated with the PCIExpress card should be set up at bootup -> see root@daq04:crontab -l, should be something like...

  • source /mu2e/ups/setup
  • setup pcie_linux_kernel_module v2_00_02 -qe15:prof
  • source $PCIE_LINUX_KERNEL_MODULE_FQ_DIR/bin/Setup_DTC.sh

DTC

  • UID = unique identifier (e.g. DTC0)
  • ConfigureClock = 0/1 = don't/do configure the clock and jitter attenuator at "Configure"
  • LocationInChain = [0-M] = position of DTC in the chain
  • DeviceIndex = [0-M] = linux filename associated with PCIExpress card (/dev/mu2eN) to communicate with card
  • LinkToROCGroupID = unique text to associate a group of ROCs to this DTC (e.g., DTC0ROCs)
Re: DeviceIndex, the file associated with the PCIExpress card should be set up at bootup -> see root@daq04:crontab -l, should be something like...
  • source /mu2e/ups/setup
  • setup pcie_linux_kernel_module v2_00_02 -qe15:prof
  • source $PCIE_LINUX_KERNEL_MODULE_FQ_DIR/bin/Setup_DTC.sh

ROC

  • UID = unique identifier (e.g. DTC0_ROC0)
  • Status = On/Off = talk to it or not
  • linkID = [0-6] = DTC link ID
  • EventWindowDelayOffset = time delay to start Event Window
  • ROCGroupID = exact name of ROC group in DTC device configuration (e.g., DTC0ROCs)

Mu2eGlobalsTable

  • NumberOfLoopbacks = number of loopback measurements to make at "Start"
  • NumberOfCAPTANPulses = number of CAPTAN pulses to run at "Stop"

Regarding NumberOfLoopbacks: the typical RMS of the loopback measurement is 2.5ns (i.e., spread over two 5ns bins). Thus, we need 100 events to give a measurement with precision of 250ps. (sigma = RMS/sqrt(N))

STM parameters

The following "Subsystem" parameters are easiest to look at under Configure -> LastActivatedConfiguration -> TreeView -> click on double arrow next to the "[SUBSYSTEM]Parameters -> go to Table-view

  • UID = unique identifier (e.g. DTC0_ROC0)

Tracker Parameters

The following "Subsystem" parameters are easiest to look at under Configure -> LastActivatedConfiguration -> TreeView -> click on double arrow next to the "[SUBSYSTEM]Parameters -> go to Table-view

  • UID = unique identifier (e.g. DTC0_ROC0)

Calorimeter Parameters

The following "Subsystem" parameters are easiest to look at under Configure -> LastActivatedConfiguration -> TreeView -> click on double arrow next to the "[SUBSYSTEM]Parameters -> go to Table-view

  • UID = unique identifier (e.g. DTC0_ROC0)

Extinction Monitor Parameters

The following "Subsystem" parameters are easiest to look at under Configure -> LastActivatedConfiguration -> TreeView -> click on double arrow next to the "[SUBSYSTEM]Parameters -> go to Table-view

  • UID = unique identifier (e.g. DTC0_ROC0)

CRV Parameters

The following "Subsystem" parameters are easiest to look at under Configure -> LastActivatedConfiguration -> TreeView -> click on double arrow next to the "[SUBSYSTEM]Parameters -> go to Table-view

  • UID = unique identifier (e.g. DTC0_ROC0)

Subsystem front-end interface software: "Code editor"

Code to communicate with your front end is located at /home/mu2edaq/sync_demo/ots/srcs/otsdaq_mu2e_SUBSYSTEM/otsdaq-mu2e/FEInterfaces/

  • SUBSYSTEMFrontEndInterface.h
  • SUBSYSTEMFrontEndInterface_interface.cc

An example of how to pull parameters from the database into your code is in the stm (Stopping Target Monitor) directory

CFO and DTC example software in: wd=/home/mu2edaq/mu2e-mrb-base/srcs/pcie_linux_kernel_module/dtcInterfaceLib/
  • CFO/DTC read/write registers in wd/my_cntl.cc
  • ROC write/read (via DTC) in wd/dcs_main.cc

How to compile otsdaq, and a little bit on dependencies

As mu2edaq@mu2edaq01
  • cd
  • cd sync_demo/ots/
  • source setup_ots.sh
  • mrb b

For a repository, the dependencies are located in repo_name/ups/

Sometimes you have to do a "full build" (e.g., to recompile after having changed pcie_linux_kernel_module, or changes in /home/mu2edaq/sync_demo/ots/srcs/otsdaq_mu2e/ups/product_deps)
  • mrb z
  • mrbsetenv
  • mrb b
Some commands regarding dependencies...
  • ups active (tells the present versions of the things you depend on)
  • ups list -aK+ mrb (tells the available versions of mrb)
  • unsetup mrb (removes the present version of mrb)
  • setup mrb v3_00_10 (sets the working version of mrb to v3_00_10)
  • unset_all (to get rid of old dependencies)
  • mrb uc (clean up CMakeList files, based on existing directories)
  • add_to_cmake.sh "/home/mu2edaq/sync_demo/ots/srcs" "git_tmp" (add directories to CMakeList files, based on existing directories)

How to update and/or commit code (git commands)

Short description: to update code

  • ssh -K -X -Y MU2EUSER@mu2edaq13
  • cd ~/test_stand/ots
  • source setup_ots.sh SYSTEM
  • UpdateOTS.sh --fetchall (to check the repository situation)
Take a look at the printout from each repository.
  • If it says "Your branch is behind 'origin/develop' by N commits, and can be fast-forwarded.", and "nothing to commit, working tree clean"... then you can proceed to the next step (pullall)
  • If it says "Your branch is behind 'origin/develop' by N commits, and can be fast-forwarded.", and "Changes not staged for commit:"... this means you have some changes in the directory (modifications). To keep your changes (local) by going to the repository (cd srcs/REPO-NAME/),
    • git stash
    • ... go to next step (pullall)
  • UpdateOTS.sh --pullall (to get the new code from the repository)
    • if you stashed your changes, then run "git stash pop"
  • Then, compile code as in https://cdcvs.fnal.gov/redmine/projects/mu2edaq/wiki/Mu2e_sync_demo#How-to-compile-otsdaq-and-a-little-bit-on-dependencies . ... you may need to do the full compile (mrb z; mrbsetenv; mrb b)

Longer description

You have a local working area, containing a pointer to a tag in the repository.

Git thinks of files in four "steps"
  • Unstaged: files in your local working area. As well, the local working area has a pointer to a specific branch.
  • Staged: files in your local working area that are ready to be committed.
  • Committed: files in the git area, labeled with a branch
  • Pushed: committed files that are now available to the world
To compare code:
  • git status (compare your "steps" to the specific branch --> if your working area is not up to date, it will tell you. Also it will tell you if you "can fast forward", in other words, if you are safe to pull)
  • git diff <file> (compare, specify conflicts with the specific branch)
  • git fetch (change the specific branch to the most recent branch [that others may have updated])
To go between steps
  • git add <file> (takes unstaged files and puts them in the staged area --> it will tell you what it would have to do to bring it up to date with the specific branch)
  • git reset HEAD <file> (to unstage)
  • git commit -m "comment" (takes staged files and commits them. Now this has a pointer)
  • git pull (pull stuff from repository and, if necessary, merge --> this may result in conflicts!)
  • git push (put what is committed into the repository)
Less often
  • git branch (tells you which pointers are available)
  • git checkout <branch> (checks out the files in a specific branch --> changes your pointer for that repository to the specified branch)
  • git stash (puts changes into a local stack)
  • git stash pop (pulls top of the stack back into directory)
  • git stash drop (gets rid of the top of the stack)
To checkout code as read-only By default, push and pull will use origin. To set it up so that the push origin-ssh will use the read/write but require a valid Kerberos ticket. BE CAREFUL, because the remote expects the order of the name is mu2e-otsdaq-SUBSYSTEM (with dashes, not underscores)

Some expert documentation

DTC testing procedure in Rick's office

  • with chants
    • configure
    • confirm that the DTC is synced with the CFO on the scope.
    • check DTC lock with Polarfire demo board
    • perform DCS reads
  • with otsdaq
    • single DCS reads stress test
    • enable CFO emulation and run DCS reads stress test.
  • program the DTC with the CRV firmware and connect to CRV ROC
  • with chants
    • configure
    • confirm that the DTC is synced with the CFO on the scope
    • configure with CFO emulator
    • set up CRV ROC, and run the data request chant

Read DTC register from the command line

source /mu2e/ups/setup
setup pcie_linux_kernel_module v2_01_02 -qe15:prof
source $PCIE_LINUX_KERNEL_MODULE_FQ_DIR/bin/Setup_DTC.sh

restart gateway http server (nodejs server)

on mu2edaq01, as root, run "systemctl restart xdaq-proxy.service"

The configuration file this command uses is: /home/mu2edaq/artdaq-utilities-node-server/xdaq_config.json

Create or modify a table

ots -w

  • Table editor
  • Load column info from (pull down a good starting table)
  • Clear table, or tune (+/-)
  • Save column info as (pick a name)

Regarding a "grouped" set of parameters (i.e., a child link)

If you want to add a grouped set of parameters to be linked to a parent table, pay attention to the tooltip. From the parent, you must create a "ChildLink Field Type" AND a "ChildLinkUID" (or ChildLinkGroupID).

Add a table to a configuration group

ots -w

  • Configure
  • Group view
  • Select a configuration -> view latest key for selected group
  • Add/remove/modify member tables
  • Select the group to add (or remove) -> create the new group

… then update the table…

  • Open table (>> Open in table view)

Add a component (front-end or processor)

(processor not documented yet...)

StartOTS.sh

  • Open "Configure" icon
  • Open up the Active Context in "Tree-view"
  • Open up the small double Arrow next to "+ All Children"
  • Select "Record creation wizard"
  • Select "Front end"
  • Enter the database record name (unique): e.g., "CAPTAN0"
  • Pick the software process (XDAQ context) associated with this device: e.g., "CAPTAN0"
    • Usually each device has its own software process
  • Name a host where the software process is going to run: e.g., "http://mu2edaq06.fnal.gov"
  • Define a port where this software process is accessible: e.g., ${OTS_MAIN_PORT}+3
  • Specify an interface library (FEInterfacePluginName) to interface with the device
    • CAPTAN = FEOtsUDPTemplateInterface
    • CFO = CFOFrontEndInterface
    • DTC = DTCFrontEndInterface

Now your device should be saved in your configuration. Next step: specify the configuration parameters...

Under ActiveContext -> Tree-view -> XDAQContextConfiguration
  • Dig all the way down to LinkToFETypeConfiguration
Under Last Activated Configuration -> Tree-view
  • Select configuration type -> Table-view to see all parameters sorted by row

How to add a component interface to make it available

StartOTS.sh -w

open Table Editor

Load Column Info from FEInterfaceConfiguration in Configuration Name dropdown menu

Is your component in the FEInterfacePluginName drop down menu? If not, add it

Some super-duper commands

  • UpdateOTS.sh (do full update of repository from git, including code and databases)
  • ~mu2edaq/sync_demo/ots_SUBSYSTEM/reset_ots_tutorial.sh --tutorial mu2e_roc (completely rebuild the database from a webpage)
  • mrb b; otsdaq_convert_config_to_table; ots -w (this changes all user data, etc., which were called "configuration" to "tables")

How to copy a working database configuration to another ots setup

For example, otsdaq_mu2e to otsdaq_mu2e_stm...

  1. From the source, make the otsdaq_mu2e setup “copiable”…
    • On mu2edaq06...
    • Start with otsdaq_mu2e setup…
    • Use testContext(59) = starting point
    • Change gateway host from http://mu2edaq06.fnal.gov to http://${HOSTNAME}
    • Save as testContext(60)
    • on mu2edaq06, Ots -w to write it out…
  2. Make backups of the Data/ and databases/filesystemdb/test_db directories
    • On mu2edaq10
    • mu2edaq10: mv /home/mu2edaq/sync_demo/ots_stm/srcs/otsdaq_mu2e_stm/Data /home/mu2edaq/sync_demo/ots_stm/srcs/otsdaq_mu2e_stm/Data_bkup
    • mu2edaq10: mv /home/mu2edaq/sync_demo/ots_stm/srcs/otsdaq_mu2e_stm/databases/filesystemdb/test_db /home/mu2edaq/sync_demo/ots_stm/srcs/otsdaq_mu2e_stm/databases/filesystemdb/test_db_bkup
  3. Copy the Data and Databases from otsdaq_mu2e to otsdaq_mu2e_stm
    • mu2edaq10: cp -rpd /home/mu2edaq/sync_demo/ots/srcs/otsdaq_mu2e/Data /home/mu2edaq/sync_demo/ots_stm/srcs/otsdaq_mu2e_stm/Data
    • mu2edaq10: cp -rpd /home/mu2edaq/sync_demo/ots/srcs/otsdaq_mu2e/databases/filesystemdb/test_db /home/mu2edaq/sync_demo/ots_stm/srcs/otsdaq_mu2e_stm/databases/filesystemdb/test_db
  4. On mu2edaq10, ots -w, and modify the database in Configure, as usual...
  5. On mu2edaq06, change back ${HOSTNAME} back to mu2edaq06.fnal.gov, since the sync_demo_setup.sh script doesn't work with ${HOSTNAME} defined this way....

Synchronization goals at the test stand

See the following documentation: