Running HLT2 on the MooreOnline testbench hits empty vertex container exception
Can be reproduced by running
MooreOnline/run MooreOnline/MooreScripts/scripts/testbench.py MooreOnline/MooreScripts/tests/options/HLT2/Arch.xml --working-dir ./test_hlt2_2024 --data-dir /calib/online/tmpHlt1Dumps/LHCb/0000289077 --hlt-type hlt2_pp_2024 --measure-throughput 30
Depending on the set of streams enabled in the HLT2 seetings, different combiners/filters hit
Sel::calculateBestVertex : Empty vertex container passed to Sel::calculateBestVertex()
This should never happen, because all lines which cut on BPV related quantities (IPCHI2 etc.) are protected by require_pvs
which explicitly checks that the vertex container is not empty; and some other lines do not request any PV related quantities.
The problem has two distinct aspects:
- the code calling
calculateBestVertex()
should always check that the vertices are not empty and handle it vianullptr
/optional
when they are - something calls the PV->particle association when it's either not allowed because there's no PVs or there's a bug in the way it's determined whether it's allowed
The minimal amount of streams with which I wass able to reproduce the problem is TURCAL + HLT2CALIB and TURBO + HLT2CALIB.
List of lines not requiring PVs
(SMOG lines have a separate filter on PVs)
- Hlt2QEE_SingleHighPtMuonFull does not request PVs!
- Hlt2QEE_SingleHighPtMuonPrescaleFull does not request PVs!
- Hlt2QEE_SingleHighPtMuonIsoFull does not request PVs!
- Hlt2QEE_SingleHighPtMuonNoMuIDFull does not request PVs!
- Hlt2QEE_SingleHighPtElectronFull does not request PVs!
- Hlt2QEE_SingleHighPtElectronPrescaleFull does not request PVs!
- Hlt2QEE_SingleHighPtElectronIsoFull does not request PVs!
- Hlt2QEE_SingleVHighPtElectronFull does not request PVs!
- Hlt2QEE_ZToMuMuFull does not request PVs!
- Hlt2QEE_ZToMuMu_SingleNoMuIDFull does not request PVs!
- Hlt2QEE_ZToMuMu_DoubleNoMuIDFull does not request PVs!
- Hlt2QEE_DiMuonSameSignFull does not request PVs!
- Hlt2QEE_ZToEEFull does not request PVs!
- Hlt2QEE_DiElectronSameSignFull does not request PVs!
- Hlt2IFT_SMOG2GECPassthrough does not request PVs!
- Hlt2IFT_SMOG2LumiPassthrough does not request PVs!
- Hlt2IFT_SMOG2MBPassthrough does not request PVs!
- Hlt2RD_JpsiTo4Mu does not request PVs!
- Hlt2RD_UpsilonTo4Mu does not request PVs!
- Hlt2RD_LowMassTo4Mu does not request PVs!
- Hlt2RD_JpsiTo3MuE does not request PVs!
- Hlt2RD_UpsilonTo3MuE does not request PVs!
- Hlt2RD_LowMassTo3MuE does not request PVs!
- Hlt2RD_JpsiTo2Mu2E does not request PVs!
- Hlt2RD_UpsilonTo2Mu2E does not request PVs!
- Hlt2RD_LowMassTo2Mu2E does not request PVs!
- Hlt2RD_JpsiTo2Mup2Em does not request PVs!
- Hlt2RD_UpsilonTo2Mup2Em does not request PVs!
- Hlt2RD_LowMassTo2Mup2Em does not request PVs!
- Hlt2RD_JpsiToMu3E does not request PVs!
- Hlt2RD_UpsilonToMu3E does not request PVs!
- Hlt2RD_LowMassToMu3E does not request PVs!
- Hlt2RD_JpsiTo4E does not request PVs!
- Hlt2RD_Psi2SToJpsiPiPi_JpsiTo4Mu does not request PVs!
- Hlt2RD_Psi2SToJpsiPiPi_JpsiTo2Mu2E does not request PVs!
- Hlt2RD_Psi2SToJpsiPiPi_JpsiTo3MuE does not request PVs!
- Hlt2RD_Psi2SToJpsiPiPi_JpsiTo2Mup2Em does not request PVs!
- Hlt2RD_Psi2SToJpsiPiPi_JpsiToMu3E does not request PVs!
- Hlt2RD_Psi2SToJpsiPiPi_JpsiTo4E does not request PVs!
- Hlt2QEE_ALPsToGammaGamma does not request PVs!
- Hlt2TrackEff_ZToMuMu_VeloMuon_mup_Tag does not request PVs!
- Hlt2TrackEff_ZToMuMu_VeloMuon_mup_Match does not request PVs!
- Hlt2TrackEff_ZToMuMu_VeloMuon_mum_Tag does not request PVs!
- Hlt2TrackEff_ZToMuMu_VeloMuon_mum_Match does not request PVs!
- Hlt2TrackEff_ZToMuMu_SeedMuon_mup_Tag does not request PVs!
- Hlt2TrackEff_ZToMuMu_SeedMuon_mup_Match does not request PVs!
- Hlt2TrackEff_ZToMuMu_SeedMuon_mum_Tag does not request PVs!
- Hlt2TrackEff_ZToMuMu_SeedMuon_mum_Match does not request PVs!
- Hlt2MonitoringPi0 does not request PVs!
- Hlt2LumiCounters does not request PVs!
- Hlt2LumiDefaultRawBanks does not request PVs!
- Hlt2LumiCalibration does not request PVs!
- Hlt2NoBias_NoBias does not request PVs!
- Hlt2Calib_VeloNoise does not request PVs!
- Hlt2Calib_VeloTomography does not request PVs!
- Hlt2Calib_TAE does not request PVs!
- Hlt2Calib_BeamGas does not request PVs!