rfoxkendo / mpiSpecTcl

Fork on which to make an MPI parallel version of SpecTcl
0 stars 0 forks source link

INTRODUCTION

NSCLSpecTcl is a low overhead dynamic histograming framework for Nuclear Sciecne experimental data. It was written for the National Superconducting Cyclotron Laboratory (NSCL) at Michigan State University. When the NSCL experimental program finished and the NSCL was succeeded by the Facility for Rare Isotope Beams (FRIB), the FRIB adopted NSCLSpecTcl for use in online and early offline analysis.

Note that NSCLSpecTcl should not be confised with the Tcl GUI interface generated named SpecTcl. In this document the word `SpecTcl will be used for brevity to mean NSCLSpecTcl

NSCLSpecTcl development is now hosted at:

http://github.com/FRIBDAQ/SpecTcl

The documentation for NSCLSpecTcl is at:

http://docs.nscl.msu.edu/daq

Various documents describing SpecTcl are in the section labeled "What is SpecTcl?" on that web page.

SpecTcl is developed under Debian Linux and has several dependencies, some are built in, some are expected to be installed by the system owner. As the FRIB actively develops NSCLSPecTcl, it is possible that the list of dependencies below are incomplete.

One can install NSCLSpecTcl in three ways. These are listed in decreasing order of our preference for you;

https://github.com/FRIBDAQ/SpecTcl/releases

Provides a set of the releases we would prefer you to use. Each of those releases has several 'assets' or files; If a release is named x.y-zzz; it will have the files:

Installing for a container:

This installation requires the least knowledge -- once you have your containerized system up and running. Suppose you downloaded version 5.13-010's binary tarball for e.g. the bullseye container. You would have gottan a file named:

spectcl-5.13-010-bullseye.tar.gz

Hand that file to a user that is allowed to write into the directory tree that is bound into the bullseye container's /usr/opt directory tree. Suppose they put that file in their home directory and a script or alias named bullseye has been defined to start the container with that directory tree bound to /usr/opt. Here's how to install that new SpecTcl Version:

cd /usr/opt/spectcl   # if necessary make this directory.
tar xzf ~/spectcl-5.13-010-bullseye.tar.gz

Done, you now have NSCLSpecTcl version 5.13-010 installed for use in your containerized buster system.

Installing from sources - the git clone.

Unwrap the git clones and cd into the main subdirectory of the resulting tree.

Installing the 'built in' dependencies.

SpecTcl depends on a few other FRIB/NSCL products. Rather than make you build and install them, we have three scripts that allow you to incorporate them into the SpecTcl build. Each script is quite short but you'll want to read the comments that descdribe the most recently used version/tag of that product.

You will need to have git installed on your system to incorpoprate these.

./unifiedfmt-incorp.sh 1.2

to incorporate that version of the unified format verison.

./tcl++incorp libtclplus-v4.3-001

Run this script as folllows:

./qtpi-incorp.sh v1.4

Now all of the internal dependencies are incorporated and you can build SpecTcl as if you got a spectcl-5.13-010-dist tarball and had unwrapped it into the 'main' directory that is now your working directory.

Building SpecTcl from a source tarball.

External dependencies

These must either be installed via your system's package manager or built and installed somewhere on your system. For each dependency you must build I'll describe where the default configuration of SpecTcl expects it. By default I mean that if you install there you don't need to specify any special options to the configuration script.

Configuring SpecTcl

If you have all of the external dependencies installed in their normal places you should be able to:

./configure --prefix=/where/to/install --with-rootsys=/where/cernroot/is/installed

This will trundle along (out of tree builds are also supported).

Once configure worked:

make
make all -jn  #n like the number of processors you system has.
make install
VERBOSE=1 make check    # If you want to run tests.

and you are done.