CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
photons_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
4 
5 from math import ceil,log
6 
7 
8 photon_id_modules_WorkingPoints_nanoAOD = cms.PSet(
9  modules = cms.vstring(
10  'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Fall17_94X_V1_TrueVtx_cff',
11  'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Fall17_94X_V2_cff',
12  'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V1p1_cff',
13  'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V2_cff',
14  'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Spring16_V2p2_cff',
15  'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring16_nonTrig_V1_cff',
16  ),
17  WorkingPoints = cms.vstring(
18  "egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-loose",
19  "egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-medium",
20  "egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-tight",
21  )
22 )
23 photon_id_modules_WorkingPoints_nanoAOD_Spring16V2p2 = cms.PSet(
24  modules = photon_id_modules_WorkingPoints_nanoAOD.modules,
25  WorkingPoints = cms.vstring(
26  "egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-loose",
27  "egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-medium",
28  "egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-tight",
29  )
30 )
31 
32 def make_bitmapVID_docstring(id_modules_working_points_pset):
33  pset = id_modules_working_points_pset
34 
35  for modname in pset.modules:
36  ids = __import__(modname, globals(), locals(), ['idName','cutFlow'])
37  for name in dir(ids):
38  _id = getattr(ids,name)
39  if hasattr(_id,'idName') and hasattr(_id,'cutFlow'):
40  if (len(pset.WorkingPoints)>0 and _id.idName == pset.WorkingPoints[0].split(':')[-1]):
41  cut_names = ','.join([cut.cutName.value() for cut in _id.cutFlow])
42  n_bits_per_cut = int(ceil(log(len(pset.WorkingPoints)+1,2)))
43  return 'VID compressed bitmap (%s), %d bits per cut'%(cut_names, n_bits_per_cut)
44  raise ValueError("Something is wrong in the photon ID modules parameter set!")
45 
46 bitmapVIDForPho = cms.EDProducer("PhoVIDNestedWPBitmapProducer",
47  src = cms.InputTag("slimmedPhotons"),
48  WorkingPoints = photon_id_modules_WorkingPoints_nanoAOD.WorkingPoints,
49 )
50 
51 bitmapVIDForPhoSpring16V2p2 = cms.EDProducer("PhoVIDNestedWPBitmapProducer",
52  src = cms.InputTag("slimmedPhotons"),
53  WorkingPoints = photon_id_modules_WorkingPoints_nanoAOD_Spring16V2p2.WorkingPoints,
54 )
55 
56 isoForPho = cms.EDProducer("PhoIsoValueMapProducer",
57  src = cms.InputTag("slimmedPhotons"),
58  relative = cms.bool(False),
59  rho_PFIso = cms.InputTag("fixedGridRhoFastjetAll"),
60  mapIsoChg = cms.InputTag("photonIDValueMapProducer:phoChargedIsolation"),
61  mapIsoNeu = cms.InputTag("photonIDValueMapProducer:phoNeutralHadronIsolation"),
62  mapIsoPho = cms.InputTag("photonIDValueMapProducer:phoPhotonIsolation"),
63  EAFile_PFIso_Chg = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Fall17/effAreaPhotons_cone03_pfChargedHadrons_90percentBased_V2.txt"),
64  EAFile_PFIso_Neu = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Fall17/effAreaPhotons_cone03_pfNeutralHadrons_90percentBased_V2.txt"),
65  EAFile_PFIso_Pho = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Fall17/effAreaPhotons_cone03_pfPhotons_90percentBased_V2.txt"),
66 )
67 for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
68  modifier.toModify(isoForPho,
69  EAFile_PFIso_Chg = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Spring16/effAreaPhotons_cone03_pfChargedHadrons_90percentBased.txt"),
70  EAFile_PFIso_Neu = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Spring16/effAreaPhotons_cone03_pfNeutralHadrons_90percentBased.txt"),
71  EAFile_PFIso_Pho = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Spring16/effAreaPhotons_cone03_pfPhotons_90percentBased.txt"),
72  )
73 
74 seedGainPho = cms.EDProducer("PhotonSeedGainProducer", src = cms.InputTag("slimmedPhotons"))
75 
76 import RecoEgamma.EgammaTools.calibratedEgammas_cff
77 
78 calibratedPatPhotonsNano = RecoEgamma.EgammaTools.calibratedEgammas_cff.calibratedPatPhotons.clone(
79  produceCalibratedObjs = False,
80  correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2016_UltraLegacy_preVFP_RunFineEtaR9Gain"),
81 )
82 
83 (run2_egamma_2016 & tracker_apv_vfp30_2016).toModify(calibratedPatPhotonsNano,
84  correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2016_UltraLegacy_preVFP_RunFineEtaR9Gain")
85 )
86 
87 (run2_egamma_2016 & ~tracker_apv_vfp30_2016).toModify(calibratedPatPhotonsNano,
88  correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2016_UltraLegacy_postVFP_RunFineEtaR9Gain"),
89 )
90 
91 run2_egamma_2017.toModify(calibratedPatPhotonsNano,
92  correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2017_24Feb2020_runEtaR9Gain_v2")
93 )
94 
95 run2_egamma_2018.toModify(calibratedPatPhotonsNano,
96  correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2018_29Sep2020_RunFineEtaR9Gain")
97 )
98 
99 run2_nanoAOD_102Xv1.toModify(calibratedPatPhotonsNano,
100  correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2018_Step2Closure_CoarseEtaR9Gain_v2")
101 )
102 
103 run2_nanoAOD_94XMiniAODv1.toModify(calibratedPatPhotonsNano,
104  correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2017_17Nov2017_v1_ele_unc")
105 )
106 
107 run2_nanoAOD_94XMiniAODv2.toModify(calibratedPatPhotonsNano,
108  correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2017_17Nov2017_v1_ele_unc")
109 )
110 
111 
112 run2_miniAOD_80XLegacy.toModify(calibratedPatPhotonsNano,
113  correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Legacy2016_07Aug2017_FineEtaR9_v3_ele_unc")
114 )
115 
116 slimmedPhotonsWithUserData = cms.EDProducer("PATPhotonUserDataEmbedder",
117  src = cms.InputTag("slimmedPhotons"),
118  userFloats = cms.PSet(
119  mvaID = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRunIIFall17v2Values"),
120  mvaID_Fall17V1p1 = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRunIIFall17v1p1Values"),
121  mvaID_Spring16nonTrigV1 = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRun2Spring16NonTrigV1Values"),
122  PFIsoChg = cms.InputTag("isoForPho:PFIsoChg"),
123  PFIsoAll = cms.InputTag("isoForPho:PFIsoAll"),
124  ),
125  userIntFromBools = cms.PSet(
126  cutbasedID_loose = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-loose"),
127  cutbasedID_medium = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-medium"),
128  cutbasedID_tight = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-tight"),
129  mvaID_WP90 = cms.InputTag("egmPhotonIDs:mvaPhoID-RunIIFall17-v2-wp90"),
130  mvaID_WP80 = cms.InputTag("egmPhotonIDs:mvaPhoID-RunIIFall17-v2-wp80"),
131  cutbasedIDV1_loose = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V1-loose"),
132  cutbasedIDV1_medium = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V1-medium"),
133  cutbasedIDV1_tight = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V1-tight"),
134  cutID_Spring16_loose = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-loose"),
135  cutID_Spring16_medium = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-medium"),
136  cutID_Spring16_tight = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-tight"),
137  mvaID_Spring16nonTrigV1_WP90 = cms.InputTag("egmPhotonIDs:mvaPhoID-Spring16-nonTrig-V1-wp90"),
138  mvaID_Spring16nonTrigV1_WP80 = cms.InputTag("egmPhotonIDs:mvaPhoID-Spring16-nonTrig-V1-wp80"),
139  ),
140  userInts = cms.PSet(
141  VIDNestedWPBitmap = cms.InputTag("bitmapVIDForPho"),
142  VIDNestedWPBitmap_Spring16V2p2 = cms.InputTag("bitmapVIDForPhoSpring16V2p2"),
143  seedGain = cms.InputTag("seedGainPho"),
144  )
145 )
146 
147 for modifier in run2_egamma_2016, run2_egamma_2017, run2_egamma_2018, run2_miniAOD_80XLegacy, run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2, run2_nanoAOD_102Xv1:
148  modifier.toModify(slimmedPhotonsWithUserData.userFloats,
149  ecalEnergyErrPostCorrNew = cms.InputTag("calibratedPatPhotonsNano","ecalEnergyErrPostCorr"),
150  ecalEnergyPreCorrNew = cms.InputTag("calibratedPatPhotonsNano","ecalEnergyPreCorr"),
151  ecalEnergyPostCorrNew = cms.InputTag("calibratedPatPhotonsNano","ecalEnergyPostCorr"),
152  energyScaleUpNew = cms.InputTag("calibratedPatPhotonsNano","energyScaleUp"),
153  energyScaleDownNew = cms.InputTag("calibratedPatPhotonsNano","energyScaleDown"),
154  energySigmaUpNew = cms.InputTag("calibratedPatPhotonsNano","energySigmaUp"),
155  energySigmaDownNew = cms.InputTag("calibratedPatPhotonsNano","energySigmaDown"),
156  )
157 
158 
159 run2_nanoAOD_94X2016.toModify(slimmedPhotonsWithUserData.userFloats,
160  ecalEnergyErrPostCorrNew = None,
161  ecalEnergyPreCorrNew = None,
162  ecalEnergyPostCorrNew = None,
163  energyScaleUpNew = None,
164  energyScaleDownNew = None,
165  energySigmaUpNew = None,
166  energySigmaDownNew = None
167  )
168 
169 
170 finalPhotons = cms.EDFilter("PATPhotonRefSelector",
171  src = cms.InputTag("slimmedPhotonsWithUserData"),
172  cut = cms.string("pt > 5 ")
173 )
174 
175 photonTable = cms.EDProducer("SimpleCandidateFlatTableProducer",
176  src = cms.InputTag("linkedObjects","photons"),
177  cut = cms.string(""), #we should not filter on cross linked collections
178  name= cms.string("Photon"),
179  doc = cms.string("slimmedPhotons after basic selection (" + finalPhotons.cut.value()+")"),
180  singleton = cms.bool(False), # the number of entries is variable
181  extension = cms.bool(False), # this is the main table for the photons
182  variables = cms.PSet(CandVars,
183  jetIdx = Var("?hasUserCand('jet')?userCand('jet').key():-1", int, doc="index of the associated jet (-1 if none)"),
184  electronIdx = Var("?hasUserCand('electron')?userCand('electron').key():-1", int, doc="index of the associated electron (-1 if none)"),
185  energyErr = Var("getCorrectedEnergyError('regression2')",float,doc="energy error of the cluster from regression",precision=6),
186  r9 = Var("full5x5_r9()",float,doc="R9 of the supercluster, calculated with full 5x5 region",precision=10),
187  sieie = Var("full5x5_sigmaIetaIeta()",float,doc="sigma_IetaIeta of the supercluster, calculated with full 5x5 region",precision=10),
188  cutBased = Var(
189  "userInt('cutbasedID_loose')+userInt('cutbasedID_medium')+userInt('cutbasedID_tight')",
190  int,
191  doc="cut-based ID bitmap, Fall17V2, (0:fail, 1:loose, 2:medium, 3:tight)"
192  ),
193  cutBased_Fall17V1Bitmap = Var(
194  "userInt('cutbasedIDV1_loose')+2*userInt('cutbasedIDV1_medium')+4*userInt('cutbasedIDV1_tight')",
195  int,
196  doc="cut-based ID bitmap, Fall17V1, 2^(0:loose, 1:medium, 2:tight).",
197  ),
198  vidNestedWPBitmap = Var(
199  "userInt('VIDNestedWPBitmap')",
200  int,
201  doc="Fall17V2 " + make_bitmapVID_docstring(photon_id_modules_WorkingPoints_nanoAOD)
202  ),
203  electronVeto = Var("passElectronVeto()",bool,doc="pass electron veto"),
204  pixelSeed = Var("hasPixelSeed()",bool,doc="has pixel seed"),
205  mvaID = Var("userFloat('mvaID')",float,doc="MVA ID score, Fall17V2",precision=10),
206  mvaID_Fall17V1p1 = Var("userFloat('mvaID_Fall17V1p1')",float,doc="MVA ID score, Fall17V1p1",precision=10),
207  mvaID_WP90 = Var("userInt('mvaID_WP90')",bool,doc="MVA ID WP90, Fall17V2"),
208  mvaID_WP80 = Var("userInt('mvaID_WP80')",bool,doc="MVA ID WP80, Fall17V2"),
209  cutBased_Spring16V2p2 = Var(
210  "userInt('cutID_Spring16_loose')+userInt('cutID_Spring16_medium')+userInt('cutID_Spring16_tight')",
211  int,
212  doc="cut-based ID bitmap, Spring16V2p2, (0:fail, 1:loose, 2:medium, 3:tight)"
213  ),
214  mvaID_Spring16nonTrigV1 = Var(
215  "userFloat('mvaID_Spring16nonTrigV1')",
216  float,
217  doc="MVA ID score, Spring16nonTrigV1",
218  precision=10
219  ),
220  vidNestedWPBitmap_Spring16V2p2 = Var(
221  "userInt('VIDNestedWPBitmap_Spring16V2p2')",
222  int,
223  doc="Spring16V2p2 " + make_bitmapVID_docstring(photon_id_modules_WorkingPoints_nanoAOD_Spring16V2p2)
224  ),
225  pfRelIso03_chg = Var("userFloat('PFIsoChg')/pt",float,doc="PF relative isolation dR=0.3, charged component (with rho*EA PU corrections)"),
226  pfRelIso03_all = Var("userFloat('PFIsoAll')/pt",float,doc="PF relative isolation dR=0.3, total (with rho*EA PU corrections)"),
227  hoe = Var("hadronicOverEm()",float,doc="H over E",precision=8),
228  isScEtaEB = Var("abs(superCluster().eta()) < 1.4442",bool,doc="is supercluster eta within barrel acceptance"),
229  isScEtaEE = Var("abs(superCluster().eta()) > 1.566 && abs(superCluster().eta()) < 2.5",bool,doc="is supercluster eta within endcap acceptance"),
230  seedGain = Var("userInt('seedGain')","uint8",doc="Gain of the seed crystal"),
231  )
232 )
233 
234 
235 #these eras need to make the energy correction, hence the "New"
236 for modifier in run2_egamma_2016,run2_egamma_2017,run2_egamma_2018,run2_nanoAOD_94XMiniAODv1, run2_miniAOD_80XLegacy, run2_nanoAOD_102Xv1,run2_nanoAOD_94XMiniAODv2:
237  modifier.toModify(photonTable.variables,
238  pt = Var("pt*userFloat('ecalEnergyPostCorrNew')/userFloat('ecalEnergyPreCorrNew')", float, precision=-1, doc="p_{T}"),
239  energyErr = Var("userFloat('ecalEnergyErrPostCorrNew')",float,doc="energy error of the cluster from regression",precision=6),
240  eCorr = Var("userFloat('ecalEnergyPostCorrNew')/userFloat('ecalEnergyPreCorrNew')",float,doc="ratio of the calibrated energy/miniaod energy"),
241  )
242 
243 #these eras have the energy correction in the mini
244 for modifier in run2_nanoAOD_94X2016,:
245  modifier.toModify(photonTable.variables,
246  pt = Var("pt*userFloat('ecalEnergyPostCorr')/userFloat('ecalEnergyPreCorr')", float, precision=-1, doc="p_{T}"),
247  energyErr = Var("userFloat('ecalEnergyErrPostCorr')",float,doc="energy error of the cluster from regression",precision=6),
248  eCorr = Var("userFloat('ecalEnergyPostCorr')/userFloat('ecalEnergyPreCorr')",float,doc="ratio of the calibrated energy/miniaod energy"),
249 
250  )
251 
252 # only add the Spring16 IDs for 2016 nano
253 (~(run2_nanoAOD_94X2016 | run2_miniAOD_80XLegacy)).toModify(photonTable.variables,
254  cutBased_Spring16V2p2 = None,
255  mvaID_Spring16nonTrigV1 = None,
256  vidNestedWPBitmap_Spring16V2p2 = None,
257 )
258 
259 
260 photonsMCMatchForTable = cms.EDProducer("MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR
261  src = photonTable.src, # final reco collection
262  matched = cms.InputTag("finalGenParticles"), # final mc-truth particle collection
263  mcPdgId = cms.vint32(11,22), # one or more PDG ID (11 = el, 22 = pho); absolute values (see below)
264  checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge
265  mcStatus = cms.vint32(1), # PYTHIA status code (1 = stable, 2 = shower, 3 = hard scattering)
266  maxDeltaR = cms.double(0.3), # Minimum deltaR for the match
267  maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match
268  resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object
269  resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first
270 )
271 
272 photonMCTable = cms.EDProducer("CandMCMatchTableProducer",
273  src = photonTable.src,
274  mcMap = cms.InputTag("photonsMCMatchForTable"),
275  objName = photonTable.name,
276  objType = photonTable.name, #cms.string("Photon"),
277  branchName = cms.string("genPart"),
278  docString = cms.string("MC matching to status==1 photons or electrons"),
279 )
280 
281 from RecoEgamma.EgammaTools.egammaObjectModificationsInMiniAOD_cff import egamma8XObjectUpdateModifier,egamma9X105XUpdateModifier,prependEgamma8XObjectUpdateModifier
282 #we have dataformat changes to 106X so to read older releases we use egamma updators
283 slimmedPhotonsTo106X = cms.EDProducer("ModifiedPhotonProducer",
284  src = cms.InputTag("slimmedPhotons"),
285  modifierConfig = cms.PSet( modifications = cms.VPSet(egamma9X105XUpdateModifier) )
286 )
287 #might as well fix 80X while we're at it although the differences are not so relavent for nano
288 run2_miniAOD_80XLegacy.toModify( slimmedPhotonsTo106X.modifierConfig.modifications, prependEgamma8XObjectUpdateModifier )
289 
290 for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016 ,run2_nanoAOD_102Xv1:
291  modifier.toModify(bitmapVIDForPho, src = "slimmedPhotonsTo106X")
292  modifier.toModify(bitmapVIDForPhoSpring16V2p2, src = "slimmedPhotonsTo106X")
293  modifier.toModify(isoForPho, src = "slimmedPhotonsTo106X")
294  modifier.toModify(calibratedPatPhotonsNano, src = "slimmedPhotonsTo106X")
295  modifier.toModify(slimmedPhotonsWithUserData, src = "slimmedPhotonsTo106X")
296  modifier.toModify(seedGainPho, src = "slimmedPhotonsTo106X")
297 
298 
299 
300 for modifier in run2_nanoAOD_106Xv1,run2_nanoAOD_106Xv2,run2_egamma_2016,run2_egamma_2017,run2_egamma_2018,run2_miniAOD_80XLegacy, run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1:
301  modifier.toModify(photonTable.variables,
302  dEscaleUp=Var("userFloat('ecalEnergyPostCorrNew') - userFloat('energyScaleUpNew')", float, doc="ecal energy scale shifted 1 sigma up (adding gain/stat/syst in quadrature)", precision=8),
303  dEscaleDown=Var("userFloat('ecalEnergyPostCorrNew') - userFloat('energyScaleDownNew')", float, doc="ecal energy scale shifted 1 sigma down (adding gain/stat/syst in quadrature)", precision=8),
304  dEsigmaUp=Var("userFloat('ecalEnergyPostCorrNew') - userFloat('energySigmaUpNew')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8),
305  dEsigmaDown=Var("userFloat('ecalEnergyPostCorrNew') - userFloat('energySigmaDownNew')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8),
306  )
307 
308 for modifier in run2_nanoAOD_94X2016,:
309  modifier.toModify(photonTable.variables,
310  dEscaleUp=Var("userFloat('ecalEnergyPostCorr') - userFloat('energyScaleUp')", float, doc="ecal energy scale shifted 1 sigma up (adding gain/stat/syst in quadrature)", precision=8),
311  dEscaleDown=Var("userFloat('ecalEnergyPostCorr') - userFloat('energyScaleDown')", float, doc="ecal energy scale shifted 1 sigma down (adding gain/stat/syst in quadrature)", precision=8),
312  dEsigmaUp=Var("userFloat('ecalEnergyPostCorr') - userFloat('energySigmaUp')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8),
313  dEsigmaDown=Var("userFloat('ecalEnergyPostCorr') - userFloat('energySigmaDown')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8),
314  )
315 
316 photonSequence = cms.Sequence(
317  bitmapVIDForPho + \
318  bitmapVIDForPhoSpring16V2p2 + \
319  isoForPho + \
320  seedGainPho + \
321  slimmedPhotonsWithUserData + \
322  finalPhotons
323 )
324 
325 photonTables = cms.Sequence ( photonTable)
326 photonMC = cms.Sequence(photonsMCMatchForTable + photonMCTable)
327 
328 from RecoEgamma.EgammaIsolationAlgos.egmPhotonIsolationMiniAOD_cff import egmPhotonIsolation
329 from RecoEgamma.PhotonIdentification.photonIDValueMapProducer_cff import photonIDValueMapProducer
330 
331 _withUpdatePho_sequence = photonSequence.copy()
332 
333 
334 
335 _withUL16preVFPScale_sequence = photonSequence.copy()
336 _withUL16preVFPScale_sequence.replace(slimmedPhotonsWithUserData, calibratedPatPhotonsNano + slimmedPhotonsWithUserData)
337 (run2_egamma_2016 & tracker_apv_vfp30_2016).toReplaceWith(photonSequence, _withUL16preVFPScale_sequence)
338 
339 _withUL16postVFPScale_sequence = photonSequence.copy()
340 _withUL16postVFPScale_sequence.replace(slimmedPhotonsWithUserData, calibratedPatPhotonsNano + slimmedPhotonsWithUserData)
341 (run2_egamma_2016 & ~tracker_apv_vfp30_2016).toReplaceWith(photonSequence, _withUL16postVFPScale_sequence)
342 
343 _withUL17Scale_sequence = photonSequence.copy()
344 _withUL17Scale_sequence.replace(slimmedPhotonsWithUserData, calibratedPatPhotonsNano + slimmedPhotonsWithUserData)
345 run2_egamma_2017.toReplaceWith(photonSequence, _withUL17Scale_sequence)
346 
347 _withUL18Scale_sequence = photonSequence.copy()
348 _withUL18Scale_sequence.replace(slimmedPhotonsWithUserData, calibratedPatPhotonsNano + slimmedPhotonsWithUserData)
349 run2_egamma_2018.toReplaceWith(photonSequence, _withUL18Scale_sequence)
350 
351 
352 _updatePhoTo106X_sequence =cms.Sequence(egmPhotonIsolation + photonIDValueMapProducer + slimmedPhotonsTo106X)
353 _withUpdatePho_sequence.insert(0,_updatePhoTo106X_sequence)
354 for modifier in run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016 ,run2_nanoAOD_102Xv1,run2_nanoAOD_94XMiniAODv1:
355  modifier.toReplaceWith(photonSequence, _withUpdatePho_sequence)
356 
357 
358 _with80XScale_sequence = _withUpdatePho_sequence.copy()
359 _with80XScale_sequence.replace(slimmedPhotonsWithUserData, calibratedPatPhotonsNano + slimmedPhotonsWithUserData)
360 run2_miniAOD_80XLegacy.toReplaceWith(photonSequence, _with80XScale_sequence)
361 
362 _with94Xv1Scale_sequence = _withUpdatePho_sequence.copy()
363 _with94Xv1Scale_sequence.replace(slimmedPhotonsWithUserData, calibratedPatPhotonsNano + slimmedPhotonsWithUserData)
364 run2_nanoAOD_94XMiniAODv1.toReplaceWith(photonSequence, _with94Xv1Scale_sequence)
365 
366 _with94Xv2Scale_sequence = _withUpdatePho_sequence.copy()
367 _with94Xv2Scale_sequence.replace(slimmedPhotonsWithUserData, calibratedPatPhotonsNano + slimmedPhotonsWithUserData)
368 run2_nanoAOD_94XMiniAODv2.toReplaceWith(photonSequence, _with94Xv2Scale_sequence)
369 
370 _with102Xv1Scale_sequence = photonSequence.copy()
371 _with102Xv1Scale_sequence.replace(slimmedPhotonsWithUserData, calibratedPatPhotonsNano + slimmedPhotonsWithUserData)
372 run2_nanoAOD_102Xv1.toReplaceWith(photonSequence, _with102Xv1Scale_sequence)
photons_cff.make_bitmapVID_docstring
def make_bitmapVID_docstring(id_modules_working_points_pset)
Definition: photons_cff.py:32
join
static std::string join(char **cmd)
Definition: RemoteFile.cc:17
common_cff
common_cff.Var
def Var(expr, valtype, compression=None, doc=None, mcOnly=False, precision=-1)
Definition: common_cff.py:20
reco::ceil
constexpr int32_t ceil(float num)
Definition: constexpr_cmath.h:7
submitPVValidationJobs.split
def split(sequence, size)
Definition: submitPVValidationJobs.py:352
photons_cff.int
int
Definition: photons_cff.py:183
nano_eras_cff
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
DeadROC_duringRun.dir
dir
Definition: DeadROC_duringRun.py:23