Instructions for installing the MINOS software LABYRINTH --------------------------------------------------------- Below is a step-by-step procedure that should get the software working at any location. Skipping steps or performing them in an alternative order is *not* recommended. Steps 3 and 4 are necessary only for sites who's configuration is not in the repository. Once the files have been generated for a site and verified that they work correctly they can (and should) be entered into the repository for the labyrinth. Current site information can be found in the file "sites.txt" 0) Log into the account designated as the site manager. It is recommended that a special librarian account be set up for this purpose. This avoids accidental mucking about in the shared library area. Designate a file system path to the top of the LABYRINTH tree; in the following steps this is shown as . Before starting the installation it is helpful to ensure that all the required support programs are in place. The "gmake" command must be in the command path of the site manager (and those of users if they use the $THESEUS/Makefile as a template). $ where gmake should return something similar to "/usr/local/bin/gmake" If it doesn't you must insure that one is available in the path. On Linux machines "/usr/bin/make" *is* "gmake" but one cannot use a simple alias as the shell doesn't carry this down to child processes. One solution is to create a link in a directory that is in the path. $ cd $HOME $ mkdir bin $ cd bin $ ln -s /usr/bin/make $HOME/bin/gmake and then add $HOME/bin to the path. Non-library account can do the same thing for their own work or simply add the the library's "bin" directory to their path As well as "gmake" the Makefiles depend on the "makedepend" command. $ where makedepend should return something like "/usr/X11R6/bin" or "/usr/X11/bin". If it doesn't, look around in similar directories. Check the path to see if the command is truely missing or whether this directory is not in path. Once found either add the appropriate directory to the path or make another symbolic link in $HOME/bin, ie: $ ln -s /usr/X11R6/bin/makedepend $HOME/bin/makedepend If ADAMO has not yet been installed then you'll need access to the "fsplit" command. This may not be installed on every platform, but do not fret. If you can not find a copy anywhere on the system then do steps 1) to 6) as instructed. Before continuing to step 7) do the following: $ cd $UTILPATH $ gmake fsplit $ mv fsplit $HOME/bin/fsplit The last required command is "domainname". This is only necessary if the machine is part of a cluster and one is not going to list all the possible machines in the setup script. It should return some unique identifier for the current site. If desired one can simply create a script. $ cat > $HOME/bin/domainname #! /bin/tcsh -f echo my.domain.edu ^D $ chmod +x $HOME/bin/domainname 1) Check out the "labyrinth" CVS module $ export CVSROOT=:pserver:anonymous@minos1.fnal.gov:/cvs/minoscvs/rep1 $ cvs login $ cvs checkout labyrinth 2) Configure the setup scripts for the new location. $ cd /labyrinth $ gmake location NOTE: if at any time the whole directory structure is moved to a new this step *must* be repeated! 3) Choose a descriptive handle that represents the site. Use different handles on a multi-platform cluster if the location of standard software (CERNLIB, STDHEP, LUND...) can not be configured in a unified manner. $ cd /setup $ echo $HOST $ domainname Edit the file "minos_host.csh", add a switch case that will uniquely pick out this site and/or platform based on the host and/or domain name. Set the environment variable MINOS_HOST to this handle (eg. FNALU, IU-HPUX, IU-OSF1...). Generalize as much as possible using wildcards if necessary. If it is impossible to generalize in a suitable manner to support a multi-platform location, then use individual machine names. Multiple machines that can use the same configuration file need only one actual call to `setenv'; simply stack the `case xxx:' lines sequentually without an intervening `breaksw'. 4) Copy "setup_pkgs_UNKNOWN.csh" to "setup_pkgs_${MINOS_HOST}.csh" where ${MINOS_HOST} is replaced by the handle chosen in step 3. Edit this file to provide information about the location of standard packages. Some variables should be left unset at some sites -- in such cases it is recommended that the variable be explicitly `unsetenv'. Refer to the file "config_setup_pkgs.txt" for more details on the meanings of the variables. 5) Run the setup procedure. $ source /setup_labyrinth.csh This defines all the global variables necessary for the proper working of the labyrinth. MINOS LABYRINTH users might consider simply adding this to the ".login" file of their account. 6) Check out a copy of all the MINOS source code modules. $ cd $LABYRINTH/mgr $ ./make_update.sh [ >&! update.log ] If output was redirected at a log file (recommended), review the log for any problems. 6a) If "fsplit" is missing follow the instructions given in Step 0) 7) If ADAMO is to be handled under the LABYRINTH at this site then refer to the file "adamo_under_labyrinth.txt". 8) Check for proper versions of "hepevt.inc" and "heplun.inc" (not necessary if using the "misc" CVS module for the STDHEP package). $ cd $LABYRINTH/test $ gmake test_incs This should compile, link and run two test programs. These attempt to use the two include files. They use implicit none to force the include file to contain full type declarations. If they fail to run then check the end of the "Makefile" for information on which versions of these include files it is attempting to use. If those files lack the necessary declarations, *then* you may need to use one of the alternative include files: $ cd $GMINOSPATH/inc $ mv alt_hepevt.inc hepevt.inc ! if test_hepevt failed $ mv alt_heplun.inc heplun.inc ! if test_heplun failed Ignore any message of the form "gawk: not found". 9) Build all the libraries and executables. $ cd $LABYRINTH/mgr $ ./make_minos.sh [ >&! minos.log ] Review the log file for problems. Check that all the executables are in place. $ ls $LABYRINTH_BIN should (at a minimum) have: arch - a script for determining the platform architecture dump_hepevt - a program to dump unformatted "hepevt" files gen_1part_evt - a program to generate simple "hepevt" files gminos_batch - a batch version of GMINOS mc_main - a stand-alone use of NEUGEN The programs: strip_hits - a RECO_MINOS job for dropping hit banks/tables gminos_inter - an interactive version of GMINOS are now depreciated. The functionality of "strip_hits" has now been fully integrated into the base "reco_minos" program. The "gminos_inter" (interactive gminos) often fails to get built (due to gxint.o missing at many sites) and take up a lot of space, so it is no longer copied by default into $LABYRINTH_BIN. Check that all the libaries were created. $ ls $LABYRINTH_LIB should (at a minimum) have: bdpart.o - block data for NEUGEN csbutt.o - utility routine used by NEUGEN dummy_calls.o - an object file to force the linker to use GMINOS version of GEANT hook routines gminos_batch.o - the main program for GMINOS (batch version) libbos.a - BOS library (used by NEUGEN) libflux.a - library for neutrino flux routines libgminos.a - GMINOS library libneugen.a - NEUGEN library liboscnu.a - neutrino oscillation (CVS "mixing" module) library libreco.a - RECO_MINOS library libtauola.a - TAUOLA library (used by NEUGEN for tau decays) libutil.a - UTILITIES library (used by GMINOS, RECO_MINOS) reco_minos.o - the main program for RECO_MINOS Once setup, maintenence of the LABYRINTH is simple: $ source /setup_labyrinth.csh $ cd $LABYRINTH $ cvs update -d $ cd mgr $ ./make_update.sh $ ./make_minos.sh $ ./make_clean_src.sh ! necessary on mixed architecture clusters last modified: 1998.11.10