Skip to content

Commit 48600da

Browse files
authored
Merge pull request #45117 from SegmentLinking/CMSSW_14_1_0_pre3_LST_X_LSTCore_realfiles
CMSSW Integration of LST
2 parents 1b383b0 + 04a1165 commit 48600da

File tree

146 files changed

+42757
-5
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

146 files changed

+42757
-5
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import FWCore.ParameterSet.Config as cms
2+
3+
# This modifier sets the iterative tracking to use a minimal set of iterations, first two
4+
trackingIters01 = cms.Modifier()
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import FWCore.ParameterSet.Config as cms
2+
3+
# This modifier sets the LST (Phase-2 line segment tracking) used for track building
4+
trackingLST = cms.Modifier()
5+

Configuration/PyReleaseValidation/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ The offsets currently in use are:
6565
* 0.7: trackingMkFit modifier
6666
* 0.701: DisplacedRegionalStep tracking iteration for Run-3
6767
* 0.702: trackingMkFit modifier for Phase-2 (initialStep only)
68+
* 0.703: LST tracking (Phase-2 only), initialStep+HighPtTripletStep only, on CPU
69+
* 0.704: LST tracking (Phase-2 only), initialStep+HighPtTripletStep only, on GPU
6870
* 0.75: HLT phase-2 timing menu
6971
* 0.751: HLT phase-2 timing menu Alpaka variant
7072
* 0.752: HLT phase-2 timing menu ticl_v5 variant

Configuration/PyReleaseValidation/python/relval_Run4.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@
3636
numWFIB.extend([31234.0]) #Run4D114
3737
numWFIB.extend([32034.0]) #Run4D115
3838

39+
# Temporary placement for LST workflow to workaround PR conflicts - to be formatted and placed in an upcoming PR
40+
numWFIB.extend([24834.703]) #Run4D98 LST tracking (initialStep+HighPtTripletStep only)
41+
3942
#Additional sample for short matrix and IB
4043
#Default Phase-2 Det NoPU
4144
numWFIB.extend([prefixDet+34.911]) #DD4hep XML

Configuration/PyReleaseValidation/python/relval_gpu.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@
7272
# Run4, Alpaka-based noPU
7373
29634.402, 29634.403, 29634.404, 29634.406,
7474
29661.402,
75+
# Run4, Alpaka-based noPU GPU LST tracking D98
76+
24834.704,
7577

7678
# Run4, Alpaka-based PU
7779
29834.402, 29834.403, 29834.404

Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,56 @@ def condition_(self, fragment, stepList, key, hasHarvest):
490490
'--procModifiers': 'trackingMkFitCommon,trackingMkFitInitialStep'
491491
}
492492

493+
# LST on CPU, initialStep+highPtTripletStep-only tracking-only
494+
class UpgradeWorkflow_lstOnCPUIters01TrackingOnly(UpgradeWorkflowTracking):
495+
def setup__(self, step, stepName, stepDict, k, properties):
496+
if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
497+
elif 'HARVEST' in step: stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM'}, stepDict[step][k]])
498+
elif 'ALCA' in step: stepDict[stepName][k] = None
499+
def condition_(self, fragment, stepList, key, hasHarvest):
500+
return ('Run4' in key)
501+
upgradeWFs['lstOnCPUIters01TrackingOnly'] = UpgradeWorkflow_lstOnCPUIters01TrackingOnly(
502+
steps = [
503+
'RecoGlobal',
504+
'HARVESTGlobal',
505+
# Add ALCA steps explicitly, so that they can be properly removed
506+
'ALCA',
507+
'ALCAPhase2'
508+
],
509+
PU = [],
510+
suffix = '_lstOnCPUIters01TrackingOnly',
511+
offset = 0.703,
512+
)
513+
upgradeWFs['lstOnCPUIters01TrackingOnly'].step3 = upgradeWFs['trackingOnly'].step3 | {
514+
'--procModifiers': 'trackingIters01,trackingLST',
515+
'--accelerators' : 'cpu'
516+
}
517+
518+
# LST on GPU, initialStep+highPtTripletStep-only tracking-only
519+
class UpgradeWorkflow_lstOnGPUIters01TrackingOnly(UpgradeWorkflowTracking):
520+
def setup__(self, step, stepName, stepDict, k, properties):
521+
if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
522+
elif 'HARVEST' in step: stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM'}, stepDict[step][k]])
523+
elif 'ALCA' in step: stepDict[stepName][k] = None
524+
def condition_(self, fragment, stepList, key, hasHarvest):
525+
return ('Run4' in key)
526+
upgradeWFs['lstOnGPUIters01TrackingOnly'] = UpgradeWorkflow_lstOnGPUIters01TrackingOnly(
527+
steps = [
528+
'RecoGlobal',
529+
'HARVESTGlobal',
530+
# Add ALCA steps explicitly, so that they can be properly removed
531+
'ALCA',
532+
'ALCAPhase2'
533+
],
534+
PU = [],
535+
suffix = '_lstOnGPUIters01TrackingOnly',
536+
offset = 0.704,
537+
)
538+
upgradeWFs['lstOnGPUIters01TrackingOnly'].step3 = upgradeWFs['trackingOnly'].step3 | {
539+
'--procModifiers': 'trackingIters01,trackingLST',
540+
'--accelerators' : 'gpu-*'
541+
}
542+
493543
#DeepCore seeding for JetCore iteration workflow
494544
class UpgradeWorkflow_seedingDeepCore(UpgradeWorkflow):
495545
def setup_(self, step, stepName, stepDict, k, properties):

RecoTracker/ConversionSeedGenerators/python/ConversionStep_cff.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@
3333
oldClusterRemovalInfo = 'detachedQuadStepClusters',
3434
overrideTrkQuals = 'detachedQuadStepSelector:detachedQuadStepTrk'
3535
))
36+
from Configuration.ProcessModifiers.trackingIters01_cff import trackingIters01
37+
trackingIters01.toModify(convClusters,
38+
trajectories = "highPtTripletStepTracks",
39+
oldClusterRemovalInfo = "highPtTripletStepClusters",
40+
overrideTrkQuals = "highPtTripletStepSelector:highPtTripletStep"
41+
)
42+
from Configuration.ProcessModifiers.trackingLST_cff import trackingLST
43+
(trackingIters01 & trackingPhase2PU140 & trackingLST).toModify(convClusters,
44+
overrideTrkQuals = ""
45+
)
3646

3747
_convLayerPairsStripOnlyLayers = ['TIB1+TID1_pos',
3848
'TIB1+TID1_neg',

RecoTracker/FinalTrackSelectors/python/MergeTrackCollections_cff.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
ttrhBuilderName = "WithAngleAndTemplate",
1818
chi2EstimatorName = "duplicateTrackCandidatesChi2Est"
1919
)
20+
from Configuration.ProcessModifiers.trackingIters01_cff import trackingIters01
21+
trackingIters01.toModify(duplicateTrackCandidates, source = "earlyGeneralTracks")
2022

2123
import RecoTracker.TrackProducer.TrackProducer_cfi
2224
mergedDuplicateTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone(
@@ -44,6 +46,10 @@
4446
candidateSource = "duplicateTrackCandidates:candidates",
4547
candidateComponents = "duplicateTrackCandidates:candidateMap"
4648
)
49+
trackingIters01.toModify(generalTracks,
50+
originalSource = "earlyGeneralTracks",
51+
originalMVAVals = "earlyGeneralTracks:MVAValues"
52+
)
4753

4854
generalTracksTask = cms.Task(
4955
duplicateTrackCandidates,

RecoTracker/FinalTrackSelectors/python/earlyGeneralTracks_cfi.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,16 @@ def _extend_displacedGeneral(x):
109109
makeReKeyedSeeds = cms.untracked.bool(False)
110110
)
111111
)
112+
from Configuration.ProcessModifiers.trackingIters01_cff import trackingIters01
113+
trackingIters01.toModify(earlyGeneralTracks,
114+
TrackProducers = ['initialStepTracks', 'highPtTripletStepTracks'],
115+
hasSelector = [1,1],
116+
indivShareFrac = [1,0.16],
117+
selectedTrackQuals = ['initialStepSelector:initialStep',
118+
'highPtTripletStepSelector:highPtTripletStep'
119+
],
120+
setsToMerge = {0: dict(tLists = [0,1])}
121+
)
112122
from Configuration.ProcessModifiers.vectorHits_cff import vectorHits
113123
def _extend_pixelLess(x):
114124
x.TrackProducers += ['pixelLessStepTracks']
@@ -118,3 +128,13 @@ def _extend_pixelLess(x):
118128
x.setsToMerge[0].tLists += [6]
119129
(trackingPhase2PU140 & vectorHits).toModify(earlyGeneralTracks, _extend_pixelLess)
120130

131+
from Configuration.ProcessModifiers.trackingLST_cff import trackingLST
132+
(trackingPhase2PU140 & trackingLST).toModify(earlyGeneralTracks,
133+
TrackProducers = ['highPtTripletStepLSTpTracks', 'highPtTripletStepLSTT5Tracks'],
134+
hasSelector = [1,0],
135+
indivShareFrac = [0.1,0.1],
136+
selectedTrackQuals = ['highPtTripletStepSelector:highPtTripletStep',
137+
'highPtTripletStepSelectorLSTT5:highPtTripletStepLSTT5'
138+
],
139+
setsToMerge = {0: dict(tLists = [0,1])}
140+
)

RecoTracker/IterativeTracking/python/HighPtTripletStep_cff.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,10 @@
259259
phase2clustersToSkip = 'highPtTripletStepClusters'
260260
)
261261

262+
from Configuration.ProcessModifiers.trackingLST_cff import trackingLST
263+
from RecoTracker.LST.lstOutputConverter_cfi import lstOutputConverter as _lstOutputConverter
264+
(trackingPhase2PU140 & trackingLST).toReplaceWith(highPtTripletStepTrackCandidates, _lstOutputConverter.clone())
265+
262266
#For FastSim phase1 tracking
263267
import FastSimulation.Tracking.TrackCandidateProducer_cfi
264268
_fastSim_highPtTripletStepTrackCandidates = FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone(
@@ -280,6 +284,25 @@
280284
from Configuration.Eras.Modifier_phase2_timing_layer_cff import phase2_timing_layer
281285
phase2_timing_layer.toModify(highPtTripletStepTracks, TrajectoryInEvent = True)
282286

287+
highPtTripletStepLSTpTracks = highPtTripletStepTracks.clone(
288+
src = 'highPtTripletStepTrackCandidates:pTCsLST'
289+
)
290+
highPtTripletStepLSTT5Tracks = highPtTripletStepTracks.clone(
291+
src = 'highPtTripletStepTrackCandidates:t5TCsLST'
292+
)
293+
_highPtTripletStepTracks_LST = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
294+
TrackProducers = ['highPtTripletStepLSTpTracks',
295+
'highPtTripletStepLSTT5Tracks'],
296+
hasSelector = [1,0],
297+
indivShareFrac = [0.1,0.1],
298+
selectedTrackQuals = ['highPtTripletStepSelector:highPtTripletStep',
299+
'highPtTripletStepSelectorLSTT5:highPtTripletStepLSTT5'],
300+
copyExtras = True,
301+
copyMVA = False,
302+
setsToMerge = [cms.PSet( tLists=cms.vint32(0,1), pQual=cms.bool(True) )]
303+
)
304+
(trackingPhase2PU140 & trackingLST).toReplaceWith(highPtTripletStepTracks, _highPtTripletStepTracks_LST)
305+
283306
# Final selection
284307
from RecoTracker.FinalTrackSelectors.TrackMVAClassifierPrompt_cfi import *
285308
highPtTripletStep = TrackMVAClassifierPrompt.clone(
@@ -357,6 +380,28 @@
357380
from Configuration.ProcessModifiers.vectorHits_cff import vectorHits
358381
vectorHits.toModify(highPtTripletStepSelector.trackSelectors[2], minNumberLayers = 3, minNumber3DLayers = 3, d0_par1 = ( 0.5, 4.0 ), dz_par1 = ( 0.6, 4.0 ))
359382

383+
(trackingPhase2PU140 & trackingLST).toModify(highPtTripletStepSelector, src = 'highPtTripletStepLSTpTracks')
384+
# Passthrough selector to satisfy the TrackListMerger requirement for selector values
385+
highPtTripletStepSelectorLSTT5 = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
386+
src = 'highPtTripletStepLSTT5Tracks',
387+
trackSelectors = [
388+
RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
389+
name = 'highPtTripletStepLSTT5Loose',
390+
minHitsToBypassChecks = 0
391+
), #end of pset
392+
RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
393+
name = 'highPtTripletStepLSTT5Tight',
394+
preFilterName = 'highPtTripletStepLSTT5Loose',
395+
minHitsToBypassChecks = 0
396+
),
397+
RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
398+
name = 'highPtTripletStepLSTT5',
399+
preFilterName = 'highPtTripletStepLSTT5Tight',
400+
minHitsToBypassChecks = 0
401+
),
402+
] #end of vpset
403+
) #end of clone
404+
360405
# Final sequence
361406
HighPtTripletStepTask = cms.Task(highPtTripletStepClusters,
362407
highPtTripletStepSeedLayers,
@@ -378,6 +423,17 @@
378423
_HighPtTripletStep_Phase2PU140 = cms.Sequence(_HighPtTripletStepTask_Phase2PU140)
379424
trackingPhase2PU140.toReplaceWith(HighPtTripletStepTask, _HighPtTripletStepTask_Phase2PU140)
380425

426+
_HighPtTripletStepTask_LST = HighPtTripletStepTask.copy()
427+
from RecoLocalTracker.Phase2TrackerRecHits.Phase2TrackerRecHits_cfi import siPhase2RecHits
428+
from RecoTracker.LST.lstSeedTracks_cff import lstInitialStepSeedTracks,lstHighPtTripletStepSeedTracks
429+
from RecoTracker.LST.lstPixelSeedInputProducer_cfi import lstPixelSeedInputProducer
430+
from RecoTracker.LST.lstPhase2OTHitsInputProducer_cfi import lstPhase2OTHitsInputProducer
431+
from RecoTracker.LST.lstProducerTask_cff import *
432+
433+
_HighPtTripletStepTask_LST.add(siPhase2RecHits, lstInitialStepSeedTracks, lstHighPtTripletStepSeedTracks, lstPixelSeedInputProducer, lstPhase2OTHitsInputProducer,
434+
lstProducerTask, highPtTripletStepLSTpTracks, highPtTripletStepLSTT5Tracks, highPtTripletStepSelectorLSTT5)
435+
(trackingPhase2PU140 & trackingLST).toReplaceWith(HighPtTripletStepTask, _HighPtTripletStepTask_LST)
436+
381437
# fast tracking mask producer
382438
from FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi import maskProducerFromClusterRemover
383439
highPtTripletStepMasks = maskProducerFromClusterRemover(highPtTripletStepClusters)

0 commit comments

Comments
 (0)