Updating artdaq based on recent changes in ds50daq

Kurt's suggestions for setting up a dev environment on dsfr6

dsfr6 is one of the private network nodes at the DS-50 WH14NE teststand. The gateway node is The two private-network nodes are dsfr6 and dseb8. dsfr6 is the file server for the private network nodes.

First step: Set up your account on dsfr6 for development on ds50daq, if needed. Instructions are provided here:
  • once that is done, you should be able to build and run ds50daq from your account on dsfr6.
Next: Add the ability to work on artdaq locally. Building on the instructions referenced above,
  1. cd <yourSourceCodeParentDir>
  2. git clone ssh://p-artdaq@localhost:<yourTunnelPortNumber>/cvs/projects/artdaq
  3. mkdir $HOME/scratch/artdaqBuild
  4. cd $HOME/scratch/artdaqBuild
  5. source <yourSourceCodeParentDir>/artdaq/ups/setup_for_development -p e4 ib
  6. buildtool -c # clean build
  7. buildtool -t # runs unit tests
  8. buildtool -i # installs UPS product in CETPKG_INSTALL, which hopefully is set to $HOME/products
Next: Switch to the appropriate branches in ds50daq and artdaq:
  1. cd <yourSourceCodeParentDir>/ds50daq
  2. git flow feature track <branchname> # first time
    • or 'git checkout feature/<branchname>' # subsequent times
  3. git pull
  4. cd <yourSourceCodeParentDir>/artdaq
  5. git flow feature track <branchname> # first time
    • or 'git checkout feature/<branchname>' # subsequent times
  6. git pull
For ongoing development, open one or more windows for artdaq editing and building, and one or more windows for ds50daq editing and building.
  1. build artdaq, remembering to use the "-i" option to get the build installed in $HOME/products
  2. setup ds50daq, and check that it is using the version of artdaq from your home area (echo $ARTDAQ_DIR)
  3. build ds50daq

19-Nov-2013 suggestions for bite-size units of work

Email from Kurt to John and Ron:

Hi guys,
Here are some suggestions for breaking down the work of pulling common code from ds50daq to artdaq. In all cases, if you see stuff that looks like it should be added to one of these steps, let's talk about it - the answer is probably yes.
  1. (RR) in ds50daq, start making use of the xmlrpc_commander from artdaq - Ron is already working on this
  2. (JF) update, Commandable.hh, and in artdaq with any later changes to the same files in ds50daq, and remove these files from ds50daq
    1. For extra credit, confirm that Shutdown and Init transitions are currently allowed from the Running and Paused states, and remove support for those transitions.
    2. As you can imagine, there is a component of this which is learning the state model and how it is implemented in SMC. I can help with some hints on generating state diagrams.
  3. (JF) update configureMessageFacility in artdaq based on any recent changes in ds50daq, and remove it from ds50daq
  4. (JF) move StatisticsHelper from ds50daq to artdaq (and check to see if it should be improved)
  5. update the boardreader and eventbuilder executables in artdaq based on any recent changes in ds50daq, and remove these executable
    1. as we discussed recently, this will drag in more files than just these two, but that is part of this task (at the end, all of the related files should be updated in artdaq and removed from ds50daq)
    2. the aggregator executable currently does not exist in artdaq - please move it from ds50daq to artdaq
  6. update the BoardReaderApp and EventBuilderApp classes in artdaq with any recent changes in ds50daq and remove them from ds50daq
    1. move AggregatorApp from ds50daq to artdaq
  7. Ditto FragmentReceiver, EventBuilder, and Aggregator
    1. This may be where we need to start being a little more vigilant to check for DS-50 specific pieces that may not be appropriate for artdaq - hopefully not, but we'll see
  8. update pmt.rb, mpi_wrapper, and mpi_cleaner in artdaq based on any recent changes in ds50daq and remove it from ds50daq
    1. please check if the recent changes to this file in ds50daq are DS-50-specific
  9. Pull the re-usable pieces out of ds50::DS50FragmentGenerator and put them in artdaq::FragmentGenerator
    1. as I've mentioned before, we should probably talk about this when we get to it

Enough for now.