Skip to content

Installation

Mehreen Sultana edited this page Jul 28, 2021 · 37 revisions

Installing the Whole MINERvA 101 2021 Tutorial

All lines begin with <path>$ to illustrate what directory I'm in in case you run into problems. Remove this part of the line to run the commands yourself.

~/app$ echo $ROOTSYS #Should be set by thisroot.sh.  See ROOT instructions.
/home/aolivier/app/root/opt
~/app$ export [email protected]:/cvs/mnvsoft #This is how you check out code from MINERvA CVS repositories
~/app$ kinit #To check out from CVS, you need a Fermilab kerberos ticket right now.  Our goal is to replace the CVS steps with github soon so this requirement goes away.

~/app$ mkdir MINERvA101 && cd MINERvA101/ #Make a directory for installing and working on this tutorial

#Check out this tutorial from github
~/app/MINERvA101$ git clone https://github.com/MinervaExpt/MINERvA-101-Cross-Section.git

~/app/MINERvA101$ mkdir opt && cd opt #Create an install "prefix"
~/app/MINERvA101/opt$ mkdir build && cd build #Create a build area to dump extra files CMake will generate

#Build and install the tutorial.  Builds several packages for you.  If you don't have PlotUtils etc. already, checks them out for you. 
# Need to have ROOT6 Set up or else you will get an error related to C++14 (source ../../MINERvA-101-Cross-Section/bootstrap/setupROOT6OnGPVMs.sh)
~/app/MINERvA101/opt/build$ cmake ../../MINERvA-101-Cross-Section/bootstrap -DCMAKE_INSTALL_PREFIX=`pwd`/.. -DCMAKE_BUILD_TYPE=Release
~/app/MINERvA101/opt/build$ make install #Prints lots of warnings, but there should be no "error"s

Usage

#Run an example job over xrootd on a GPVM.
#If you have the MINERvA 101 USB drive, move on to Exercise A to learn how to find the files to test.
~/app/MINERvA101/opt/build$ cd ~/Documents/MINERvA101
~/Documents/MINERvA101$ source ~/app/MINERvA101/opt/bin/setupROOT6OnGPVMs.sh
~/Documents/MINERvA101$ source ~/app/MINERvA101/opt/bin/setup.sh

~/app/installExampleMINERvA101/test$ runEventLoop ~/app/installExampleMINERvA101/opt/etc/playlists/CCQENu_minervame1A_DATA_Inextinguishable_merged.txt ~/app/installExampleMINERvA101/opt/etc/playlists/CCQENu_minervame1A_MC_Inextinguishable_merged.txt

Special GPVM Instructions

If you've logged into a computer at Fermilab for this exercise, run this code each time you log in to work on the MINERvA 101 exercises. That includes before installing the tutorial for the first time. We're setting up some of the dependencies from a standard location that the Open Science Grid and the FermiGrid can also access.

#Don't do any other setup before or after this.  The normal Gaudi framework setup probably interferes with ROOT 6.
#If you have problems with conflicting ROOT versions or anything mentions ROOT 5.34 after setup,
#check your ~/.bash_profile for "source" and comment out any lines like that.
source /path/to/MINERvA101Tutorial/opt/bin/setupROOT6OnGPVMs.sh

If You Have a MINERvA101 USB Drive and No Fermilab Computing Account

Older versions of our CVS dependencies are on your USB drive at MAD_MINERvA101_2021/Ana and MAD_MINERvA101_2021/MParamFiles. You still need GENIEXSecExtract which can be downloaded here. cp -r each directory to $DOCS/. You'll also have to disable automatic code updates by passing this flag to cmake: -DDISABLE_AUTO_UPDATE=ON.

Dependencies

  1. git: version control system. You probably already have this
  2. CMake 2.8: build system generator for lots of operating systems. You probably already have this
  3. ROOT 6: object-oriented toolkit for high energy physics analysis. Make sure to enable at least xrootd, kerberos, and Minuit for this tutorial. Already installed on MINERvA GPVMs
  4. PlotUtils: the MINERvA Analysis Toolkit and associated systematics tools (TODO: via github)
  5. UnfoldUtils: MINERvA's fork of RooUnfold with a compatibility layer for embedding systematics in histograms and MINERvA-specific systematics tweaks (TODO: via github)
  6. MParamFiles: additional reweighting and calibration parameters for MINERvA systematics. Included on MINERvA 101 USB drives
  7. GENIEXSecExtract: "Secret" package in the MINERvA CVS repository used for the closure test.

FAQs

  1. How do I set up ROOT on the Fermilab-hosted MINERvA GPVMs? Is the ROOT version that comes with the Gaudi framework new enough? We're going to use a newer ROOT version than what the Gaudi framework uses. Set up ROOT (and CMake) on the GPVMs like this:
source /cvmfs/minerva.opensciencegrid.org/minerva/hep_hpc_products/setups
setup root v6_10_04d -q e14:prof
setup cmake v3_7_1
  1. What directory should I put the tutorial code in? Should I run the tutorial code from the same directory? I recommend you put the tutorial code in a different directory from the one where you run it. This way, git won't try to commit your tutorial results if you catch a bug in the tutorial, and you'll be much less likely to erase your code changes by mistake if you start an exercise from scratch.
  • On my personal computer, I put code in ~/app/installExampleMINERvA101 and run the tutorial in ~/Documents/MINERvA101_2021
  • On the GPVMs, I put code in /minerva/app/users/$USER/installExampleMINERvA101 and run the tutorial in /minerva/data/users/$USER/MINERvA101_2021
  1. I got a message about Reflex missing from ROOT. Is my build OK? The following message is normal after installing each package. Reflex is a part of ROOT 5 that has been replaced in ROOT 6. This tutorial uses ROOT 6, so it doesn't need Reflex anymore.
#CMake Warning at /home/aolivier/app/root/opt/cmake/ROOTConfig.cmake:155 (message):
#   ROOT component Reflex not found
#Call Stack (most recent call first):
#  CMakeLists.txt:21 (find_package)
#
#
#CMake Warning at /home/aolivier/app/root/opt/cmake/ROOTConfig.cmake:155 (message):
#   ROOT component Cintex not found
#Call Stack (most recent call first):
#  CMakeLists.txt:21 (find_package)
#
#
#Hmm, ROOT failed to set up genreflex for some weird reason.  I'll go off and try to find it myself...
#I don't need Cintex on this platform, so skipping it...