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

Updates to precision timing integration in reconstruction and miniaod #20338

Merged
merged 51 commits into from
Sep 23, 2017

Conversation

bendavid
Copy link
Contributor

Update low level assignment of MIP timing to tracks. (Implement acceptance cuts, improved handling of fake tracks, and fixes the handling of displaced tracks)

Update 4D Vertexing (including the changes in #19935)

Updates to integration of timing in reconstruction (but no change to default behaviour or collections beyond the time stored in pfcandidates, which remains unused downstream)

Addition of timing to packed candidates (but this is only partially useful unless miniaod is moved to the 4d vertices, currently not possible to have both sets of vertices in parallel, so miniaod stays with the non-timing vertices by default)

AODSIM produced with this pull request included can be easily processed into consistent miniaod with timing for further timing studies, so it would be useful to have for further TDR production.

There should be no changes to default reco/collections/miniaod beyond the not-used-downstream timestamps in the PFCandidates and PackedCandidates as said, but also understood if the code changes are considered too large to integrate for HGCal TDR production. These changes accumulated into our development branches for quite a while because we had so far not managed to disentangle them from changes to the default reco behaviour as finally done here.

@lgray

@cmsbuild
Copy link
Contributor

The code-checks are being triggered in jenkins.

@cmsbuild
Copy link
Contributor

A new Pull Request was created by @bendavid (Josh Bendavid) for master.

It involves the following packages:

CommonTools/RecoAlgos
DataFormats/PatCandidates
IOMC/RandomEngine
PhysicsTools/PatAlgos
RecoParticleFlow/PFClusterProducer
RecoParticleFlow/PFProducer
RecoParticleFlow/PFSimProducer
RecoVertex/Configuration
RecoVertex/PrimaryVertexProducer
SimTracker/TrackAssociation
TrackingTools/GsfTracking
TrackingTools/TransientTrack

@perrotta, @smuzaffar, @civanch, @Dr15Jones, @mdhildreth, @monttj, @cmsbuild, @slava77 can you please review it and eventually sign? Thanks.
@TaiSakuma, @gouskos, @felicepantaleo, @abbiendi, @rappoccio, @ahinzmann, @threus, @seemasharmafnal, @mmarionncern, @JyothsnaKomaragiri, @makortel, @acaudron, @sdevissc, @jhgoh, @lgray, @jdolen, @HuguesBrun, @ferencek, @trocino, @GiacomoSguazzoni, @rovere, @VinInn, @bellan, @nhanvtran, @gkasieczka, @schoef, @ebrondol, @dgulhan, @battibass, @wddgit, @calderona, @mverzett, @cbernet, @gpetruc, @imarches, @mariadalfonso, @pvmulder, @bachtis this is something you requested to watch as well.
@davidlange6, @slava77 you are the release manager for this.

cms-bot commands are listed here

@cmsbuild
Copy link
Contributor

+code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/PR-20338/430

@bendavid
Copy link
Contributor Author

(The actual implementation of the workflow to reproduce miniaod with timing on top of AODSIM produced with this requires some modest additional changes and can come later)

@lgray
Copy link
Contributor

lgray commented Aug 31, 2017

@cmsbuild please test

@Dr15Jones
Copy link
Contributor

Does this pull request include unnecessary commits? 48 commits starting from Dec 2016 seems strange.

@cmsbuild
Copy link
Contributor

cmsbuild commented Aug 31, 2017

The tests are being triggered in jenkins.
https://cmssdt.cern.ch/jenkins/job/ib-any-integration/22630/console Started: 2017/08/31 20:27

@bendavid
Copy link
Contributor Author

No, this is really 48 commits with work done starting in Dec. 2016.

We started a pull request with some of these changes at the beginning of the year, but got stuck because we did not manage to disentangle the changes to the default reco behaviour at the time.
(it was this one #17238)

@bendavid
Copy link
Contributor Author

(You'll see that all the commits are from some combination of myself, @gpetruc and @lgray )

@Dr15Jones
Copy link
Contributor

+1
change to IOMC/RandomEngine was just adding another module to the list

@cmsbuild
Copy link
Contributor

@cmsbuild
Copy link
Contributor

Comparison job queued.

@cmsbuild
Copy link
Contributor

cmsbuild commented Sep 21, 2017

The tests are being triggered in jenkins.
https://cmssdt.cern.ch/jenkins/job/ib-any-integration/23146/console Started: 2017/09/21 17:21

@cmsbuild
Copy link
Contributor

Pull request #20338 was updated. @perrotta, @smuzaffar, @civanch, @Dr15Jones, @mdhildreth, @monttj, @cmsbuild, @kpedro88, @slava77 can you please check and sign again.

@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-20338/23146/summary.html

Comparison Summary:

  • No significant changes to the logs found
  • ROOTFileChecks: Some differences in event products or their sizes found
  • Reco comparison results: 276 differences found in the comparisons
  • DQMHistoTests: Total files compared: 26
  • DQMHistoTests: Total histograms compared: 2654399
  • DQMHistoTests: Total failures: 1113
  • DQMHistoTests: Total nulls: 0
  • DQMHistoTests: Total successes: 2653097
  • DQMHistoTests: Total skipped: 189
  • DQMHistoTests: Total Missing objects: 0
  • Checked 107 log files, 14 edm output root files, 26 DQM output files

generalTrackTimes.push_back(time);
}
else {
float rndtime = CLHEP::RandGauss::shoot(rng_engine, meanSimTime, rmsSimTime);
Copy link
Contributor

Choose a reason for hiding this comment

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

[the functionality has been here before; I perhaps notice it more obviously only now]
this leads to non-reproducibility of RECO in multithreaded jobs and is technically in violation of the policy.
The seed should be reset to something based on event or track quantities.
It may be OK for now as long as the 4D vertex and track times are used only for checks or tests and do not contribute to the downstream reco.

I made #20621 to keep track of this issue.

Copy link
Contributor

Choose a reason for hiding this comment

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

I get the appropriate random number engine based on the stream ID from the RNG service in the produce() method and pass it down. It should be OK... no?

Copy link
Contributor

Choose a reason for hiding this comment

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

I guess not. It's not about streams. Events can be executed in different order, even if there is a continuous tracking of the seed/random engine state per stream.

Copy link
Contributor

Choose a reason for hiding this comment

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

The RandomNumberGeneratorService associates random number sequences to streams. However, when running a job, the association of events to streams is not-reproducible (the same event may be assigned to different streams in different jobs).

The standard for reconstruction, even before multi-threading, was to have the module seed the random number generator based on a property of the event.

Copy link
Contributor

Choose a reason for hiding this comment

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

Gotcha. I'll try to make a PR soon to address this. Trying to attack the 4D vertex speed issue from a slightly different direction first.

Copy link
Contributor

Choose a reason for hiding this comment

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

@lgray for a recent example, see #20240

@slava77
Copy link
Contributor

slava77 commented Sep 22, 2017

+1

for #20338 213e0b3

  • updates are in line with the description or the follow up discussion and review:
    • non-phase-2 and phase-2-no-timing workflows have differences in the event content due to addition of the gen production vertex position and time products; the existing products have changes only in PFCandidate time distributions (which are not used, supposedly);
    • phase-2 workflows with timing have changes in track time reco and assignments to PF and removal of 1D PVs
  • jenkins tests pass and comparisons with baseline show changes in time() of PFCandidates as well as variations in vertex in D19 workflow
  • local tests confirm expected changes (see notes posted earlier). Technical performance with PU200 is roughly unaffected.

@kpedro88
Copy link
Contributor

+1

@civanch
Copy link
Contributor

civanch commented Sep 22, 2017

+1

@Dr15Jones
Copy link
Contributor

+1

@lgray
Copy link
Contributor

lgray commented Sep 22, 2017

@monttj Please sign!

@slava77
Copy link
Contributor

slava77 commented Sep 22, 2017

@davidlange6
please take a look, a backport of this is desired for 932.

@lgray
Copy link
Contributor

lgray commented Sep 22, 2017

@davidlange6 We need this relatively soon! Thanks!

@davidlange6
Copy link
Contributor

merge
(Was on a plane...)

@cmsbuild cmsbuild merged commit 958576f into cms-sw:master Sep 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.