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
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import FWCore.ParameterSet.Config as cms

# This modifier sets replaces the default pattern recognition with mkFit for initialStep
hltTrackingMkFitInitialStep = cms.Modifier()
1 change: 1 addition & 0 deletions Configuration/PyReleaseValidation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ The offsets currently in use are:
* 0.7561 HLT phase-2 timing menu Alpaka, trimmed tracking
* 0.7562 HLT phase-2 timing menu Alpaka, trimmed tracking, single tracking iteration variant
* 0.757: HLT phase-2 timing menu Alpaka, single tracking iteration, LST seeding + CKF building variant
* 0.7571: HLT phase-2 timing menu Alpaka, single tracking iteration, LST seeding + mkFit building variant
* 0.758 HLT phase-2 timing menu ticl_barrel variant
* 0.759: HLT phase-2 timing menu, with NANO:@Phase2HLT
* 0.76: HLT phase-2 reduced menu, with DIGI step
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 @@ -79,6 +79,7 @@
numWFIB.extend([prefixDet+34.7561])# HLTTiming75e33, alpaka,phase2_hlt_vertexTrimming
numWFIB.extend([prefixDet+34.7562])# HLTTiming75e33, alpaka,phase2_hlt_vertexTrimming,singleIterPatatrack
numWFIB.extend([prefixDet+34.757]) # HLTTiming75e33, alpaka,singleIterPatatrack,trackingLST,seedingLST
numWFIB.extend([prefixDet+34.7571]) # HLTTiming75e33, alpaka,singleIterPatatrack,trackingLST,seedingLST,buildingMkFit
numWFIB.extend([prefixDet+34.758]) # HLTTiming75e33, ticl_barrel
numWFIB.extend([prefixDet+34.759]) # HLTTiming75e33 + NANO
numWFIB.extend([prefixDet+34.77]) # NGTScouting
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2023,6 +2023,19 @@ def condition(self, fragment, stepList, key, hasHarvest):
'-s':'HARVESTING:@hltValidation'
}

upgradeWFs['HLTTiming75e33AlpakaSingleIterLSTSeedingMkFitBuilding'] = deepcopy(upgradeWFs['HLTTiming75e33'])
upgradeWFs['HLTTiming75e33AlpakaSingleIterLSTSeedingMkFitBuilding'].suffix = '_HLT75e33TimingAlpakaSingleIterLSTSeedingMkFitBuilding'
upgradeWFs['HLTTiming75e33AlpakaSingleIterLSTSeedingMkFitBuilding'].offset = 0.7571
upgradeWFs['HLTTiming75e33AlpakaSingleIterLSTSeedingMkFitBuilding'].step2 = {
'-s':'DIGI:pdigi_valid,L1TrackTrigger,L1,L1P2GT,DIGI2RAW,HLT:75e33_timing,VALIDATION:@hltValidation',
'--procModifiers': 'alpaka,singleIterPatatrack,trackingLST,seedingLST,trackingMkFitCommon,hltTrackingMkFitInitialStep',
'--datatier':'GEN-SIM-DIGI-RAW,DQMIO',
'--eventcontent':'FEVTDEBUGHLT,DQMIO'
}
upgradeWFs['HLTTiming75e33AlpakaSingleIterLSTSeedingMkFitBuilding'].step3 = {
'-s':'HARVESTING:@hltValidation'
}

upgradeWFs['HLTTiming75e33TiclBarrel'] = deepcopy(upgradeWFs['HLTTiming75e33'])
upgradeWFs['HLTTiming75e33TiclBarrel'].suffix = '_HLT75e33TimingTiclBarrel'
upgradeWFs['HLTTiming75e33TiclBarrel'].offset = 0.758
Expand Down
5 changes: 3 additions & 2 deletions Configuration/PyReleaseValidation/scripts/runTheMatrix.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,9 +166,10 @@ def runSelected(opt):
29634.756, # HLT phase-2 timing menu trimmed tracking
29634.7561, # HLT phase-2 timing menu Alpaka, trimmed tracking
29634.7562, # HLT phase-2 timing menu Alpaka, trimmed tracking, single tracking iteration variant
29634.757, # HLT phase-2 timing menu, with NANO:@Phase2HLT
29634.757, # HLT phase-2 timing menu Alpaka, single tracking iteration, LST seeding + CKF building variant
29634.7571, # HLT phase-2 timing menu Alpaka, single tracking iteration, LST seeding + mkFit building variant
29634.758, # HLT phase-2 timing menu ticl_barrel variant
29634.759, # HLT phase-2 timing menu Alpaka, single tracking iteration, LST seeding + CKF building variant
29634.759, # HLT phase-2 timing menu, with NANO:@Phase2HLT
29634.77, # HLT phase-2 NGT Scouting menu
29634.771, # HLT phase-2 NGT Scouting menu, Alpaka, TICL-v5, TICL-Barrel, CA Extension
29634.772, # HLT phase-2 NGT Scouting menu, with NANO:@NGTScouting
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import FWCore.ParameterSet.Config as cms

def _addProcessMkFitGeometry(process):
process.mkFitGeometryESProducer = cms.ESProducer("MkFitGeometryESProducer",
appendToDataLabel = cms.string('')
)

from Configuration.ProcessModifiers.trackingMkFitCommon_cff import trackingMkFitCommon
modifyConfigurationForTrackingMkFitGeometryMkfit_ = trackingMkFitCommon.makeProcessModifier(_addProcessMkFitGeometry)

def _addProcesshltInitialStepMkFitConfig(process):
process.hltInitialStepTrackCandidatesMkFitConfig = cms.ESProducer("MkFitIterationConfigESProducer",
ComponentName = cms.string('hltInitialStepTrackCandidatesMkFitConfig'),
appendToDataLabel = cms.string(''),
config = cms.FileInPath('RecoTracker/MkFit/data/mkfit-phase2-initialStep.json'),
maxClusterSize = cms.uint32(8),
minPt = cms.double(0.8)
)

from Configuration.ProcessModifiers.hltTrackingMkFitInitialStep_cff import hltTrackingMkFitInitialStep
modifyConfigurationForTrackingMkFithltInitialStepMkFitConfig_ = hltTrackingMkFitInitialStep.makeProcessModifier(_addProcesshltInitialStepMkFitConfig)
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import FWCore.ParameterSet.Config as cms

# MkFitSeedConverter options
hltInitialStepMkFitSeeds = cms.EDProducer("MkFitSeedConverter",
maxNSeeds = cms.uint32(500000),
mightGet = cms.optional.untracked.vstring,
seeds = cms.InputTag("hltInitialStepSeeds"),
ttrhBuilder = cms.ESInputTag("","WithTrackAngle")
)

from Configuration.ProcessModifiers.trackingLST_cff import trackingLST
from Configuration.ProcessModifiers.seedingLST_cff import seedingLST
from Configuration.ProcessModifiers.hltTrackingMkFitInitialStep_cff import hltTrackingMkFitInitialStep
(trackingLST & seedingLST & hltTrackingMkFitInitialStep).toModify(hltInitialStepMkFitSeeds, seeds = "hltInitialStepTrajectorySeedsLST")
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import FWCore.ParameterSet.Config as cms

# InitialStepTrackCandidatesMkFit options
hltInitialStepTrackCandidatesMkFit = cms.EDProducer("MkFitProducer",
backwardFitInCMSSW = cms.bool(False),
buildingRoutine = cms.string('cloneEngine'),
clustersToSkip = cms.InputTag(""),
config = cms.ESInputTag("","hltInitialStepTrackCandidatesMkFitConfig"),
eventOfHits = cms.InputTag("hltMkFitEventOfHits"),
limitConcurrency = cms.untracked.bool(False),
mightGet = cms.optional.untracked.vstring,
minGoodStripCharge = cms.PSet(),
mkFitSilent = cms.untracked.bool(True),
pixelHits = cms.InputTag("hltMkFitSiPixelHits"),
removeDuplicates = cms.bool(True),
seedCleaning = cms.bool(True),
seeds = cms.InputTag("hltInitialStepMkFitSeeds"),
stripHits = cms.InputTag("hltMkFitSiPhase2Hits")
)
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,42 @@
)
)


_hltInitialStepTrackCandidatesMkFit = cms.EDProducer('MkFitOutputConverter',
batchSize = cms.int32(16),
candMVASel = cms.bool(False),
candCutSel = cms.bool(True),
candMinNHitsCut = cms.int32(3),
candMinPtCut = cms.double(0.8),
candWP = cms.double(0),
doErrorRescale = cms.bool(True),
mightGet = cms.optional.untracked.vstring,
mkFitEventOfHits = cms.InputTag("hltMkFitEventOfHits"),
mkFitPixelHits = cms.InputTag("hltMkFitSiPixelHits"),
mkFitSeeds = cms.InputTag("hltInitialStepMkFitSeeds"),
mkFitStripHits = cms.InputTag("hltMkFitSiPhase2Hits"),
propagatorAlong = cms.ESInputTag("","PropagatorWithMaterial"),
propagatorOpposite = cms.ESInputTag("","PropagatorWithMaterialOpposite"),
qualityMaxInvPt = cms.double(100),
qualityMaxPosErr = cms.double(100),
qualityMaxR = cms.double(120),
qualityMaxZ = cms.double(280),
qualityMinTheta = cms.double(0.01),
qualitySignPt = cms.bool(True),
seeds = cms.InputTag("hltInitialStepSeeds"),
tfDnnLabel = cms.string('trackSelectionTf'),
tracks = cms.InputTag("hltInitialStepTrackCandidatesMkFit"),
ttrhBuilder = cms.ESInputTag("","WithTrackAngle")
)

_hltInitialStepTrackCandidatesMkFitLSTSeeds = _hltInitialStepTrackCandidatesMkFit.clone(seeds = "hltInitialStepTrajectorySeedsLST")

from Configuration.ProcessModifiers.singleIterPatatrack_cff import singleIterPatatrack
from Configuration.ProcessModifiers.trackingLST_cff import trackingLST
from Configuration.ProcessModifiers.seedingLST_cff import seedingLST
from Configuration.ProcessModifiers.hltTrackingMkFitInitialStep_cff import hltTrackingMkFitInitialStep
# All useful combinations added to make the code work as expected and for clarity
(~singleIterPatatrack & trackingLST & ~seedingLST).toReplaceWith(hltInitialStepTrackCandidates, _hltInitialStepTrackCandidatesLST)
(~singleIterPatatrack & trackingLST & seedingLST).toReplaceWith(hltInitialStepTrackCandidates, _hltInitialStepTrackCandidatesLST)
(singleIterPatatrack & trackingLST & ~seedingLST).toReplaceWith(hltInitialStepTrackCandidates, _hltInitialStepTrackCandidatesLST)
(~(singleIterPatatrack & seedingLST) & trackingLST).toReplaceWith(hltInitialStepTrackCandidates, _hltInitialStepTrackCandidatesLST)
(singleIterPatatrack & trackingLST & seedingLST).toModify(hltInitialStepTrackCandidates, src = "hltInitialStepTrajectorySeedsLST") # All LST seeds
(~seedingLST & ~trackingLST & hltTrackingMkFitInitialStep).toReplaceWith(hltInitialStepTrackCandidates, _hltInitialStepTrackCandidatesMkFit)
(singleIterPatatrack & seedingLST & trackingLST & hltTrackingMkFitInitialStep).toReplaceWith(hltInitialStepTrackCandidates, _hltInitialStepTrackCandidatesMkFitLSTSeeds)
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import FWCore.ParameterSet.Config as cms

# MkFitEventOfHits options
hltMkFitEventOfHits = cms.EDProducer("MkFitEventOfHitsProducer",
beamSpot = cms.InputTag("offlineBeamSpot"),
mightGet = cms.optional.untracked.vstring,
pixelHits = cms.InputTag("hltMkFitSiPixelHits"),
stripHits = cms.InputTag("hltMkFitSiPhase2Hits"),
usePixelQualityDB = cms.bool(True),
useStripStripQualityDB = cms.bool(False)
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import FWCore.ParameterSet.Config as cms

# MkFitSiPhase2Hits options
hltMkFitSiPhase2Hits = cms.EDProducer("MkFitPhase2HitConverter",
mightGet = cms.optional.untracked.vstring,
hits = cms.InputTag("hltSiPhase2RecHits"),
clusters = cms.InputTag("hltSiPhase2Clusters"),
ttrhBuilder = cms.ESInputTag("","WithTrackAngle")
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import FWCore.ParameterSet.Config as cms

# MkFitSiPixelHits options
hltMkFitSiPixelHits = cms.EDProducer("MkFitSiPixelHitConverter",
hits = cms.InputTag("hltSiPixelRecHits"),
clusters = cms.InputTag("hltSiPixelClusters"),
mightGet = cms.optional.untracked.vstring,
ttrhBuilder = cms.ESInputTag("","WithTrackAngle")
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import FWCore.ParameterSet.Config as cms

# MkFitSiStripHits options
hltMkFitSiStripHits = cms.EDProducer("MkFitSiStripHitConverter",
mightGet = cms.optional.untracked.vstring,
minGoodStripCharge = cms.PSet(
refToPSet_ = cms.string('SiStripClusterChargeCutLoose')
),
rphiHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit"),
stereoHits = cms.InputTag("siStripMatchedRecHits","stereoRecHit"),
ttrhBuilder = cms.ESInputTag("","WithTrackAngle")
)
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,37 @@

from Configuration.ProcessModifiers.ngtScouting_cff import ngtScouting
ngtScouting.toReplaceWith(HLTInitialStepSequence,_HLTInitialStepSequenceNGTScouting)

from ..sequences.HLTMkFitInputSequence_cfi import *
from ..modules.hltInitialStepMkFitSeeds_cfi import *
from ..modules.hltInitialStepTrackCandidatesMkFit_cfi import *
_HLTInitialStepSequenceMkFitTracking = cms.Sequence(
hltInitialStepSeeds
+hltSiPhase2RecHits
+HLTMkFitInputSequence
+hltInitialStepMkFitSeeds
+hltInitialStepTrackCandidatesMkFit
+hltInitialStepTrackCandidates
+hltInitialStepTracks
+hltInitialStepTrackCutClassifier
+hltInitialStepTrackSelectionHighPurity
)

from Configuration.ProcessModifiers.hltTrackingMkFitInitialStep_cff import hltTrackingMkFitInitialStep
(~seedingLST & ~trackingLST & hltTrackingMkFitInitialStep).toReplaceWith(HLTInitialStepSequence,_HLTInitialStepSequenceMkFitTracking)

_HLTInitialStepSequenceSingleIterPatatrackLSTSeedingMkFitTracking = cms.Sequence(
hltInitialStepSeeds
+hltInitialStepSeedTracksLST
+hltSiPhase2RecHits # Probably need to move elsewhere in the final setup
+hltInputLST
+hltLST
+hltInitialStepTrajectorySeedsLST
+HLTMkFitInputSequence
+hltInitialStepMkFitSeeds
+hltInitialStepTrackCandidatesMkFit
+hltInitialStepTrackCandidates
+hltInitialStepTracks
)

(singleIterPatatrack & trackingLST & seedingLST & hltTrackingMkFitInitialStep).toReplaceWith(HLTInitialStepSequence, _HLTInitialStepSequenceSingleIterPatatrackLSTSeedingMkFitTracking)
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import FWCore.ParameterSet.Config as cms

from ..modules.hltMkFitSiPixelHits_cfi import *
from ..modules.hltMkFitSiStripHits_cfi import *
from ..modules.hltMkFitSiPhase2Hits_cfi import *
from ..modules.hltMkFitEventOfHits_cfi import *

HLTMkFitInputSequence = cms.Sequence(
hltMkFitSiPixelHits
+hltMkFitSiPhase2Hits
+hltMkFitEventOfHits
)
1 change: 1 addition & 0 deletions HLTrigger/Configuration/python/HLT_75e33_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@
fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPPixelCPEFastParams_cfi")
fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltPixelTracksCleanerBySharedHits_cfi")
fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPTTRHBuilderWithTrackAngle_cfi")
fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPMkFit_cfi")

fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPKFFittingSmootherForL2Muon_cfi")
fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPKFTrajectoryFitterForL2Muon_cfi")
Expand Down
1 change: 1 addition & 0 deletions HLTrigger/Configuration/python/HLT_75e33_timing_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@
fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPPixelCPEFastParams_cfi")
fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltPixelTracksCleanerBySharedHits_cfi")
fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPTTRHBuilderWithTrackAngle_cfi")
fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPMkFit_cfi")

fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPKFFittingSmootherForL2Muon_cfi")
fragment.load("HLTrigger/Configuration/HLT_75e33/eventsetup/hltESPKFTrajectoryFitterForL2Muon_cfi")
Expand Down
37 changes: 25 additions & 12 deletions RecoTracker/MkFit/plugins/MkFitOutputConverter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,11 @@ class MkFitOutputConverter : public edm::global::EDProducer<> {
const bool doErrorRescale_;

const int algo_;
const bool algoCandSelection_;
const float algoCandWorkingPoint_;
const bool algoCandCutSelection_;
const float algoCandMinPtCut_;
const int algoCandMinNHitsCut_;
const bool algoCandMVASelection_;
const float algoCandMVAWorkingPoint_;
const int bsize_;
const edm::EDGetTokenT<reco::BeamSpot> bsToken_;
const edm::EDGetTokenT<reco::VertexCollection> verticesToken_;
Expand Down Expand Up @@ -177,13 +180,16 @@ MkFitOutputConverter::MkFitOutputConverter(edm::ParameterSet const& iConfig)
doErrorRescale_{iConfig.getParameter<bool>("doErrorRescale")},
algo_{reco::TrackBase::algoByName(
TString(iConfig.getParameter<edm::InputTag>("seeds").label()).ReplaceAll("Seeds", "").Data())},
algoCandSelection_{bool(iConfig.getParameter<bool>("candMVASel"))},
algoCandWorkingPoint_{float(iConfig.getParameter<double>("candWP"))},
algoCandCutSelection_{bool(iConfig.getParameter<bool>("candCutSel"))},
algoCandMinPtCut_{float(iConfig.getParameter<double>("candMinPtCut"))},
algoCandMinNHitsCut_{iConfig.getParameter<int>("candMinNHitsCut")},
algoCandMVASelection_{bool(iConfig.getParameter<bool>("candMVASel"))},
algoCandMVAWorkingPoint_{float(iConfig.getParameter<double>("candWP"))},
bsize_{int(iConfig.getParameter<int>("batchSize"))},
bsToken_(algoCandSelection_ ? consumes<reco::BeamSpot>(edm::InputTag("offlineBeamSpot"))
: edm::EDGetTokenT<reco::BeamSpot>()),
verticesToken_(algoCandSelection_ ? consumes<reco::VertexCollection>(edm::InputTag("firstStepPrimaryVertices"))
: edm::EDGetTokenT<reco::VertexCollection>()),
bsToken_(algoCandMVASelection_ ? consumes<reco::BeamSpot>(edm::InputTag("offlineBeamSpot"))
: edm::EDGetTokenT<reco::BeamSpot>()),
verticesToken_(algoCandMVASelection_ ? consumes<reco::VertexCollection>(edm::InputTag("firstStepPrimaryVertices"))
: edm::EDGetTokenT<reco::VertexCollection>()),
tfDnnLabel_(iConfig.getParameter<std::string>("tfDnnLabel")),
tfDnnToken_(esConsumes(edm::ESInputTag("", tfDnnLabel_))) {}

Expand Down Expand Up @@ -211,6 +217,10 @@ void MkFitOutputConverter::fillDescriptions(edm::ConfigurationDescriptions& desc

desc.add<std::string>("tfDnnLabel", "trackSelectionTf");

desc.add<bool>("candCutSel", false)->setComment("flag used to trigger cut-based selection at cand level");
desc.add<double>("candMinPtCut", 0)->setComment("min pt cut at cand level");
desc.add<int>("candMinNHitsCut", 0)->setComment("min cut on number of hits at cand level");

desc.add<bool>("candMVASel", false)->setComment("flag used to trigger MVA selection at cand level");
desc.add<double>("candWP", 0)->setComment("MVA selection at cand level working point");
desc.add<int>("batchSize", 16)->setComment("batch size for cand DNN evaluation");
Expand All @@ -232,13 +242,13 @@ void MkFitOutputConverter::produce(edm::StreamID iID, edm::Event& iEvent, const
// beamspot as well since the producer can be used in hlt
const reco::VertexCollection* vertices = nullptr;
const reco::BeamSpot* beamspot = nullptr;
if (algoCandSelection_) {
if (algoCandMVASelection_) {
vertices = &iEvent.get(verticesToken_);
beamspot = &iEvent.get(bsToken_);
}

const tensorflow::Session* session = nullptr;
if (algoCandSelection_)
if (algoCandMVASelection_)
session = iSetup.getData(tfDnnToken_).getSession();

// Convert mkfit presentation back to CMSSW
Expand Down Expand Up @@ -308,6 +318,9 @@ TrackCandidateCollection MkFitOutputConverter::convertCandidates(const MkFitOutp
continue;
}

if (algoCandCutSelection_ && (cand.pT() < algoCandMinPtCut_ || cand.nTotalHits() < algoCandMinNHitsCut_))
continue;

auto state = cand.state(); // copy because have to modify
state.convertFromCCSToGlbCurvilinear();
const auto& param = state.parameters;
Expand Down Expand Up @@ -512,15 +525,15 @@ TrackCandidateCollection MkFitOutputConverter::convertCandidates(const MkFitOutp
states.push_back(tsosDet.first);
}

if (algoCandSelection_) {
if (algoCandMVASelection_) {
const auto& dnnScores = computeDNNs(
output, states, bs, vertices, session, chi2, mkFitOutput.propagatedToFirstLayer() && doErrorRescale_);

TrackCandidateCollection reducedOutput;
reducedOutput.reserve(output.size());
int scoreIndex = 0;
for (const auto& score : dnnScores) {
if (score > algoCandWorkingPoint_)
if (score > algoCandMVAWorkingPoint_)
reducedOutput.push_back(output[scoreIndex]);
scoreIndex++;
}
Expand Down
Loading