Use rawbank views for sprucing
To go with DaVinci!618 (merged), MooreAnalysis!65 (merged), LHCb!3303 (merged)
Make Sprucing use RawBank::View to access persistreco objects rawbanks from previous passes
Motivation
This is a move towards the extensive use of "views" which will allow the Sprucing AND HLT2 to customise which rawbanks get persisted in a NEW RawEvent without mutilating the input RawEvent by using eg. BankKillers
Sprucing will now have a new RawEvent "Event/{stream}" where "stream"=default if none given and will not rely on the "DAQ/RawEvent"
This functionality does not exist for HLT2 yet either, customisation of which raw banks are output only appears to work when you use Brunel MC input with input_raw_format = 4.3. Running HLT1->HLT2 where input_raw_format = 0.3 means everything is in /DAQ/RawEvent and you cannot customise which (detector for instance) rawbanks are persisted
https://gitlab.cern.ch/lhcb-dpa/project/-/issues/124
Whats changed
Hlt/Moore/python/Moore/lines.py
- Creation of
PassLinewhich inherits fromSpruceLinefor pass-through Tesla like functionality. Makesconfig.pycleaner -
PassLineonly takeshlt2_filter_codeto allow streaming
Hlt/Moore/python/Moore/persistence/serialisation.py
- HLT2 and Sprucing now need access to the
DstDataRawEvent and View respectively. By returning theHltPackedDataWriterobject we can now specify which we want inconfig.py
Hlt/Moore/python/Moore/config.py
-
processis now either 'hlt{1,2}', 'spruce' or 'pass' as there is now aPassLineobject. This enabled some simplifying ofreport_writers_node - Note a 'pass' process will also create a Spruce DecReport
- For 'spruce' and 'pass'
LHCb__UnpackRawEventunpacks all possible rawbanks from previous passes to RawBank::Views. This alg is prepended tomoore_children -
new_hlt_banks['DstData']now takes either theHltPackedDataWriterRawEvent or View for HLT2 and Sprucing respectively. See description ofserialisation.py - Same for
new_hlt_banks['HltDecReports']andnew_hlt_banks['SpruceDecReports']which take the "OutputRawEvent" or "OutputView" ofHltDecReportsWriterrespectively - No need for
bankkilleranymore :) - Changed logic of
stream_writerso that the locations created during the job can be treated differently to the locations to persist from the previous pass -new_locationsandpersist_locationsrespectively. - Moved some configuration of these locations from
moore_control_flowtostream_writer - Sprucing uses
CombineRawBankViewsToRawEventto put Views ofnew_locationsandpersist_locationsinto new RawEvent
Hlt/Moore/python/Moore/tcks.py
- Now grabs
Hlt1SelectionIDavaliable if HLT2 is run withallen_hlt1=True
Created Sprucing and Streaming folders for qmt tests and options
- Big tidy up and consolidation of some testing scripts