Each of the signal shape input files corresponds to the JESUP/DOWN JERUP/DOWN shapes.

I can explain how we created these for the dijet analysis and we can discuss whether we want to use the same method for the trijet analysis. To get the HLT signal shapes, we actually start from the RECO signal shapes.

We assume that the JES +-1sigma uncertainty is simply given by shifting the mjj values by +-2%. For the JER +1sigma uncertainty, we smear the mjj values by +10% of the RECO jet energy resolution (which varies from ~15% of mjj at low mass to ~5% of mjj at high mass)

So the way the JER/JES uncertainties are applied are explained briefly on slides 4-6 of this Dijet presentation

https://indico.cern.ch/event/544604/contributions/2210115/attachments/1294018/1928591/Dijet_CaloScoutingUpdate_17June2016.pdf

As you can see from the slides, the HLT JER (in green) is slightly worse than the RECO JER (in red). So to get the HLT signal shapes and corresponding JER up/down shapes, we smear the mjj values in our reduced signal ntuples by the the appropriate smearing function.

Note that (somewhat luckily) because the HLT - 1sigma JER is still larger than than the RECO JER, we can define all 3 smearing functions (HLT nominal, +-1sigma JER). For the RECO -1sigma JER, we obviously can't “unsmear” the signal so for that we just let combine assume some interpolation (we don't provide the shape)

The smearing functions for both HLT (nominal, +-1sigma JER) and RECO (+1sigma JER) are defined here:

https://github.com/CMSDIJET/DijetRootTreeAnalyzer/blob/master/src/analysisClass_signalDijetScoutingPlots.C#L101-L111

And then lines 138-154 actually apply the smearing:

https://github.com/CMSDIJET/DijetRootTreeAnalyzer/blob/master/src/analysisClass_signalDijetScoutingPlots.C#L138-L154

The parameters for the HLT and RECO resolution functions which are input to this procedure are defined by the configuration here:

https://github.com/CMSDIJET/DijetRootTreeAnalyzer/blob/master/config/cutFile_signalDijetScoutingPlots.txt#L22-L32

Once we have these histograms produced for our signal sample:

https://github.com/CMSDIJET/DijetRootTreeAnalyzer/blob/1d370c425448448d8b764ce9c20676fe518b1069/data/trees_2016/README

Then we proceeded to make interpolated signal shape templates (and interpolation) using this repository:

https://github.com/CMSDIJET/DijetShapeInterpolator

The code to create these shapes is also in the same directory. We make plots like https://github.com/CMSDIJET/DijetShapeInterpolator/blob/master/inputs/InputShapes_RSGgg_Scouting_Spring15.root with 75 bins from 0 to 1.5*M.

Once we have the histograms, we extract the shapes with https://github.com/CMSDIJET/DijetShapeInterpolator/blob/master/extractShapes.py like

./extractShapes.py -i inputs/InputShapes_RSGgg_CaloScouting_Spring15.root > inputs/input_shapes_gg_13TeV_CaloScouting_Spring15.py

Then interpolate the shapes with https://github.com/CMSDIJET/DijetShapeInterpolator/blob/master/getResonanceShapes.py like

./getResonanceShapes.py -i inputs/input_shapes_gg_13TeV_CaloScouting_Spring15.py -f gg –fineBinning –massrange 500 9000 50 -o ResonanceShapes_gg_13TeV_CaloScouting_Spring15.root

-f qq or -f qg for the other shapes.