Skip to content

Commit

Permalink
miscellaneous improvements to SingleLongTrackProducer. Also use early…
Browse files Browse the repository at this point in the history
…Muons collections in order to comply with the trackingOnly DQM sequence
  • Loading branch information
mmusich authored and borzari committed Jan 8, 2024
1 parent 3fa895e commit f61b144
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 24 deletions.
27 changes: 16 additions & 11 deletions DQM/TrackingMonitorSource/python/shortTrackResolution_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,32 @@

from RecoTracker.FinalTrackSelectors.trackerTrackHitFilter_cfi import trackerTrackHitFilter as _trackerTrackHitFilter
ShortTrackCandidates = _trackerTrackHitFilter.clone(src = "SingleLongTrackProducer",
truncateTracks = True,
replaceWithInactiveHits = True,
rejectBadStoNHits = True,
usePixelQualityFlag = True)
truncateTracks = True,
replaceWithInactiveHits = True,
rejectBadStoNHits = True,
usePixelQualityFlag = True)

from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
phase2_tracker.toModify(ShortTrackCandidates,
isPhase2 = True)

ShortTrackCandidates3 = ShortTrackCandidates.clone(minimumHits = 3,
layersRemaining = 3)
layersRemaining = 3)

ShortTrackCandidates4 = ShortTrackCandidates.clone(minimumHits = 4,
layersRemaining = 4)
layersRemaining = 4)

ShortTrackCandidates5 = ShortTrackCandidates.clone(minimumHits = 5,
layersRemaining = 5)
layersRemaining = 5)

ShortTrackCandidates6 = ShortTrackCandidates.clone(minimumHits = 6,
layersRemaining = 6)
layersRemaining = 6)

ShortTrackCandidates7 = ShortTrackCandidates.clone(minimumHits = 7,
layersRemaining = 7)
layersRemaining = 7)

ShortTrackCandidates8 = ShortTrackCandidates.clone(minimumHits = 8,
layersRemaining = 8)
layersRemaining = 8)

import RecoTracker.TrackProducer.CTFFinalFitWithMaterial_cff
RefittedShortTracks = RecoTracker.TrackProducer.CTFFinalFitWithMaterial_cff.ctfWithMaterialTracks.clone(src = 'ShortTrackCandidates')
Expand All @@ -51,7 +51,12 @@
maxTracksPtInput = 99999.9,
maxDrInput = 0.01,
tracksInputTag = "SingleLongTrackProducer",
tracksRerecoInputTag = ["RefittedShortTracks3","RefittedShortTracks4","RefittedShortTracks5","RefittedShortTracks6","RefittedShortTracks7","RefittedShortTracks8"])
tracksRerecoInputTag = ["RefittedShortTracks3",
"RefittedShortTracks4",
"RefittedShortTracks5",
"RefittedShortTracks6",
"RefittedShortTracks7",
"RefittedShortTracks8"])

shortTrackResolution3to8 = cms.Sequence(SingleLongTrackProducer *
ShortTrackCandidates3 *
Expand Down
51 changes: 39 additions & 12 deletions RecoTracker/FinalTrackSelectors/plugins/SingleLongTrackProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,35 @@ SingleLongTrackProducer::SingleLongTrackProducer(const edm::ParameterSet &iConfi
void SingleLongTrackProducer::produce(edm::Event &iEvent, const edm::EventSetup &iSetup) {
using namespace edm;

// register output collection:
std::unique_ptr<reco::TrackCollection> goodTracks(new reco::TrackCollection);

// register input collections:
const auto &tracks = iEvent.getHandle(tracksToken);
if (!tracks.isValid()) {
edm::LogError("SingleLongTrackProducer")
<< "Input track collection is not valid.\n Returning empty output track collection.";
iEvent.put(std::move(goodTracks), "");
return;
}

const auto &muons = iEvent.getHandle(muonsToken);
if (!muons.isValid()) {
edm::LogError("SingleLongTrackProducer")
<< "Input muon collection is not valid.\n Returning empty output track collection.";
iEvent.put(std::move(goodTracks), "");
return;
}

const auto &vtx_h = iEvent.getHandle(PrimVtxToken);
const reco::Vertex vtx = vtx_h->at(0);
const auto &vertices = iEvent.getHandle(PrimVtxToken);
if (!vertices.isValid()) {
edm::LogError("SingleLongTrackProducer")
<< "Input vertex collection is not valid.\n Returning empty output track collection.";
iEvent.put(std::move(goodTracks), "");
return;
}

// register output collection:
std::unique_ptr<reco::TrackCollection> goodTracks(new reco::TrackCollection);
const reco::Vertex vtx = vertices->at(0);

// Preselection of long quality tracks
std::vector<reco::Track> selTracks;
Expand All @@ -80,7 +100,7 @@ void SingleLongTrackProducer::produce(edm::Event &iEvent, const edm::EventSetup
if (track.pt() < minPt)
continue;

if (abs(track.eta()) > maxEta)
if (std::abs(track.eta()) > maxEta)
continue;

if (hitpattern.trackerLayersWithMeasurement() < minNumberOfLayers)
Expand Down Expand Up @@ -116,16 +136,16 @@ void SingleLongTrackProducer::produce(edm::Event &iEvent, const edm::EventSetup
bestTrack.setExtra(track.extra());
}
if (debug)
edm::LogPrint("SingleLongTrackProducer") << " deltaR (general) track to matched Track: " << dRmin << std::endl;
edm::LogPrint("SingleLongTrackProducer") << " deltaR (general) track to matched Track: " << dRmin;
if (debug)
edm::LogPrint("SingleLongTrackProducer") << "chi2Ndof:" << chiNdof << " best Track: " << fitProb << std::endl;
edm::LogPrint("SingleLongTrackProducer") << "chi2Ndof:" << chiNdof << " best Track: " << fitProb;
}

selTracks.push_back(bestTrack);

if (debug)
edm::LogPrint("SingleLongTrackProducer") << " number of Tracker Muons: " << tMuon << ", thereof "
<< selTracks.size() << " tracks passed preselection." << std::endl;
edm::LogPrint("SingleLongTrackProducer")
<< " number of Tracker Muons: " << tMuon << ", thereof " << selTracks.size() << " tracks passed preselection.";

// check hits validity in preselected tracks
bool hitIsNotValid{false};
Expand Down Expand Up @@ -170,14 +190,14 @@ void SingleLongTrackProducer::produce(edm::Event &iEvent, const edm::EventSetup

if (onlyValidHits && !hit.isValid()) {
if (debug)
edm::LogPrint("SingleLongTrackProducer") << "hit not valid: " << h << std::endl;
edm::LogPrint("SingleLongTrackProducer") << "hit not valid: " << h;
continue;
}

// loop over the hits of the track.
if (onlyValidHits && !(hitpattern.validHitFilter(pHit))) {
if (debug)
edm::LogPrint("SingleLongTrackProducer") << "hit not valid: " << h << std::endl;
edm::LogPrint("SingleLongTrackProducer") << "hit not valid: " << h;
continue;
}
}
Expand All @@ -193,14 +213,21 @@ void SingleLongTrackProducer::produce(edm::Event &iEvent, const edm::EventSetup
<< "found tracks with " << deref << "missing valid hits and " << deref2 << " missing hit pattern";
}

if (debug) {
auto const &moduleType = moduleDescription().moduleName();
auto const &moduleLabel = moduleDescription().moduleLabel();
edm::LogPrint("SingleLongTrackProducer") << "[" << moduleType << "] (" << moduleLabel << ") "
<< " output track size: " << goodTracks.get()->size();
}

// save track collection in event:
iEvent.put(std::move(goodTracks), "");
}

void SingleLongTrackProducer::fillDescriptions(edm::ConfigurationDescriptions &descriptions) {
edm::ParameterSetDescription desc;
desc.add<edm::InputTag>("allTracks", edm::InputTag("generalTracks"));
desc.add<edm::InputTag>("matchMuons", edm::InputTag("muons"));
desc.add<edm::InputTag>("matchMuons", edm::InputTag("earlyMuons"));
desc.add<edm::InputTag>("PrimaryVertex", edm::InputTag("offlinePrimaryVertices"));
desc.add<int>("minNumberOfLayers", 10);
desc.add<double>("requiredDr", 0.01);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

SingleLongTrackProducer = singleLongTrackProducer.clone(
allTracks = "generalTracks",
matchMuons = "muons",
matchMuons = "earlyMuons",
requiredDr= 0.01,
minNumberOfLayers = 10,
onlyValidHits = True,
Expand Down

0 comments on commit f61b144

Please sign in to comment.