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
Rewrite and Improvements for PFRecHit and PFCluster Producers #2730
Conversation
Also let me comment that the (almost transient) PF DataFormats on RecHits and Clusters have been changed to accomodate the new changes. Since they didnt allow to assign navigation for more complicated geometries [i.e 3D ] |
A new Pull Request was created by @lgray (Lindsey Gray) for CMSSW_7_1_X. Rewrite and Improvements for PFRecHit and PFCluster Producers It involves the following packages: DataFormats/ParticleFlowReco @perrotta, @cmsbuild, @thspeer, @fwyzard, @Martin-Grunewald, @anton-a, @nclopezo, @slava77, @Degano can you please review it and eventually sign? Thanks. |
@lgray |
@nclopezo what IB should I take? |
-1 |
@Martin-Grunewald The HLT changes are patch for making tests run so that we could validate this change set. We can remove those changes and go through conf db in another step. |
@lgray you should take CMSSW_7_1_X_2014-03-05-0200 |
re-rebasing to CMSSW_7_1_X_2014-03-05-0200... jumped the gun and rebased to the afternoon IB first. |
@nclopezo now on CMSSW_7_1_X_2014-03-05-0200 |
Sorry for the noise, fixed obvious problem from rebasing. |
-1 runTheMatrix-results/50101.0_SingleMuPt10+SingleMuPt10FSIdINPUT+SingleMuPt10FS_ID/step2_SingleMuPt10+SingleMuPt10FSIdINPUT+SingleMuPt10FS_ID.log ----- Begin Fatal Exception 05-Mar-2014 17:33:08 CET----------------------- An exception of category 'FileReadError' occurred while [0] Processing run: 1 lumi: 5 event: 12001 [1] Running path 'FEVTDEBUGHLToutput_step' [2] Calling event method for module PoolOutputModule/'FEVTDEBUGHLToutput' [3] Reading branch recoPFRecHits_particleFlowRecHitECAL__HLT. Additional Info: [a] Fatal Root Error: @SUB=TStreamerInfo::BuildOld Cannot convert reco::PFRecHit::neighbours4_ from type:vector to type:edm::RefVector,reco::PFRecHit,edm::refhelper::FindUsingAdvance,reco::PFRecHit> >, skip element ----- End Fatal Exception ------------------------------------------------- you can see the results of the tests here: |
Yes this is because the dataformats have changed .... are old dataformats written on this test as input? |
|
||
/// transient layer | ||
PFLayer::Layer layer_; | ||
|
||
#if !defined(__CINT__) && !defined(__MAKECINT__) && !defined(__REFLEX__) | ||
/// \todo move to PFClusterTools | ||
static std::atomic<int> depthCorMode_; |
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.
Any chance this could be moved as the comment says? Would help aleviate threading concerns.
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.
Ah, you mean the std::atomic stuff. I am pretty sure none of those variables are used any more.
+1 |
Here's a bit cherry-picked summary for timing in pf-related modules
The only somewhat surprising part is the particleFlowRecHitHO, which is increased by a factor of a few. I see the same difference in HO pfrechit in this final PR as well as with your initial submission |
@slava77 is this data or MC ? If it is data it could be that the cleaning is done at the end now and we should ignore since the cuts will change..If it is MC the only change is that I am now using in all modules the CaloNavigator class to find neighbours [check PFRecHitCaloNavigator] so this class could possibly be centrally optimized? |
wflow 202.0 is ttbar MC with 2012-like pileup |
Then it has to .be the navigator [I assume there are no rechits to be cleaned in this sample] .In that case I can not do something since the custom navigation that was done in PFhad small problems..... |
It looks like all the cost in the HO is in PFHcalRecHitCreator importRecHits (the navigation doesn't really show up), based on igprof. |
Thanks! OK but I dont want to change that .. When the quality tests are running you need to have the PFrecHit since the quality tests can change its energy etc. We need this functionality to migrate the HF clustering from hits [where short +long fibre is combined ] and to calibrate specific towers in boundaries. Since cumulatively we are doing much better I would prefer to stay like this . |
On 3/13/14, 5:12 PM, bachtis wrote:
OK.
Vyacheslav (Slava) Krutelyov |
|
||
iEvent.getByToken(recHitToken_,recHitHandle); | ||
for (unsigned int i=0;i<recHitHandle->size();++i) { | ||
const Digi& erh = (*recHitHandle)[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.
Dereferencing a handle has a non-zero cost (just because the implementation is not inlined).
You are doing it here for every single hit.
This looks common for all of the code in this PR (just inherited from the old PF code).
OK will fix that . Indeed it was copy paste from old module . I will have a technical commit next week towards the HCAl migration to hits [dactivated ] so I will add this. |
Reco -- Rewrite and Improvements for PFRecHit and PFCluster Producers
Reco -- Further code review from the end of #2730
Built on top of CMSSW_7_1_X_2014-03-05-0200.
For testing on top of pre3 use the branch: pfcluster_rebuild_onpre3.
This PR is a complete rewrite of PFRecHit and PFCluster Producers/Algos.
The rewrite focuses on making the clustering and rechit building modular and easy to adapt to using new detector information.
NOTE: PFRootEvent is removed from the release, it is likely to come back in some form later.
Expected changes:
Additional comments from Michalis (reproduced up here to pull everything together):