Skip to content

Latest commit

 

History

History
103 lines (79 loc) · 5.74 KB

File metadata and controls

103 lines (79 loc) · 5.74 KB

Instructions to run Calo Scouting Dijet Resonance Search from start to finish.

Set up CMSSW/DijetRootTreeAnalyzer/combine

  1. Set up CMSSW/DijetRootTreeAnalyzer/combine

    $ cmsrel CMSSW_7_4_14
    $ cd CMSSW_7_4_14/src
    $ cmsenv
    $ git clone https://github.com/CMSDIJET/DijetRootTreeAnalyzer CMSDIJET/DijetRootTreeAnalyzer
    $ git clone -b dijetpdf_74X https://github.com/RazorCMS/HiggsAnalysis-CombinedLimit HiggsAnalysis/CombinedLimit
    $ cd HiggsAnalysis/CombinedLimit
    $ scram b -j 4
    $ cd $CMSSW_BASE/CMSDIJET/DijetRootTreeAnalyzer

Getting mjj histogram for fit (not necessary because histogram is in repo)

  1. Add files from EOS together

    $ python/AddFiles.py -l lists/CaloScoutingHT_2016_JEC_CaloL1L2L3_PFL2L3Residual_NewBiasCorrected_Golden12910pb_20160723_003113_reduced_skim.txt  -o inputs/data_CaloScoutingHT_Run2016BCD_NewBiasCorrected_Golden12910pb_CaloDijet2016.root

Copy CaloScouting signal resonance files

  1. Copy CaloScouting signal resonance files

    $ wget https://github.com/CMSDIJET/DijetShapeInterpolator/raw/master/ResonanceShapes_gg_13TeV_CaloScouting_Spring16.root -P inputs/
    $ wget https://github.com/CMSDIJET/DijetShapeInterpolator/raw/master/ResonanceShapes_gg_13TeV_CaloScouting_Spring16_JERUP.root -P inputs/
    $ wget https://github.com/CMSDIJET/DijetShapeInterpolator/raw/master/ResonanceShapes_gg_13TeV_CaloScouting_Spring16_JERDOWN.root -P inputs/
    $ wget https://github.com/CMSDIJET/DijetShapeInterpolator/raw/master/ResonanceShapes_gg_13TeV_CaloScouting_Spring16_JESUP.root -P inputs/
    $ wget https://github.com/CMSDIJET/DijetShapeInterpolator/raw/master/ResonanceShapes_gg_13TeV_CaloScouting_Spring16_JESDOWN.root -P inputs/

Fitting (for limits, skip this section)

  1. Perform an unblinded, background-only, full region fit (with signal shapes plotted)

    $ mkdir -p fits_2016_07_24/
    $ mkdir -p fits_2016_07_24/CaloDijet2016_Full
    $ python python/BinnedFit.py -c config/dijet.config -l 12910 --mass 750_1200_1600 -m gg_qg_qq --xsec 9.5_8.2e-1_2.2e-1 -s inputs/ResonanceShapes_gg_13TeV_CaloScouting_Spring16.root inputs/data_CaloScoutingHT_Run2016BCD_NewBiasCorrectedFlat_Golden12910pb_CaloDijet2016.root -b CaloDijet2016 -d fits_2016_07_24/CaloDijet2016_Full/ --fit-spectrum
  2. Run and fit 1000 toys and plot GOF for unblinded fit

    $ python python/RunToys.py -b CaloDijet2016 --freq -c config/dijet.config --lumi 12910 --fit-region Full  -d fits_2016_07_24/CaloDijet2016_Full/ -i fits_2016_07_24/CaloDijet2016_Full/DijetFitResults_CaloDijet2016.root  -t 1000 -s 0
    $ python python/PlotGOF.py -b CaloDijet2016 -c config/dijet.config -d fits_2016_07_24/CaloDijet2016_Full/ -t fits_2016_07_24/CaloDijet2016_Full/toys_Freq_s0_CaloDijet2016.root -l 12910 --data

Setting limits

  1. Run combine to produce expected and observed limits for gg resonance mass range [500, 1600] in 50 GeV steps

    $ mkdir -p cards_gg_freq
    $ python python/RunCombine.py -m gg -d cards_gg_freq/ --mass range\(500,1650,50\) -c config/dijet.config -i inputs/DijetFitResults.root -b CaloDijet2016 --rMax 20 --xsec 10 -l 12.910
  2. Convert combine output files and plot 1D limit

    $ python python/GetCombine.py -d cards_gg_freq/ -m gg --mass range\(500,1650,50\) -b CaloDijet2016 --xsec 10 -l 12.910
    $ python python/Plot1DLimit.py -d cards_gg_freq/ -m gg -b CaloDijet2016 -l 12.910 --massMin 600 --massMax 1600 --xsecMin 1e-3 --xsecMax 1e5

Bias studies with 4-parameter modified exponential

  1. Run combine-based bias studies with 1000 toys for r = 1 and 10 pb cross section using 4-parameter modified exponential for generation and 4-parameter dijet functin for fitting (defined in confif/dijet_bias.config)

    $ mkdir signal_bias/
    $ python python/RunBias.py -c config/dijet_bias.config --mass 750 -m gg -d signal_bias/ -r 1 -l 12.910 --xsec 10 -t 1000 --gen-pdf modexp  --fit-pdf fourparam
  2. Make plots of bias

    $ python python/PlotBias.py -c config/dijet_bias.config --mass 750 -m gg -d signal_bias/ -r 1 -l 12.910 --xsec 10 -t 1000 --gen-pdf modexp  --fit-pdf fourparam

Fitting trigger efficiency in different run periods

  1. Copying Commisioning dataset (warning: large file)

    mkdir trigger
    cd trigger
    wget https://www.dropbox.com/s/djdx56s7gy7t4ct/ScoutingCaloCommissioning2016_JEC_CaloL1L2L3_PFL2L3Residual_NewBiasCorrectedFlat_Golden36410pb.root?dl=1
    cd ..
  2. Fitting BCDEFG trigger-turn-on

    mkdir -p fits_2016_12_14/
    mkdir -p fits_2016_12_14/CaloDijet2016BCDEFG_Full_hltturnon/
    python python/BinnedFit.py -b CaloDijet2016 -c config/dijet_turnon.config -t trigger/ScoutingCaloCommissioning2016_JEC_CaloL1L2L3_PFL2L3Residual_NewBiasCorrectedFlat_Golden36410pb.root --fit-trigger -d fits_2016_12_14/CaloDijet2016BCDEFG_Full_hltturnon/ inputs/data_CaloScoutingHT_Run2016BCDEFGH_NoBiasCorr_Mjj300_Golden36410pb_CaloDijet2016.root  -l 27637  --run-min 0 --run-max 280385

Note it takes a long time to convert the tree into a RooDataSet for fitting. Since this only needs to be done once, you can repeat the fit with a file that contains only the RooDataSet (produced the first time you run the command above). This is helpful if you want to change the binning of the plot, etc.

  1. Refitting BCDEFG trigger-turn-on with RooDataSet

    python python/BinnedFit.py -b CaloDijet2016 -c config/dijet_turnon.config -t fits_2016_12_14/CaloDijet2016BCDEFG_Full_hltturnon/triggerData.root --fit-trigger -d fits_2016_12_14/CaloDijet2016BCDEFG_Full_hltturnon/ inputs/data_CaloScoutingHT_Run2016BCDEFGH_NoBiasCorr_Mjj300_Golden36410pb_CaloDijet2016.root  -l 27637  --run-min 0 --run-max 280385