File indexing completed on 2025-03-31 22:27:14
0001
0002
0003
0004 import FWCore.ParameterSet.Config as cms
0005
0006 from Validation.RecoMuon.selectors_cff import *
0007 from Validation.RecoMuon.track_selectors_cff import *
0008 from Validation.RecoMuon.associators_cff import *
0009 from Validation.RecoMuon.histoParameters_cff import *
0010
0011 from Validation.RecoMuon.RecoMuonValidator_cff import *
0012 from Validation.RecoMuon.RecoDisplacedMuonValidator_cff import *
0013
0014 import Validation.RecoMuon.MuonTrackValidator_cfi
0015 MTV = Validation.RecoMuon.MuonTrackValidator_cfi.muonTrackValidator.clone(
0016
0017
0018
0019
0020
0021 label_tp = ("TPmu"),
0022 label_tp_refvector = True
0023 )
0024 MTV.muonTPSelector.src = ("TPmu")
0025
0026
0027 trkMuonTrackVTrackAssoc = MTV.clone(
0028 associatormap = ('tpToTkmuTrackAssociation',),
0029 associators = ('trackAssociatorByHits',),
0030
0031 label = ('probeTracks',),
0032 label_tp = ("TPtrack"),
0033 muonHistoParameters = (trkMuonHistoParameters,)
0034 )
0035 trkMuonTrackVTrackAssoc.muonTPSelector.src = ("TPtrack")
0036
0037
0038 trkProbeTrackVMuonAssoc = MTV.clone(
0039 associatormap = ('tpToTkMuonAssociation',),
0040
0041 label = ('probeTracks',),
0042 label_tp = ("TPtrack"),
0043 muonHistoParameters = (trkMuonHistoParameters,)
0044 )
0045 trkProbeTrackVMuonAssoc.muonTPSelector.src = ("TPtrack")
0046
0047
0048
0049 muonMultiTrackValidator = MTV.clone(
0050 associatormap = (
0051 'tpToStaSeedAssociation',
0052 'tpToStaMuonAssociation',
0053 'tpToStaUpdMuonAssociation',
0054 'tpToGlbMuonAssociation',
0055 'tpTorecoMuonMuonAssociation'
0056 ),
0057 label = (
0058 'seedsOfSTAmuons',
0059 'standAloneMuons',
0060 'standAloneMuons:UpdatedAtVtx',
0061 'globalMuons',
0062 'recoMuonTracks'
0063 ),
0064 muonHistoParameters = (
0065 staSeedMuonHistoParameters,
0066 staMuonHistoParameters,
0067 staUpdMuonHistoParameters,
0068 glbMuonHistoParameters,
0069 glbMuonHistoParameters
0070 ),
0071 doSummaryPlots = True
0072 )
0073
0074 muonMultiTrackValidator_phase2 = muonMultiTrackValidator.clone()
0075 muonMultiTrackValidator_phase2.associatormap = ('tpToStaUpdMuonAssociation','tpToGlbMuonAssociation','tpTorecoMuonMuonAssociation')
0076 muonMultiTrackValidator_phase2.label = ('standAloneMuons:UpdatedAtVtx','globalMuons','recoMuonTracks')
0077 muonMultiTrackValidator_phase2.muonHistoParameters = (staUpdMuonHistoParameters,glbMuonHistoParameters,glbMuonHistoParameters)
0078
0079
0080
0081 muonMultiTrackValidatorRefit = MTV.clone(
0082 associatormap = (
0083 'tpToStaRefitMuonAssociation',
0084 'tpToStaRefitUpdMuonAssociation'
0085 ),
0086 label = (
0087 'refittedStandAloneMuons',
0088 'refittedStandAloneMuons:UpdatedAtVtx'
0089 ),
0090 muonHistoParameters = (
0091 staMuonHistoParameters,
0092 staUpdMuonHistoParameters
0093 )
0094 )
0095
0096
0097
0098 displacedTrackVMuonAssoc = MTV.clone(
0099 associatormap = ('tpToDisplacedTrkMuonAssociation',),
0100 label = ('displacedTracks',),
0101 label_tp = ("TPtrack"),
0102 muonTPSelector = displacedMuonTPSet,
0103 muonHistoParameters = (displacedTrkMuonHistoParameters,)
0104 )
0105 displacedTrackVMuonAssoc.muonTPSelector.src = ("TPtrack")
0106
0107 displacedMuonMultiTrackValidator = MTV.clone(
0108 associatormap = (
0109 'tpToDisplacedStaSeedAssociation',
0110 'tpToDisplacedStaMuonAssociation',
0111 'tpToDisplacedGlbMuonAssociation',
0112 ),
0113 label = (
0114 'seedsOfDisplacedSTAmuons',
0115 'displacedStandAloneMuons',
0116 'displacedGlobalMuons'
0117 ),
0118 muonTPSelector = displacedMuonTPSet,
0119 muonHistoParameters = (
0120 displacedStaSeedMuonHistoParameters,
0121 displacedStaMuonHistoParameters,
0122 displacedGlbMuonHistoParameters
0123 )
0124 )
0125 displacedMuonMultiTrackValidator.muonTPSelector.src = ("TPmu")
0126
0127 displacedMuonMultiTrackValidator_phase2 = displacedMuonMultiTrackValidator.clone()
0128 displacedMuonMultiTrackValidator_phase2.associatormap = ('tpToDisplacedStaMuonAssociation','tpToDisplacedGlbMuonAssociation')
0129 displacedMuonMultiTrackValidator_phase2.label = ('displacedStandAloneMuons','displacedGlobalMuons')
0130 displacedMuonMultiTrackValidator_phase2.muonHistoParameters = (displacedStaMuonHistoParameters,displacedGlbMuonHistoParameters)
0131
0132
0133
0134 tevMuonMultiTrackValidator = MTV.clone(
0135 associatormap = (
0136 'tpToTevFirstMuonAssociation',
0137 'tpToTevPickyMuonAssociation',
0138 'tpToTevDytMuonAssociation',
0139 'tpToTunePMuonAssociation'
0140 ),
0141 label = (
0142 'tevMuons:firstHit',
0143 'tevMuons:picky',
0144 'tevMuons:dyt',
0145 'tunepMuonTracks'
0146 ),
0147 muonHistoParameters = (
0148 glbMuonHistoParameters,
0149 glbMuonHistoParameters,
0150 glbMuonHistoParameters,
0151 glbMuonHistoParameters
0152 )
0153 )
0154
0155 tevMuonMultiTrackValidator_phase2 = MTV.clone(
0156 associatormap = ('tpToTunePMuonAssociation',),
0157 label = ('tunepMuonTracks',),
0158 muonHistoParameters = (glbMuonHistoParameters,)
0159 )
0160
0161 pfMuonTrackVMuonAssoc = MTV.clone(
0162 associatormap = ('tpToPFMuonAssociation',),
0163 label = ('pfMuonTracks',),
0164 label_tp = ("TPpfmu"),
0165 muonHistoParameters = (glbMuonHistoParameters,)
0166 )
0167 pfMuonTrackVMuonAssoc.muonTPSelector.src = ("TPpfmu")
0168
0169 gemMuonTrackVMuonAssoc = MTV.clone(
0170 associatormap = ('tpToGEMMuonMuonAssociation',),
0171 label = ('extractGemMuons',),
0172 muonHistoParameters = (gemMuonHistoParameters,)
0173 )
0174
0175 me0MuonTrackVMuonAssoc = MTV.clone(
0176 associatormap = ('tpToME0MuonMuonAssociation',),
0177 label = ('extractMe0Muons',),
0178 muonTPSelector = me0MuonTPSet,
0179 muonHistoParameters = (me0MuonHistoParameters,)
0180 )
0181 me0MuonTrackVMuonAssoc.muonTPSelector.src = ("TPmu")
0182
0183 MTVcosmic = Validation.RecoMuon.MuonTrackValidator_cfi.muonTrackValidator.clone(
0184
0185
0186
0187
0188 parametersDefiner = 'CosmicParametersDefinerForTP',
0189 muonTPSelector = cosmicMuonTPSet
0190 )
0191
0192
0193 cosmic2LegMuonMultiTrackValidator = MTVcosmic.clone(
0194 associatormap = (
0195 'tpToTkCosmicSelMuonAssociation',
0196 'tpToStaCosmicSelMuonAssociation',
0197 'tpToGlbCosmicSelMuonAssociation'
0198 ),
0199 label = (
0200 'ctfWithMaterialTracksP5LHCNavigation',
0201 'cosmicMuons',
0202 'globalCosmicMuons'
0203 ),
0204 BiDirectional_RecoToSim_association = False,
0205 muonHistoParameters = (
0206 trkCosmicMuonHistoParameters,
0207 staCosmicMuonHistoParameters,
0208 glbCosmicMuonHistoParameters
0209 )
0210 )
0211
0212 cosmic1LegMuonMultiTrackValidator = MTVcosmic.clone(
0213 associatormap = (
0214 'tpToTkCosmic1LegSelMuonAssociation',
0215 'tpToStaCosmic1LegSelMuonAssociation',
0216 'tpToGlbCosmic1LegSelMuonAssociation',
0217 ),
0218 label = (
0219 'ctfWithMaterialTracksP5',
0220 'cosmicMuons1Leg',
0221 'globalCosmicMuons1Leg'
0222 ),
0223 muonHistoParameters = (
0224 trkCosmic1LegMuonHistoParameters,
0225 staCosmic1LegMuonHistoParameters,
0226 glbCosmic1LegMuonHistoParameters
0227 )
0228 )
0229
0230
0231
0232 from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer
0233
0234 global_items = list(globals().items())
0235 for _name, _obj in global_items:
0236
0237 if isinstance(_obj, DQMEDAnalyzer) and hasattr(_obj, 'label') and hasattr(_obj, 'associatormap') and hasattr(_obj, 'muonHistoParameters'):
0238
0239 if (len(_obj.label) != len(_obj.associatormap) or len(_obj.label) != len(_obj.muonHistoParameters)
0240 or len(_obj.associatormap) != len(_obj.muonHistoParameters)):
0241 raise RuntimeError(f"MuonTrackValidator -- {_name}: associatormap, label and muonHistoParameters must have the same length!")
0242
0243 for i in range(0, len(_obj.label)):
0244
0245 associators_module = __import__('Validation.RecoMuon.associators_cff', globals(), locals(), ['associators'], 0)
0246 _assoc = getattr(associators_module, _obj.associatormap[i].value()) if isinstance(_obj.associatormap[i], cms.InputTag) else getattr(associators_module, _obj.associatormap[i])
0247 _label = _obj.label[i].value() if isinstance(_obj.label[i], cms.InputTag) else _obj.label[i]
0248 _tracksTag = _assoc.tracksTag.value() if hasattr(_assoc, 'tracksTag') else _assoc.label_tr.value()
0249 if _tracksTag != _label:
0250 raise RuntimeError(f"MuonTrackValidator -- {_name}: associatormap and label do not match for index {i}.\n"
0251 f"Associator's tracksTag: {_tracksTag}, collection label in the validator: {_label}.\n"
0252 "Make sure to have the correct ordering!")
0253
0254
0255
0256
0257 muonValidation_seq = cms.Sequence(muonAssociation_seq
0258 +trkMuonTrackVTrackAssoc
0259 +trkProbeTrackVMuonAssoc
0260 +muonMultiTrackValidator
0261 +pfMuonTrackVMuonAssoc
0262 )
0263
0264 muonValidationTEV_seq = cms.Sequence(muonAssociationTEV_seq
0265 +tevMuonMultiTrackValidator
0266 )
0267
0268 muonValidationRefit_seq = cms.Sequence(muonAssociationRefit_seq
0269 +muonMultiTrackValidatorRefit
0270 )
0271
0272 muonValidationDisplaced_seq = cms.Sequence(muonAssociationDisplaced_seq
0273 +displacedTrackVMuonAssoc
0274 +displacedMuonMultiTrackValidator
0275 )
0276
0277 muonValidationCosmic_seq = cms.Sequence(muonAssociationCosmic_seq
0278 +cosmic2LegMuonMultiTrackValidator
0279 +cosmic1LegMuonMultiTrackValidator
0280 )
0281
0282 gemMuonValidation = cms.Sequence(extractGemMuonsTracks_seq
0283 +tpToGEMMuonMuonAssociation
0284 +gemMuonTrackVMuonAssoc
0285 )
0286
0287 me0MuonValidation = cms.Sequence(extractMe0MuonsTracks_seq
0288 +tpToME0MuonMuonAssociation
0289 +me0MuonTrackVMuonAssoc
0290 )
0291
0292
0293
0294
0295 recoMuonValidation = cms.Sequence(TPtrack_seq
0296 +TPmu_seq
0297 +TPpfmu_seq
0298 +muonValidation_seq
0299 +muonValidationTEV_seq
0300 +muonValidationRefit_seq
0301 +muonValidationDisplaced_seq
0302 +muonValidationRMV_seq
0303 +muonValidationRDMV_seq
0304 )
0305
0306
0307 from Configuration.Eras.Modifier_fastSim_cff import fastSim
0308 fastSim.toReplaceWith(recoMuonValidation, cms.Sequence(cms.SequencePlaceholder("TPtrack") + cms.SequencePlaceholder("TPmu") + cms.SequencePlaceholder("TPpfmu") + muonValidation_seq + muonValidationTEV_seq + muonValidationRefit_seq + muonValidationRMV_seq))
0309
0310
0311 recoCosmicMuonValidation = cms.Sequence(muonValidationCosmic_seq)
0312
0313
0314 recoMuonValidation_reduced_seq = cms.Sequence(muonAssociationReduced_seq
0315 +trkProbeTrackVMuonAssoc
0316 +muonMultiTrackValidator_phase2
0317 +tevMuonMultiTrackValidator_phase2
0318 +pfMuonTrackVMuonAssoc
0319 +displacedTrackVMuonAssoc
0320 +displacedMuonMultiTrackValidator_phase2
0321 )
0322
0323
0324
0325
0326 _run3_muonValidation = recoMuonValidation.copy()
0327 _run3_muonValidation += gemMuonValidation
0328
0329 _phase2_muonValidation = cms.Sequence(TPtrack_seq
0330 +TPmu_seq
0331 +TPpfmu_seq
0332 +recoMuonValidation_reduced_seq
0333 +gemMuonValidation
0334 +me0MuonValidation
0335 )
0336
0337 _phase2_ge0_muonValidation = cms.Sequence(TPtrack_seq
0338 +TPmu_seq
0339 +TPpfmu_seq
0340 +recoMuonValidation_reduced_seq
0341 +gemMuonValidation
0342 )
0343
0344 from Configuration.Eras.Modifier_run3_GEM_cff import run3_GEM
0345 run3_GEM.toReplaceWith(recoMuonValidation, _run3_muonValidation)
0346 from Configuration.Eras.Modifier_phase2_muon_cff import phase2_muon
0347 phase2_muon.toReplaceWith(recoMuonValidation, _phase2_muonValidation)
0348 from Configuration.Eras.Modifier_phase2_GE0_cff import phase2_GE0
0349 phase2_GE0.toReplaceWith(recoMuonValidation, _phase2_ge0_muonValidation)