Systematic predictions for the nue and numu 2017 analyses


  • Link to tutorial + video
  • Link to syst technote

Press one button and go

Quick description of the usage of the .sh. Double check that everything works!
Detailed descriptions of individual macros/ manual running below. If this is enough, skip (4) sections and jump to: PredSyst whatever

Initial setup

Describe syst variations
Datasets vs direct systematics
Where to add analysis definitions



Making predictions


Note: some of these steps are overkill. In principle you only need to make predictions, hadd everything, move on.

  1. Run on the grid
  2. Hadd the grid outputs in some folder inside provisional_singles
    mkdir -m 776 /nova/ana/nu_e_ana/Ana2017/Predictions/provisional_singles/v6e
    cd  /nova/ana/nu_e_ana/Ana2017/Predictions/provisional_singles/v6e
    for up in Up Down; do for xp in xp_prop xp_combo; do nice hadd_cafana pred_"$xp"_EnergyCVN2D_full_nueconcat_RelativeCalib"$up"_v6e.root /pnfs/nova/scratch/users/$USER/ana2017/v06d/RelativeCalib"$up"_nue_"$xp"/pred_"$xp"_EnergyCVN2D_full_nueconcat_RelativeCalib*; done; done
  3. In latest, create or modify a symlink to the latest prediction files (in this example, new files that are not individual XSec are saved under "other")
      cd /nova/ana/nu_e_ana/Ana2017/Predictions/provisional_singles/latest/other
      for xp in nxp xp_prop xp_combo; do 
      for i in AllSmall RelativeCalibUp RelativeCalibDown; do 
      ln -s -f ../../v6e/pred_"$xp"_EnergyCVN2D_full_nueconcat_"$i"_v6e.root pred_"$xp"_EnergyCVN2D_full_nueconcat_"$i".root; 
      done; done
  4. Update the hadded prediction files (note: some elements might be commented; this simple script is not version controlled)
      cd /nova/ana/nu_e_ana/Ana2017/Predictions/provisional_singles/latest


Plots and tables

void plot_prediction_systs(const std::string& filename_sh, const std::string& period="full", const std::string & filename_nom = "")
  std::vector<TString>  xptype = {"pred_nxp"};
  if (!isNumuAna) xptype = {"pred_nxp","pred_xp_combo", "pred_xp_prop"};
  else            xptype = {"pred_nxp","pred_xp_numu"};

  std::vector<SNameDef> systnames = GetShiftNames2017();
  //std::vector<SNameDef> systnames = GetShiftNames2017("allNueReduced");                                                                                                                       
  //std::vector<SNameDef> systnames = GetShiftNames2017("allNumuReduced"); 


For nue, in order to check all systematics, we split the task into FD plots with prop + ND plots (ETA 8 min), and FD plots with combo (ETA xx).
There are 6 files required for this in /nova/ana/nu_e_ana/Ana2017/Predictions/provisional_singles/latest/
This is a hack but it is clearly labeled, not necessary with smaller syst lists, and resulted from one analyzer's traumatic memory usage issues.
Substitute p by c in the filenames to switch between prop and combo

cafe -bq plot_prediction_systs.C /nova/ana/nu_e_ana/Ana2017/Predictions/provisional_singles/latest/pred_p_EnergyCVN2D_full_nueconcat_other.root 

//in plot_prediction_systs.C 
std::vector<SNameDef> systnames = GetShiftNames2017();
 //HACK HACK HACK                                                                                                                                                                          
      if(!isNumuAna && 1){
        if(S.syst_name == "MaCCQE_reduced"){
          std::cout << "\n\n\nswitch files \n\n\n" << std::endl;
          file = new TFile ("/nova/ana/nu_e_ana/Ana2017/Predictions/provisional_singles/latest/pred_p_EnergyCVN2D_full_nueconcat_XSecSyst_part1.root","read");
        if(S.syst_name == "MaNCEL"){
          std::cout << "\n\n\nswitch files \n\n\n" << std::endl;
          file = new TFile ("/nova/ana/nu_e_ana/Ana2017/Predictions/provisional_singles/latest/pred_p_EnergyCVN2D_full_nueconcat_XSecSyst_part2.root","read");

Reduced prediction files

PredSyst classes


Using systs in the fit