File indexing completed on 2025-03-31 22:27:14
0001 import FWCore.ParameterSet.Config as cms
0002
0003 from Validation.RecoMuon.selectors_cff import *
0004 from Validation.RecoMuon.track_selectors_cff import *
0005 from Validation.RecoMuon.associators_cff import *
0006 from Validation.RecoMuon.histoParameters_cff import *
0007
0008 import Validation.RecoMuon.MuonTrackValidator_cfi
0009 MTVhlt = Validation.RecoMuon.MuonTrackValidator_cfi.muonTrackValidator.clone(
0010
0011
0012
0013
0014
0015 label_tp = ("TPmu"),
0016 label_tp_refvector = True,
0017 dirName = 'HLT/Muon/MuonTrack/',
0018
0019 ignoremissingtrackcollection=True,
0020 doSummaryPlots = True
0021 )
0022 MTVhlt.muonTPSelector.src = ("TPmu")
0023
0024
0025
0026
0027
0028
0029 hltMuonMultiTrackValidator = MTVhlt.clone(
0030 associatormap = (
0031 'tpToL2MuonAssociation',
0032 'tpToL2UpdMuonAssociation',
0033 'tpToL3OITkMuonAssociation',
0034 'tpToL3TkMuonAssociation',
0035 'tpToL3FromL1TkMuonAssociation',
0036 'tpToL0L3FromL1TkMuonAssociation',
0037 'tpToL3GlbMuonAssociation',
0038 'tpToL3NoIDMuonAssociation',
0039 'tpToL3MuonAssociation'
0040 ),
0041 label = (
0042 'hltL2Muons',
0043 'hltL2Muons:UpdatedAtVtx',
0044 'hltIterL3OIMuonTrackSelectionHighPurity',
0045 'hltIterL3MuonMerged',
0046 'hltIterL3MuonAndMuonFromL1Merged',
0047 'hltIter0IterL3FromL1MuonTrackSelectionHighPurity',
0048 'hltIterL3GlbMuon',
0049 'hltIterL3MuonsNoIDTracks',
0050 'hltIterL3MuonsTracks'
0051 ),
0052 muonHistoParameters = (
0053 staMuonHistoParameters,
0054 staUpdMuonHistoParameters,
0055 trkMuonHistoParameters,
0056 trkMuonHistoParameters,
0057 trkMuonHistoParameters,
0058 trkMuonHistoParameters,
0059 glbMuonHistoParameters,
0060 glbMuonHistoParameters,
0061 glbMuonHistoParameters
0062 )
0063 )
0064
0065
0066
0067
0068
0069 _hltMuonMultiTrackValidator = MTVhlt.clone(
0070 associatormap = (
0071 'Phase2tpToL2SeedAssociation',
0072 'Phase2tpToL2MuonAssociation',
0073 'Phase2tpToL2MuonUpdAssociation',
0074 'Phase2tpToL3IOTkAssociation',
0075 'Phase2tpToL3OITkAssociation',
0076 'Phase2tpToL3TkMergedAssociation',
0077 'Phase2tpToL3GlbMuonMergedAssociation',
0078 'Phase2tpToL3MuonNoIdAssociation',
0079 'Phase2tpToL3MuonIdAssociation'
0080 ),
0081 label = (
0082 'hltPhase2L2MuonSeedTracks',
0083 'hltL2MuonsFromL1TkMuon',
0084 'hltL2MuonsFromL1TkMuon:UpdatedAtVtx',
0085 'hltIter2Phase2L3FromL1TkMuonMerged',
0086 'hltPhase2L3OIMuonTrackSelectionHighPurity',
0087 'hltPhase2L3MuonMerged',
0088 'hltPhase2L3GlbMuon',
0089 'hltPhase2L3MuonNoIdTracks',
0090 'hltPhase2L3MuonIdTracks'
0091 ),
0092 muonHistoParameters = (
0093 staSeedMuonHistoParameters,
0094 staMuonHistoParameters,
0095 staUpdMuonHistoParameters,
0096 trkMuonHistoParameters,
0097 trkMuonHistoParameters,
0098 trkMuonHistoParameters,
0099 glbMuonHistoParameters,
0100 glbMuonHistoParameters,
0101 glbMuonHistoParameters
0102 )
0103 )
0104
0105
0106 from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons
0107 from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst
0108
0109 def _modify_for_IO_first(validator):
0110 validator.associatormap += ['Phase2tpToL2MuonToReuseAssociation', 'Phase2tpToL3IOTkFilteredAssociation']
0111 validator.label += ['hltPhase2L3MuonFilter:L2MuToReuse', 'hltPhase2L3MuonFilter:L3IOTracksFiltered']
0112 validator.muonHistoParameters.extend([staMuonHistoParameters, trkMuonHistoParameters])
0113
0114 def _modify_for_OI_first(validator):
0115 validator.associatormap += ['Phase2tpToL3OITkFilteredAssociation']
0116 validator.label += ['hltPhase2L3MuonFilter:L3OITracksFiltered']
0117 validator.muonHistoParameters.extend([trkMuonHistoParameters])
0118
0119 (phase2L2AndL3Muons & ~phase2L3MuonsOIFirst).toModify(_hltMuonMultiTrackValidator, _modify_for_IO_first)
0120 (phase2L2AndL3Muons & phase2L3MuonsOIFirst).toModify(_hltMuonMultiTrackValidator, _modify_for_OI_first)
0121
0122
0123
0124 from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer
0125
0126 global_items = list(globals().items())
0127 for _name, _obj in global_items:
0128
0129 if isinstance(_obj, DQMEDAnalyzer) and hasattr(_obj, 'label') and hasattr(_obj, 'associatormap') and hasattr(_obj, 'muonHistoParameters'):
0130
0131 if (len(_obj.label) != len(_obj.associatormap) or len(_obj.label) != len(_obj.muonHistoParameters)
0132 or len(_obj.associatormap) != len(_obj.muonHistoParameters)):
0133 raise RuntimeError(f"MuonTrackValidatorHLT -- {_name}: associatormap, label and muonHistoParameters must have the same length!")
0134
0135 for i in range(0, len(_obj.label)):
0136
0137 associators_module = __import__('Validation.RecoMuon.associators_cff', globals(), locals(), ['associators'], 0)
0138 _assoc = getattr(associators_module, _obj.associatormap[i].value()) if isinstance(_obj.associatormap[i], cms.InputTag) else getattr(associators_module, _obj.associatormap[i])
0139 _label = _obj.label[i].value() if isinstance(_obj.label[i], cms.InputTag) else _obj.label[i]
0140 _tracksTag = _assoc.tracksTag.value() if hasattr(_assoc, 'tracksTag') else _assoc.label_tr.value()
0141 if _tracksTag != _label:
0142 raise RuntimeError(f"MuonTrackValidatorHLT -- {_name}: associatormap and label do not match for index {i}.\n"
0143 f"Associator's tracksTag: {_tracksTag}, collection label in the validator: {_label}.\n"
0144 "Make sure to have the correct ordering!")
0145
0146 from Configuration.Eras.Modifier_phase2_muon_cff import phase2_muon
0147 phase2_muon.toReplaceWith(hltMuonMultiTrackValidator, _hltMuonMultiTrackValidator)
0148
0149
0150
0151
0152
0153 muonValidationHLT_seq = cms.Sequence(muonAssociationHLT_seq + hltMuonMultiTrackValidator)
0154
0155 recoMuonValidationHLT_seq = cms.Sequence(
0156 cms.SequencePlaceholder("TPmu") +
0157 muonValidationHLT_seq
0158 )