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
2 changes: 1 addition & 1 deletion Configuration/EventContent/python/EventContent_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -715,7 +715,7 @@ def SwapKeepAndDrop(l):
'keep *_hltGeneralTracks_*_*',
'keep *_hltInitialStepTrackSelectionHighPurity_*_*',
'keep *_hltHighPtTripletStepTrackSelectionHighPurity_*_*',
'keep *_hltInitialStepTracksT5TCLST_*_*',
'keep *_hltInitialStepTracksT4T5TCLST_*_*',
'keep *_hltOfflinePrimaryVertices_*_*',
])

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,10 @@
from Configuration.ProcessModifiers.ngtScouting_cff import ngtScouting
from ..modules.hltPhase2PixelTracks_cfi import *
_hltGeneralTracksNGTScoutingLST = hltGeneralTracks.clone(
TrackProducers = ["hltPhase2PixelTracks", "hltInitialStepTracksT5TCLST"],
TrackProducers = ["hltPhase2PixelTracks", "hltInitialStepTracksT4T5TCLST"],
hasSelector = [0,0],
indivShareFrac = [0.1,0.1],
selectedTrackQuals = ["hltPhase2PixelTracks", "hltInitialStepTracksT5TCLST"],
selectedTrackQuals = ["hltPhase2PixelTracks", "hltInitialStepTracksT4T5TCLST"],
setsToMerge = {0: dict(pQual=True, tLists=[0,1])}
)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import FWCore.ParameterSet.Config as cms

from ..modules.hltInitialStepTracks_cfi import hltInitialStepTracks as _hltInitialStepTracks
hltInitialStepTracksT5TCLST = _hltInitialStepTracks.clone( src = "hltInitialStepTrackCandidates:t5TCsLST" )
hltInitialStepTracksT4T5TCLST = _hltInitialStepTracks.clone( src = "hltInitialStepTrackCandidates:t4t5TCsLST" )
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,15 @@

(singleIterPatatrack & trackingLST & seedingLST).toReplaceWith(HLTInitialStepSequence, _HLTInitialStepSequenceSingleIterPatatrackLSTSeeding)

from ..modules.hltInitialStepTracksT5TCLST_cfi import *
from ..modules.hltInitialStepTracksT4T5TCLST_cfi import *
_HLTInitialStepSequenceNGTScouting = cms.Sequence(
hltInitialStepSeeds
+hltInitialStepSeedTracksLST
+hltSiPhase2RecHits
+hltInputLST
+hltLST
+hltInitialStepTrackCandidates
+hltInitialStepTracksT5TCLST
+hltInitialStepTracksT4T5TCLST
)

from Configuration.ProcessModifiers.ngtScouting_cff import ngtScouting
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,11 +136,11 @@ def _extend_pixelLess(x):

from Configuration.ProcessModifiers.trackingLST_cff import trackingLST
(trackingPhase2PU140 & trackingLST).toModify(earlyGeneralTracks,
TrackProducers = ['highPtTripletStepLSTpTracks', 'highPtTripletStepLSTT5Tracks'],
TrackProducers = ['highPtTripletStepLSTpTracks', 'highPtTripletStepLSTT4T5Tracks'],
hasSelector = [1,0],
indivShareFrac = [0.1,0.1],
selectedTrackQuals = ['highPtTripletStepSelector:highPtTripletStep',
'highPtTripletStepSelectorLSTT5:highPtTripletStepLSTT5'
'highPtTripletStepSelectorLSTT4T5:highPtTripletStepLSTT4T5'
],
setsToMerge = {0: dict(tLists = [0,1])}
)
38 changes: 19 additions & 19 deletions RecoTracker/IterativeTracking/python/HighPtTripletStep_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -287,16 +287,16 @@
highPtTripletStepLSTpTracks = highPtTripletStepTracks.clone(
src = 'highPtTripletStepTrackCandidates:pTCsLST'
)
highPtTripletStepLSTT5Tracks = highPtTripletStepTracks.clone(
src = 'highPtTripletStepTrackCandidates:t5TCsLST'
highPtTripletStepLSTT4T5Tracks = highPtTripletStepTracks.clone(
src = 'highPtTripletStepTrackCandidates:t4t5TCsLST'
)
_highPtTripletStepTracks_LST = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
TrackProducers = ['highPtTripletStepLSTpTracks',
'highPtTripletStepLSTT5Tracks'],
'highPtTripletStepLSTT4T5Tracks'],
hasSelector = [1,0],
indivShareFrac = [0.1,0.1],
selectedTrackQuals = ['highPtTripletStepSelector:highPtTripletStep',
'highPtTripletStepSelectorLSTT5:highPtTripletStepLSTT5'],
'highPtTripletStepSelectorLSTT4T5:highPtTripletStepLSTT4T5'],
copyExtras = True,
copyMVA = False,
setsToMerge = [cms.PSet( tLists=cms.vint32(0,1), pQual=cms.bool(True) )]
Expand Down Expand Up @@ -382,21 +382,21 @@

(trackingPhase2PU140 & trackingLST).toModify(highPtTripletStepSelector, src = 'highPtTripletStepLSTpTracks')
# Passthrough selector to satisfy the TrackListMerger requirement for selector values
highPtTripletStepSelectorLSTT5 = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
src = 'highPtTripletStepLSTT5Tracks',
highPtTripletStepSelectorLSTT4T5 = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
src = 'highPtTripletStepLSTT4T5Tracks',
trackSelectors = [
RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
name = 'highPtTripletStepLSTT5Loose',
name = 'highPtTripletStepLSTT4T5Loose',
minHitsToBypassChecks = 0
), #end of pset
RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
name = 'highPtTripletStepLSTT5Tight',
preFilterName = 'highPtTripletStepLSTT5Loose',
name = 'highPtTripletStepLSTT4T5Tight',
preFilterName = 'highPtTripletStepLSTT4T5Loose',
minHitsToBypassChecks = 0
),
RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
name = 'highPtTripletStepLSTT5',
preFilterName = 'highPtTripletStepLSTT5Tight',
name = 'highPtTripletStepLSTT4T5',
preFilterName = 'highPtTripletStepLSTT4T5Tight',
minHitsToBypassChecks = 0
),
] #end of vpset
Expand Down Expand Up @@ -430,7 +430,7 @@
from RecoTracker.LST.lstProducerTask_cff import *

_HighPtTripletStepTask_LST.add(siPhase2RecHits, lstInitialStepSeedTracks, lstHighPtTripletStepSeedTracks, lstInputProducer,
lstProducerTask, highPtTripletStepLSTpTracks, highPtTripletStepLSTT5Tracks, highPtTripletStepSelectorLSTT5)
lstProducerTask, highPtTripletStepLSTpTracks, highPtTripletStepLSTT4T5Tracks, highPtTripletStepSelectorLSTT4T5)
(trackingPhase2PU140 & trackingLST).toReplaceWith(HighPtTripletStepTask, _HighPtTripletStepTask_LST)

from HeterogeneousCore.AlpakaCore.functions import makeSerialClone
Expand All @@ -445,23 +445,23 @@
)
highPtTripletStepLSTpTracksSerialSync = highPtTripletStepLSTpTracks.clone(
src = 'highPtTripletStepTrackCandidatesSerialSync:pTCsLST')
highPtTripletStepLSTT5TracksSerialSync = highPtTripletStepLSTT5Tracks.clone(
src = 'highPtTripletStepTrackCandidatesSerialSync:t5TCsLST')
highPtTripletStepLSTT4T5TracksSerialSync = highPtTripletStepLSTT4T5Tracks.clone(
src = 'highPtTripletStepTrackCandidatesSerialSync:t4t5TCsLST')
highPtTripletStepSelectorSerialSync = highPtTripletStepSelector.clone()
(trackingPhase2PU140 & trackingLST).toModify(highPtTripletStepSelectorSerialSync, src = "highPtTripletStepLSTpTracksSerialSync" )
highPtTripletStepSelectorLSTT5SerialSync = highPtTripletStepSelectorLSTT5.clone(src = "highPtTripletStepLSTT5TracksSerialSync")
highPtTripletStepSelectorLSTT4T5SerialSync = highPtTripletStepSelectorLSTT4T5.clone(src = "highPtTripletStepLSTT4T5TracksSerialSync")
highPtTripletStepTracksSerialSync = highPtTripletStepTracks.clone()
(trackingPhase2PU140 & trackingLST).toModify(highPtTripletStepTracksSerialSync,
TrackProducers = ['highPtTripletStepLSTpTracksSerialSync',
'highPtTripletStepLSTT5TracksSerialSync'],
'highPtTripletStepLSTT4T5TracksSerialSync'],
selectedTrackQuals = ['highPtTripletStepSelectorSerialSync:highPtTripletStep',
'highPtTripletStepSelectorLSTT5SerialSync:highPtTripletStepLSTT5'],
'highPtTripletStepSelectorLSTT4T5SerialSync:highPtTripletStepLSTT4T5'],
)
_HighPtTripletStepTask_LSTSerialSync = HighPtTripletStepTask.copy()
_HighPtTripletStepTask_LSTSerialSync.add(siPhase2RecHits, lstInitialStepSeedTracks, lstHighPtTripletStepSeedTracks, lstInputProducerSerialSync,
lstProducerSerialSync, highPtTripletStepTrackCandidatesSerialSync,
highPtTripletStepLSTpTracksSerialSync, highPtTripletStepLSTT5TracksSerialSync,
highPtTripletStepSelectorSerialSync, highPtTripletStepSelectorLSTT5SerialSync,
highPtTripletStepLSTpTracksSerialSync, highPtTripletStepLSTT4T5TracksSerialSync,
highPtTripletStepSelectorSerialSync, highPtTripletStepSelectorLSTT4T5SerialSync,
highPtTripletStepTracksSerialSync
)
HighPtTripletStepTaskSerialSync = cms.Task()
Expand Down
55 changes: 36 additions & 19 deletions RecoTracker/LST/plugins/LSTOutputConverter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,19 @@ class LSTOutputConverter : public edm::stream::EDProducer<> {
const edm::ESGetToken<Propagator, TrackingComponentsRecord> propagatorAlongToken_;
const edm::ESGetToken<Propagator, TrackingComponentsRecord> propagatorOppositeToken_;
const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> tGeomToken_;
const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> tTopoToken_;
std::unique_ptr<SeedCreator> seedCreator_;
const edm::EDPutTokenT<TrajectorySeedCollection> trajectorySeedPutToken_;
const edm::EDPutTokenT<TrajectorySeedCollection> trajectorySeedpLSPutToken_;
const edm::EDPutTokenT<TrackCandidateCollection> trackCandidatePutToken_;
const edm::EDPutTokenT<TrackCandidateCollection> trackCandidatepTCPutToken_;
const edm::EDPutTokenT<TrackCandidateCollection> trackCandidateT5TCPutToken_;
const edm::EDPutTokenT<TrackCandidateCollection> trackCandidateT4T5TCPutToken_;
const edm::EDPutTokenT<TrackCandidateCollection> trackCandidateNopLSTCPutToken_;
const edm::EDPutTokenT<TrackCandidateCollection> trackCandidatepTTCPutToken_;
const edm::EDPutTokenT<TrackCandidateCollection> trackCandidatepLSTCPutToken_;
const edm::EDPutTokenT<std::vector<SeedStopInfo>> seedStopInfoPutToken_;
const edm::EDPutTokenT<std::vector<SeedStopInfo>> pTCsSeedStopInfoPutToken_;
const edm::EDPutTokenT<std::vector<SeedStopInfo>> t5TCsSeedStopInfoPutToken_;
const edm::EDPutTokenT<std::vector<SeedStopInfo>> t4t5TCsSeedStopInfoPutToken_;
const edm::EDPutTokenT<std::vector<SeedStopInfo>> pTTCsSeedStopInfoPutToken_;
};

Expand All @@ -69,6 +70,7 @@ LSTOutputConverter::LSTOutputConverter(edm::ParameterSet const& iConfig)
propagatorAlongToken_{esConsumes(iConfig.getParameter<edm::ESInputTag>("propagatorAlong"))},
propagatorOppositeToken_{esConsumes(iConfig.getParameter<edm::ESInputTag>("propagatorOpposite"))},
tGeomToken_(esConsumes()),
tTopoToken_(esConsumes()),
seedCreator_(SeedCreatorFactory::get()->create("SeedFromConsecutiveHitsCreator",
iConfig.getParameter<edm::ParameterSet>("SeedCreatorPSet"),
consumesCollector())),
Expand All @@ -82,13 +84,13 @@ LSTOutputConverter::LSTOutputConverter(edm::ParameterSet const& iConfig)
trajectorySeedpLSPutToken_(produces("pLSTSsLST")),
trackCandidatePutToken_(produces("")),
trackCandidatepTCPutToken_(produces("pTCsLST")),
trackCandidateT5TCPutToken_(produces("t5TCsLST")),
trackCandidateT4T5TCPutToken_(produces("t4t5TCsLST")),
trackCandidateNopLSTCPutToken_(produces("nopLSTCsLST")),
trackCandidatepTTCPutToken_(produces("pTTCsLST")),
trackCandidatepLSTCPutToken_(produces("pLSTCsLST")),
seedStopInfoPutToken_(produces("")),
pTCsSeedStopInfoPutToken_(produces("pTCsLST")),
t5TCsSeedStopInfoPutToken_(produces("t5TCsLST")),
t4t5TCsSeedStopInfoPutToken_(produces("t4t5TCsLST")),
pTTCsSeedStopInfoPutToken_(produces("pTTCsLST")) {}

void LSTOutputConverter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
Expand Down Expand Up @@ -126,6 +128,7 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
auto const& propAlo = iSetup.getData(propagatorAlongToken_);
auto const& propOppo = iSetup.getData(propagatorOppositeToken_);
auto const& tracker = iSetup.getData(tGeomToken_);
const TrackerTopology& tTopo = iSetup.getData(tTopoToken_);

auto lstOutput_view = lstOutput.const_view();
unsigned int nTrackCandidates = lstOutput_view.nTrackCandidates();
Expand All @@ -135,10 +138,10 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
TrajectorySeedCollection outputTS, outputpLSTS;
outputTS.reserve(nTrackCandidates);
outputpLSTS.reserve(nTrackCandidates);
TrackCandidateCollection outputTC, outputpTC, outputT5TC, outputNopLSTC, outputpTTC, outputpLSTC;
TrackCandidateCollection outputTC, outputpTC, outputT4T5TC, outputNopLSTC, outputpTTC, outputpLSTC;
outputTC.reserve(nTrackCandidates);
outputpTC.reserve(nTrackCandidates);
outputT5TC.reserve(nTrackCandidates);
outputT4T5TC.reserve(nTrackCandidates);
outputNopLSTC.reserve(nTrackCandidates);
outputpTTC.reserve(nTrackCandidates);
outputpLSTC.reserve(nTrackCandidates);
Expand All @@ -151,19 +154,19 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
LogDebug("LSTOutputConverter") << " cand " << i << " " << iType << " " << lstOutput_view.pixelSeedIndex()[i];
TrajectorySeed seed;
edm::RefToBase<TrajectorySeed> seedRef;
if (iType != lst::LSTObjType::T5) {
if (iType != lst::LSTObjType::T5 && iType != lst::LSTObjType::T4) {
seed = pixelSeeds[lstOutput_view.pixelSeedIndex()[i]];
seedRef = {pixelSeedsRBP, lstOutput_view.pixelSeedIndex()[i]};
}

edm::OwnVector<TrackingRecHit> recHits;
if (iType != lst::LSTObjType::T5) {
if (iType != lst::LSTObjType::T5 && iType != lst::LSTObjType::T4) {
for (auto const& hit : seed.recHits())
recHits.push_back(hit.clone());
}

// pixel-seeded TCs from LST always have 4 pixel hits
unsigned int const nPixelHits = iType == lst::LSTObjType::T5 ? 0 : 4;
unsigned int const nPixelHits = (iType == lst::LSTObjType::T5 || iType == lst::LSTObjType::T4) ? 0 : 4;
unsigned int nHits = 0;
switch (iType) {
case lst::LSTObjType::T5:
Expand All @@ -178,6 +181,9 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
case lst::LSTObjType::pLS:
nHits = lst::Params_pLS::kHits;
break;
case lst::LSTObjType::T4:
nHits = lst::Params_T4::kHits;
break;
}
for (unsigned int j = nPixelHits; j < nHits; j++)
recHits.push_back(OTHits[lstOutput_view.hitIndices()[i][j]]->clone());
Expand Down Expand Up @@ -206,17 +212,28 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
if (iType != lst::LSTObjType::pLS) {
// Construct a full-length TrajectorySeed always for T5s,
// only when required by a flag for other pT objects.
if (includeNonpLSTSs_ || iType == lst::LSTObjType::T5) {
if (includeNonpLSTSs_ || (iType == lst::LSTObjType::T5 || iType == lst::LSTObjType::T4)) {
using Hit = SeedingHitSet::ConstRecHitPointer;
std::vector<Hit> hitsForSeed;
hitsForSeed.reserve(nHits);
int n = 0;
unsigned int firstLayer;
for (auto const& hit : recHits) {
if (iType == lst::LSTObjType::T5) {
auto hType = tracker.getDetectorType(hit.geographicalId());
if (hType != TrackerGeometry::ModuleType::Ph2PSP && n < 2)
continue; // the first two should be P
}
if (iType == lst::LSTObjType::T4) {
unsigned int hitLayer = tTopo.layer(hit.geographicalId());
auto hType = tracker.getDetectorType(hit.geographicalId());
if (n == 0)
firstLayer = hitLayer;
else {
if (hType == TrackerGeometry::ModuleType::Ph2PSS && hitLayer == firstLayer)
continue;
}
}
hitsForSeed.emplace_back(dynamic_cast<Hit>(&hit));
n++;
}
Expand All @@ -226,10 +243,10 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
if (seeds.empty()) {
edm::LogInfo("LSTOutputConverter") << "failed to convert a LST object to a seed" << i << " " << iType << " "
<< lstOutput_view.pixelSeedIndex()[i];
if (iType == lst::LSTObjType::T5)
if (iType == lst::LSTObjType::T5 || iType == lst::LSTObjType::T4)
continue;
}
if (iType == lst::LSTObjType::T5) {
if (iType == lst::LSTObjType::T5 || iType == lst::LSTObjType::T4) {
seed = seeds[0];
seedRef = edm::RefToBase<TrajectorySeed>(edm::Ref(outputTSRP, outputTS.size()));
}
Expand Down Expand Up @@ -257,13 +274,13 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
PTrajectoryStateOnDet st =
trajectoryStateTransform::persistentState(tsosPair.first, recHits[0].det()->geographicalId().rawId());

if (!includeT5s_ && iType == lst::LSTObjType::T5)
if (!includeT5s_ && (iType == lst::LSTObjType::T5 || iType == lst::LSTObjType::T4))
continue;

auto tc = TrackCandidate(recHits, seed, st, seedRef);
outputTC.emplace_back(tc);
if (iType == lst::LSTObjType::T5) {
outputT5TC.emplace_back(tc);
if (iType == lst::LSTObjType::T5 || iType == lst::LSTObjType::T4) {
outputT4T5TC.emplace_back(tc);
outputNopLSTC.emplace_back(tc);
} else {
outputpTC.emplace_back(tc);
Expand All @@ -284,22 +301,22 @@ void LSTOutputConverter::produce(edm::Event& iEvent, const edm::EventSetup& iSet
}

LogDebug("LSTOutputConverter") << "done with conversion: Track candidate output size = " << outputpTC.size()
<< " (p* objects) + " << outputT5TC.size() << " (T5 objects)";
<< " (p* objects) + " << outputT4T5TC.size() << " (T5 objects)";
//dummy (for now) stop infos: one per used kind of candidates
std::vector<SeedStopInfo> seedStopInfo(pixelSeeds.size());
iEvent.emplace(seedStopInfoPutToken_, std::move(seedStopInfo));
std::vector<SeedStopInfo> pTCsSeedStopInfo(pixelSeeds.size());
iEvent.emplace(pTCsSeedStopInfoPutToken_, std::move(pTCsSeedStopInfo));
std::vector<SeedStopInfo> t5TCsSeedStopInfo(outputTS.size());
iEvent.emplace(t5TCsSeedStopInfoPutToken_, std::move(t5TCsSeedStopInfo));
std::vector<SeedStopInfo> t4t5TCsSeedStopInfo(outputTS.size());
iEvent.emplace(t4t5TCsSeedStopInfoPutToken_, std::move(t4t5TCsSeedStopInfo));
std::vector<SeedStopInfo> pTTCsSeedStopInfo(pixelSeeds.size());
iEvent.emplace(pTTCsSeedStopInfoPutToken_, std::move(pTTCsSeedStopInfo));

iEvent.emplace(trajectorySeedPutToken_, std::move(outputTS));
iEvent.emplace(trajectorySeedpLSPutToken_, std::move(outputpLSTS));
iEvent.emplace(trackCandidatePutToken_, std::move(outputTC));
iEvent.emplace(trackCandidatepTCPutToken_, std::move(outputpTC));
iEvent.emplace(trackCandidateT5TCPutToken_, std::move(outputT5TC));
iEvent.emplace(trackCandidateT4T5TCPutToken_, std::move(outputT4T5TC));
iEvent.emplace(trackCandidateNopLSTCPutToken_, std::move(outputNopLSTC));
iEvent.emplace(trackCandidatepTTCPutToken_, std::move(outputpTTC));
iEvent.emplace(trackCandidatepLSTCPutToken_, std::move(outputpLSTC));
Expand Down
Loading