Skip to Content.
Sympa Menu

sphenix-software-l - [Sphenix-software-l] switch to root6 as default today

sphenix-software-l AT lists.bnl.gov

Subject: sPHENIX discussion of software

List archive

Chronological Thread  
  • From: pinkenburg <pinkenburg AT bnl.gov>
  • To: "sphenix-software-l AT lists.bnl.gov" <sphenix-software-l AT lists.bnl.gov>
  • Subject: [Sphenix-software-l] switch to root6 as default today
  • Date: Wed, 20 Mar 2019 09:25:01 -0400

Hi folks,

as announced yesterday - we will switch to root6 as default today. That means the "new" build will point to our libraries which were compiled against root6. If you just source the sphenix_setup.csh (or *.sh for sphenix accounts) script you will work with root6.

root5 builds are still compiled daily, they are available when sourcing the setup script with root5 as argument:

source /opt/sphenix/core/bin/sphenix_setup.csh -n root5
source /opt/sphenix/core/bin/sphenix_setup.sh -n root5 for sphenix accounts.

One caveat: root6 needs the path to include files. This is done by setting the ROOT_INCLUDE_PATH environment variable. This is done by the setup script which sets it to our installation area. If you work with privately compiled libraries you will need to add to this include path (prepending it so root looks in your area first). If you follow our advice how to build packages into a common install area:

mkdir <buildarea>
cd <buildarea>
<packagedir>/autogen.sh --prefix=<installarea>
make install

the include files are installed in <installarea>/include. If you use this scheme we have a script which sets up your ROOT_INCLUDE_PATH properly by

source /opt/sphenix/core/bin/setup_root6.csh <installarea>
(use /opt/sphenix/core/bin/setup_root6.sh for sphenix accounts)

There is still some quirkiness in this, sometimes root6 needs the package-wise subdirectories (where we install the include files) of the include area. This script adds all your subdirectories as well and appends the proper include directories from our build to the ROOT_INCLUDE_PATH. If you install a new package you have to re-source the script to add your new subdirectory.

I set up a wiki page (linked to the bottom of our software page under special topics):

https://wiki.bnl.gov/sPHENIX/index.php/Sphenix_root6

It repeats the above and shows how you need to modify the configure.ac and Makefile.am of your package to compile with root6 while keeping backward compatibility with root5

Let's see how this goes - what can possibly go wrong?
Chris

P.S. I've been running with root6 for weeks now and would say that our libraries and Fun4All_G4_*.C macros  work just fine. But I expect there will be issues in user macros (cling is based on a compiler, means it has rules while CINT is basically winging it allowing many bad things in macros). cling is very talkative on errors and you normally only get the first one before it goes on its rant (which often makes the original error scroll off the screen even with 1000 line backing store). Pipe the output into a file (root.exe -q -b MyMacro.C >& error.log) and look at the first few lines, it's normally just a missing include file or library

P.P.S. In terms of results - our default Fun4All_G4_*.C macros produce identical results under root5 and root6 (last digit diffs in genfit because the new root6 based version uses eigen instead of root for its math)

--
*************************************************************

Christopher H. Pinkenburg ; pinkenburg AT bnl.gov
; http://www.phenix.bnl.gov/~pinkenbu

Brookhaven National Laboratory ; phone: (631) 344-5692
Physics Department Bldg 510 C ; fax: (631) 344-3253
Upton, NY 11973-5000

*************************************************************




  • [Sphenix-software-l] switch to root6 as default today, pinkenburg, 03/20/2019

Archive powered by MHonArc 2.6.24.

Top of Page