Back to home page

Project CMSSW displayed by LXR

 
 

    


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 # L1Tk Muons
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 # L2 offline seeds
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 # L2 seeds from L1Tk Muons
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 # L2 standalone muons
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 # L2 standalone muons updated at vertex
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 # L3 IO inner tracks
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 # L3 OI inner tracks
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 # L3 tracks merged
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 # L3 global muons
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 # L3 Muons no ID (tracks)
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 # L3 Muons ID (tracks)
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 # L2 muons to reuse (IO first)
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 # L3 IO tracks filtered (IO first)
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 # L1 Tracker Muons to reuse (OI first)
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 # L3 OI tracks filtered (OI first)
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 # The muon trigger producers sequence
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 # The Phase-2 IO first muon trigger producers sequence
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 # The Phase-2 OI first muon trigger producers sequence
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 )