Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions Configuration/EventContent/python/EventContent_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -759,6 +759,14 @@ def SwapKeepAndDrop(l):
phase2_hgcal.toModify(FEVTDEBUGHLTEventContent,
outputCommands = FEVTDEBUGHLTEventContent.outputCommands + TICL_FEVTHLT.outputCommands)

from Configuration.ProcessModifiers.mtd_at_hlt_cff import mtd_at_hlt
mtd_at_hlt.toModify(FEVTDEBUGHLTEventContent,
outputCommands = FEVTDEBUGHLTEventContent.outputCommands + RecoLocalFastTimeFEVTHLT.outputCommands + RecoMTDFEVTHLT.outputCommands)

mtd_at_hlt.toModify(FEVTDEBUGHLTEventContent,
outputCommands = FEVTDEBUGHLTEventContent.outputCommands+[
'keep *_hltOfflinePrimaryVertices4D_*_*'
])

from Configuration.ProcessModifiers.premix_stage2_cff import premix_stage2

Expand Down
8 changes: 8 additions & 0 deletions Configuration/ProcessModifiers/python/mtd_at_hlt_cff.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import FWCore.ParameterSet.Config as cms

# This modifier enables the usage of MTD into the Phase2 HLT
# This includes:
# - MTD local reconstruction
# - fast timing global reconstruction (TrackExtenderWithMTD)
# - 4D vertexing
mtd_at_hlt = cms.Modifier()
1 change: 1 addition & 0 deletions Configuration/PyReleaseValidation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ The offsets currently in use are:
* 0.7503: HLT phase-2 menu, CPU vs. GPU validation
* 0.751: HLT phase-2 timing menu Alpaka variant
* 0.7521: HLT phase-2 timing menu ticlv5TrackLinkingGNN variant
* 0.7522: HLT phase-2 timing menu mtd_at_hlt variant
* 0.753: HLT phase-2 timing menu legacy tracking
* 0.754: HLT phase-2 timing menu legacy tracking with Patatrack quads
* 0.755: HLT phase-2 timing menu LST building variant
Expand Down
1 change: 1 addition & 0 deletions Configuration/PyReleaseValidation/python/relval_Run4.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
numWFIB.extend([prefixDet+34.7503]) # HLTHeterogeneousValid
numWFIB.extend([prefixDet+34.751]) # HLTTiming75e33, alpaka
numWFIB.extend([prefixDet+34.7521]) # HLTTiming75e33, ticlv5TrackLinkingGNN
numWFIB.extend([prefixDet+34.7522]) # HLTTiming75e33, mtd_at_hlt
numWFIB.extend([prefixDet+34.753]) # HLTTiming75e33, legacy tracking
numWFIB.extend([prefixDet+34.754]) # HLTTiming75e33, legacy tracking with Patatrack quads
numWFIB.extend([prefixDet+34.755]) # HLTTiming75e33, trackingLST
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1978,6 +1978,11 @@ def condition(self, fragment, stepList, key, hasHarvest):
'-s':'HARVESTING:@hltValidation'
}

upgradeWFs['HLTTiming75e33MTDatHLT'] = deepcopy(upgradeWFs['HLTTiming75e33'])
upgradeWFs['HLTTiming75e33MTDatHLT'].suffix = '_HLT75e33TimingMTDatHLT'
upgradeWFs['HLTTiming75e33MTDatHLT'].offset = 0.7522
upgradeWFs['HLTTiming75e33MTDatHLT'].step2['--procModifiers'] = 'mtd_at_hlt'
upgradeWFs['HLTTiming75e33MTDatHLT'].step3['--procModifiers'] = 'mtd_at_hlt'

upgradeWFs['HLTTiming75e33LegacyTracking'] = deepcopy(upgradeWFs['HLTTiming75e33'])
upgradeWFs['HLTTiming75e33LegacyTracking'].suffix = '_HLT75e33TimingLegacyTracking'
Expand Down
3 changes: 2 additions & 1 deletion Configuration/PyReleaseValidation/scripts/runTheMatrix.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,8 @@ def runSelected(opt):
prefixDet+34.7502, # HLT phase-2 tracking menu with tracking ntuple
prefixDet+34.7503, # HLT phase-2 menu, CPU vs. GPU validation
prefixDet+34.751, # HLT phase-2 timing menu Alpaka variant
prefixDet+34.7521, # HLT phase-2 timing menu ticlv5TrackLinkGNN variant
prefixDet+34.7521, # HLT phase-2 timing menu ticlv5TrackLinkGNN variant
prefixDet+34.7522, # HLT phase-2 timing menu mtd_at_hlt variant
prefixDet+34.753, # HLT phase-2 timing menu legacy tracking
prefixDet+34.754, # HLT phase-2 timing menu legacy tracking with Patatrack quads
prefixDet+34.755, # HLT phase-2 timing menu LST building variant
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import FWCore.ParameterSet.Config as cms

def _addProcessCh2EstimatorForRefit(process):
process.hltChi2EstimatorForRefit = cms.ESProducer('Chi2MeasurementEstimatorESProducer',
ComponentName = cms.string('hltChi2EstimatorForRefit'),
MaxChi2 = cms.double(100000.0),
nSigma = cms.double(3),
MaxDisplacement = cms.double(0.5),
MaxSagitta = cms.double(2),
MinimalTolerance = cms.double(0.5),
MinPtForHitRecoveryInGluedDet = cms.double(1000000000000),
appendToDataLabel = cms.string(''))

from Configuration.ProcessModifiers.mtd_at_hlt_cff import mtd_at_hlt
modifyConfigurationForChi2EstimatorForRefit_ = mtd_at_hlt.makeProcessModifier(_addProcessCh2EstimatorForRefit)
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import FWCore.ParameterSet.Config as cms

def _addProcessKFFitterForRefitInsideOut(process):
process.hltKFFitterForRefitInsideOut = cms.ESProducer('KFTrajectoryFitterESProducer',
RecoGeometry = cms.string('GlobalDetLayerGeometry'),
ComponentName = cms.string('hltKFFitterForRefitInsideOut'),
Propagator = cms.string('hltSmartPropagatorAnyRK'),
Updator = cms.string('hltESPKFUpdator'),
Estimator = cms.string('hltChi2EstimatorForRefit'),
minHits = cms.int32(3),
appendToDataLabel = cms.string(''))

from Configuration.ProcessModifiers.mtd_at_hlt_cff import mtd_at_hlt
modifyConfigurationForKFFitterForRefitInsideOut_ = mtd_at_hlt.makeProcessModifier(_addProcessKFFitterForRefitInsideOut)
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import FWCore.ParameterSet.Config as cms

def _addProcessKFSmootherForRefitInsideOut(process):
process.hltKFSmootherForRefitInsideOut = cms.ESProducer('KFTrajectorySmootherESProducer',
ComponentName = cms.string('hltKFSmootherForRefitInsideOut'),
Propagator = cms.string('hltSmartPropagatorAnyRK'),
Updator = cms.string('hltESPKFUpdator'),
Estimator = cms.string('hltChi2EstimatorForRefit'),
RecoGeometry = cms.string('GlobalDetLayerGeometry'),
errorRescaling = cms.double(100),
minHits = cms.int32(3),
appendToDataLabel = cms.string(''))

from Configuration.ProcessModifiers.mtd_at_hlt_cff import mtd_at_hlt
modifyConfigurationForKFSmootherForRefitInsideOut_ = mtd_at_hlt.makeProcessModifier(_addProcessKFSmootherForRefitInsideOut)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import FWCore.ParameterSet.Config as cms

def _addProcessMTDCPEESProducer(process):
process.hltMTDCPEESProducer = cms.ESProducer('MTDCPEESProducer',
appendToDataLabel = cms.string(''))

from Configuration.ProcessModifiers.mtd_at_hlt_cff import mtd_at_hlt
modifyConfigurationForMTDCPEESProducer_ = mtd_at_hlt.makeProcessModifier(_addProcessMTDCPEESProducer)
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import FWCore.ParameterSet.Config as cms

def _addProcessMTDTimeCalibESProducer(process):
from SimFastTiming.FastTimingCommon.mtdDigitizer_cfi import mtdDigitizer as _mtdDigitizer
process.hltMTDTimeCalibESProducer = cms.ESProducer('MTDTimeCalibESProducer',
BTLLightCollSlope = _mtdDigitizer.barrelDigitizer.DeviceSimulation.LightCollectionSlope,
appendToDataLabel = cms.string(''))

from Configuration.ProcessModifiers.mtd_at_hlt_cff import mtd_at_hlt
modifyConfigurationForMTDTimeCalibESProducer_ = mtd_at_hlt.makeProcessModifier(_addProcessMTDTimeCalibESProducer)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import FWCore.ParameterSet.Config as cms

def _addProcessMTDTransientTrackingRecHitBuilder(process):
process.hltMTDTransientTrackingRecHitBuilder = cms.ESProducer("MTDTransientTrackingRecHitBuilderESProducer",
ComponentName = cms.string('hltMTDRecHitBuilder'))

from Configuration.ProcessModifiers.mtd_at_hlt_cff import mtd_at_hlt
modifyConfigurationForMTDTransientTrackingRecHitBuilder_ = mtd_at_hlt.makeProcessModifier(_addProcessMTDTransientTrackingRecHitBuilder)
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import FWCore.ParameterSet.Config as cms

def _addProcessPropagatorWithMaterialForMTD(process):
process.hltPropagatorWithMaterialForMTD = cms.ESProducer(
"PropagatorWithMaterialESProducer",
MaxDPhi = cms.double(1.6), #default was 1.6
ComponentName = cms.string('hltPropagatorWithMaterialForMTD'),
Mass = cms.double(0.13957018), #default was 0.105
PropagationDirection = cms.string('anyDirection'),
useRungeKutta = cms.bool(False),
ptMin = cms.double(0.1),
useOldAnalPropLogic = cms.bool(False)
)

from Configuration.ProcessModifiers.mtd_at_hlt_cff import mtd_at_hlt
modifyConfigurationForPropagatorWithMaterialForMTD_ = mtd_at_hlt.makeProcessModifier(_addProcessPropagatorWithMaterialForMTD)
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import FWCore.ParameterSet.Config as cms

def _addProcessSmartPropagatorAnyRK(process):
process.hltSmartPropagatorAnyRK = cms.ESProducer("SmartPropagatorESProducer",
ComponentName = cms.string('hltSmartPropagatorAnyRK'),
TrackerPropagator = cms.string('RungeKuttaTrackerPropagator'),
MuonPropagator = cms.string('SteppingHelixPropagatorAny'),
PropagationDirection = cms.string('alongMomentum'),
Epsilon = cms.double(5.0))

from Configuration.ProcessModifiers.mtd_at_hlt_cff import mtd_at_hlt
modifyConfigurationForSmartPropagatorAnyRK_ = mtd_at_hlt.makeProcessModifier(_addProcessSmartPropagatorAnyRK)
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,6 @@
originalQualVals = cms.InputTag("hltInitialStepTrackCutClassifier","QualityMasks"),
originalSource = cms.InputTag("hltInitialStepTracks")
)

from Configuration.ProcessModifiers.mtd_at_hlt_cff import mtd_at_hlt
mtd_at_hlt.toModify(hltInitialStepTrackSelectionHighPurity, copyTrajectories = True)
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
useSimpleMF = cms.bool(False)
)

from Configuration.ProcessModifiers.mtd_at_hlt_cff import mtd_at_hlt
mtd_at_hlt.toModify(hltInitialStepTracks, TrajectoryInEvent = True)

_hltInitialStepTracksMkFitFit = cms.EDProducer("MkFitOutputTrackConverter",
mkFitEventOfHits = cms.InputTag("hltMkFitEventOfHits"),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import FWCore.ParameterSet.Config as cms

hltMtdClusters = cms.EDProducer('MTDClusterProducer',
srcBarrel = cms.InputTag('hltMtdRecHits', 'FTLBarrel'),
srcEndcap = cms.InputTag('hltMtdRecHits', 'FTLEndcap'),
BarrelClusterName = cms.string('FTLBarrel'),
EndcapClusterName = cms.string('FTLEndcap'),
ClusterMode = cms.string('MTDThresholdClusterizer'),
HitThreshold = cms.double(0),
SeedThreshold = cms.double(0),
ClusterThreshold = cms.double(0),
TimeThreshold = cms.double(10),
PositionThreshold = cms.double(-1)
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import FWCore.ParameterSet.Config as cms

_barrelAlgo = cms.PSet(
algoName = cms.string("MTDRecHitAlgo"),
thresholdToKeep = cms.double(1.), # [MeV]
calibrationConstant = cms.double(1.)
)

_endcapAlgo = cms.PSet(
algoName = cms.string("MTDRecHitAlgo"),
thresholdToKeep = cms.double(0.0425), # MeV
calibrationConstant = cms.double(0.085), # MeV/MIP
)

from Configuration.Eras.Modifier_phase2_etlV4_cff import phase2_etlV4
phase2_etlV4.toModify(_endcapAlgo, thresholdToKeep = 0.005, calibrationConstant = 0.015 )

hltMtdRecHits = cms.EDProducer("MTDRecHitProducer",
barrel = _barrelAlgo,
endcap = _endcapAlgo,
barrelUncalibratedRecHits = cms.InputTag('hltMtdUncalibratedRecHits:FTLBarrel'),
endcapUncalibratedRecHits = cms.InputTag('hltMtdUncalibratedRecHits:FTLEndcap'),
BarrelHitsName = cms.string('FTLBarrel'),
EndcapHitsName = cms.string('FTLEndcap'),
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import FWCore.ParameterSet.Config as cms

hltMtdTrackQualityMVA = cms.EDProducer('MTDTrackQualityMVAProducer',
tracksSrc = cms.InputTag('hltGeneralTracks'),
btlMatchChi2Src = cms.InputTag('hltTrackExtenderWithMTD', 'btlMatchChi2'),
btlMatchTimeChi2Src = cms.InputTag('hltTrackExtenderWithMTD', 'btlMatchTimeChi2'),
etlMatchChi2Src = cms.InputTag('hltTrackExtenderWithMTD', 'etlMatchChi2'),
etlMatchTimeChi2Src = cms.InputTag('hltTrackExtenderWithMTD', 'etlMatchTimeChi2'),
mtdTimeSrc = cms.InputTag('hltTrackExtenderWithMTD', 'generalTracktmtd'),
sigmamtdTimeSrc = cms.InputTag('hltTrackExtenderWithMTD', 'generalTracksigmatmtd'),
pathLengthSrc = cms.InputTag('hltTrackExtenderWithMTD', 'generalTrackPathLength'),
npixBarrelSrc = cms.InputTag('hltTrackExtenderWithMTD', 'npixBarrel'),
npixEndcapSrc = cms.InputTag('hltTrackExtenderWithMTD', 'npixEndcap'),
outermostHitPositionSrc = cms.InputTag('hltTrackExtenderWithMTD', 'generalTrackOutermostHitPosition'),
offlineBS = cms.InputTag('hltOnlineBeamSpot'),
qualityBDT_weights_file = cms.FileInPath('RecoMTD/TimingIDTools/data/BDT_nvars_17_d7.xml'),
mightGet = cms.optional.untracked.vstring
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import FWCore.ParameterSet.Config as cms

hltMtdTrackingRecHits = cms.EDProducer('MTDTrackingRecHitProducer',
barrelClusters = cms.InputTag('hltMtdClusters', 'FTLBarrel'),
endcapClusters = cms.InputTag('hltMtdClusters', 'FTLEndcap'),
mightGet = cms.optional.untracked.vstring
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import FWCore.ParameterSet.Config as cms

from SimFastTiming.FastTimingCommon.mtdDigitizer_cfi import mtdDigitizer as _mtdDigitizer

_barrelAlgo = cms.PSet(
algoName = cms.string("BTLUncalibRecHitAlgo"),
invLightSpeedLYSO = _mtdDigitizer.barrelDigitizer.DeviceSimulation.LightCollectionSlope, # [ns/cm]
npeToADC = _mtdDigitizer.barrelDigitizer.ElectronicsSimulation.PulseQParam, # Npe to ADC counts conversion
npePerMeV = _mtdDigitizer.barrelDigitizer.DeviceSimulation.LightOutput, # [Npe/MeV]
npeSaturationCorrection = _mtdDigitizer.barrelDigitizer.ElectronicsSimulation.SiPMSaturationParam, # effective Npe to true Npe conversion (SiPM saturation)
tdcLSB_ns = cms.double(0.020), # [ns]
timeResolutionInNs = cms.string("0.0593858*pow(x,-1.02826)+0.0156719"), # [ns]
timeWalkCorrection = cms.string("1.16946*pow(x,-0.671018)+0.0443454") # [ns]
)

_endcapAlgo = cms.PSet(
algoName = cms.string("ETLUncalibRecHitAlgo"),
adcNbits = _mtdDigitizer.endcapDigitizer.ElectronicsSimulation.adcNbits,
adcSaturation = _mtdDigitizer.endcapDigitizer.ElectronicsSimulation.adcSaturation_MIP,
toaLSB_ns = _mtdDigitizer.endcapDigitizer.ElectronicsSimulation.toaLSB_ns,
timeResolutionInNs = cms.string("0.0370"), # [ns]
timeCorr_p0 = cms.double(0.967683), # 0.974683 - 0.007, ad hoc correction for bias from global delay removal
timeCorr_p1 = cms.double(-0.237274),
timeCorr_p2 = cms.double(0.021455),
timeCorr_p3 = cms.double(-0.000727429)
)

hltMtdUncalibratedRecHits = cms.EDProducer(
"MTDUncalibratedRecHitProducer",
barrel = _barrelAlgo,
endcap = _endcapAlgo,
barrelDigis = cms.InputTag('mix:FTLBarrel'),
endcapDigis = cms.InputTag('mix:FTLEndcap'),
BarrelHitsName = cms.string('FTLBarrel'),
EndcapHitsName = cms.string('FTLEndcap')
)

from Configuration.ProcessModifiers.premix_stage2_cff import premix_stage2
premix_stage2.toModify(hltMtdUncalibratedRecHits,
barrelDigis = 'mixData:FTLBarrel',
endcapDigis = 'mixData:FTLEndcap',
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import FWCore.ParameterSet.Config as cms

hltOfflinePrimaryVertices4D = cms.EDProducer("RecoChargedRefCandidatePrimaryVertexSorter",
assignment = cms.PSet(
DzCutForChargedFromPUVtxs = cms.double(0.2),
EtaMinUseDz = cms.double(-1),
NumOfPUVtxsForCharged = cms.uint32(0),
OnlyUseFirstDz = cms.bool(False),
PtMaxCharged = cms.double(-1),
maxDistanceToJetAxis = cms.double(0.07),
maxDtSigForPrimaryAssignment = cms.double(3),
maxDxyForJetAxisAssigment = cms.double(0.1),
maxDxyForNotReconstructedPrimary = cms.double(0.01),
maxDxySigForNotReconstructedPrimary = cms.double(2),
maxDzErrorForPrimaryAssignment = cms.double(0.05),
maxDzForJetAxisAssigment = cms.double(0.1),
maxDzForPrimaryAssignment = cms.double(0.1),
maxDzSigForPrimaryAssignment = cms.double(5),
maxJetDeltaR = cms.double(0.5),
minJetPt = cms.double(25),
preferHighRanked = cms.bool(False),
useTiming = cms.bool(True),
useVertexFit = cms.bool(True)
),
jets = cms.InputTag("hltAk4CaloJetsForTrk"),
mightGet = cms.optional.untracked.vstring,
particles = cms.InputTag("hltTrackRefsForJetsBeforeSorting4D"),
produceAssociationToOriginalVertices = cms.bool(False),
produceNoPileUpCollection = cms.bool(False),
producePileUpCollection = cms.bool(False),
produceSortedVertices = cms.bool(True),
qualityForPrimary = cms.int32(3),
sorting = cms.PSet(

),
trackTimeResoTag = cms.InputTag("hltTofPID4DnoPID","sigmat0safe"),
trackTimeTag = cms.InputTag("hltTofPID4DnoPID","t0safe"),
usePVMET = cms.bool(True),
vertices = cms.InputTag("hltUnsortedOfflinePrimaryVertices4D")
)
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,13 @@
),
ticlCandidateSrc = cms.InputTag("hltTiclCandidate"),
timingQualityThreshold = cms.double(0.5),
trackTimeErrorMap = cms.InputTag("tofPID","sigmat0"),
trackTimeQualityMap = cms.InputTag("mtdTrackQualityMVA","mtdQualMVA"),
trackTimeValueMap = cms.InputTag("tofPID","t0"),
trackTimeErrorMap = cms.InputTag("hltTofPID","sigmat0"),
trackTimeQualityMap = cms.InputTag("hltMtdTrackQualityMVA","mtdQualMVA"),
trackTimeValueMap = cms.InputTag("hltTofPID","t0"),
useMTDTiming = cms.bool(False),
useTimingAverage = cms.bool(False)
)

from Configuration.ProcessModifiers.mtd_at_hlt_cff import mtd_at_hlt
mtd_at_hlt.toModify(hltPfTICL,
useMTDTiming = True)
Loading