Adapt pixel cpe algo to better handle broken clusters [15.0.X]#48008
Adapt pixel cpe algo to better handle broken clusters [15.0.X]#48008mroguljic wants to merge 4 commits intocms-sw:CMSSW_15_0_Xfrom
Conversation
|
A new Pull Request was created by @mroguljic for CMSSW_15_0_X. It involves the following packages:
@antoniovilela, @atpathak, @cmsbuild, @consuegs, @davidlange6, @fabiocos, @francescobrivio, @jfernan2, @mandrenguyen, @perrotta, @rappoccio can you please review it and eventually sign? Thanks. cms-bot commands are listed here
|
|
cms-bot internal usage |
mmusich
left a comment
There was a problem hiding this comment.
some naive questions / comments from a non-reviewer.
|
assign heterogeneous
|
|
backport of #47966 |
|
enable gpu |
|
|
70746c0 to
680f6cb
Compare
|
Pull request #48008 was updated. @antoniovilela, @atpathak, @cmsbuild, @consuegs, @davidlange6, @fabiocos, @francescobrivio, @fwyzard, @jfernan2, @makortel, @mandrenguyen, @perrotta, @rappoccio can you please check and sign again. |
|
Not sure if this is related to the changes. |
perrotta
left a comment
There was a problem hiding this comment.
Review and code development should be done in the development (master) release, and only backported when stabilized. However, since some review already started in ths backport PR, let me add a few comments here.
It would be preferable, however, that since now the two PRs get synchronized, and then the review continue in the master.
| // define the centers of the first last last pixel coordinates | ||
| float x1 = pitch * (upper_edge_first_pix - 0.5 * pitchfraction_first); | ||
| float x2 = pitch * (lower_edge_last_pix + 0.5 * pitchfraction_last); | ||
|
|
||
| if (delta / pitch > delta_length_cut) { | ||
| // observed cluster is much shorter than expected, use one-sided reco | ||
| if (w_pred > 0.f) { |
There was a problem hiding this comment.
| // define the centers of the first last last pixel coordinates | |
| float x1 = pitch * (upper_edge_first_pix - 0.5 * pitchfraction_first); | |
| float x2 = pitch * (lower_edge_last_pix + 0.5 * pitchfraction_last); | |
| if (delta / pitch > delta_length_cut) { | |
| // observed cluster is much shorter than expected, use one-sided reco | |
| if (w_pred > 0.f) { | |
| if (delta / pitch > delta_length_cut) { | |
| // define the centers of the first and last pixel coordinates | |
| float x1 = pitch * (upper_edge_first_pix - 0.5 * pitchfraction_first); | |
| float x2 = pitch * (lower_edge_last_pix + 0.5 * pitchfraction_last); | |
| // observed cluster is much shorter than expected, use one-sided reco | |
| if (w_pred > 0.f) { |
|
|
||
| edm::ParameterSet pset_; | ||
| bool useErrorsFromTemplates_; | ||
| bool GoodEdgeAlgo_; |
There was a problem hiding this comment.
Naming rule nr 9 in https://cms-sw.github.io/cms_coding_rules.html
| bool GoodEdgeAlgo_; | |
| bool goodEdgeAlgo_; |
| auto const& myname = p.getParameter<std::string>("ComponentName"); | ||
| auto const& magname = p.getParameter<edm::ESInputTag>("MagneticFieldRecord"); | ||
| useErrorsFromTemplates_ = p.getParameter<bool>("UseErrorsFromTemplates"); | ||
| GoodEdgeAlgo_ = p.getParameter<bool>("GoodEdgeAlgo"); |
There was a problem hiding this comment.
| GoodEdgeAlgo_ = p.getParameter<bool>("GoodEdgeAlgo"); | |
| goodEdgeAlgo_ = p.getParameter<bool>("GoodEdgeAlgo"); |
| genErrorDBObjectProduct, | ||
| lorentzAngleWidthProduct); | ||
| lorentzAngleWidthProduct, | ||
| GoodEdgeAlgo_); |
There was a problem hiding this comment.
| GoodEdgeAlgo_); | |
| goodEdgeAlgo_); |
| const SiPixelGenErrorDBObject* genErrorDBObject, | ||
| const SiPixelLorentzAngle* lorentzAngleWidth) | ||
| const SiPixelLorentzAngle* lorentzAngleWidth, | ||
| const bool GoodEdgeAlgo) |
There was a problem hiding this comment.
| const bool GoodEdgeAlgo) | |
| const bool goodEdgeAlgo) |
| cout << "(int)useErrorsFromTemplates_ = " << (int)useErrorsFromTemplates_ << endl; | ||
| cout << "truncatePixelCharge_ = " << (int)truncatePixelCharge_ << endl; | ||
| cout << "IrradiationBiasCorrection_ = " << (int)IrradiationBiasCorrection_ << endl; | ||
| cout << "GoodEdgeAlgo_ = " << (int)GoodEdgeAlgo_ << endl; |
There was a problem hiding this comment.
| cout << "GoodEdgeAlgo_ = " << (int)GoodEdgeAlgo_ << endl; | |
| cout << "goodEdgeAlgo_ = " << (int)GoodEdgeAlgo_ << endl; |
| the_size_cutX); // cut for eff charge width &&& | ||
| the_size_cutX, // cut for eff charge width &&& | ||
| delta_length_cut, | ||
| GoodEdgeAlgo_); |
There was a problem hiding this comment.
| GoodEdgeAlgo_); | |
| goodEdgeAlgo_); |
| shifty = templ.cytemp() - midpix; | ||
| } //else | ||
|
|
||
| shifty = BHY - midpix; |
| // midpix = (fypix + lypix) / 2; | ||
| // shifty = templ.cytemp() - midpix; |
There was a problem hiding this comment.
| // midpix = (fypix + lypix) / 2; | |
| // shifty = templ.cytemp() - midpix; |
@mroguljic, do you happen to have run your tests on |
Thank you Marco. Indeed, I ran this on |
|
please test |
@mandrenguyen This backport is not yet synchronized to master. If there are no more comments on master, I can do it now. |
|
Pull request #48008 was updated. @Martin-Grunewald, @antoniovilela, @atpathak, @cmsbuild, @davidlange6, @fabiocos, @francescobrivio, @fwyzard, @jfernan2, @makortel, @mandrenguyen, @mmusich, @perrotta, @rappoccio can you please check and sign again. |
|
Hello, these are the new timing tests with the updated code, with the same conditions as before but with the addition of a test with the PR merged without the customization applied:
Of the increase in timing, we have:
The small changes are probably within error, I'm reporting them because in principle we can expect some changes there. |
|
thanks @elusian ! |
Hi Mia, we did add modifiers for both offline and online in these files: |
|
+heterogeneous |
|
thank you, @mroguljic
I'm afraid I don't see the customization for HLT, though the customization function should have the following |
|
Typically we'd like a CMSHLT Jira ticket to change HLT. The fillDescriptions default should be set as to not use the new feature, ie, preserve the current behaviour (at least at HLT). |
I'd rather put the customization in a |
133241f to
f1dbf92
Compare
|
Pull request #48008 was updated. @AdrianoDee, @Martin-Grunewald, @Moanwar, @antoniovilela, @atpathak, @cmsbuild, @davidlange6, @DickyChant, @fabiocos, @francescobrivio, @fwyzard, @jfernan2, @makortel, @mandrenguyen, @miquork, @mmusich, @perrotta, @rappoccio, @srimanob, @subirsarkar can you please check and sign again. |
|
Hello, I ran some HLT tracking validation and the plots can be found here. To repeat the tests, the steps are (for the reference)
A new GRun menu should also suffice. and the harvesting with Finally, plots are made with To test the PR it's enough to modify the conditions following Dinko's comment and use either the procModifier or the customizer. |
|
-hlt
|
|
Closing the PR because it is superseeded by: #48356 |
Backport
Backport of #47966 to CMSSW 15.0.X to request data rereco for validation
PR description:
At the end of 2024, cluster breakage at high eta became significant. This caused issues when trying to improve calibrations for pixel cluster (position) parameter estimation, CPE.
This fix changes the CPE algorithms by relying on the "good" cluster edge, instead of both edges. This alternative algorithm is only used if the clusters are shorter than expected (e.g. broken). The change affects template reconstruction, and generic reconstruction both at CPU and GPU (alpaka). The fix is gated behind process modifiers for testing. The new versions of CPE algorithms require corresponding condition updates.
PR validation:
Undergoing runTheMatrix.py -l limited -i all --ibeos. We don't expect any workflow to be affect since the changes are protected by process modifiers. The PR was opened before the validation to allower others to comment early.