Skip to content

Latest commit

 

History

History
179 lines (127 loc) · 5.01 KB

File metadata and controls

179 lines (127 loc) · 5.01 KB

Initial setups

Create a working area

cd /exp/icarus/app/users/${USER}/
# assuming you have `sbnana` working directory under `icarus_gundam`.. but you can use any directory
cd icarus_gundam
mkdir gundam
cd gundam

Installation

SL7

Here I'm assuming you are using SL7 container.

source /cvmfs/icarus.opensciencegrid.org/products/icarus/setup_icarus.sh

setup root v6_26_06b -q e20:p3913:prof
setup cmake v3_25_2

export GUNDAM_DIR=$PWD

export INSTALL_DIR="$GUNDAM_DIR/Install/"
export BUILD_DIR="$GUNDAM_DIR/Build/"
export REPO_DIR="$GUNDAM_DIR/Repositories/"

mkdir -p $INSTALL_DIR
mkdir -p $BUILD_DIR
mkdir -p $REPO_DIR

mkdir -p $BUILD_DIR/json
mkdir -p $BUILD_DIR/yaml-cpp
mkdir -p $BUILD_DIR/gundam

mkdir -p $INSTALL_DIR/json
mkdir -p $INSTALL_DIR/yaml-cpp
mkdir -p $INSTALL_DIR/gundam

cd $REPO_DIR

git clone https://github.com/nlohmann/json.git
git clone https://github.com/jbeder/yaml-cpp.git
git clone https://github.com/gundam-organization/gundam.git

cd $REPO_DIR/gundam/
./update.sh -v 1.9.0
# Also pulling `icarus_gumdam` feature branch for the configuration files
git remote add jskim git@github.com:jedori0228/gundam.git
git pull jskim ICARUSNuMIXSec/1.9.0_Main
git submodule update --init --recursive

# Build json
cd $BUILD_DIR/json/
cmake -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_DIR/json $REPO_DIR/json/.
make -j 4 install

# Build YAML

cd $BUILD_DIR/yaml-cpp/
cmake -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_DIR/yaml-cpp -DYAML_BUILD_SHARED_LIBS=on $REPO_DIR/yaml-cpp/.
make -j 4 install

# Build gundam

cd $BUILD_DIR/gundam/
export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:${INSTALL_DIR}/yaml-cpp/
export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:${INSTALL_DIR}/json/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${INSTALL_DIR}/yaml-cpp/lib64/
export LIBRARY_PATH=$LIBRARY_PATH:${INSTALL_DIR}/yaml-cpp/lib64/
cmake -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_DIR/gundam -D CMAKE_BUILD_TYPE=Release $REPO_DIR/gundam/.
make -j 4 install

# Finalize setup
export PATH="$INSTALL_DIR/gundam/bin:$PATH"
export LD_LIBRARY_PATH="$INSTALL_DIR/gundam/lib:$LD_LIBRARY_PATH"

Later whenever you have new shell, run

#!/bin/bash

source /cvmfs/icarus.opensciencegrid.org/products/icarus/setup_icarus.sh

setup root v6_26_06b -q e20:p3913:prof
setup cmake v3_25_2

# We'll need to build the GUNDAM-required JSON-CPP and YAML-CPP stuff, along with GUNDAM itself
export GUNDAM_DIR=$PWD

export INSTALL_DIR="$GUNDAM_DIR/Install/"
export BUILD_DIR="$GUNDAM_DIR/Build/"
export REPO_DIR="$GUNDAM_DIR/Repositories/"

export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:${INSTALL_DIR}/yaml-cpp/
export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:${INSTALL_DIR}/json/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${INSTALL_DIR}/yaml-cpp/lib64/
export LIBRARY_PATH=$LIBRARY_PATH:${INSTALL_DIR}/yaml-cpp/lib64/

# Finalize setup
export PATH="$INSTALL_DIR/gundam/bin:$PATH"
export LD_LIBRARY_PATH="$INSTALL_DIR/gundam/lib:$LD_LIBRARY_PATH"

Running GUNDAM

Running the fitter step

An example configuration file for fitter can be found under icarus_configs/config_Fitter_FakeData.yaml

git clone https://github.com/jedori0228/gundam_configs/tree/main
cd gundam_configs

Generate the missing root files:

cd Configs_ParameterSet/GENIEDials/
root -l -b -q GenerateGENIESystCov.C

cd ../DetectorSyst/
root -l -b -q GenerateDetSystCov.C

cd ../Flux
root -l -b -q GenerateNuMIBeamlineSystCov.C

Change the flux file:

cd ../../Configs_ParameterSetList

# open parameterSetList_deltaPT.yaml and change covarianceMatrixFilePath to:

covarianceMatrixFilePath: "./Configs_ParameterSet/Flux/2023-08-17_out_450.37_7991.98_79512.66_QEL11.root"

Update the binning txt file:

copy the file from /exp/icarus/app/users/faabdalr/icarus_gundam/gundam/gundam_configs/binnings/binning_fluxCovMtx_removeHE_jk.txt to your icarus_gundam/gundam/gundam_configs/binnings.

Add the input root file:

copy the directory from /exp/icarus/app/users/faabdalr/icarus_gundam/gundam/gundam_configs/rootfiles to your icarus_gundam/gundam/gundam_configs.

Run the fitter:

export GUNDAM_INPUTS_DIR=<path to gundam_configs>

gundamFitter -c config_Fitter_FakeData_IndvFit_PoissonLLH_deltaPT.yaml -o output_Fitter.root

config_Fitter_FakeData.yaml is referencing multiple sub-YAMLs or files defined under each directories of icarus_configs.

  • binnings
    • GUNDAM-style binning definitions
  • Configs_DataSetList
    • Defines the input MC or data files
    • A "formula" can be used for the weights; useful for fake data studies
  • Configs_FitSampleSet
    • Defines selections for the samples that are being used for the fit; e.g., "Signal selection" and "Sideband selection"
  • Configs_Minimizer
    • Minimizer setups
  • Configs_ParameterSetList
    • Template and nuisance parameter definitions
    • Configs_ParameterSet
      • A sub-YAMLs that are defined for each "set" of parameters
  • Configs_PlotGenerator
    • Configurations for the auto-generated plots
  • Configs_Propagator
    • A collection of configurations for the propagator