File indexing completed on 2025-01-28 23:24:24
0001 import FWCore.ParameterSet.Config as cms
0002 from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer
0003 from DQMServices.Core.DQMEDHarvester import DQMEDHarvester
0004
0005 from DQMOffline.RecoB.bTagMiniDQMTaggers import DeepCSVDiscriminators
0006 from DQMOffline.RecoB.bTagMiniDQMTaggers import DeepFlavourDiscriminators
0007 from DQMOffline.RecoB.bTagMiniDQMTaggers import ParticleNetPuppiCentralDiscriminators
0008 from DQMOffline.RecoB.bTagMiniDQMTaggers import ParticleNetPuppiForwardDiscriminators
0009 from DQMOffline.RecoB.bTagMiniDQMTaggers import UParTDiscriminators
0010
0011 from PhysicsTools.PatAlgos.producersLayer1.jetProducer_cff import patJets
0012
0013
0014 patJetsSVInfo = patJets.clone(
0015 tagInfoSources = ['pfSecondaryVertexTagInfos'],
0016 addTagInfos = True
0017 )
0018 patJetsSVInfoTask = cms.Task(patJetsSVInfo)
0019
0020
0021 bTagSVDQM = DQMEDAnalyzer('MiniAODSVAnalyzer', cms.PSet(
0022 JetTag = cms.InputTag('patJetsSVInfo'),
0023 svTagInfo = cms.string('pfSecondaryVertex'),
0024 ptMin = cms.double(30.),
0025 etaMax = cms.double(2.5),
0026 )
0027 )
0028
0029 bTagMiniDQMGlobal = cms.PSet(
0030 JetTag = cms.InputTag('slimmedJetsPuppi'),
0031 MClevel = cms.int32(0),
0032 differentialPlots = cms.bool(True),
0033 ptActive = cms.bool(False),
0034 ptMin = cms.double(30.),
0035 ptMax = cms.double(40000.),
0036 )
0037 bTagMiniValidationGlobal = bTagMiniDQMGlobal.clone(
0038 MClevel = 1
0039 )
0040 bTagMiniValidationGlobalUParT = bTagMiniDQMGlobal.clone(
0041 MClevel = 4
0042 )
0043
0044
0045 Etaregions = {
0046 'Global': cms.PSet(
0047 etaActive = cms.bool(False),
0048 etaMin = cms.double(0.),
0049 etaMax = cms.double(2.5),
0050 ),
0051 'Barrel': cms.PSet(
0052 etaActive = cms.bool(True),
0053 etaMin = cms.double(0.),
0054 etaMax = cms.double(1.4),
0055 ),
0056 'Endcap': cms.PSet(
0057 etaActive = cms.bool(True),
0058 etaMin = cms.double(1.4),
0059 etaMax = cms.double(2.5),
0060 ),
0061 }
0062
0063
0064
0065 bTagMiniDQMSource = cms.Sequence(bTagSVDQM, patJetsSVInfoTask)
0066 bTagMiniDQMHarvesting = cms.Sequence()
0067
0068
0069 bTagMiniValidationSource = cms.Sequence(bTagSVDQM, patJetsSVInfoTask)
0070 bTagMiniValidationHarvesting = cms.Sequence()
0071
0072
0073
0074
0075
0076
0077 def addSequences(Analyzer, Harvester, discriminators, regions, globalPSet, label='bTag'):
0078 for discr in discriminators.keys():
0079 for region in regions.keys():
0080 name = label + discr + region
0081
0082 globals()[name + 'Analyzer'] = DQMEDAnalyzer('MiniAODTaggerAnalyzer', cms.PSet(globalPSet, discriminators[discr], regions[region]))
0083 globals()[name + 'Harvester'] = DQMEDHarvester('MiniAODTaggerHarvester', cms.PSet(globalPSet, discriminators[discr], regions[region]))
0084
0085 Analyzer.insert(-1, globals()[name + 'Analyzer'])
0086 Harvester.insert(-1, globals()[name + 'Harvester'])
0087
0088 taggersToAnalyze = {
0089 'bTagDeepFlavour': {
0090 'discriminators': DeepFlavourDiscriminators,
0091 'regions':Etaregions
0092 },
0093 'bTagDeepCSV': {
0094 'discriminators': DeepCSVDiscriminators,
0095 'regions':Etaregions
0096 },
0097 'bTagParticleNetCentral': {
0098 'discriminators': ParticleNetPuppiCentralDiscriminators,
0099 'regions': Etaregions
0100 },
0101 'bTagParticleNetForward': {
0102 'discriminators': ParticleNetPuppiForwardDiscriminators,
0103 'regions': {
0104 'Forward': cms.PSet(
0105 etaActive = cms.bool(True),
0106 etaMin = cms.double(2.5),
0107 etaMax = cms.double(5.0),
0108 ),
0109 },
0110 },
0111 'bTagUParT': {
0112 'discriminators': UParTDiscriminators,
0113 'regions': Etaregions
0114 }
0115 }
0116
0117 for tagger in taggersToAnalyze:
0118
0119 addSequences(bTagMiniDQMSource,
0120 bTagMiniDQMHarvesting,
0121 discriminators=taggersToAnalyze[tagger]['discriminators'],
0122 regions=taggersToAnalyze[tagger]['regions'],
0123 globalPSet=bTagMiniDQMGlobal,
0124 label=tagger+'DQM')
0125
0126
0127 addSequences(bTagMiniValidationSource,
0128 bTagMiniValidationHarvesting,
0129 discriminators=taggersToAnalyze[tagger]['discriminators'],
0130 regions=taggersToAnalyze[tagger]['regions'],
0131 globalPSet=bTagMiniValidationGlobalUParT if "UParT" in tagger else bTagMiniValidationGlobal,
0132 label=tagger+'Validation')
0133
0134
0135
0136
0137
0138
0139
0140 patJetsPuppiTagInfoAnalyzerDQM = DQMEDAnalyzer('MiniAODTagInfoAnalyzer', cms.PSet(
0141 jets = cms.InputTag('updatedPatJetsSlimmedPuppiWithDeepTags'),
0142 jetTagInfos = cms.vstring(
0143 "pfDeepFlavourTagInfosSlimmedPuppiWithDeepTags",
0144 "pfParticleNetFromMiniAODAK4PuppiCentralTagInfosSlimmedPuppiWithDeepTags",
0145 "pfUnifiedParticleTransformerAK4TagInfosSlimmedPuppiWithDeepTags",
0146 ),
0147 ptMin = cms.double(30.),
0148 absEtaMin = cms.double(0.0),
0149 absEtaMax = cms.double(2.5),
0150 jetPartonFlavour = cms.int32(-1),
0151 )
0152 )
0153 bTagMiniDQMSource += patJetsPuppiTagInfoAnalyzerDQM
0154
0155
0156 patJetsPuppiForwardTagInfoAnalyzerDQM = patJetsPuppiTagInfoAnalyzerDQM.clone(
0157 jetTagInfos = cms.vstring(
0158 "pfParticleNetFromMiniAODAK4PuppiForwardTagInfosSlimmedPuppiWithDeepTags",
0159 ),
0160 absEtaMin = cms.double(2.5),
0161 absEtaMax = cms.double(5.0),
0162 jetPartonFlavour = cms.int32(-1),
0163 )
0164 bTagMiniDQMSource += patJetsPuppiForwardTagInfoAnalyzerDQM
0165
0166
0167
0168
0169
0170
0171
0172 patJetsPuppiTagInfoAnalyzerValidation = patJetsPuppiTagInfoAnalyzerDQM.clone()
0173 bTagMiniValidationSource += patJetsPuppiTagInfoAnalyzerValidation
0174
0175
0176 patJetsPuppiTagInfoAnalyzerBJetsValidation = patJetsPuppiTagInfoAnalyzerValidation.clone(jetPartonFlavour=5)
0177 bTagMiniValidationSource += patJetsPuppiTagInfoAnalyzerBJetsValidation
0178
0179
0180 patJetsPuppiTagInfoAnalyzerCJetsValidation = patJetsPuppiTagInfoAnalyzerValidation.clone(jetPartonFlavour=4)
0181 bTagMiniValidationSource += patJetsPuppiTagInfoAnalyzerCJetsValidation
0182
0183
0184 patJetsPuppiTagInfoAnalyzerLJetsValidation = patJetsPuppiTagInfoAnalyzerValidation.clone(jetPartonFlavour=1)
0185 bTagMiniValidationSource += patJetsPuppiTagInfoAnalyzerLJetsValidation
0186
0187
0188 patJetsPuppiForwardTagInfoAnalyzerValidation = patJetsPuppiForwardTagInfoAnalyzerDQM.clone()
0189 bTagMiniValidationSource += patJetsPuppiForwardTagInfoAnalyzerValidation
0190
0191
0192
0193
0194
0195 from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA
0196 from Configuration.ProcessModifiers.miniAOD_skip_trackExtras_cff import miniAOD_skip_trackExtras
0197
0198 toExcludeDQMSource_pp_on_AA = [
0199 bTagSVDQM,
0200 patJetsSVInfoTask,
0201 patJetsPuppiTagInfoAnalyzerDQM,
0202 patJetsPuppiForwardTagInfoAnalyzerDQM,
0203 ]
0204
0205 toExcludeValidationSource_pp_on_AA = [
0206 bTagSVDQM,
0207 patJetsSVInfoTask,
0208 patJetsPuppiTagInfoAnalyzerValidation,
0209 patJetsPuppiTagInfoAnalyzerBJetsValidation,
0210 patJetsPuppiTagInfoAnalyzerCJetsValidation,
0211 patJetsPuppiTagInfoAnalyzerLJetsValidation,
0212 patJetsPuppiForwardTagInfoAnalyzerValidation
0213 ]
0214
0215 _mAOD = (pp_on_AA | miniAOD_skip_trackExtras)
0216 _mAOD.toReplaceWith(bTagMiniDQMSource, bTagMiniDQMSource.copyAndExclude(toExcludeDQMSource_pp_on_AA))
0217 _mAOD.toReplaceWith(bTagMiniValidationSource, bTagMiniValidationSource.copyAndExclude(toExcludeValidationSource_pp_on_AA))
0218