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
CA for Phase2 tracking + few more smaller-impact optimizations #18728
Conversation
A new Pull Request was created by @VinInn (Vincenzo Innocente) for master. It involves the following packages: DataFormats/Phase2TrackerCluster @perrotta, @cmsbuild, @slava77, @kpedro88, @davidlange6 can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
@cmsbuild , please test |
The tests are being triggered in jenkins. |
No chance to have it presented in tomorrow upgrade simulation meeting? It would be a shame not to do so given the fact it is Tracker week |
@venturia |
seems that you have one .. : https://indico.cern.ch/event/636871/ |
Not anymore.. You got it ;-)
… Il giorno 14 mag 2017, alle ore 19:27, Vincenzo Innocente ***@***.***> ha scritto:
@venturia <https://github.com/venturia>
slides are ready (not by chance). I just need a slot....
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub <#18728 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AE88kXf_AhIWKGAHP_7j0Jy7ev1eb9Czks5r5zl5gaJpZM4Nabh0>.
|
Comparison job queued. |
Comparison is ready Comparison Summary:
|
Thanks @VinInn ! |
auto const & dus = geom_.detUnits(); | ||
m_off = dus.size(); | ||
// skip Barrel and Foward pixels... | ||
for(unsigned int i=3;i<7;++i) { |
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.
explanation of magic numbers 3 and 7?
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.
at the moment there is no better way (see the other two CPE)
anyhow BPIX =1, FPIX=2, TIB=3, TID=4,TOB=5,TEC=6
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.
Could an enum be used, or are these indices expected to change frequently?
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 numbers never changed since last century and will never change.
And those working in the tracker-tracking better know them by hearth.
A smarter code in PixelCPE is "broken" in Phase2 as it was looking for non strip detector.
in Phase2 all dets answer "isPixel".
So for the time being better NOT to be smart.
(here and elsewhere we assume for instance that IT and OT (or pixel and strip) are built contiguously and ones after the other. AND better to be like this in future).
We rely on ordering, sorting, numbering. We cannot verify this each time.
Things have to be done properly, once, in a single place. Everybody else just rely that things are correct.
And possibly developers should know what they are dealing with, inform themselves, read code.
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 am skeptical that an enum comparison has any noticeable expense.
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.
it will be more confusing and error prone...
anyhow given that similar code is all other CPEs let's take note, open an issue, and fix all CPEs (and other places at once).
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.
opened a Jira Ticket
https://its.cern.ch/jira/browse/CMSTRACK-154
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 any case, we are discussing of this
https://cmssdt.cern.ch/dxr/CMSSW/source/Geometry/CommonDetUnit/interface/GeomDetEnumerators.h#15
which is immutable, we need anyhow to know that the first valid is "1" and last valid is "6".
Yes, we can search (using an unclear enumerator to me) the location of "TIB" and we need to know "7" (or we need to add "7" to GeomDetEnumerators.
at the end what one is asking is to search for TIB instead of writing 3 whitch btw in int(GeomDetEnumerators::TIB)
In my opinion all this is auto-referencing, no added knowledge as the developers HAS to know the content of GeomDetEnumerators anyhow, that better not change.
There is always at some level some hidden knowledge required, no matter what code we right.
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 personally find MUCH more confusing that on phase2 isTrackerPixel answers true for OT 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.
Okay, we can try to work on improving this in the longer term.
if(geom_.offsetDU(GeomDetEnumerators::tkDetEnum[i]) < m_off) m_off = geom_.offsetDU(GeomDetEnumerators::tkDetEnum[i]); | ||
} | ||
} | ||
LogDebug("LookingForFirstPahse2OT") << " Chosen offset: " << m_off; |
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.
typo: Pahse -> Phase
auto lastCluster = detSet.end(); | ||
|
||
// do not use this as it does not account for APE... | ||
// auto xyLimits = est.maximalLocalDisplacement(stateOnThisDet,fastGeomDet().specificSurface()); |
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.
Should this line be deleted?
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.
For documentation. In the old-tymes (previous century) this method was there to deliver the search limits. Unfortunately does not account for APE.
This code (comments included) has been adapted from IT (read Pixel) MeasurementDet asis in the current realease
If you have the TrackerGeometry available you can use |
@cmsbuild, please test |
The tests are being triggered in jenkins. |
+1 The following merge commits were also included on top of IB + this PR after doing git cms-merge-topic: |
Comparison job queued. |
Comparison is ready Comparison Summary:
|
+1
|
+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 requires discussion in the ORP meeting before it's merged. @davidlange6, @smuzaffar |
+1 |
This PR is one more major step toward an affordable tracking at Run4
It sports
It includes #18663 as it targets mostly D11
Performances
Timing Tracking Only (seeds+building+fitting)
3.8GHz machine, 8 core, 8 Threads
Phase1 PU50: 3.8 sec/ev ~1700 reco-tracks/ev
Phase2 D11 PU200 current: 27.0 sec/ev
Phase2 D11 PU200 This PR: 14.8 sec/ev ~7000 reco-track/ev
MTV
SingleMu 10GeV D11
http://innocent.home.cern.ch/innocent/RelVal/SingleMuonD11_CA8a/
ttbar 200PU D11
http://innocent.home.cern.ch/innocent/RelVal/pu200D11_CA8a/