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
Pixel cluster repair by morphing #34606
Conversation
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-34606/24173
|
A new Pull Request was created by @veszpv (Viktor Veszpremi) for master. It involves the following packages:
The following packages do not have a category, yet: RecoLocalTracker/SiPixelDigiMorphing @perrotta, @civanch, @silviodonato, @mdhildreth, @cmsbuild, @slava77, @jpata, @qliphy, @fabiocos, @davidlange6 can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
@cmsbuild , please test |
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.
do we expect a significant growth of the code base in RecoLocalTracker/SiPixelDigiMorphing ?
an existing alternative could be a conveniently generically named RecoLocalTracker/SubCollectionProducers
(this is not a complete review, just a few quick notes before a more careful look)
#include "FWCore/ParameterSet/interface/ParameterSet.h" | ||
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" | ||
|
||
class SiPixelDigiMorphing : public edm::stream::EDProducer<> { |
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.
please merge into .cc file
desc.add<std::vector<int32_t>>("kernel2", {2, 7, 2}); | ||
desc.add<uint32_t>("fakeAdc", 100); | ||
|
||
descriptions.add("SiPixelDigiMorphing", desc); |
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.
descriptions.add("SiPixelDigiMorphing", desc); | |
descriptions.addWithDefaultLabel(desc); |
is a preferred
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.
Or did you meanaddWithDefaultLabel()
? (addDefault()
does not generate cfi.py
file)
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.
Or did you mean
addWithDefaultLabel()
? (addDefault()
does not generatecfi.py
file)
yes; thank you for noticing. I updated the suggestion
@@ -0,0 +1,15 @@ | |||
import FWCore.ParameterSet.Config as cms | |||
|
|||
siPixelDigisMorphed = cms.EDProducer( |
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.
please replace with a clone from siPixelDigiMorphing_cfi
generated with the fillDescriptions
siPixelDigiMorphing.toModify( | ||
siPixelClustersPreSplitting, | ||
cpu = dict( | ||
src = cms.InputTag('siPixelDigisMorphed') |
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.
src = cms.InputTag('siPixelDigisMorphed') | |
src = 'siPixelDigisMorphed' |
Presumably at some point it will have to host an heterogeneous implementation. |
Apart from a potential implementation also on GPU, I have doubts if this will grow further simply because there are not many options to transform the pixel information at such an early stage of local reco. I let you decide if we want to move this to a generically named directory. Mind you, this is strictly a derived and transient collection. |
+1 Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-546425/17151/summary.html Comparison SummarySummary:
|
perhaps instead of RecoLocalTracker/SiPixelDigiMorphing a RecoLocalTracker/SiPixelDigiReProducers |
-code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-34606/24225
Code check has found code style and quality issues which could be resolved by applying following patch(s)
|
Elaborating a bit on my comment #34606 (comment):
If there are no further comments, I think the PR can proceed, after being tested without the morphing option. |
I have run the matrix w/ and w/o modifier: With modifier, there are nine failures (37 34 28 21 14 4 1 1 1 tests passed, 2 2 5 0 0 0 0 0 0 failed). W/o modifier, there was no failure. I would propose to proceed with the tests w/o the morphing option. |
test parameters: |
@cmsbuild, please test |
-1 Failed Tests: RelVals-INPUT RelVals-INPUT
Expand to see more relval errors ...
Comparison SummarySummary:
|
@cmsbuild , please test |
+1 Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-546425/17635/summary.html Comparison SummarySummary:
|
+1 |
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 will be automatically merged. |
In later years of Run 3, the pixel detector, especially Layer 1, will suffer a significant radiation damage. Studies show that due to the resulting lower charge collection efficiency, pixel hits in the bulk of clusters may be systematically lost. This leads to the multiplication of fragmented clusters, to loss of resolution when the shoulders of the original clusters are not properly identified (and paired as required by generic CPE) as well as to position biases.
A digi-to-digi producer module is proposed to be placed between the raw2digi and the clusterizer modules that performs a somewhat modified "closing" image morphing operation in each pixel module separately. Closing is the result of the subsequent application of a dilation, with 3x3 kernel [(1, 1, 1) (1, 1, 1) (1, 1, 1)], and an erosion, with 3x3 kernel [(0, 1, 0) (1, 1, 1) (0, 1, 0)]. The operation injects extra pixels in the digi collection with configurable charge (provided in units of 10 electrons). These extra pixels are used in guiding the search for contiguous clusters in the clusterizer, and also potentially to initiate seeding if the adc is configured to pass the seeding threshold. Extra pixels are deleted from the final clusters.
Some reminders:
This feature is turned off by default.
PR validation:
The method and choice of kernels were tested in two sets of clusters: exclusively broken ones with one or more discontinuities, and fully healthy ones. One can observe that the method has no effect on healthy clusters and perfectly restores x and y lengths of broken ones (this is required so that shoulders are identified and remain intact). Cluster size and charge are not restored, since missing pixels remain missing:
The cmssw implementation was tested earlier (in CMSSW 11_2_0) on real events with realistic mix of healthy and broken clusters in Layer 1 (called original), regular cluster size, and possibilities of cluster merging.
Validation on CPE and tracking are inconclusive, see results in [1].
This PR passes tests with runTheMatrix (thanks to Tanja Susa).
Further final validations will also be provided by Tanja Susa (by turning on this feature) to ensure the desired changes take place during digi morphing. The PR is requested to be merged to ease further studies.