Skip to content
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

Merged
merged 12 commits into from May 23, 2017

Conversation

VinInn
Copy link
Contributor

@VinInn VinInn commented May 14, 2017

This PR is one more major step toward an affordable tracking at Run4
It sports

  1. Cellular Automaton as in Phase1
  2. retuning of iterations bringing closer to Phase1
  3. Minor optimization of OT CPE
  4. Introduction of window search in OT MeasurementDet (as already done in IT)

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/

@cmsbuild
Copy link
Contributor

A new Pull Request was created by @VinInn (Vincenzo Innocente) for master.

It involves the following packages:

DataFormats/Phase2TrackerCluster
RecoLocalTracker/Phase2TrackerRecHits
RecoLocalTracker/SiPhase2Clusterizer
RecoPixelVertexing/PixelLowPtUtilities
RecoPixelVertexing/PixelTriplets
RecoTracker/IterativeTracking
RecoTracker/MeasurementDet

@perrotta, @cmsbuild, @slava77, @kpedro88, @davidlange6 can you please review it and eventually sign? Thanks.
@ghellwig, @makortel, @felicepantaleo, @GiacomoSguazzoni, @rovere, @VinInn, @mschrode, @gpetruc, @ebrondol, @threus, @dgulhan this is something you requested to watch as well.
@davidlange6 you are the release manager for this.

cms-bot commands are listed here

@VinInn
Copy link
Contributor Author

VinInn commented May 14, 2017

@cmsbuild , please test

@cmsbuild
Copy link
Contributor

cmsbuild commented May 14, 2017

The tests are being triggered in jenkins.
https://cmssdt.cern.ch/jenkins/job/ib-any-integration/19809/console Started: 2017/05/14 20:55

@VinInn
Copy link
Contributor Author

VinInn commented May 14, 2017

@boudoul @atricomi @venturia FYI

@VinInn
Copy link
Contributor Author

VinInn commented May 14, 2017

Slides...

@venturia
Copy link
Contributor

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

@VinInn
Copy link
Contributor Author

VinInn commented May 14, 2017

@venturia
slides are ready (not by chance). I just need a slot....

@boudoul
Copy link
Contributor

boudoul commented May 14, 2017

seems that you have one .. : https://indico.cern.ch/event/636871/

@atricomi
Copy link
Contributor

atricomi commented May 14, 2017 via email

@cmsbuild
Copy link
Contributor

@cmsbuild
Copy link
Contributor

Comparison job queued.

@cmsbuild
Copy link
Contributor

Comparison is ready
https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-18728/19809/summary.html

Comparison Summary:

  • No significant changes to the logs found
  • Reco comparison results: 6624 differences found in the comparisons
  • DQMHistoTests: Total files compared: 24
  • DQMHistoTests: Total histograms compared: 1830696
  • DQMHistoTests: Total failures: 38417
  • DQMHistoTests: Total nulls: 775
  • DQMHistoTests: Total successes: 1791324
  • DQMHistoTests: Total skipped: 180
  • DQMHistoTests: Total Missing objects: 0
  • Checked 98 log files, 14 edm output root files, 24 DQM output files

@ebrondol
Copy link
Contributor

Thanks @VinInn !

auto const & dus = geom_.detUnits();
m_off = dus.size();
// skip Barrel and Foward pixels...
for(unsigned int i=3;i<7;++i) {
Copy link
Contributor

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?

Copy link
Contributor Author

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

Copy link
Contributor

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?

Copy link
Contributor Author

@VinInn VinInn May 15, 2017

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.

Copy link
Contributor

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.

Copy link
Contributor Author

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).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

@VinInn VinInn May 15, 2017

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.

Copy link
Contributor Author

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

Copy link
Contributor

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;
Copy link
Contributor

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());
Copy link
Contributor

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?

Copy link
Contributor Author

@VinInn VinInn May 15, 2017

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

@venturia
Copy link
Contributor

venturia commented May 15, 2017

If you have the TrackerGeometry available you can use const GeomDetEnumerators::SubDetector geomDetSubDetector(int subdet) const;
to convert 1,2,3,4,5,6 into an enumerator which tells you which subdetector is and check if it is GeomDetEnumerators::P2OTB or GeomDetEnumerators::P2OTEC (if the target is to select OT subdetectors).
These enumerators are described here:
https://github.com/cms-sw/cmssw/tree/master/Geometry/TrackerGeometryBuilder in the README part

@cmsbuild
Copy link
Contributor

Pull request #18728 was updated. @perrotta, @cmsbuild, @slava77, @kpedro88, @davidlange6 can you please check and sign again.

@VinInn
Copy link
Contributor Author

VinInn commented May 22, 2017

@cmsbuild, please test

@cmsbuild
Copy link
Contributor

cmsbuild commented May 22, 2017

The tests are being triggered in jenkins.
https://cmssdt.cern.ch/jenkins/job/ib-any-integration/20016/console Started: 2017/05/22 10:34

@cmsbuild
Copy link
Contributor

@cmsbuild
Copy link
Contributor

Comparison job queued.

@cmsbuild
Copy link
Contributor

Comparison is ready
https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-18728/20016/summary.html

Comparison Summary:

  • No significant changes to the logs found
  • Reco comparison results: 6428 differences found in the comparisons
  • DQMHistoTests: Total files compared: 24
  • DQMHistoTests: Total histograms compared: 1832990
  • DQMHistoTests: Total failures: 52939
  • DQMHistoTests: Total nulls: 1034
  • DQMHistoTests: Total successes: 1778837
  • DQMHistoTests: Total skipped: 180
  • DQMHistoTests: Total Missing objects: 0
  • Checked 98 log files, 14 edm output root files, 24 DQM output files

@slava77
Copy link
Contributor

slava77 commented May 22, 2017

+1

for #18728 8e1ceb4

@kpedro88
Copy link
Contributor

+1

@cmsbuild
Copy link
Contributor

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

@davidlange6
Copy link
Contributor

+1

@cmsbuild cmsbuild merged commit 6ce8de5 into cms-sw:master May 23, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

10 participants