Skip to content

Latest commit

 

History

History
97 lines (79 loc) · 4.01 KB

README.md

File metadata and controls

97 lines (79 loc) · 4.01 KB

L1EG_Calibrations

Clone from charis's L1 Repo

How to derive the new calibrations recipe:

To produce the new LUTs for the L1 EG Calibrations we need to follow the steps below:

  1. Emulation of L1 and making relavant TagAndProbe Ntuples
  2. Setting up Regression Training and obtaining new caliberation
  3. Re-Emulating sample with new dataset

Emulation of L1 to produse TagAndProbeNtuples

See EGTagAndProbe for making Ntuples with emulated data. Make sure the following variables are stored in the output ntuples :

  • RunNumber
  • Event Number
  • Lumi
  • l1tEmuTowerIEta
  • l1tEmuRawEt
  • shape
  • eleProbeSclEt
  • TowerHoE
  • l1tEmuNTT
  • isProbeLoose
  1. Make sure you have updated the files with the new TPs and/or Layer-1 corrections (L1Trigger/L1TCalorimeter/python/caloParamsXX.cfi.py & L1Trigger/L1TCalorimeter/data/)

Setting up the environment to run the regression training:

cmsrel CMSSW_7_6_0
cd CMSSW_7_6_0/src
cmsenv
git clone git@github.com:ats2008/L1EGCalibrations.git
scram b -j 8
cd L1EGCalibrations/Calibration/RegressionTraining/
make -j 4  # To generate regression.exe file

Preprocessing of data files for training

  1. Make the reduced tree with relevant branches. Modify L1EGCalibrations/Calibration/RegressionTraining/makeRegressionTree.cc to point to the TagAndProbe Ntuple toi train on.

     $ root makeRegressionTree.cc

    This step will produce a new root file with the L1 quantities needed for the regression training. These variables stored in it are:

    • Run Number
    • Event Number
    • Lumi
    • iEta (l1tEmuTowerIEta from the TagAndProbe tree)
    • E (l1tEmuRawEt from the TagAndProbe tree)
    • Shape (shape from the TagAndProbe tree)
    • Target (target is equal to: eleProbeSclEt / (0.5 * l1tEmuRawEt))
    • H/E (TowerHoE from the TagAndProbe tree)
    • nTT (l1tEmuNTT from the TagAndProbe tree)
    • Run2IdLevel (isProbeLoose from the TagAndProbe tree)
  2. Use the script produceTreeWithCompressedIetaEShape.py to compress the variables. This file uses the following .txt files containing the compressions of each variable:

    • data/egCompressShapesLUT_calibr_4bit_v4.txt
    • data/egCompressELUT_4bit_v4.txt
    • data/egCompressEtaLUT_4bit_v4.txt

    This step will produce a new root file which will be used for regression of caliberation LUT .It will also make data/compressedSortedShapes.txt which will later be used to decompress the shape variable.

  3. Setup the regressionConfig.cfg for regression training

  4. Derive the calibrations:

$ ./regression.exe regressionConfig.cfg

This step should make a XXresultXX.root in the designated output directory in regressionConfig.cfg

  1. Use produceCalibrationLUTwithoutShapes.py to ( this file uses the data/compressedSortedShapes.txt produced earlier)
$ python produceCalibrationLUTwithoutShapes.py    # Produce the calibration LUT without the shapes:
  1. To produce the calibration LUT with the shapes use the script makeCorrectedLUT.cc add the shape according to nTT, Et and Eta.
$ root makeCorrectedLUT.cc

Compare the two LUTs, they should start from the same calibration value.

Add some information on the output LUT file, similar to:

    # Calibration vs |ieta|,shape,E. Derived from Run 283478 data, with semi-parametric regression
    # The LUT output is (ET_off/ET_L1) between 0 and 2, encoded on 9 bits
    # Index is compressedShape+compressedE<<4+compressedIeta<<8.
    # Compression version is v4 
    #anything after # is ignored with the exception of the header
    #the header is first valid line starting with #<header> versionStr(unused but may be in future) nrBitsAddress nrBitsData </header>
    #<header> V8 12 10 </header>

Once you check that everything looks OK in the LUT with shapes, use it to produce a new emulated sample, and compare efficiencies and resolutions with the previous emulated sample.