-
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
add BX info to GlobalObjectMap
(L1uGT emulation)
#47030
base: master
Are you sure you want to change the base?
Conversation
This reverts commit c8aefec.
cms-bot internal usage |
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47030/43147
|
A new Pull Request was created by @missirol for master. It involves the following packages:
@Martin-Grunewald, @aloeliger, @cmsbuild, @epalencia, @mmusich can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
dbe158b
to
052da05
Compare
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47030/43149
|
Pull request #47030 was updated. @Martin-Grunewald, @aloeliger, @cmsbuild, @epalencia, @mmusich can you please check and sign again. |
The latest push (052da05) contains only some minor adjustments. |
#oldFiles="testGlobalObjectMapRecord_CMSSW_15_0_0_pre2_split_99.root testGlobalObjectMapRecord_CMSSW_15_0_0_pre2_split_0.root" | ||
#for file in $oldFiles; do | ||
# inputfile=$(edmFileInPath DataFormats/L1TGlobal/data/$file) || die "Failure edmFileInPath DataFormats/L1TGlobal/data/$file" $? | ||
# cmsRun ${LOCAL_TEST_DIR}/test_readGlobalObjectMapRecord_cfg.py --inputFileName "$inputfile" --globalObjectMapClassVersion 11 || die "Failed to read old file $file" $? | ||
#done | ||
|
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 part could be removed. It is supposed to be un-commented once new files are added to cms-data
with the first (pre-)release built after this PR is merged (CMSSW_15_0_0_pre2
, if one is optimistic).
Moving to draft while I try to implement a couple of improvements [1] [2]. In the meantime, the PR could be tested nonetheless, to see if there are any unexpected problems. [1] |
052da05
to
ba11d70
Compare
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47030/43152
|
Pull request #47030 was updated. |
The latest push (ba11d70) contains the following updates.
The description has been updated accordingly. ba11d70 passes the validation given in the PR description. 'Draft mode' removed. This PR is ready for review (I don't have further updates planned for it at the moment). |
@cmsbuild, please test |
+1 Size: This PR adds an extra 16KB to repository Comparison SummarySummary:
|
The DQM bin-by-bin comparisons of wf As for the other workflows, I don't see any DQM bin-by-bin differences that could be related to this PR. [1]
|
PR description:
#44940 was solved with a workaround, but it exposed a shortcoming of the L1T-emulation software, namely the fact that the
GlobalObjectMap
data format does not keep track of the BX values of the L1T objects firing a given L1T algorithm. At HLT, one instance ofGlobalObjectMap(Record)
is produced by running the emulation of the L1uGT (plugin:L1TGlobalProducer
) in order to know the indices of the L1T objects that fired a given L1T algorithm. The main consumers of this information at HLT are the many instances of theHLTL1TSeed
plugin, which add these L1T objects to the Event viatrigger::TriggerFilterObjectWithRefs
. SinceGlobalObjectMap
does not provide BX info,HLTL1TSeed
currently assumes that all these indices refer to L1T objects in BX=0. This assumption is most often correct, because almost all L1T algorithms use only L1T objects assigned to BX=0. On the other hand, L1T algorithms using objects from different BXs do exist (e.g. Cosmics-During-Collisions triggers), and in that case said assumption fails (for more context, see #44940 (comment), CMSHLT-3216 and CMSHLT-3218).This PR aims to add BX info to the
GlobalObjectMap
, as a way to fully address the problem described above. The risk/reward ratio of this PR is arguably high: the problem in question has fairly minor consequences in the current HLT menu (only 1 seed is affected), while this PR touches heavily the L1uGT-emulation software, incl. a data format used in RAW data, requiring careful review and validation.Short description of the changes in this PR.
GlobalObjectMap
data format (nested vector ofint
s holding the indices of L1T objects) is replaced with a nested vector ofbx:index
pairs; backward compatibility with older version of this class is maintained via aniorule
inclasses_def.xml
. The unit test introduced in Add unit test for GlobalObjectMapRecord format #41565 is updated accordingly (if this PR is merged, there will have to be a follow-up PR to add tocms-data
a new version of the unit-test input files).ConditionEvaluation
) are updated in order to propagate downstream the BX values of the relevant L1T objects. This is done by changing the current vector of indices to a vector ofbx:index
pairs (these classes do not correspond to persistent data formats).HLTL1TSeed
is updated to make use of the BX value of the L1T objects, without assuming said BX to be zero. There is one exception to the latter point: in the case where theGlobalObjectMap
used byHLTL1TSeed
does not contain BX info (which can happen if one reads aGlobalObjectMap
object directly from a file written before this PR),HLTL1TSeed
will assumes that the BX is 0 (as it does now, in the absence of any alternatives). I do not know of any production workflows that rely on reading aGlobalObjectMap
object from older files, so this exception should apply only in very rare cases (if at all).PR validation:
addOnTests.py
,runTheMatrix.py -l 12834.0
and the unit tests of the affected packages passed.a) Expected output for the problematic event in #44940. Using [1] with this PR, I see that the module
hltL1sCDC
adds the expected 2 muons to the Event (one from BX=-1, and one from BX=0); see the printout below, to be compared to the one in #44940 (comment).b) Revert of #46026: running [1] in
CMSSW_15_0_0_pre1
, I see that the emulated decision of the CDC seedL1_CDC_SingleMu_3_er1p2_TOP120_DPHI2p618_3p142
from the object-map used at HLT isfalse
and disagrees with the 'firmware' decision in data (which istrue
). Reverting #46026 fixes this disagreement.c) Using the test in [2], one can verify that the TriggerObjects in
trigger::TriggerEvent
are exactly the same before and after this PR, except for the expected difference related to the CDC seed. It's worth noting that this test is limited to the pp menu and 200 input events.[1] Updated version of the test in #44940 (comment) on 1 event where the CDC seed fired during data-taking.
[2] Test running the latest HLT pp menu on 200 events of 2024 HLTPhysics data.
If this PR is a backport, please specify the original PR and why you need to backport that PR. If this PR will be backported, please specify to which release cycle the backport is meant for:
N/A
If there is agreement on reverting #46026, that revert should arguably be backported to
CMSSW_14_2_X
.