-
Notifications
You must be signed in to change notification settings - Fork 4.3k
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
Update Pixel DQM modules prohibiting concurrent lumis #32805
Conversation
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-32805/20981
|
A new Pull Request was created by @sroychow (Suvankar Roy Chowdhury) for master. It involves the following packages: DQM/SiPixelMonitorDigi @andrius-k, @kmaeshima, @ErnestaP, @ahmad3213, @cmsbuild, @jfernan2, @rvenditti can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
This PR solves issue mentioned in comment #25090 (comment) |
please test |
just to clarify futher: #25090 (comment) also mentions some L1T modules. |
Yes, L1T conveners and DQM contacts have been notified too on 16/12/2020 but no answer yet. |
+1 Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-2a8f50/12688/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 now be reviewed by the release team before it's merged. @silviodonato, @dpiparo, @qliphy (and backports should be raised in the release meeting by the corresponding L2) |
+1 |
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.
@sroychow, thanks for this.
Sorry for late feedback... if we ever touch again this module, few stylistic suggestions
#include "DQM/SiPixelMonitorDigi/interface/SiPixelDigiModule.h" | ||
|
||
#include <DQMServices/Core/interface/DQMOneEDAnalyzer.h> |
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.
Being picky here, I think <>
are reserved to system includes and cmssw
includes should use ""
int thisls = lb.id().luminosityBlock(); | ||
const bool resetCounters = luminosityBlockCache(lb.index()); | ||
|
||
float averageBPIXFed = float(nBPIXDigis) / 32.; |
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.
For future memory and readability 32 and 8 can be made named constants.
float averageFPIXFed = float(nFPIXDigis) / 8.; | ||
|
||
if (averageDigiOccupancy) { | ||
for (int i = 0; i != 40; 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.
This 40 can be taken from here
MAXSiPixelFEDID = 40, // increase from 39 for the pilot blade fed |
Thanks for the update, but I'm afraid the changes here are not sufficient for the intended behavior in the presence of concurrent lumis (assuming I understood the code correctly). If I understood correctly, the aim is to (have an ability to) reset some counters at every N lumis. In this PR the decision of whether to reset is done in
One way to do the counting properly would be to have a separate struct for the counters struct Counters {
int nBPIXDigis = 0;
...
};
and use that as the lumi cache, but sharing one instance of it between lumis along class SiPixelDigiSource ... {
std::shared_ptr<Counters> latestCounters_;
};
std::shared_ptr<Counters> SiPixelDigiSource::globalBeginLuminosityBlock(...) {
unsigned int currentLS = lumi.id().luminosityBlock();
if (currentLS % 10 == 0) {
// reset counters by making a new object
latestCounters_ = std::make_shared<Counters>();
}
return latestCounters_;
} |
PR description:
In this PR, SiPixelRawDataErrorSource & SiPixelDigiSource modules are updated to allow concurrent LS.
PR validation:
Test with : runTheMatrix.py -t 4 -l 4.53
No differences observed when comparing the harvested DQM output files with dqmMemoryStats.py script.
if this PR is a backport please specify the original PR and why you need to backport that PR:
No backport is needed.