Skip to content

Commit 30983ab

Browse files
authored
Merge pull request #48246 from Parsifal-2045/ph2MuonMake777Default
[NGT] Update default Phase 2 HLT Muon sequence to use new Standalone seeding module and streamlined Tracker Muon reconstruction
2 parents 3966c73 + 12de5c3 commit 30983ab

File tree

15 files changed

+42
-241
lines changed

15 files changed

+42
-241
lines changed

Configuration/EventContent/python/EventContent_cff.py

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -711,22 +711,12 @@ def SwapKeepAndDrop(l):
711711
'keep *_hltL2MuonsFromL1TkMuon_*_*',
712712
'keep *_hltIter2Phase2L3FromL1TkMuonMerged_*_*',
713713
'keep *_hltPhase2L3OIMuonTrackSelectionHighPurity_*_*',
714+
'keep *_hltPhase2L3MuonFilter_*_*',
714715
'keep *_hltPhase2L3MuonMerged_*_*',
715716
'keep *_hltPhase2L3GlbMuon_*_*',
716717
'keep *_hltPhase2L3MuonsNoID_*_*',
717718
'keep *_hltPhase2L3Muons_*_*'])
718719

719-
from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons
720-
(phase2_muon & ~phase2L2AndL3Muons).toModify(FEVTDEBUGHLTEventContent,
721-
outputCommands = FEVTDEBUGHLTEventContent.outputCommands + [
722-
'keep *_hltL2OfflineMuonSeeds_*_*'
723-
])
724-
725-
(phase2_muon & phase2L2AndL3Muons).toModify(FEVTDEBUGHLTEventContent,
726-
outputCommands = FEVTDEBUGHLTEventContent.outputCommands + [
727-
'keep *_hltPhase2L3MuonFilter_*_*'
728-
])
729-
730720
phase2_hgcal.toModify(FEVTDEBUGHLTEventContent,
731721
outputCommands = FEVTDEBUGHLTEventContent.outputCommands + TICL_FEVTHLT.outputCommands)
732722

Configuration/ProcessModifiers/python/phase2L2AndL3Muons_cff.py

Lines changed: 0 additions & 5 deletions
This file was deleted.

Configuration/PyReleaseValidation/README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@ The offsets currently in use are:
6666
* 0.759: HLT phase-2 timing menu, with NANO:@Phase2HLT
6767
* 0.77: HLT phase-2 NGT Scouting menu
6868
* 0.771: HLT phase-2 NGT Scouting menu, with NANO:@NGTScouting
69-
* 0.777 New Phase 2 Standalone Muon seeding, streamlined L3 Tracker Muons reconstruction (Inside-Out first), HLT Muon NanoAOD
70-
* 0.778 New Phase 2 Standalone Muon seeding, streamlined L3 Tracker Muons reconstruction (Outside-In first), HLT Muon NanoAOD
69+
* 0.778 L3 Tracker Muons reconstruction Outside-In first, HLT Muon NanoAOD
7170
* 0.78: Complete L1 workflow
7271
* 0.781: Complete L1 workflow, producing FEVT and NANO output L1/P2GT objects
7372
* 0.782: Complete L1 workflow, producing only NANO output L1/P2GT objects

Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py

Lines changed: 5 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -969,42 +969,7 @@ def condition(self, fragment, stepList, key, hasHarvest):
969969
upgradeWFs['CPfromPU'].step3 = {'--procModifiers': 'enableCPfromPU'}
970970
upgradeWFs['CPfromPU'].step4 = {'--procModifiers': 'enableCPfromPU'}
971971

972-
# Improved L2 seeding from L1Tk Muons and L3 Tracker Muon Inside-Out reconstruction first (Phase-2 Muon default)
973-
class UpgradeWorkflow_phase2L2AndL3Muons(UpgradeWorkflow):
974-
def setup_(self, step, stepName, stepDict, k, properties):
975-
if ('Digi' in step and 'NoHLT' not in step) or ('HLTOnly' in step):
976-
stepDict[stepName][k] = merge([self.step2, stepDict[step][k]])
977-
if 'RecoGlobal' in step:
978-
stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
979-
if 'HARVESTGlobal' in step:
980-
stepDict[stepName][k] = merge([self.step4, stepDict[step][k]])
981-
def condition(self, fragment, stepList, key, hasHarvest):
982-
return (fragment=="ZMM_14" or 'SingleMu' in fragment or 'TTbar_14' in fragment) and 'Run4' in key
983-
984-
upgradeWFs['phase2L2AndL3Muons'] = UpgradeWorkflow_phase2L2AndL3Muons(
985-
steps = [
986-
'HLTOnly',
987-
'DigiTrigger',
988-
'RecoGlobal',
989-
'HARVESTGlobal'
990-
],
991-
PU = [
992-
'HLTOnly',
993-
'DigiTrigger',
994-
'RecoGlobal',
995-
'HARVESTGlobal'
996-
],
997-
suffix = '_phase2L2AndL3MuonsIOFirst',
998-
offset = 0.777,
999-
)
1000-
upgradeWFs['phase2L2AndL3Muons'].step2 = {'-s':'DIGI:pdigi_valid,L1TrackTrigger,L1,L1P2GT,DIGI2RAW,HLT:@relvalRun4,NANO:@MUHLT',
1001-
'--datatier':'GEN-SIM-DIGI-RAW,NANOAODSIM',
1002-
'--eventcontent':'FEVTDEBUGHLT,NANOAODSIM',
1003-
'--procModifiers':'phase2L2AndL3Muons'}
1004-
upgradeWFs['phase2L2AndL3Muons'].step3 = {'--procModifiers':'phase2L2AndL3Muons'}
1005-
upgradeWFs['phase2L2AndL3Muons'].step4 = {'--procModifiers':'phase2L2AndL3Muons'}
1006-
1007-
# Improved L2 seeding from L1Tk Muons and L3 Tracker Muon Outside-In reconstruction first
972+
# L3 Tracker Muon Outside-In reconstruction first
1008973
class UpgradeWorkflow_phase2L3MuonsOIFirst(UpgradeWorkflow):
1009974
def setup_(self, step, stepName, stepDict, k, properties):
1010975
if ('Digi' in step and 'NoHLT' not in step) or ('HLTOnly' in step):
@@ -1029,15 +994,15 @@ def condition(self, fragment, stepList, key, hasHarvest):
1029994
'RecoGlobal',
1030995
'HARVESTGlobal'
1031996
],
1032-
suffix = '_phase2L2AndL3MuonsOIFirst',
997+
suffix = '_phase2L3MuonsOIFirst',
1033998
offset = 0.778,
1034999
)
10351000
upgradeWFs['phase2L3MuonsOIFirst'].step2 = {'-s':'DIGI:pdigi_valid,L1TrackTrigger,L1,L1P2GT,DIGI2RAW,HLT:@relvalRun4,NANO:@MUHLT',
10361001
'--datatier':'GEN-SIM-DIGI-RAW,NANOAODSIM',
10371002
'--eventcontent':'FEVTDEBUGHLT,NANOAODSIM',
1038-
'--procModifiers':'phase2L2AndL3Muons,phase2L3MuonsOIFirst'}
1039-
upgradeWFs['phase2L3MuonsOIFirst'].step3 = {'--procModifiers':'phase2L2AndL3Muons,phase2L3MuonsOIFirst'}
1040-
upgradeWFs['phase2L3MuonsOIFirst'].step4 = {'--procModifiers':'phase2L2AndL3Muons,phase2L3MuonsOIFirst'}
1003+
'--procModifiers':'phase2L3MuonsOIFirst'}
1004+
upgradeWFs['phase2L3MuonsOIFirst'].step3 = {'--procModifiers':'phase2L3MuonsOIFirst'}
1005+
upgradeWFs['phase2L3MuonsOIFirst'].step4 = {'--procModifiers':'phase2L3MuonsOIFirst'}
10411006

10421007
# Track DNN workflows
10431008
class UpgradeWorkflow_trackdnn(UpgradeWorkflow):

DPGAnalysis/MuonTools/python/nano_mu_hlt_cff.py

Lines changed: 9 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,11 @@
156156
extension = cms.bool(False),
157157
variables = cms.PSet(
158158
pt = Var("startingState().pt()", "float", doc = "p_T (GeV)"),
159-
nHits = Var("nHits()", "int16", doc = ""),
159+
nHits = Var(
160+
"nHits()", "int16", doc = "number of DT/CSC segments propagated to the seed"
161+
),
162+
eta = Var("l1TkMu().phEta()", "float", doc = "associated L1TkMu #eta"),
163+
phi = Var("l1TkMu().phPhi()", "float", doc = "associated L1TkMu #phi"),
160164
localX = Var(
161165
"startingState().parameters().position().x()",
162166
"float",
@@ -268,25 +272,8 @@
268272
doc = cms.string("L3 Tracker Muons Outside-In filtered (quality cuts and match with L1TkMu)")
269273
)
270274

271-
# The muon trigger producers sequence
275+
# Default Phase 2 HLT muon ntuples producers sequence (Inside-Out first)
272276
hltMuonTriggerProducers = cms.Sequence(
273-
recoMuonValidationHLT_seq
274-
+ hltLocalRecoMuon_seq
275-
+ l1TkMuTable
276-
+ l2SeedTable
277-
+ l2SeedFromL1TkMuonTable
278-
+ l2MuTable
279-
+ l2MuTableVtx
280-
+ l3TkIOTable
281-
+ l3TkOITable
282-
+ l3TkMergedTable
283-
+ l3GlbMuTable
284-
+ l3MuTkNoIdTable
285-
+ l3MuTkIdTable
286-
)
287-
288-
# The Phase-2 IO first muon trigger producers sequence
289-
hltMuonTriggerProducersIOFirst = cms.Sequence(
290277
recoMuonValidationHLT_seq
291278
+ hltLocalRecoMuon_seq
292279
+ l1TkMuTable
@@ -303,8 +290,8 @@
303290
+ l3MuTkIdTable
304291
)
305292

306-
# The Phase-2 OI first muon trigger producers sequence
307-
hltMuonTriggerProducersOIFirst = cms.Sequence(
293+
# Phase 2 HLT muon ntuples producers sequence (Outside-In first)
294+
_hltMuonTriggerProducersOIFirst = cms.Sequence(
308295
recoMuonValidationHLT_seq
309296
+ hltLocalRecoMuon_seq
310297
+ l1TkMuTable
@@ -321,56 +308,6 @@
321308
+ l3MuTkIdTable
322309
)
323310

324-
from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons
325-
326-
phase2L2AndL3Muons.toModify(
327-
l2SeedFromL1TkMuonTable,
328-
variables = cms.PSet(
329-
pt = Var("startingState().pt()", "float", doc = "p_T (GeV)"),
330-
nHits = Var(
331-
"nHits()", "int16", doc = "number of DT/CSC segments propagated to the seed"
332-
),
333-
eta = Var("l1TkMu().phEta()", "float", doc = "associated L1TkMu #eta"),
334-
phi = Var("l1TkMu().phPhi()", "float", doc = "associated L1TkMu #phi"),
335-
localX = Var(
336-
"startingState().parameters().position().x()",
337-
"float",
338-
doc = "local x of the seed",
339-
),
340-
localY = Var(
341-
"startingState().parameters().position().y()",
342-
"float",
343-
doc = "local y of the seed",
344-
)
345-
)
346-
)
347-
phase2L2AndL3Muons.toReplaceWith(
348-
hltMuonTriggerProducers, hltMuonTriggerProducersIOFirst
349-
)
350-
351311
from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst
312+
phase2L3MuonsOIFirst.toReplaceWith(hltMuonTriggerProducers, _hltMuonTriggerProducersOIFirst)
352313

353-
(phase2L2AndL3Muons & phase2L3MuonsOIFirst).toModify(
354-
l2SeedFromL1TkMuonTable,
355-
variables = cms.PSet(
356-
pt = Var("startingState().pt()", "float", doc = "p_T (GeV)"),
357-
nHits = Var(
358-
"nHits()", "int16", doc = "number of DT/CSC segments propagated to the seed"
359-
),
360-
eta = Var("l1TkMu().phEta()", "float", doc = "associated L1TkMu #eta"),
361-
phi = Var("l1TkMu().phPhi()", "float", doc = "associated L1TkMu #phi"),
362-
localX = Var(
363-
"startingState().parameters().position().x()",
364-
"float",
365-
doc = "local x of the seed",
366-
),
367-
localY = Var(
368-
"startingState().parameters().position().y()",
369-
"float",
370-
doc = "local y of the seed",
371-
)
372-
)
373-
)
374-
(phase2L2AndL3Muons & phase2L3MuonsOIFirst).toReplaceWith(
375-
hltMuonTriggerProducers, hltMuonTriggerProducersOIFirst
376-
)

HLTrigger/Configuration/python/HLT_75e33/modules/hltIter2Phase2L3FromL1TkMuonPixelSeedsFiltered_cfi.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,8 @@
3434
src = cms.InputTag("hltIter2Phase2L3FromL1TkMuonPixelSeeds")
3535
)
3636

37-
from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons
3837
from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst
39-
(phase2L2AndL3Muons & phase2L3MuonsOIFirst).toModify(
38+
phase2L3MuonsOIFirst.toModify(
4039
hltIter2Phase2L3FromL1TkMuonPixelSeedsFiltered,
4140
L1TkMu = "hltPhase2L3MuonFilter:L1TkMuToReuse"
4241
)
Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,6 @@
11
import FWCore.ParameterSet.Config as cms
22

3-
hltL2MuonSeedsFromL1TkMuon = cms.EDProducer("L2MuonSeedGeneratorFromL1TkMu",
4-
EtaMatchingBins = cms.vdouble(0.0, 2.5),
5-
InputObjects = cms.InputTag("l1tTkMuonsGmt"),
6-
L1MaxEta = cms.double(2.5),
7-
L1MinPt = cms.double(0.0),
8-
MatchDR = cms.vdouble(0.3),
9-
MinPL1Tk = cms.double(3.5),
10-
MinPtL1TkBarrel = cms.double(3.5),
11-
OfflineSeedLabel = cms.untracked.InputTag("hltL2OfflineMuonSeeds"),
12-
Propagator = cms.string('SteppingHelixPropagatorAny'),
13-
ServiceParameters = cms.PSet(
14-
Propagators = cms.untracked.vstring('SteppingHelixPropagatorAny'),
15-
RPCLayers = cms.bool(True),
16-
UseMuonNavigation = cms.untracked.bool(True)
17-
),
18-
SetMinPtBarrelTo = cms.double(3.5),
19-
SetMinPtEndcapTo = cms.double(1.0),
20-
UseOfflineSeed = cms.untracked.bool(True),
21-
UseUnassociatedL1 = cms.bool(False)
22-
)
23-
24-
phase2HltL2MuonSeedsFromL1TkMuon = cms.EDProducer('Phase2L2MuonSeedCreator',
3+
hltL2MuonSeedsFromL1TkMuon = cms.EDProducer('Phase2L2MuonSeedCreator',
254
inputObjects = cms.InputTag('l1tTkMuonsGmt'),
265
cscRecSegmentLabel = cms.InputTag('hltCscSegments'),
276
dtRecSegmentLabel = cms.InputTag('hltDt4DSegments'),
@@ -42,8 +21,3 @@
4221
estimatorMaxChi2 = cms.double(1000.0)
4322
)
4423

45-
from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons
46-
phase2L2AndL3Muons.toReplaceWith(
47-
hltL2MuonSeedsFromL1TkMuon,
48-
phase2HltL2MuonSeedsFromL1TkMuon
49-
)

HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3FromL1TkMuonPixelTracksTrackingRegions_cfi.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,8 @@
2323
)
2424
)
2525

26-
from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons
2726
from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst
28-
(phase2L2AndL3Muons & phase2L3MuonsOIFirst).toModify(
27+
phase2L3MuonsOIFirst.toModify(
2928
hltPhase2L3FromL1TkMuonPixelTracksTrackingRegions.RegionPSet,
3029
input = "hltPhase2L3MuonFilter:L1TkMuToReuse"
3130
)

HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3MuonFilter_cfi.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@
1515
MaxPtDifference = cms.double(999.0),
1616
)
1717

18-
from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons
1918
from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst
20-
(phase2L2AndL3Muons & phase2L3MuonsOIFirst).toModify(
19+
phase2L3MuonsOIFirst.toModify(
2120
hltPhase2L3MuonFilter,
2221
l3Tracks = "hltPhase2L3OIMuonTrackSelectionHighPurity",
2322
IOFirst = False,

HLTrigger/Configuration/python/HLT_75e33/modules/hltPhase2L3MuonMerged_cfi.py

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
ShareFrac = cms.double(0.19),
1111
TrackProducers = cms.VInputTag(
1212
"hltPhase2L3OIMuonTrackSelectionHighPurity",
13-
"hltIter2Phase2L3FromL1TkMuonMerged",
13+
"hltPhase2L3MuonFilter:L3IOTracksFiltered",
1414
),
1515
allowFirstHitShare = cms.bool(True),
1616
copyExtras = cms.untracked.bool(True),
@@ -20,28 +20,15 @@
2020
newQuality = cms.string("confirmed"),
2121
selectedTrackQuals = cms.VInputTag(
2222
"hltPhase2L3OIMuonTrackSelectionHighPurity",
23-
"hltIter2Phase2L3FromL1TkMuonMerged",
23+
"hltPhase2L3MuonFilter:L3IOTracksFiltered",
2424
),
2525
setsToMerge = cms.VPSet(cms.PSet(pQual = cms.bool(False), tLists = cms.vint32(0, 1))),
2626
trackAlgoPriorityOrder = cms.string("hltESPTrackAlgoPriorityOrder"),
2727
writeOnlyTrkQuals = cms.bool(False),
2828
)
2929

30-
from Configuration.ProcessModifiers.phase2L2AndL3Muons_cff import phase2L2AndL3Muons
31-
phase2L2AndL3Muons.toModify(
32-
hltPhase2L3MuonMerged,
33-
TrackProducers = cms.VInputTag(
34-
"hltPhase2L3OIMuonTrackSelectionHighPurity",
35-
"hltPhase2L3MuonFilter:L3IOTracksFiltered",
36-
),
37-
selectedTrackQuals = cms.VInputTag(
38-
"hltPhase2L3OIMuonTrackSelectionHighPurity",
39-
"hltPhase2L3MuonFilter:L3IOTracksFiltered",
40-
),
41-
)
42-
4330
from Configuration.ProcessModifiers.phase2L3MuonsOIFirst_cff import phase2L3MuonsOIFirst
44-
(phase2L2AndL3Muons & phase2L3MuonsOIFirst).toModify(
31+
phase2L3MuonsOIFirst.toModify(
4532
hltPhase2L3MuonMerged,
4633
TrackProducers = cms.VInputTag(
4734
"hltPhase2L3MuonFilter:L3OITracksFiltered",

0 commit comments

Comments
 (0)