File indexing completed on 2025-02-11 03:07:50
0001 import FWCore.ParameterSet.Config as cms
0002
0003 from PhysicsTools.NanoAOD.common_cff import *
0004 from DPGAnalysis.MuonTools.common_cff import *
0005
0006
0007 from PhysicsTools.NanoAOD.l1trig_cff import *
0008
0009 from PhysicsTools.NanoAOD.simpleCandidateFlatTableProducer_cfi import simpleCandidateFlatTableProducer
0010
0011 from Validation.RecoMuon.muonValidationHLT_cff import *
0012
0013 from DPGAnalysis.MuonTools.nano_mu_local_reco_cff import dtSegmentFlatTable as dtSegmentFlatTable_
0014
0015 hltDtSegmentFlatTable = dtSegmentFlatTable_.clone(
0016 name = "dtSegment",
0017 src = "hltDt4DSegments",
0018 doc = "DT segment information"
0019 )
0020
0021 from DPGAnalysis.MuonTools.cscSegmentFlatTableProducer_cfi import cscSegmentFlatTableProducer
0022
0023 hltCscSegmentFlatTable = cscSegmentFlatTableProducer.clone(
0024 name = "cscSegment",
0025 src = "hltCscSegments",
0026 doc = "CSC segment information",
0027 variables = cms.PSet(
0028 degreesOfFreedom = Var("degreesOfFreedom()", int, doc = "Degrees of freedom of the 4D CSC segment"),
0029 nHits = Var("nRecHits()", int, doc = "Number of recHits used to build the segment"),
0030 posLoc_x = Var(
0031 "localPosition().x()", float, doc = "position x in local coordinates - cm"
0032 ),
0033 posLoc_y = Var(
0034 "localPosition().y()", float, doc = "position y in local coordinates - cm"
0035 ),
0036 posLoc_z = Var(
0037 "localPosition().z()", float, doc = "position z in local coordinates - cm"
0038 ),
0039 dirLoc_x = Var(
0040 "localDirection().x()", float, doc = "direction x in local coordinates"
0041 ),
0042 dirLoc_y = Var(
0043 "localDirection().y()", float, doc = "direction y in local coordinates"
0044 ),
0045 dirLoc_z = Var(
0046 "localDirection().z()", float, doc = "direction z in local coordinates"
0047 ),
0048 normChi2 = Var(
0049 "chi2() / degreesOfFreedom()", float, doc = "chi2/n.d.o.f. for all segments"
0050 )
0051 ),
0052 detIdVariables = cms.PSet(
0053 endcap = DetIdVar("endcap()", int, doc = "Endcap - 1 Forward (+Z), 2 Backward (-Z)"),
0054 layer = DetIdVar("layer()", int, doc = "Layer [1:6]"),
0055 chamber = DetIdVar("chamber()", int, doc = "Chamber [1:36]"),
0056 ring = DetIdVar("ring()", int, doc = "Ring [1:4]"),
0057 station = DetIdVar("station()", int, doc = "Station [1-4]")
0058 ),
0059 globalPosVariables = cms.PSet(
0060 posGlb_phi = GlobGeomVar(
0061 "phi().value()", doc = "position phi in global coordinates - radians [-pi:pi]"
0062 ),
0063 posGlb_eta = GlobGeomVar("eta()", doc = "position eta in global coordinates")
0064 ),
0065 globalDirVariables = cms.PSet(
0066 dirGlb_phi = GlobGeomVar(
0067 "phi().value()",
0068 doc = "direction phi in global coordinates - radians [-pi:pi]",
0069 ),
0070 dirGlb_eta = GlobGeomVar(
0071 "eta()", doc = "direction eta in global coordinates"
0072 )
0073 )
0074 )
0075
0076 from DPGAnalysis.MuonTools.nano_mu_local_reco_cff import rpcRecHitFlatTable as rpcRecHitFlatTable_
0077
0078 hltRpcRecHitFlatTable = rpcRecHitFlatTable_.clone(
0079 name = "rpcRecHit",
0080 src = "hltRpcRecHits",
0081 doc = "RPC rec-hit information"
0082 )
0083
0084 from DPGAnalysis.MuonTools.nano_mu_local_reco_cff import gemRecHitFlatTable as gemRecHitFlatTable_
0085
0086 hltGemRecHitFlatTable = gemRecHitFlatTable_.clone(
0087 name = "gemRecHit",
0088 src = "hltGemRecHits",
0089 doc = "GEM rec-hit information"
0090 )
0091
0092 from DPGAnalysis.MuonTools.nano_mu_local_reco_cff import gemSegmentFlatTable as gemSegmentFlatTable_
0093
0094 hltGemSegmentFlatTable = gemSegmentFlatTable_.clone(
0095 name = "gemSegment",
0096 src = "hltGemSegments",
0097 doc = "GEM segment information"
0098 )
0099
0100 hltLocalRecoMuon_seq = cms.Sequence(
0101 hltDtSegmentFlatTable
0102 + hltCscSegmentFlatTable
0103 + hltRpcRecHitFlatTable
0104 + hltGemRecHitFlatTable
0105 + hltGemSegmentFlatTable
0106 )
0107
0108
0109 l1TkMuTable = cms.EDProducer(
0110 "SimpleTriggerL1TkMuonFlatTableProducer",
0111 src = cms.InputTag("l1tTkMuonsGmt"),
0112 cut = cms.string(""),
0113 name = cms.string("L1TkMu"),
0114 doc = cms.string(""),
0115 extension = cms.bool(False),
0116 variables = cms.PSet(
0117 pt = Var("phPt()", "float", doc = "Physics pt"),
0118 eta = Var("phEta()", "float", doc = "#eta"),
0119 phi = Var("phPhi()", "float", doc = "#phi (rad)"),
0120 dXY = Var("phD0()", "float", doc = "dXY (cm)"),
0121 dZ = Var("phZ0()", "float", doc = "dZ (cm)")
0122 )
0123 )
0124
0125
0126 l2SeedTable = cms.EDProducer(
0127 "SimpleTrajectorySeedFlatTableProducer",
0128 src = cms.InputTag("hltL2OfflineMuonSeeds"),
0129 cut = cms.string(""),
0130 name = cms.string("l2_seed_offline"),
0131 doc = cms.string(""),
0132 extension = cms.bool(False),
0133 variables = cms.PSet(
0134 pt = Var("startingState().pt()", "float", doc = "p_T (GeV)"),
0135 nHits = Var("nHits()", "int16", doc = ""),
0136 localX = Var(
0137 "startingState().parameters().position().x()",
0138 "float",
0139 doc = "local x of the seed",
0140 ),
0141 localY = Var(
0142 "startingState().parameters().position().y()",
0143 "float",
0144 doc = "local y of the seed",
0145 )
0146 )
0147 )
0148
0149
0150 l2SeedFromL1TkMuonTable = cms.EDProducer(
0151 "SimpleL2MuonTrajectorySeedFlatTableProducer",
0152 src = cms.InputTag("hltL2MuonSeedsFromL1TkMuon"),
0153 cut = cms.string(""),
0154 name = cms.string("phase2_l2_seed"),
0155 doc = cms.string(""),
0156 extension = cms.bool(False),
0157 variables = cms.PSet(
0158 pt = Var("startingState().pt()", "float", doc = "p_T (GeV)"),
0159 nHits = Var("nHits()", "int16", doc = ""),
0160 localX = Var(
0161 "startingState().parameters().position().x()",
0162 "float",
0163 doc = "local x of the seed",
0164 ),
0165 localY = Var(
0166 "startingState().parameters().position().y()",
0167 "float",
0168 doc = "local y of the seed",
0169 )
0170 )
0171 )
0172
0173
0174 l2MuTable = cms.EDProducer(
0175 "SimpleTriggerTrackFlatTableProducer",
0176 src = cms.InputTag("hltL2MuonsFromL1TkMuon"),
0177 cut = cms.string(""),
0178 name = cms.string("l2_mu"),
0179 doc = cms.string("Standalone Muon tracks"),
0180 extension = cms.bool(False),
0181 variables = cms.PSet(
0182 pt = Var("pt()", "float", doc = "p_T (GeV)"),
0183 eta = Var("eta()", "float", doc = "#eta"),
0184 phi = Var("phi()", "float", doc = "#phi (rad)"),
0185 dXY = Var("dxy()", "float", doc = "dXY (cm)"),
0186 dZ = Var("dz()", "float", doc = "dZ (cm)"),
0187 t0 = Var("t0()", "float", doc = "t0 (ns)"),
0188 nPixelHits = Var("hitPattern().numberOfValidPixelHits()", "int16", doc = ""),
0189 nTrkLays = Var("hitPattern().trackerLayersWithMeasurement()", "int16", doc = ""),
0190 nMuHits = Var("hitPattern().numberOfValidMuonHits()", "int16", doc = "")
0191 )
0192 )
0193
0194
0195 l2MuTableVtx = l2MuTable.clone(
0196 src = cms.InputTag("hltL2MuonsFromL1TkMuon:UpdatedAtVtx"),
0197 name = cms.string("l2_mu_vtx"),
0198 doc = cms.string("Standalone Muon tracks updated at vertex")
0199 )
0200
0201
0202 l3TkIOTable = l2MuTable.clone(
0203 src = cms.InputTag("hltIter2Phase2L3FromL1TkMuonMerged"),
0204 name = cms.string("l3_tk_IO"),
0205 doc = cms.string("L3 Tracker Muon tracks Inside-Out")
0206 )
0207
0208
0209 l3TkOITable = l2MuTable.clone(
0210 src = cms.InputTag("hltPhase2L3OIMuonTrackSelectionHighPurity"),
0211 name = cms.string("l3_tk_OI"),
0212 doc = cms.string("L3 Tracker Muon tracks Outside-In")
0213 )
0214
0215
0216 l3TkMergedTable = l2MuTable.clone(
0217 src = cms.InputTag("hltPhase2L3MuonMerged"),
0218 name = cms.string("l3_tk_merged"),
0219 doc = cms.string("L3 Tracker Muon tracks merged (IO + OI)")
0220 )
0221
0222
0223 l3GlbMuTable = l2MuTable.clone(
0224 src = cms.InputTag("hltPhase2L3GlbMuon"),
0225 name = cms.string("l3_mu_global"),
0226 doc = cms.string("Global Muons (L3 Tracker Muon + Standalone)")
0227 )
0228
0229
0230 l3MuTkNoIdTable = l2MuTable.clone(
0231 src = cms.InputTag("hltPhase2L3MuonNoIdTracks"),
0232 name = cms.string("l3_mu_no_ID"),
0233 doc = cms.string("Muon tracks before ID")
0234 )
0235
0236
0237 l3MuTkIdTable = l2MuTable.clone(
0238 src = cms.InputTag("hltPhase2L3MuonIdTracks"),
0239 name = cms.string("l3_mu_ID"),
0240 doc = cms.string("Muon tracks after ID")
0241 )
0242
0243
0244 l2MuToReuseTable = l2MuTable.clone(
0245 src = cms.InputTag("hltPhase2L3MuonFilter:L2MuToReuse"),
0246 name = cms.string("l2_mu_to_reuse"),
0247 doc = cms.string("Standlone Muon tracks to reuse (not matched with L3 Tracker Muon)")
0248 )
0249
0250
0251 l3TkIOFilteredTable = l2MuTable.clone(
0252 src = cms.InputTag("hltPhase2L3MuonFilter:L3IOTracksFiltered"),
0253 name = cms.string("l3_tk_IO_filtered"),
0254 doc = cms.string("L3 Tracker Muons Inside-Out filtered (quality cuts and match with Standalone)")
0255 )
0256
0257
0258 l1TkMuToReuseTable = l1TkMuTable.clone(
0259 src = cms.InputTag("hltPhase2L3MuonFilter:L1TkMuToReuse"),
0260 name = cms.string("L1TkMu_to_reuse"),
0261 doc = cms.string("L1TkMuons not matched with L3 Tracker Muon OI")
0262 )
0263
0264
0265 l3TkOIFilteredTable = l2MuTable.clone(
0266 src = cms.InputTag("hltPhase2L3MuonFilter:L3OITracksFiltered"),
0267 name = cms.string("l3_tk_OI_filtered"),
0268 doc = cms.string("L3 Tracker Muons Outside-In filtered (quality cuts and match with L1TkMu)")
0269 )
0270
0271
0272 hltMuonTriggerProducers = cms.Sequence(
0273 recoMuonValidationHLT_seq
0274 + hltLocalRecoMuon_seq
0275 + l1TkMuTable
0276 + l2SeedTable
0277 + l2SeedFromL1TkMuonTable
0278 + l2MuTable
0279 + l2MuTableVtx
0280 + l3TkIOTable
0281 + l3TkOITable
0282 + l3TkMergedTable
0283 + l3GlbMuTable
0284 + l3MuTkNoIdTable
0285 + l3MuTkIdTable
0286 )
0287
0288
0289 hltMuonTriggerProducersIOFirst = cms.Sequence(
0290 recoMuonValidationHLT_seq
0291 + hltLocalRecoMuon_seq
0292 + l1TkMuTable
0293 + l2SeedFromL1TkMuonTable
0294 + l2MuTable
0295 + l2MuTableVtx
0296 + l3TkIOTable
0297 + l2MuToReuseTable
0298 + l3TkIOFilteredTable
0299 + l3TkOITable
0300 + l3TkMergedTable
0301 + l3GlbMuTable
0302 + l3MuTkNoIdTable
0303 + l3MuTkIdTable
0304 )
0305
0306
0307 hltMuonTriggerProducersOIFirst = cms.Sequence(
0308 recoMuonValidationHLT_seq
0309 + hltLocalRecoMuon_seq
0310 + l1TkMuTable
0311 + l2SeedFromL1TkMuonTable
0312 + l2MuTable
0313 + l2MuTableVtx
0314 + l3TkOITable
0315 + l1TkMuToReuseTable
0316 + l3TkOIFilteredTable
0317 + l3TkIOTable
0318 + l3TkMergedTable
0319 + l3GlbMuTable
0320 + l3MuTkNoIdTable
0321 + l3MuTkIdTable
0322 )
0323
0324 from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons
0325
0326 phase2L2AndL3Muons.toModify(
0327 l2SeedFromL1TkMuonTable,
0328 variables = cms.PSet(
0329 pt = Var("startingState().pt()", "float", doc = "p_T (GeV)"),
0330 nHits = Var(
0331 "nHits()", "int16", doc = "number of DT/CSC segments propagated to the seed"
0332 ),
0333 eta = Var("l1TkMu().phEta()", "float", doc = "associated L1TkMu #eta"),
0334 phi = Var("l1TkMu().phPhi()", "float", doc = "associated L1TkMu #phi"),
0335 localX = Var(
0336 "startingState().parameters().position().x()",
0337 "float",
0338 doc = "local x of the seed",
0339 ),
0340 localY = Var(
0341 "startingState().parameters().position().y()",
0342 "float",
0343 doc = "local y of the seed",
0344 )
0345 )
0346 )
0347 phase2L2AndL3Muons.toReplaceWith(
0348 hltMuonTriggerProducers, hltMuonTriggerProducersIOFirst
0349 )
0350
0351 from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst
0352
0353 (phase2L2AndL3Muons & phase2L3MuonsOIFirst).toModify(
0354 l2SeedFromL1TkMuonTable,
0355 variables = cms.PSet(
0356 pt = Var("startingState().pt()", "float", doc = "p_T (GeV)"),
0357 nHits = Var(
0358 "nHits()", "int16", doc = "number of DT/CSC segments propagated to the seed"
0359 ),
0360 eta = Var("l1TkMu().phEta()", "float", doc = "associated L1TkMu #eta"),
0361 phi = Var("l1TkMu().phPhi()", "float", doc = "associated L1TkMu #phi"),
0362 localX = Var(
0363 "startingState().parameters().position().x()",
0364 "float",
0365 doc = "local x of the seed",
0366 ),
0367 localY = Var(
0368 "startingState().parameters().position().y()",
0369 "float",
0370 doc = "local y of the seed",
0371 )
0372 )
0373 )
0374 (phase2L2AndL3Muons & phase2L3MuonsOIFirst).toReplaceWith(
0375 hltMuonTriggerProducers, hltMuonTriggerProducersOIFirst
0376 )