-
Notifications
You must be signed in to change notification settings - Fork 4.6k
update deepCore for Run3 #33531
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
update deepCore for Run3 #33531
Conversation
|
-code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-33531/22301
Code check has found code style and quality issues which could be resolved by applying following patch(s)
|
|
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-33531/22302
|
|
A new Pull Request was created by @mtosi (mia tosi) for master. It involves the following packages: RecoTracker/IterativeTracking @perrotta, @jpata, @cmsbuild, @slava77 can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
| jetCoreRegionalStepEndcapTracks, | ||
| # jetCoreRegionalStepClassifier1,jetCoreRegionalStepClassifier2, | ||
| jetCoreRegionalStepEndcap) | ||
| JetCoreRegionalEndcapStep = cms.Sequence(JetCoreRegionalStepEndcapTask) |
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.
Do you really want to (potentially) filter events?
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.
uhmmmm, I'm sorry but I'm not super sure I get this question
the structure was already like that, I simply double the Tasks in order to handle independently the barrel and the endcap regions
sorry for this, but could you please comment further ?
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.
opsi
jetsForCoreTrackingBarrel = cms.EDFilter('CandPtrSelector', src = cms.InputTag('ak4CaloJetsForTrk'), cut = cms.string('pt > 100 && abs(eta) < 2.5'))
jetsForCoreTrackingEndcap = cms.EDFilter('CandPtrSelector', src = cms.InputTag('ak4CaloJetsForTrk'), cut = cms.string('pt > 100 && abs(eta) > 1.4 && abs(eta) < 2.5'))
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.
Very sorry, nevermind, I read the configuration too quickly and somehow thought the jetsForCoreTrackingBarrel and jetsForCoreTrackingEndcap were placed directly in these Sequences. When they're placed in Tasks (as they are), framework implicitly ignores the event filtering decision.
Are the intermediate Sequences JetCoreRegionalBarrelStep, JetCoreRegionalEndcapStep, and allJetCoreRegionalStep needed outside of this file? If not, the replacement logic could be simplified to something along
seedingDeepCore.toReplaceWith(JetCoreRegionalStepTask, cms.Task(
JetCoreRegionalStepBarrelTask,
JetCoreRegionalStepEndcapTask
))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.
thanks @makortel, I'm going to implement your suggestion
|
I've just added the |
|
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-33531/22315
|
|
I don't see anything consuming |
|
I have just tested the following, and it seems to work (even if I still have to handle both the seed validation and DQM of this step in the proper way) I'm not happy about it, though do you have any suggestions ? thanks |
|
I believe it's either that or dealing with two jetCore track collections in the from RecoTracker.FinalTrackSelectors.TrackCollectionMerger_cfi import *
seedingDeepCore.toReplaceWith(jetCoreRegionalStepTracks, TrackCollectionMerger.clone(
trackProducers = ["jetCoreRegionalStepBarrelTracks",
"jetCoreRegionalStepEndcapTracks",],
inputClassifiers = ["jetCoreRegionalStepBarrel",
"jetCoreRegionalStepEndcap",],
foundHitBonus = 100.0,
lostHitPenalty = 1.0
))
seedingDeepCore.toReplaceWith(jetCoreRegionalStep, jetCoreRegionalStepTracks.clone()) #(*)
seedingDeepCore.toReplaceWith(JetCoreRegionalStepTask, cms.Task(
JetCoreRegionalStepBarrelTask,
JetCoreRegionalStepEndcapTask,
jetCoreRegionalStepTracks,
jetCoreRegionalStep
))The duplication of the # rename jetCoreRegionalStep to e.g. jetCoreRegionalStepImpl
# alias the MVAValues and QualityMasks products from jetCoreRegionalStepImpl to jetCoreRegionalStep
jetCoreRegionalStep = cms.EDAlias(
jetCoreRegionalStepImpl = cms.VPSet(
cms.PSet(type = cms.string("floats")),
cms.PSet(type = cms.string("uchars")),
)
)
from RecoTracker.FinalTrackSelectors.TrackCollectionMerger_cfi import *
seedingDeepCore.toReplaceWith(jetCoreRegionalStepTracks, TrackCollectionMerger.clone(
trackProducers = ["jetCoreRegionalStepBarrelTracks",
"jetCoreRegionalStepEndcapTracks",],
inputClassifiers = ["jetCoreRegionalStepBarrel",
"jetCoreRegionalStepEndcap",],
foundHitBonus = 100.0,
lostHitPenalty = 1.0
))
# change the alias-from to point to jetCoreRegionalStepTracks
seedingDeepCore.toModify(jetCoreRegionalStep,
jetCoreRegionalStepImpl = None,
jetCoreRegionalStepTracks = jetCoreRegionalStep.jetCoreRegionalStepImpl.copy()
)
seedingDeepCore.toReplaceWith(JetCoreRegionalStepTask, cms.Task(
JetCoreRegionalStepBarrelTask,
JetCoreRegionalStepEndcapTask,
jetCoreRegionalStepTracks,
jetCoreRegionalStep
)) |
|
thanks @makortel I'm following your suggestion ;) about the seed validation, do you think it would make sense to merge the seed collections just before the corresponding MTV (and DQM) call ? probably not, just add the 2 separate collections, right ? |
|
uhmm, I got the following error |
|
|
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-33531/22726
|
|
Pull request #33531 was updated. @perrotta, @andrius-k, @kmaeshima, @ErnestaP, @ahmad3213, @cmsbuild, @jfernan2, @slava77, @jpata, @rvenditti can you please check and sign again. |
|
@cmsbuild please test |
|
+1 Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-dd4e20/15197/summary.html CMS Clang-Tidy warnings: There are Clang-Tidy warnings. See https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-dd4e20/15197/llvm-analysis/cmsclangtidy.txt for details. Comparison Summary@slava77 comparisons for the following workflows were not done due to missing matrix map:
Summary:
|
|
+1 |
|
while making a comparison of this PR with Is it something to be looked at before the deepCore can go to production? |
|
+reconstruction
|
|
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 now be reviewed by the release team before it's merged. @silviodonato, @dpiparo, @qliphy (and backports should be raised in the release meeting by the corresponding L2) |
Hi Slava, thank you for the testing. About the second plot, this does not surprise me: DeepCore produces the seed using the four pixel detector layer info, producing the seed on L2. If a layer is missing (acceptance, broken module...) the performance decreases, but there are some ad-hoc cuts tuning to face this condition in the seed building. if 2 layers are missing the performance of the production start to be very bad, because it is predcting the helix parameters with 2 points only in the messy environment of the jet cores. So yes, definitely DeepCore has a preference for tracks with all the layer of pixel detector. |
|
+1 |



PR description:
during the special deepCore validation [1]
it has been highlighted that the current implementation of the jetCore for Run3 is suboptimal
as presented at the RECO meeting, the first approach is to
this PR adjusts these points
[1]
https://its.cern.ch/jira/browse/PDMVRELVALS-107
PR validation:
the code has been explicitly tested on QCD high pT bin sample w/o PU
applying the
--procModifiers seedingDeepCorethere is a not negligible increase in the seeds multiplicity, but its purity is better



efficiency
fakerate
seeding fake vs collection


seeding efficiency vs collection
FOR TESTING