From c9dd8e6201254cf78e39a30aeba3d15c6e61112a Mon Sep 17 00:00:00 2001 From: Mario Masciovecchio Date: Mon, 16 Aug 2021 07:12:24 -0700 Subject: [PATCH 1/6] Enable mkFit by default only for InitialStepPreSplitting, InitialStep, HighPtTripletStep and DetachedQuadStep --- .../ProcessModifiers/python/trackingMkFit_cff.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Configuration/ProcessModifiers/python/trackingMkFit_cff.py b/Configuration/ProcessModifiers/python/trackingMkFit_cff.py index d8bfde4165a77..14bc499d1d301 100644 --- a/Configuration/ProcessModifiers/python/trackingMkFit_cff.py +++ b/Configuration/ProcessModifiers/python/trackingMkFit_cff.py @@ -18,13 +18,13 @@ trackingMkFitCommon, trackingMkFitInitialStepPreSplitting, trackingMkFitInitialStep, - trackingMkFitLowPtQuadStep, +# trackingMkFitLowPtQuadStep, # to be enabled later trackingMkFitHighPtTripletStep, - trackingMkFitLowPtTripletStep, +# trackingMkFitLowPtTripletStep, # to be enabled later trackingMkFitDetachedQuadStep, # trackingMkFitDetachedTripletStep, # to be enabled later # trackingMkFitPixelPairStep, # to be enabled later # trackingMkFitMixedTripletStep, # to be enabled later - trackingMkFitPixelLessStep, - trackingMkFitTobTecStep, +# trackingMkFitPixelLessStep, # to be enabled later +# trackingMkFitTobTecStep, # to be enabled later ) From 8d21af8261ee5d975e57e5793c4f2b2936f9e46e Mon Sep 17 00:00:00 2001 From: Mario Masciovecchio Date: Mon, 16 Aug 2021 07:16:01 -0700 Subject: [PATCH 2/6] Enable usage of SiStrip quality DB information by default for mkFit --- RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc b/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc index abd5ca4ccc626..7da3ecd890877 100644 --- a/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc +++ b/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc @@ -66,7 +66,7 @@ void MkFitEventOfHitsProducer::fillDescriptions(edm::ConfigurationDescriptions& desc.add("pixelHits", edm::InputTag{"mkFitSiPixelHits"}); desc.add("stripHits", edm::InputTag{"mkFitSiStripHits"}); - desc.add("useStripStripQualityDB", false)->setComment("Use SiStrip quality DB information"); + desc.add("useStripStripQualityDB", true)->setComment("Use SiStrip quality DB information"); descriptions.addWithDefaultLabel(desc); } From fbbdad2758446cbeeaf0386a63b06196670e91de Mon Sep 17 00:00:00 2001 From: Mario Masciovecchio Date: Mon, 16 Aug 2021 07:25:35 -0700 Subject: [PATCH 3/6] Restrict SiStrip DB information to invalid APVs if only a part of the module is inactive --- .../MkFit/plugins/MkFitEventOfHitsProducer.cc | 59 +++++++++++++++---- 1 file changed, 49 insertions(+), 10 deletions(-) diff --git a/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc b/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc index 7da3ecd890877..109c76f5e4e71 100644 --- a/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc +++ b/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc @@ -4,19 +4,21 @@ #include "FWCore/Framework/interface/MakerMacros.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "CalibFormats/SiStripObjects/interface/SiStripQuality.h" +#include "CalibTracker/Records/interface/SiStripQualityRcd.h" + +#include "DataFormats/TrackerCommon/interface/TrackerDetSide.h" #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" +#include "Geometry/CommonTopologies/interface/StripTopology.h" +#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" + #include "RecoTracker/MkFit/interface/MkFitClusterIndexToHit.h" #include "RecoTracker/MkFit/interface/MkFitEventOfHits.h" #include "RecoTracker/MkFit/interface/MkFitGeometry.h" #include "RecoTracker/MkFit/interface/MkFitHitWrapper.h" #include "RecoTracker/Record/interface/TrackerRecoGeometryRecord.h" -#include "CalibFormats/SiStripObjects/interface/SiStripQuality.h" -#include "CalibTracker/Records/interface/SiStripQualityRcd.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "DataFormats/TrackerCommon/interface/TrackerDetSide.h" - // mkFit includes #include "mkFit/HitStructures.h" #include "mkFit/MkStdSeqs.h" @@ -85,14 +87,51 @@ void MkFitEventOfHitsProducer::produce(edm::StreamID iID, edm::Event& iEvent, co const auto& trackerGeom = iSetup.getData(geomToken_); const auto& badStrips = siStripQuality.getBadComponentList(); for (const auto& bs : badStrips) { - const auto& surf = trackerGeom.idToDet(DetId(bs.detid))->surface(); const DetId detid(bs.detid); + const auto& surf = trackerGeom.idToDet(detid)->surface(); bool isBarrel = (mkFitGeom.topology()->side(detid) == static_cast(TrackerDetSide::Barrel)); const auto ilay = mkFitGeom.mkFitLayerNumber(detid); - deadvectors[ilay].push_back({surf.phiSpan().first, - surf.phiSpan().second, - (isBarrel ? surf.zSpan().first : surf.rSpan().first), - (isBarrel ? surf.zSpan().second : surf.rSpan().second)}); + const auto q1 = isBarrel ? surf.zSpan().first : surf.rSpan().first; + const auto q2 = isBarrel ? surf.zSpan().second : surf.rSpan().second; + if (bs.BadModule) + deadvectors[ilay].push_back({surf.phiSpan().first, surf.phiSpan().second, q1, q2}); + else { //assume that BadApvs are filled in sync with BadFibers + auto const& topo = dynamic_cast(trackerGeom.idToDet(detid)->topology()); + int firstApv = -1; + int lastApv = -1; + + auto addRangeAPV = [&topo, &surf, &q1, &q2](int first, int last, mkfit::DeadVec& dv) { + auto const firstPoint = surf.toGlobal(topo.localPosition(first * 128)); + auto const lastPoint = surf.toGlobal(topo.localPosition((last + 1) * 128)); + float phi1 = firstPoint.phi(); + float phi2 = lastPoint.phi(); + if (reco::deltaPhi(phi1, phi2) > 0) + std::swap(phi1, phi2); + LogTrace("SiStripBadComponents")<<"insert bad range "< Date: Mon, 16 Aug 2021 18:18:29 +0200 Subject: [PATCH 4/6] From code checks/format --- RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc b/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc index 109c76f5e4e71..4b02442c7b85c 100644 --- a/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc +++ b/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc @@ -95,7 +95,7 @@ void MkFitEventOfHitsProducer::produce(edm::StreamID iID, edm::Event& iEvent, co const auto q2 = isBarrel ? surf.zSpan().second : surf.rSpan().second; if (bs.BadModule) deadvectors[ilay].push_back({surf.phiSpan().first, surf.phiSpan().second, q1, q2}); - else { //assume that BadApvs are filled in sync with BadFibers + else { //assume that BadApvs are filled in sync with BadFibers auto const& topo = dynamic_cast(trackerGeom.idToDet(detid)->topology()); int firstApv = -1; int lastApv = -1; @@ -106,15 +106,16 @@ void MkFitEventOfHitsProducer::produce(edm::StreamID iID, edm::Event& iEvent, co float phi1 = firstPoint.phi(); float phi2 = lastPoint.phi(); if (reco::deltaPhi(phi1, phi2) > 0) - std::swap(phi1, phi2); - LogTrace("SiStripBadComponents")<<"insert bad range "< Date: Mon, 16 Aug 2021 19:29:24 +0200 Subject: [PATCH 5/6] Update README with description of mkFit-specific parameters --- RecoTracker/MkFit/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/RecoTracker/MkFit/README.md b/RecoTracker/MkFit/README.md index 273ee6f59fd95..ad7bd3fb45141 100644 --- a/RecoTracker/MkFit/README.md +++ b/RecoTracker/MkFit/README.md @@ -49,7 +49,7 @@ $ runTheMatrix.py -l --apply 2 --command "--procModifiers tracking * *maxCandsPerSeed:* maximum number of concurrent track candidates per given seed * *maxHolesPerCand:* maximum number of allowed holes on a candidate * *maxConsecHoles:* maximum number of allowed consecutive holes on a candidate -* *chi2Cut:* chi2 cut for accepting a new hit +* *chi2Cut_min:* minimum chi2 cut for accepting a new hit * *chi2CutOverlap:* chi2 cut for accepting an overlap hit * *pTCutOverlap:* pT cut below which the overlap hits are not picked up @@ -81,3 +81,5 @@ $ runTheMatrix.py -l --apply 2 --command "--procModifiers tracking * *c_dp_sf:* additional scaling factor for dphi cut * *c_dq_[012]:* dr (endcap) / dz (barrel) selection window cut (= [0]*1/pT + [1]*std::fabs(theta-pi/2) + [2]) * *c_dq_sf:* additional scaling factor for dr (endcap) / dz (barrel) cut +* *c_c2_[012]:* chi2 cut for accepting new hit (= [0]*1/pT + [1]*std::fabs(theta-pi/2) + [2]) +* *c_c2_sf:* additional scaling factor for chi2 cut From 91d1cafa99953018fe8d4b3223eee72c437cce9c Mon Sep 17 00:00:00 2001 From: Mario Masciovecchio Date: Wed, 18 Aug 2021 20:49:37 +0200 Subject: [PATCH 6/6] Use constants and derive nAPVs from the strip topology, and add deps on directly included packages --- RecoTracker/MkFit/plugins/BuildFile.xml | 4 ++++ .../MkFit/plugins/MkFitEventOfHitsProducer.cc | 13 +++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/RecoTracker/MkFit/plugins/BuildFile.xml b/RecoTracker/MkFit/plugins/BuildFile.xml index 6b3e4e3d48396..076fc4af249ce 100644 --- a/RecoTracker/MkFit/plugins/BuildFile.xml +++ b/RecoTracker/MkFit/plugins/BuildFile.xml @@ -1,6 +1,9 @@ + + + @@ -10,6 +13,7 @@ + diff --git a/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc b/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc index 4b02442c7b85c..5459be9f7aabe 100644 --- a/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc +++ b/RecoTracker/MkFit/plugins/MkFitEventOfHitsProducer.cc @@ -7,6 +7,7 @@ #include "CalibFormats/SiStripObjects/interface/SiStripQuality.h" #include "CalibTracker/Records/interface/SiStripQualityRcd.h" +#include "DataFormats/SiStripCommon/interface/ConstantsForHardwareSystems.h" #include "DataFormats/TrackerCommon/interface/TrackerDetSide.h" #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" @@ -101,8 +102,8 @@ void MkFitEventOfHitsProducer::produce(edm::StreamID iID, edm::Event& iEvent, co int lastApv = -1; auto addRangeAPV = [&topo, &surf, &q1, &q2](int first, int last, mkfit::DeadVec& dv) { - auto const firstPoint = surf.toGlobal(topo.localPosition(first * 128)); - auto const lastPoint = surf.toGlobal(topo.localPosition((last + 1) * 128)); + auto const firstPoint = surf.toGlobal(topo.localPosition(first * sistrip::STRIPS_PER_APV)); + auto const lastPoint = surf.toGlobal(topo.localPosition((last + 1) * sistrip::STRIPS_PER_APV)); float phi1 = firstPoint.phi(); float phi2 = lastPoint.phi(); if (reco::deltaPhi(phi1, phi2) > 0) @@ -112,18 +113,18 @@ void MkFitEventOfHitsProducer::produce(edm::StreamID iID, edm::Event& iEvent, co dv.push_back({phi1, phi2, q1, q2}); }; - for (int apv = 0; apv < 6; ++apv) { + const int nApvs = topo.nstrips() / sistrip::STRIPS_PER_APV; + for (int apv = 0; apv < nApvs; ++apv) { const bool isBad = bs.BadApvs & (1 << apv); - if (isBad) - LogTrace("SiStripBadComponents") << "bad apv " << apv << " on " << bs.detid; if (isBad) { + LogTrace("SiStripBadComponents") << "bad apv " << apv << " on " << bs.detid; if (lastApv == -1) { firstApv = apv; lastApv = apv; } else if (lastApv + 1 == apv) lastApv++; - if (apv == 5) + if (apv + 1 == nApvs) addRangeAPV(firstApv, lastApv, deadvectors[ilay]); } else if (firstApv != -1) { addRangeAPV(firstApv, lastApv, deadvectors[ilay]);