-
Notifications
You must be signed in to change notification settings - Fork 27
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
HLT/L1T Interface Update #103
Comments
Martin points me to the main HLT code needing an update: |
Just merged the packer/unpacker code from GT into the dev recipe branch and it seems to work. So ready to update L1Repack. Also started updating the HLT filter which selects the seeds which fired specified L1 triggers. Decided that for pass1 the updated module will simply provide all the L1 trigger seeds without selecting based on what trigger was passed. Then, once we have the replacement for L1GtUtils working, we'll extend the HLT filter to use it. There's one additional layer of parsing that handles making arbitrary combinations of L1 trigger bits, but I think that can be recycled from the legacy system. |
I have a new HLT filter for HLTL1TSeed to replace HLTLevel1GTSeed. At the moment it still doesn't do much except not die. This lets me see what else is downstream that depends on l1extra. The list is fortunately not as long as I feared:
also I simply removed for now the "HLTLevel1Activity.cc" module. With all of these modules crippled to stop consuming l1extra and output empty collections, the HLT step now runs in standard sequences. I looked into these producers except HLTLevel1Activity and we should be able to just switch in the new formats. So total tally I can see is one module completely rewritten (first pass almost done) and 5 modules need to modified once this is complete. |
Oooof... I hope this is close to bottoming out: I still keep finding more changes needed. It seems we haven't hooked up BxVector to work with edm::Ref yet. This functionality is definitely needed to play nice with HLT. |
BxVector is fixed to work with edm::Ref now... |
@rekovic this should be a good start, I'll start a topic branch that includes my recent progress. |
@mulhearn Lets do it. |
I got a bunch of core dumps while debugging this... I changed all the build files which I don't want to push but I think the correct recipe to just do this centrally is to edit the file:
to include:
and this option will applied globally to all checked out packages. |
I believe one of the problem spots is here:
which I started but didn't finish debugging:
|
Leaving out of branch some changes I made to these files, where were just to shut them up by commenting out everything...
|
The initial comment on this githup issue has been updated to include the recipe for compiling and running the new topic branch, and summary of status. |
In DataFormats/HLTReco/interface/TriggerRefsCollections.h
Need to add methods for l1t::Egamma, l1t::Jet, l1t::Tau, l1t::EtSum |
That'll do it! |
Made changes to extend functionality. Apart from l1t::Muon, we now have: When putting above l1t candidates for HLT seeds, I used the existing HLT trigger types respectively: // Example For EGamma Not sure if this OK. Need to check with with M.Gruenwald or A.Bocci. If compiled with
running the test job
gives output log files critical.log and detailedInfo.log. |
Andrea provides a useful set of questions to help organize this effort:
|
Please see also cms-sw#12994 for commit 78550a4 and e8d283c which provide the new HLT enums. |
Answer to Andrea point 4 is we definitely will provide a module that replaces L1ExtraProducer with something that outputs Legacy/Stage-1 output in the upgrade formats. |
Q: summarise the changes to the L1 software with respect to Legacy / Stage 1 Emulator Changes Almost the entire L1T emulation sequence has been replaced for Simply calls the subsytem scripts here (that contain all the details): https://github.com/cms-l1t-offline/cmssw/blob/l1t-integration-pass3-80x/L1Trigger/L1TGlobal/python/simDigis_cff.py The most important module for HLT will be this one: The upgrade GT emulator, which you will need to re-emulate in order to This new module of course retrieves new inputs, so there are For re-emulating L1TGlobal you will need to unpack "caloStage2Digis + gmtStage2Digis". L1T OBJECT CLASSES What are the inputs to L1TGlobal? They are BX vectors (std::vectors that provide per bx iterators, bx=0 corresponding to the trigger bx) of upgrade format L1T objects: EGamma, Tau, Jet, EtSum, Muon:
Unlike the legacy system, where a separate step was needed to convert Note in particular, that the L1Candidate is a reco::LeafCandidate, so in most cases the L1Candidates will be a drop in replacement for the legacy (deprecated) L1Extra Particle class. If you need object specific quanities (e.g. Muon quality) they are via the object dependent derived classes: https://github.com/cms-l1t-offline/cmssw/blob/l1t-integration-pass3-80x/DataFormats/L1Trigger/interface/Jet.h The BX vector class is here: but note that L1 Seeds are provided to you in the same manner as for the legacy system, as std::vectors of edm::Ref to the objects (e.g. std::vector< edm::Refl1t::Jet >. Again, since this is essentially std::vector<edm::Ref< DERIVED FROM reco::LeafCandidate> > exactly as for legacy system, in most usage cases, the seeds should be a drop in replacement. GLOBAL TRIGGER OUTPUT What does this new L1TGlobal emulator produce? GlobalAlgBlkBxCollection NEW Which are all defined here: https://github.com/cms-l1t-offline/cmssw/blob/l1t-integration-pass3-80x/DataFormats/L1TGlobal/interface/GlobalExtBlk.h The first two objects are the replacement for the legacy The L1GlobalTriggerObjectMapRecord is the same format as for legacy, CONDITION FORMATS How are the conditions for the new L1TGlobal set? At the version of the code you will be give, these are all set via There is meanwhile an intense effort to provide updated CondFormats and see the eventual CondFormat objects here: |
Q: identify all CMSSW modules used at HLT that need to be updated Scale of Problem Ooof. I'm not sure I can give a complete answer, since I only know However, I did do a simple test where I quieted all modules in HLTrigger/Muon/src/HLTMuonL1Filter.cc which a quick scanned looked like its a matter of replacing l1Extra HLTLevel1Activity.cc Comparing with your list, I see that my simple test did not catch HLTEcalRecHitInAllL1RegionsProducer HLTL1TSeed This is the main guy. This is intented as a drop in replacement for The module takes the upgrade inputs and provides the list of L1T seeds There is only one major caveat: the v1.0 of this module provides all L1TGlobalAnalyzer This module: provides the functionality of the: https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideL1TriggerL1GtUtils but is not yet a drop-in replacement. Note that the new version will not rely on conditions at the time of This functionality is not used directly by HLT so hasn't been |
Q: identify all other CMSSW modules NOT used at HLT that need to be updated, rewritten, or replaced with new modules I guess the main one here is the replacement for L1GtUtils which has widespread use in CMSSW. Not sure yet what else remains on this list. We'll see which workflows downstream of HLT break once we have that working. Q: identify the dependencies and priorities for the changes Punting on this until we talk. I believe we've provided v1.0 of the most important module (HLTL1TSeed) but I don't know how to prioritize the remaining steps. |
Q: Legacy vs. Stage 2 software One last thing to consider is how the HLT modules should deal with the Legacy/Stage 1 vs. the Stage 2 software, as in principle, we may need to be able to run both in parallel.
ANSWER: I infinitely prefer option 2. We'll provide a replacement for L1ExtraProducer which converts legacy objects into upgrade format, so that HLT can use the same interface for legacy system after the code updates. There is some complication here in that the legacy objects are broken into different number of collections (e.g. isoTaus and non-iso Taus, compared to upgrade, which simply has Taus.) This has consequences for interpreting the L1TObjectMap... |
Need to check functionality of TriggerReportSummary, as suggested by Martin G. |
Hi, I meant the trigger summary producers (which also pack up the L1 collections, and "passing object" indices per L1GTseed filter): |
The dev branch for L1TGlobal development with the utm library is here (for reference): |
Working note: I have got the HLTL1TSeed module to access L1GlobalTriggerObjectMapRecord, In Legacy L1/HLT interface one does need to be able to get the L1TriggerMenu from the EventSetup.
which are then used to retrieve the GT decision bitNumbers for all seeding conditions. In the method seedsL1TriggerObjectMaps(....) there is a second update of m_l1AlgoLogicParser. So, bottom line is, at the moment I need to access the L1TriggerMenu and GT decisonWord (i.e. L1GlobalTriggerReadoutRecord) to be able to continue. |
@rekovic , don't you have all the necessary information and code available in the branch https://github.com/cms-l1t-offline/cmssw/tree/l1t-global-jan-dev-CMSSW_8_0_0_pre4 ? |
That relies on utm being installed... and there's some integration work needed, but in principle, yes. |
The new conditions we'll eventually have in event setup (based on UTM library) are here: You can see this parallels the structure of the old TriggerMenu, but the low-level fields are slightly different. So the GtParser will need a corresponding update too. |
Perhaps this is known, but as I mentioned in the L1 meeting on Tuesday. -Brian On Thu, Jan 28, 2016 at 6:36 AM, mulhearn [email protected] wrote:
|
Let's chat if possible... |
Actually, I don't see "L1_AlwaysTrue" is not in the
L1Menu_Collisions2016_dev_v2.xml menu.
|
A segmentation fault was reported when running over the v3 menu, see I found out that the problem was there because candEtSumVec was never instantiated in L1TGlobal/src/CorrCondition.cc Could you please check the fix proposed in Thank you, |
Yes this is the basic fix. We would like to be a little careful about -Brian On Tue, Mar 22, 2016 at 10:26 AM, perrotta [email protected] wrote:
B. Winer |
@blwiner Just make a PR to l1t-integration-CMSSW_8_0_2 and I will propagate the fix to 80X and 81X. |
OK thanks. PR will come from Darren -Brian On Tue, Mar 22, 2016 at 10:34 AM, rekovic [email protected] wrote:
B. Winer |
For L1T legacy/stage-1, we used the helper class L1GtUtils to access the current prescale set index and also the L1T prescales per algorithm, etc. This class or a pointer to it is usually embedded |
@rekovic |
@Martin-Grunewald Please use PR cms-sw#13809 (80x) and PR cms-sw#13808 (81x). |
Checking the full testing recipe process.StableParameters.NumberConditionChips = 3 process.StableParameters.OrderConditionChip = [ 3, 2, 1 ] to get rid of the error messages from TriggerObjectMap for bits >=192, which should have been fixed with cms-sw#13780 %MSG-e L1GlobalTriggerObjectMapRecord: HLTL1TSeed:hltL1sETT15BptxAND 23-Mar-2016 01:16:27 CET Run: 256677 Event: 397040194 ERROR: The requested algorithm name = L1_ETT15_BptxAND does not exist in the trigger menu. Returning zero pointer for getObjectMap. %MSG %MSG-w HLTL1TSeed: HLTL1TSeed:hltL1sETT15BptxAND 23-Mar-2016 01:16:27 CET Run: 256677 Event: 397040194 Warning: seed with name L1_ETT15_BptxAND cannot be matched to a L1 algo name in any L1GlobalTriggerObjectMap %MSG cms-sw#13780 alone indeed does fixe the above problem in our simple HLT-like test @Martin-Grunewald I am making a PR for it immediately since the above changes were shown to make |
Hmmmm....The changes made in the L1Trigger/L1TGlobal/python/StableParameters_cff.py seem not to have an affect when running HLT step 2. (PRs were made from scratch and compiled.) Adding changes directly to the HLT step 2 configuration does have an affect!! Strange! Adding either the changes suggested in PR cms-sw#13780 process.StableParameters.NumberConditionChips = 1 process.StableParameters.OrderConditionChip = [1] process.StableParameters.PinsOnConditionChip = 512 or process.StableParameters.NumberConditionChips = 3 process.StableParameters.OrderConditionChip = [ 3, 2, 1 ] fixes it. |
The HLT menu includes its own copy of the StableParameters module, and does not read it from the release. |
@fwyzard Thanks, I see it now. Its configuration in the HLT menu is obsolete, in which case either of the two config changes to it can/need to be made. To be consistent with cms-sw#13780, we should probably have it updated with process.StableParameters.NumberConditionChips = 1 process.StableParameters.OrderConditionChip = [1] process.StableParameters.PinsOnConditionChip = 512 |
This is in ConfDB since /dev/CMSSW_8_0_0/HLT/V65 so will eventually make it out! |
@Martin-Grunewald OK. Thanks! |
Thanks and best regards Martin |
This development is available in l1t-integration-v19.2.
Will make updates for the above three issues and make a PR to CMSSW 81x. |
@rekovic |
@Martin-Grunewald Ok, yes, and for 80x. |
@rekovic |
@mulhearn @rekovic
|
|
|
Yes (the second item) L1GtUtils - it is a purely helper class for the user to get to the prescale set number and the actual prescale for some L1T algo. I am trying to make L1TGlobalUtil useable |
If you can make L1TGlobalUtils provide the info you need in present state, we can handle the update to use the DB. Or if you prefer, you can write up the hooks you would like implemented in L1TGlobalUtil. Originally, I planned to remove the dependence on conditions for this information, by recording it the Run record. We could still do this, but if so, we'll preserve the L1TGlobalUtil interface. Sound reasonable? |
OK, yes! |
In our development branch, we've already switched to getting prescales via On Fri, Apr 29, 2016 at 11:36 AM, Martin Grunewald <[email protected]
|
Have a look at (and sign) cms-sw#14312 |
We are deprecating L1Extra for Stage-2. This requires updates to the HLT/L1T interface.
The topic branch for this issue is here:
https://github.com/cms-l1t-offline/cmssw/tree/l1t-hlt-dev-CMSSW_8_0_0_pre4
The testing recipe is:
Currently the main changes are to
The test code runs L1T and the new HLT module, however, including the module in standard HLT sequences still leads to crashes.
The text was updated successfully, but these errors were encountered: