Skip to content

Commit 86dd6b3

Browse files
authored
Merge pull request #49517 from cms-ngt-hlt/pixellessTracksValidation
[NGT] add "pixel-less" and "withPixels" track validation monitoring for HLT
2 parents bd5bd17 + 0d798b1 commit 86dd6b3

File tree

5 files changed

+40
-3
lines changed

5 files changed

+40
-3
lines changed

CommonTools/RecoAlgos/interface/RecoTrackSelectorBase.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class RecoTrackSelectorBase {
2828
maxChi2_(cfg.getParameter<double>("maxChi2")),
2929
minHit_(cfg.getParameter<int>("minHit")),
3030
minPixelHit_(cfg.getParameter<int>("minPixelHit")),
31+
maxPixelHit_(cfg.getParameter<int>("maxPixelHit")),
3132
minLayer_(cfg.getParameter<int>("minLayer")),
3233
min3DLayer_(cfg.getParameter<int>("min3DLayer")),
3334
usePV_(false),
@@ -97,6 +98,7 @@ class RecoTrackSelectorBase {
9798
desc.add<int>("minHit", 0);
9899
desc.add<int>("minLayer", 3);
99100
desc.add<int>("minPixelHit", 0);
101+
desc.add<int>("maxPixelHit", 99);
100102
desc.add<std::vector<std::string> >("algorithm", {});
101103
desc.add<std::vector<std::string> >("algorithmMaskContains", {});
102104
desc.add<std::vector<std::string> >("originalAlgorithm", {});
@@ -149,6 +151,7 @@ class RecoTrackSelectorBase {
149151

150152
return ((algo_ok & quality_ok) && t.hitPattern().numberOfValidHits() >= minHit_ &&
151153
t.hitPattern().numberOfValidPixelHits() >= minPixelHit_ &&
154+
t.hitPattern().numberOfValidPixelHits() <= maxPixelHit_ &&
152155
t.hitPattern().trackerLayersWithMeasurement() >= minLayer_ &&
153156
t.hitPattern().pixelLayersWithMeasurement() + t.hitPattern().numberOfValidStripLayersWithMonoAndStereo() >=
154157
min3DLayer_ &&
@@ -167,6 +170,7 @@ class RecoTrackSelectorBase {
167170
double maxChi2_;
168171
int minHit_;
169172
int minPixelHit_;
173+
int maxPixelHit_;
170174
int minLayer_;
171175
int min3DLayer_;
172176
bool usePV_;

CommonTools/RecoAlgos/python/recoTrackSelectorPSet_cfi.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
min3DLayer = cms.int32(0),
1919
minHit = cms.int32(0),
2020
minPixelHit = cms.int32(0),
21+
maxPixelHit = cms.int32(99),
2122
beamSpot = cms.InputTag("offlineBeamSpot"),
2223
usePV = cms.bool(False),
2324
vertexTag = cms.InputTag('offlinePrimaryVertices'),

CommonTools/UtilAlgos/interface/ObjectSelectorProducer.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class ObjectSelectorProducer : public Base {
3333
/// constructor
3434
explicit ObjectSelectorProducer(const edm::ParameterSet& cfg)
3535
: Base(cfg),
36+
throwOnMissing_(cfg.template getParameter<bool>("throwOnMissing")),
3637
srcToken_(
3738
this->template consumes<typename Selector::collection>(cfg.template getParameter<edm::InputTag>("src"))),
3839
selectorInit_(this->consumesCollector()),
@@ -45,6 +46,7 @@ class ObjectSelectorProducer : public Base {
4546

4647
static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
4748
edm::ParameterSetDescription desc;
49+
desc.add<bool>("throwOnMissing", true);
4850
desc.add<edm::InputTag>("src", edm::InputTag(""));
4951
Selector::fillPSetDescription(desc);
5052
descriptions.addWithDefaultLabel(desc);
@@ -56,13 +58,21 @@ class ObjectSelectorProducer : public Base {
5658
selectorInit_.init(selector_, evt, es);
5759
edm::Handle<typename Selector::collection> source;
5860
evt.getByToken(srcToken_, source);
61+
62+
// If the input source is not valid AND throwOnMissing is false skip the event
63+
// This is necessary when filtering e.g. HLT collection that are not available for all events
64+
if (!source.isValid() && !throwOnMissing_) {
65+
return;
66+
}
67+
5968
StoreManager manager(source);
6069
selector_.select(source, evt, es);
6170
manager.cloneAndStore(selector_.begin(), selector_.end(), evt);
6271
edm::OrphanHandle<OutputCollection> filtered = manager.put(evt);
6372
postProcessor_.process(filtered, evt);
6473
}
6574
/// source collection label
75+
const bool throwOnMissing_;
6676
edm::EDGetTokenT<typename Selector::collection> srcToken_;
6777
/// Object collection selector
6878
Init selectorInit_;

Validation/RecoTrack/python/HLTmultiTrackValidator_cff.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from Validation.RecoTrack.HLTmultiTrackValidator_cfi import *
44
from SimGeneral.TrackingAnalysis.trackingParticleNumberOfLayersProducer_cff import *
5+
from Validation.RecoTrack.cutsRecoTracks_cfi import cutsRecoTracks as _cutsRecoTracks
56

67
hltTrackValidator = hltMultiTrackValidator.clone(
78
label = [
@@ -15,12 +16,30 @@
1516
]
1617
)
1718

19+
# Pixel-less track selector
20+
hltPixelLessTracks = _cutsRecoTracks.clone(
21+
throwOnMissing = cms.bool(False), # HLT collection might be missing
22+
src = "hltMergedTracks",
23+
minLayer = 3,
24+
maxPixelHit = 0
25+
)
26+
27+
# Tracks with at least one pixel hit
28+
hltWithPixelTracks = _cutsRecoTracks.clone(
29+
throwOnMissing = cms.bool(False), # HLT collection might be missing
30+
src = "hltMergedTracks",
31+
minLayer = 3,
32+
minPixelHit = 1
33+
)
34+
1835
hltMultiTrackValidationTask = cms.Task(
1936
hltTPClusterProducer
2037
, trackingParticleNumberOfLayersProducer
2138
, hltTrackAssociatorByHits
2239
)
2340
hltMultiTrackValidation = cms.Sequence(
41+
hltPixelLessTracks+
42+
hltWithPixelTracks+
2443
hltTrackValidator,
2544
hltMultiTrackValidationTask
2645
)
@@ -32,23 +51,25 @@ def _modifyForRun3(trackvalidator):
3251
run3_common.toModify(hltTrackValidator, _modifyForRun3)
3352

3453
def _modifyForPhase2(trackvalidator):
35-
trackvalidator.label = ["hltGeneralTracks", "hltPhase2PixelTracks", "hltInitialStepTrackSelectionHighPurity", "hltHighPtTripletStepTrackSelectionHighPurity"]
54+
trackvalidator.label = ["hltGeneralTracks", "hltPhase2PixelTracks", "hltInitialStepTrackSelectionHighPurity", "hltHighPtTripletStepTrackSelectionHighPurity", "hltPixelLessTracks", "hltWithPixelTracks"]
3655

3756
from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
3857
phase2_tracker.toModify(hltTrackValidator, _modifyForPhase2)
58+
phase2_tracker.toModify(hltPixelLessTracks, src = "hltGeneralTracks")
59+
phase2_tracker.toModify(hltWithPixelTracks, src = "hltGeneralTracks")
3960

4061
from Configuration.ProcessModifiers.trackingLST_cff import trackingLST
4162
from Configuration.ProcessModifiers.ngtScouting_cff import ngtScouting
4263
from Configuration.ProcessModifiers.singleIterPatatrack_cff import singleIterPatatrack
4364

4465
def _modifyForSingleIterPatatrack(trackvalidator):
45-
trackvalidator.label = ["hltGeneralTracks", "hltPhase2PixelTracks", "hltInitialStepTrackSelectionHighPurity"]
66+
trackvalidator.label = ["hltGeneralTracks", "hltPhase2PixelTracks", "hltInitialStepTrackSelectionHighPurity", "hltPixelLessTracks", "hltWithPixelTracks"]
4667
singleIterPatatrack.toModify(hltTrackValidator, _modifyForSingleIterPatatrack)
4768

4869
def _modifyForNGTScouting(trackvalidator):
4970
trackvalidator.label = ["hltGeneralTracks", "hltPhase2PixelTracks"]
5071
(ngtScouting & ~trackingLST).toModify(hltTrackValidator, _modifyForNGTScouting)
5172

5273
def _modifyForNGTScoutingLST(trackvalidator):
53-
trackvalidator.label = ["hltGeneralTracks", "hltPhase2PixelTracks", "hltInitialStepTracksT5TCLST"]
74+
trackvalidator.label = ["hltGeneralTracks", "hltPhase2PixelTracks", "hltInitialStepTracksT5TCLST", "hltPixelLessTracks", "hltWithPixelTracks"]
5475
(ngtScouting & trackingLST).toModify(hltTrackValidator, _modifyForNGTScoutingLST)

Validation/RecoTrack/src/MTVHistoProducerAlgoForTracker.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,7 @@ std::unique_ptr<RecoTrackSelectorBase> MTVHistoProducerAlgoForTracker::makeRecoT
379379
psetTrack.addParameter("maxChi2", 1e10);
380380
psetTrack.addParameter("minHit", 0);
381381
psetTrack.addParameter("minPixelHit", 0);
382+
psetTrack.addParameter("maxPixelHit", 99);
382383
psetTrack.addParameter("minLayer", 0);
383384
psetTrack.addParameter("min3DLayer", 0);
384385
psetTrack.addParameter("quality", std::vector<std::string>{});

0 commit comments

Comments
 (0)