Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:25:08

0001 import FWCore.ParameterSet.Config as cms
0002 from RecoEgamma.ElectronIdentification.Identification.mvaElectronID_tools import *
0003 
0004 # Documentation of the MVA
0005 # https://twiki.cern.ch/twiki/bin/viewauth/CMS/MultivariateElectronIdentificationRun2
0006 # https://rembserj.web.cern.ch/rembserj/notes/Electron_MVA_ID_2017_documentation
0007 
0008 #
0009 # In this file we define the locations of the MVA weights, cuts on the MVA values
0010 # for specific working points, and configure those cuts in VID
0011 #
0012 
0013 # The tag is an extra string attached to the names of the products
0014 # such as ValueMaps that needs to distinguish cases when the same MVA estimator
0015 # class is used with different tuning/weights
0016 mvaTag = "Fall17NoIsoV1"
0017 
0018 # There are 6 categories in this MVA. They have to be configured in this strict order
0019 # (cuts and weight files order):
0020 #   0   EB1 (eta<0.8)  pt 5-10 GeV     |   pt < ptSplit && |eta| < ebSplit
0021 #   1   EB2 (eta>=0.8) pt 5-10 GeV     |   pt < ptSplit && |eta| >= ebSplit && |eta| < ebeeSplit
0022 #   2   EE             pt 5-10 GeV     |   pt < ptSplit && |eta| >= ebeeSplit
0023 #   3   EB1 (eta<0.8)  pt 10-inf GeV   |   pt >= ptSplit && |eta| < ebSplit
0024 #   4   EB2 (eta>=0.8) pt 10-inf GeV   |   pt >= ptSplit && |eta| >= ebSplit && |eta| < ebeeSplit
0025 #   5   EE             pt 10-inf GeV   |   pt >= ptSplit && |eta| >= ebeeSplit
0026 
0027 
0028 mvaFall17WeightFiles_V1 = cms.vstring(
0029     "RecoEgamma/ElectronIdentification/data/Fall17/EIDmva_EB1_5_2017_puinfo_BDT.weights.root",
0030     "RecoEgamma/ElectronIdentification/data/Fall17/EIDmva_EB2_5_2017_puinfo_BDT.weights.root",
0031     "RecoEgamma/ElectronIdentification/data/Fall17/EIDmva_EE_5_2017_puinfo_BDT.weights.root",
0032     "RecoEgamma/ElectronIdentification/data/Fall17/EIDmva_EB1_10_2017_puinfo_BDT.weights.root",
0033     "RecoEgamma/ElectronIdentification/data/Fall17/EIDmva_EB2_10_2017_puinfo_BDT.weights.root",
0034     "RecoEgamma/ElectronIdentification/data/Fall17/EIDmva_EE_10_2017_puinfo_BDT.weights.root"
0035     )
0036 
0037 ## The working point for this MVA that is expected to have about 90% signal
0038 # WP tuned to give about 90 and 80% signal efficiecny for electrons from Drell-Yan with pT > 25 GeV
0039 # The working point for the low pt categories is just taken over from the high pt
0040 idName90 = "mvaEleID-Fall17-noIso-V1-wp90"
0041 MVA_WP90 = EleMVA_WP(
0042     idName = idName90, mvaTag = mvaTag,
0043     cutCategory0 = "0.9165112826974601 - exp(-pt / 2.7381703555094217) *    1.03549199648109", # EB1 low pt
0044     cutCategory1 = "0.8655738322220173 - exp(-pt / 2.4027944652597073) *  0.7975615613282494", # EB2 low pt
0045     cutCategory2 = "-3016.035055227131 - exp(-pt / -52140.61856333602) * -3016.3029387236506", # EE low pt
0046     cutCategory3 = "0.9616542816132922 - exp(-pt /  8.757943837889817) *  3.1390200321591206", # EB1
0047     cutCategory4 = "0.9319258011430132 - exp(-pt /  8.846057432565809) *  3.5985063793347787", # EB2
0048     cutCategory5 = "0.8899260780999244 - exp(-pt / 10.124234115859881) *   4.352791250718547", # EE
0049     )
0050 
0051 idName80 = "mvaEleID-Fall17-noIso-V1-wp80"
0052 MVA_WP80 = EleMVA_WP(
0053     idName = idName80, mvaTag = mvaTag,
0054     cutCategory0 = "0.9530240956555949 - exp(-pt / 2.7591425841003647) *  0.4669644718545271", # EB1 low pt
0055     cutCategory1 = "0.9336564763961019 - exp(-pt /  2.709276284272272) * 0.33512286599215946", # EB2 low pt
0056     cutCategory2 = "0.9313133688365339 - exp(-pt / 1.5821934800715558) *  3.8889462619659265", # EE low pt
0057     cutCategory3 = "0.9825268564943458 - exp(-pt /  8.702601455860762) *  1.1974861596609097", # EB1
0058     cutCategory4 = "0.9727509457929913 - exp(-pt /  8.179525631018565) *  1.7111755094657688", # EB2
0059     cutCategory5 = "0.9562619539540145 - exp(-pt /  8.109845366281608) *   3.013927699126942", # EE
0060 )
0061 
0062 ### WP tuned for HZZ analysis with very high efficiency (about 98%)
0063 # The working points were found by requiring the same signal efficiencies in
0064 # each category as for the Spring 16 HZZ ID
0065 # (see RecoEgamma/ElectronIdentification/python/Identification/mvaElectronID_Spring16_HZZ_V1_cff.py)
0066 idNamewpLoose = "mvaEleID-Fall17-noIso-V1-wpLoose"
0067 MVA_WPLoose = EleMVA_WP(
0068     idName = idNamewpLoose, mvaTag = mvaTag,
0069     cutCategory0 =  "-0.13285867293779202", # EB1 low pt
0070     cutCategory1 =  "-0.31765300958836074", # EB2 low pt
0071     cutCategory2 =  "-0.0799205914718861" , # EE low pt
0072     cutCategory3 =  "-0.856871961305474"  , # EB1
0073     cutCategory4 =  "-0.8107642141584835" , # EB2
0074     cutCategory5 =  "-0.7179265933023059"   # EE
0075     )
0076 
0077 #
0078 # Finally, set up VID configuration for all cuts
0079 #
0080 
0081 # Create the PSet that will be fed to the MVA value map producer
0082 mvaEleID_Fall17_noIso_V1_producer_config = cms.PSet(
0083     mvaName             = cms.string(mvaClassName),
0084     mvaTag              = cms.string(mvaTag),
0085     # Category parameters
0086     nCategories         = cms.int32(6),
0087     categoryCuts        = cms.vstring(*EleMVA_6CategoriesCuts),
0088     # Weight files and variable definitions
0089     weightFileNames     = mvaFall17WeightFiles_V1,
0090     variableDefinition  = cms.string("RecoEgamma/ElectronIdentification/data/ElectronMVAEstimatorRun2Fall17V1Variables.txt")
0091     )
0092 # Create the VPset's for VID cuts
0093 mvaEleID_Fall17_V1_wpLoose = configureVIDMVAEleID( MVA_WPLoose )
0094 mvaEleID_Fall17_V1_wp90 = configureVIDMVAEleID( MVA_WP90 )
0095 mvaEleID_Fall17_V1_wp80 = configureVIDMVAEleID( MVA_WP80 )
0096 
0097 mvaEleID_Fall17_V1_wpLoose.isPOGApproved = cms.untracked.bool(True)
0098 mvaEleID_Fall17_V1_wp90.isPOGApproved = cms.untracked.bool(True)
0099 mvaEleID_Fall17_V1_wp80.isPOGApproved = cms.untracked.bool(True)