[ATR-21897] Chain Multiplicity to JSON for use offline
This MR adds per-leg multiplicity data to the menu JSON
Example entry
"HLT_mu24_2mu4noL1_L1MU20": {
"counter": 37,
"nameHash": 3233544630,
"legMultiplicities": [
1,
2
],
"l1item": "L1_MU20",
"l1thresholds": [
"MU20",
"FSNOSEED"
],
"groups": [
"RATE:MultiMuon",
"BW:Muon"
],
"streams": [
"Main"
],
"sequencers": [
"Step1_merged_1mufast_EmptySeq1_1mufast_leg0",
"Step2_merged_1muComb_EmptySeq2_1muComb_leg0",
"Step3_merged_1muEFSA_EmptySeq3_1muEFSA_leg0",
"Step4_merged_1EFCB_EmptySeq4_1EFCB_leg0",
"Step5_merged_1EFCB_EmptySeq4_1EFCB_leg0_EmptyMuonAlign1_merged_EmptySeq1_NFSmuEFSA_leg1_NFSmuEFSA",
"Step6_merged_EmptySeq1_NFSmuEFSA_leg1_NFSmuEFSA",
"Step7_merged_EmptySeq2_NFSmuEFCB_leg1_NFSmuEFCB"
]
},
The TDT consumes this info. If the user requests features from HLT_mu24_2mu4noL1_L1MU20
, the TDT sees multiplicities.size() == 2
and interprets this as a request to collect features for both leg000_HLT_mu24_2mu4noL1_L1MU20
and leg001_HLT_mu24_2mu4noL1_L1MU20
from the navigation graph.
At present, only the size of the multiplicity vector is used. Not the fact that this chain requires >=1
on its first leg and >=2
on its second leg. These per-leg data will be used in a future update to generate combinations over the features.
An update will be needed once Jet+Bjet chains are working. The data we want to export here is the final multiplicity, at the end of the chain's processing.
Note: Marking WIP as this builds on top of (and currently shows all the changes of !37603 (merged))
Note: As the TDT uses the legacy interface, I added a method into the legacy interface to fetch these multiplicity data to simplify things. Rather than updating the TDT to switch to the new interface (not a small task)
This is the second half of the updates needed to do offline feature matching (cc @jburr)