-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce support for cluster splitting and JetCore iteration in Phase-2 track reconstruction #46001
Introduce support for cluster splitting and JetCore iteration in Phase-2 track reconstruction #46001
Conversation
cms-bot internal usage |
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-46001/41774
|
A new Pull Request was created by @langufo for master. It involves the following packages:
@AdrianoDee, @antoniovilela, @cmsbuild, @davidlange6, @fabiocos, @jfernan2, @kskovpen, @mandrenguyen, @miquork, @rappoccio, @srimanob, @subirsarkar, @sunilUIET can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
@@ -0,0 +1,4 @@ | |||
import FWCore.ParameterSet.Config as cms | |||
|
|||
from Configuration.ProcessModifiers.splitClustersInPhase2Pixel_cff import splitClustersInPhase2Pixel |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why do you need this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I missed it while cleaning up. Line 3 now deleted.
#'Reco', | ||
#'RecoFakeHLT', | ||
#'RecoGlobal', | ||
#'RecoNano', | ||
#'RecoNanoFakeHLT', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#'Reco', | |
#'RecoFakeHLT', | |
#'RecoGlobal', | |
#'RecoNano', | |
#'RecoNanoFakeHLT', |
remove?
@@ -111,6 +132,10 @@ void JetCoreClusterSplitter::produce(edm::Event& iEvent, const edm::EventSetup& | |||
edmNew::DetSetVector<SiPixelCluster>::FastFiller filler(*output, detIt->id()); | |||
const edmNew::DetSet<SiPixelCluster>& detset = *detIt; | |||
const GeomDet* det = geometry->idToDet(detset.id()); | |||
float tanLorentzAngle = tanLorentzAngle_; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
shouldn't this come from the database?
@@ -111,6 +132,10 @@ void JetCoreClusterSplitter::produce(edm::Event& iEvent, const edm::EventSetup& | |||
edmNew::DetSetVector<SiPixelCluster>::FastFiller filler(*output, detIt->id()); | |||
const edmNew::DetSet<SiPixelCluster>& detset = *detIt; | |||
const GeomDet* det = geometry->idToDet(detset.id()); | |||
float tanLorentzAngle = tanLorentzAngle_; | |||
if (DetId(detset.id()).subdetId() == 1 /* px barrel */ && topology->pxbLayer(detset.id()) == 1) { | |||
tanLorentzAngle = tanLorentzAngleBarrelLayer1_; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
shouldn't this come from the database?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These parameters were originally hardcoded. I gave them the names they now have to try to interpret them within a simple geometrical model, but I'm not sure how close they are to the quantity stored by the same name in the DB, as for Phase-1 I've tried to preserve to values already in place.
As the tracking performance seems to be not too sensitive to the fine-tuning of these parameters (from what I could see), if possible I would keep this implementation as it currently is for this PR, and study the effect of using the parameters from the DB as a future development.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As the tracking performance seems to be not too sensitive to the fine-tuning of these parameters (from what I could see), if possible I would keep this implementation as it currently is for this PR, and study the effect of using the parameters from the DB as a future development.
I think it would be nice to study the performance doing a scan of the values around the current parametrization. It might even be that we have sub-par performance with the current Run-3 reconstruction because of that.
if (expSizeY < 1.f) | ||
expSizeY = 1.f; | ||
float expSizeX = 1.5f; | ||
if (isEndCap) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why the endcap special treatment is not applied anymore ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In general, the treatment that was applied in the case of a module from the endcaps should now be covered by computing everything in the local frame of the module.
However, it is also true that I initially forgot to update the definition of jetZOverRho
, such that its value was wrong in the endcaps. I've now fixed this, and I've rerun a step3 + validation to check that everything it's still ok.
(As a general comment, the value of jetZOverRho
in the endcaps now is slightly different from upstream CMSSW, due to the turbine-like geometry that previously was not not taken into account.)
pitchX_(iConfig.getParameter<double>("pitchX")), | ||
pitchY_(iConfig.getParameter<double>("pitchY")), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
shouldn't this come from the topology?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Modified as proposed.
tanLorentzAngleBarrelLayer1_(iConfig.getParameter<double>("tanLorentzAngleBarrelLayer1")), | ||
pitchX_(iConfig.getParameter<double>("pitchX")), | ||
pitchY_(iConfig.getParameter<double>("pitchY")), | ||
thickness_(iConfig.getParameter<double>("thickness")), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
here as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Modified as proposed.
#useAnyMVA = cms.bool(False), | ||
#GBRForestLabel = cms.string('MVASelectorIter0'), | ||
#trackSelectors = [ | ||
# RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone( | ||
# name = 'jetCoreRegionalStepLoose', | ||
# ), #end of pset | ||
# RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone( | ||
# name = 'jetCoreRegionalStepTight', | ||
# preFilterName = 'jetCoreRegionalStepLoose', | ||
# ), | ||
# RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone( | ||
# name = 'QualityMasks', | ||
# preFilterName = 'jetCoreRegionalStepTight', | ||
# ), | ||
#], | ||
#useAnyMVA = None, | ||
#GBRForestLabel = None, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
any reason to keep?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Commented lines deleted.
fdc1930
to
4ad7e95
Compare
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-46001/41802
|
Pull request #46001 was updated. @AdrianoDee, @antoniovilela, @cmsbuild, @davidlange6, @fabiocos, @jfernan2, @kskovpen, @mandrenguyen, @miquork, @rappoccio, @srimanob, @subirsarkar, @sunilUIET can you please check and sign again. |
test parameters:
|
@cmsbuild, please test |
@langufo the changes proposed here need to be propagated in the HLT menu.
as this parameter is new, it's not already present in the current HLT tables. |
@cmsbuild please test |
Ping @cms-sw/pdmv-l2 @cms-sw/upgrade-l2 |
+Upgrade |
+pdmv |
+1 Size: This PR adds an extra 12KB to repository
Comparison SummarySummary:
|
+1 |
This pull request is fully signed and it will be integrated in one of the next master IBs (tests are also fine). This pull request will be automatically merged. |
PR description:
This PR introduces the support for cluster splitting and a JetCore iteration in the Phase-2 track reconstruction, while keeping both of them disabled by default.
The effect of this PR on the Phase-1 and Phase-2 reconstruction (resource utilization & tracking performance) are summarized in this presentation at the Tracking POG meeting: https://indico.cern.ch/event/1428996/#38-integration-of-jetcore-for
Information about the tuning of the cluster splitting parameters for Phase-2 in this other presentation: https://indico.cern.ch/event/1396796/#30-jetcore-and-cluster-splitti
Some details about this PR:
JetCoreClusterSplitter
inRecoLocalTracker/SubCollectionProducers
has been modified to support the features of the Phase-2 Inner Tracker (geometry and 3D sensors in TBPX layer 1). No worsening of the tracking performance in the Phase-1 reconstruction was observed following these changes (validation plots here).splitClustersInPhase2Pixel
, enabling anInitialStepPreSplitting
to produce a collection of split clusters for use in theInitialStep
;jetCoreInPhase2
, enabling the JetCore iteration in the Phase-2 Tracking.0.19001
activates thesplitClustersInPhase2Pixel
process modifier;0.19002
activates both thesplitClustersInPhase2Pixel
and thejetCoreInPhase2
modifiers.PR validation:
git cms-checkdeps -a -A
.export CMS_PATH=/cvmfs/cms-ib.cern.ch/ ; export SITECONFIG_PATH=/cvmfs/cms-ib.cern.ch/SITECONF/local/ ; scram b runtests
: no failing test.runTheMatrix.py -l limited -i all --ibeos
: no failing test.TTBar_14TeV
+ PU andQCD_FlatPt_15_3000HS_14
without PU), runs to completion.If this PR is a backport please specify the original PR and why you need to backport that PR. If this PR will be backported please specify to which release cycle the backport is meant for:
This PR is not a backport, and no backport is needed.