This framework is created to check the NPS HLT rates. It uses the OMSRatesNtuples from STEAM Group to do rate checks between various stages, and plots groups of triggers all in the same location.
The required packages for the Jupyter Notebook is given in the requirements.txt file.
pip3 install -r requirements.txt
For the lxplus, you need to create a new CMSSW (14_X_X or later)
mkdir NPSTrigger
cd NPSTrigger/
cmsrel CMSSW_14_0_4
cd CMSSW_14_0_4/src
cmsenv
Then, pull the framework from github:
git config --global user.name <yourUserName>
git config --global user.email <yourEmailAddress>
git config --global http.emptyAuth true
unset SSH_ASKPASS
git clone --recursive https://github.com/asimsek/NPSTriggerAnalysis
cd NPSTriggerAnalysis/
The most recent set of OMSRatesNtuples can be found here:
/eos/cms/store/group/tsg/STEAM/OMSRateNtuple/2024_physics_merged_final.root
/eos/user/s/sdonato/www/OMSRatesNtuple/OMSRatesNtuple/OMS_ntuplizer/2025_physics_merged.root
The trigger groups are defined in a json file: triggerNames.json.
Run number is given to the framework and it can be found by looking at OMS and PdmVRun3Analysis. Please select the run number with the highest statistics, taking into account the different eras and interventions. Also, Make sure select the runs which has a similar amount of deadtime. For more, see 2024 Golden JSON and OMS HLT Trigger Rates.
Once you have defined your eras, run the rateAnalysis.py script to generate the plots.
NPS-Only Triggers:
python3 rateAnalysis.py jsonFiles/triggerLists/2025/triggerNames_NPSOnly.json jsonFiles/eras/2025/eraRate.json plots/2025/NPSOnly_Sept2025 rootFiles/inputFiles.txt
python3 rateAnalysis.py jsonFiles/triggerLists/2024/triggerNames_NPSOnly.json jsonFiles/eras/2024/eraRate.json plots/2024/NPSOnly_Dec2024 /eos/cms/store/group/tsg/STEAM/OMSRateNtuple/2024/physics.root
Similarly to produce the trigger rate plots run the rateMonitoring.py script to generate the plots.
NPS-Only Triggers:
python3 rateMonitoring.py jsonFiles/triggerLists/2025/triggerNames_NPSOnly.json jsonFiles/eras/2025/eraMonitoring.txt plots/2025/NPSOnly_Sept2025 rootFiles/inputFiles.txt --l1seed
python3 rateMonitoring.py jsonFiles/triggerLists/2024/triggerNames_SUSOnly.json jsonFiles/eras/2024/eraMonitoring.txt plots/2024/NPSOnly_Dec2024 /eos/cms/store/group/tsg/STEAM/OMSRateNtuple/2024/physics.root --l1seed
More options for rateMonitoring.py:
--l1seed: Generate L1-seed trigger dictionary and run additional monitoring
--gRun: Regenerate GRun.csv (requires --l1seed) before extracting seeds
--noHLT: No HLT monitoring
If you require to filter trigger paths, find full trigger names in NPS Trigger Review 2023 and/or NPS Trigger Group Twiki Page - NPS triggers.