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

Out-of-time photons in RECO/AOD #18844

Merged
merged 6 commits into from
Jun 8, 2017
Merged

Conversation

kmcdermo
Copy link
Contributor

This PR is to include high energy out-of-time (OOT) photons in a dedication collection in AOD (reco::Photon), as well as the underlying objects (reco::PhotonCore, reco::SuperCluster, reco::CaloCluster). Any EcalRecHits added by the new clusters are added directly to the reduced collection. These collections are needed for the displaced photon and monophoton analysis groups.

This custom workflow goes through most of PF mustache photon sequence, starting at PFRecHits and removing the time cleaning, then to PFClusters, PFSuperClusters, and lastly straight from PFSuperClusters to photons.

At the PFSuperCluster producer, we filter on the seed crystal being flagged OOT to reduce duplication of clusters and superclusters. As such, this collection will only store photons whose seed is flagged OOT. Since we do not go through the full gedPhoton sequence, we do not do any PF isolations.

The increase to CPU is roughly 0.3%, while the increase in compressed size at AOD is about 1.5 kB from the new collections + additional rechits. Just taking an ls -l and dividing by the number of events processed, the estimated increase in size is 4.5 kB / event.

This work will be presented tomorrow at the EGM Reco meeting -- I will attach slides after the meeting.

@cmsbuild
Copy link
Contributor

A new Pull Request was created by @kmcdermo (Kevin McDermott) for master.

It involves the following packages:

RecoEcal/Configuration
RecoEcal/EgammaClusterAlgos
RecoEcal/EgammaClusterProducers
RecoEgamma/Configuration
RecoEgamma/EgammaPhotonProducers
RecoParticleFlow/PFClusterProducer
RecoParticleFlow/PFProducer

@perrotta, @cmsbuild, @slava77, @davidlange6 can you please review it and eventually sign? Thanks.
@mmarionncern, @Sam-Harper, @rafaellopesdesa, @argiro, @cbernet, @lgray, @bachtis this is something you requested to watch as well.
@davidlange6 you are the release manager for this.

cms-bot commands are listed here

@slava77
Copy link
Contributor

slava77 commented May 19, 2017

@kmcdermo
please close this PR
It is apparently fully included and is as such superseded by #18845

@kmcdermo
Copy link
Contributor Author

Hi @slava77 , so I opened this separately at the request of @arizzi, @gpetruc, @bendavid in the case that the details of the miniAOD workflow still need to be worked out separately -- in the meantime this can at least enter central reco while the details of slimming/etc are worked out.

I can of course close this, just let me know either way.

@slava77
Copy link
Contributor

slava77 commented May 19, 2017 via email

@kmcdermo
Copy link
Contributor Author

That is fine by me, for sure. I will be at the RECO meeting this afternoon (after the EGM RECO) and this can be discussed there which is the best way to proceed. I have no opinion on this either way.

@slava77
Copy link
Contributor

slava77 commented May 19, 2017

@cmsbuild please test

@cmsbuild
Copy link
Contributor

cmsbuild commented May 19, 2017

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

@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-18844/19989/summary.html

Comparison Summary:

  • You potentially added 24 lines to the logs
  • ROOTFileChecks: Some differences in event products or their sizes found
  • Reco comparison results: 1781 differences found in the comparisons
  • DQMHistoTests: Total files compared: 24
  • DQMHistoTests: Total histograms compared: 1833901
  • DQMHistoTests: Total failures: 9328
  • DQMHistoTests: Total nulls: 831
  • DQMHistoTests: Total successes: 1823562
  • DQMHistoTests: Total skipped: 180
  • DQMHistoTests: Total Missing objects: 0
  • Checked 98 log files, 14 edm output root files, 24 DQM output files

## modification for Algo
particleFlowSuperClusterOOTECAL.isOOTCollection = cms.bool(True)
particleFlowSuperClusterOOTECAL.barrelRecHits = cms.InputTag("ecalRecHit","EcalRecHitsEB")
particleFlowSuperClusterOOTECAL.endcapRecHits = cms.InputTag("ecalRecHit","EcalRecHitsEE")
Copy link
Contributor

Choose a reason for hiding this comment

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

I thought that the discussion in #18845 converged on using reducedEcalRecHit here

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Well, again, it depends on where we want this to run. If we want it to run from the start of RECO, we run it with the full collection. If we want to run it after AOD, then we run it there.

The cost at running at AOD is that we would be losing some of our recHits, which is a further loss in resolution.

@@ -50,9 +50,12 @@ PFECALSuperClusterProducer::PFECALSuperClusterProducer(const edm::ParameterSet&
iConfig.getUntrackedParameter<bool>("verbose",false);

superClusterAlgo_.setUseRegression(iConfig.getParameter<bool>("useRegression"));


isOOTCollection_ = (iConfig.existsAs<bool>("isOOTCollection") ? iConfig.getParameter<bool>("isOOTCollection") : false);
Copy link
Contributor

Choose a reason for hiding this comment

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

"iConfig.existsAs" is not needed if the value is already inserted in the fillDescriptions.
Please remove.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Okay, will do.

mustacheOOTPhotonCore = photonCore.clone()
mustacheOOTPhotonCore.scHybridBarrelProducer = cms.InputTag("particleFlowSuperClusterOOTECAL:particleFlowSuperClusterOOTECALBarrel")
mustacheOOTPhotonCore.scIslandEndcapProducer = cms.InputTag("particleFlowSuperClusterOOTECAL:particleFlowSuperClusterOOTECALEndcapWithPreshower")
mustacheOOTPhotonCore.conversionProducer = cms.InputTag("conversions")
Copy link
Contributor

Choose a reason for hiding this comment

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

is there a good reason to prefix "mustache" ?
is there a plan to add another type of OOT photons? (I thought no)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

If you would prefer to drop it, and just name this as ootPhoton*, I can do that. There are no other plans to add any other OOT photon collection(s).


particleFlowOOTRecHitECAL = particleFlowRecHitECAL.clone()
particleFlowOOTRecHitECAL.producers[0].qualityTests[1].timingCleaning = cms.bool(False)
particleFlowOOTRecHitECAL.producers[1].qualityTests[1].timingCleaning = cms.bool(False)
Copy link
Contributor

Choose a reason for hiding this comment

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

this should have some protection that modifications are done correctly.
Simple access by index can easily fail or modify something unrelated.
The minimal change I can think of is to drop "cms.bool" so that this fails if it tries to modify a qualityTest without the timingCleaning parameter.
Additional checks will probably require consistency in inputs.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

so something like:
particleFlowOOTRecHitECAL.producers[0].qualityTests[1].timingCleaning = False?

I agree accessing by index is not ideal... producers[0] = EB, producers[1] = EE, so I guess if we move to a unified EBEE clustering, this would be a problem.

@slava77
Copy link
Contributor

slava77 commented May 26, 2017

What is the plan for validation/DQM for all of the added sequences?
Is it even possible without special samples?

@kmcdermo
Copy link
Contributor Author

Currently, there is no plan for validation/DQM. And indeed, the best way to validate would be with a signal sample (unless we want to validate with spikes from data or something).

I guess we could just simply make a plot of the OOT photons vs seed time with data as a starter. But pT/eta/phi would be hard without a signal sample.

@slava77
Copy link
Contributor

slava77 commented Jun 6, 2017 via email

@kmcdermo
Copy link
Contributor Author

kmcdermo commented Jun 6, 2017

Okay, I will make the changes as requested. I will revert those changes to make a clean break.

@slava77
Copy link
Contributor

slava77 commented Jun 6, 2017 via email

@cmsbuild
Copy link
Contributor

cmsbuild commented Jun 6, 2017

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

@kmcdermo
Copy link
Contributor Author

kmcdermo commented Jun 6, 2017

@slava77 I made the changes you suggested, and tested them locally with runTheMatrix.py -l limited -i all, all passed.

@slava77
Copy link
Contributor

slava77 commented Jun 6, 2017

@cmsbuild please test

@cmsbuild
Copy link
Contributor

cmsbuild commented Jun 6, 2017

The tests are being triggered in jenkins.
https://cmssdt.cern.ch/jenkins/job/ib-any-integration/20376/console Started: 2017/06/06 20:13

@cmsbuild
Copy link
Contributor

cmsbuild commented Jun 6, 2017

@cmsbuild
Copy link
Contributor

cmsbuild commented Jun 6, 2017

Comparison job queued.

@cmsbuild
Copy link
Contributor

cmsbuild commented Jun 6, 2017

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

Comparison Summary:

  • You potentially added 17 lines to the logs
  • ROOTFileChecks: Some differences in event products or their sizes found
  • Reco comparison results: 1697 differences found in the comparisons
  • DQMHistoTests: Total files compared: 23
  • DQMHistoTests: Total histograms compared: 1837605
  • DQMHistoTests: Total failures: 37367
  • DQMHistoTests: Total nulls: 781
  • DQMHistoTests: Total successes: 1799284
  • DQMHistoTests: Total skipped: 173
  • DQMHistoTests: Total Missing objects: 0
  • Checked 94 log files, 14 edm output root files, 23 DQM output files

@slava77
Copy link
Contributor

slava77 commented Jun 8, 2017

+1

for #18844 c728ced

  • changes are in line with the description and the follow up review: addition of out-of-time egamma collections up to photon reco to AOD.
  • jenkins tests pass and comparisons show small differences in reduced calo rechit collections corresponding to new added objects; no changes in miniAOD
  • local tests with several 2016 data workflows and with 2017 ttbar PU MC wf 10224 show roughly expected behavior:
    • new collections appear in the outputs and seem to make sense in content
    • CPU use is up by about 0.3% or even less
    • output size increase is more consistent with ~0.1%: the total size on 200 events in data with non-empty outputs is in the range of 300 - 500 bytes per event using RECO file (this is not split). A larger size increase in AOD reported in the PR description is likely due to still sub-optimal compression and full-split output which has larger overhead on smaller files.

Here are several plots for MET2016B wf 136.725 (black is with this PR, despite the legend)
all_origvssign914_runmet2016bwf136p725c_log10recosuperclusters_particleflowsuperclusterootecal_particleflowsuperclusterootecalbarrel_rereco_obj_energy

all_origvssign914_runmet2016bwf136p725c_recophotons_ootphotons__rereco_obj_et

all_origvssign914_runmet2016bwf136p725c_recophotons_ootphotons__rereco_obj_hcaltowersumetconedr03

@cmsbuild
Copy link
Contributor

cmsbuild commented Jun 8, 2017

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

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.

5 participants