Simplified menu for Phase-2 High Level Trigger Upgrade
To run on the Spring24 samples (use CMSSW_14_2_0_pre1 or later)
Setup
-
To set up the work area:
1 2 3 4
cmsrel CMSSW_15_1_0_pre4 cd CMSSW_15_1_0_pre4/src cmsenv git cms-init -
Compile:
1scram b -j 8
Running the simplified menu
To set up the working area, follow the instructions above.
-
Rerun L1 (from the L1T Phase 2 instructions with adapted
inputCommandsandoutputCommands):1 2 3 4 5 6 7 8 9 10 11 12 13 14
cmsDriver.py Phase2 -s L1,L1TrackTrigger \ --conditions auto:phase2_realistic_T33 \ --geometry ExtendedRun4D110 \ --era Phase2C17I13M9 \ --eventcontent FEVTDEBUGHLT \ --datatier GEN-SIM-DIGI-RAW-MINIAOD \ --customise SLHCUpgradeSimulations/Configuration/aging.customise_aging_1000,Configuration/DataProcessing/Utils.addMonitoring,L1Trigger/Configuration/customisePhase2FEVTDEBUGHLT.customisePhase2FEVTDEBUGHLT,L1Trigger/Configuration/customisePhase2TTOn110.customisePhase2TTOn110 \ --filein /store/mc/Phase2Spring24DIGIRECOMiniAOD/TT_TuneCP5_14TeV-powheg-pythia8/GEN-SIM-DIGI-RAW-MINIAOD/PU200_AllTP_140X_mcRun4_realistic_v4-v1/2560000/11d1f6f0-5f03-421e-90c7-b5815197fc85.root \ --fileout file:output_Phase2_L1T.root \ --python_filename rerunL1_cfg.py \ --inputCommands="keep *, drop l1tPFJets_*_*_*, drop l1tTrackerMuons_l1tTkMuonsGmt*_*_HLT" \ --outputCommands="drop l1tTrackerMuons_l1tTkMuonsGmt*_*_HLT" \ --mc \ -n 1 --nThreads 1 -
Run the L1 emulator and HLT on top of the previous output:
1 2 3 4 5 6 7 8 9 10
cmsDriver.py Phase2 -s L1P2GT,HLT:75e33 --processName=HLTX \ --conditions auto:phase2_realistic_T33 \ --geometry ExtendedRun4D110 \ --era Phase2C17I13M9 \ --eventcontent FEVTDEBUGHLT \ --customise SLHCUpgradeSimulations/Configuration/aging.customise_aging_1000 \ --filein file:output_Phase2_L1T.root \ --inputCommands='keep *, drop *_hlt*_*_HLT, drop triggerTriggerFilterObjectWithRefs_l1t*_*_HLT' \ --mc \ -n 1 --nThreads 1
Timing
To set up the working area, follow the instructions above.
Running a timing measurement locally on lxplus is not meaningful and the appropriate timing machine must be used. To run a measurement for the phase2 menu:
-
Install the timing repository (it must be done on lxplus8). You can also check out the corresponding twiki.
-
Checkout the samples available on the timing server and the available options:
1 2
python3 timing/submit.py --show-samples python3 timing/submit.py --help -
Use the following command to generate an hlt configuration python file (notice the change in the steps and the output with respect to the command in the section above):
1 2 3 4 5 6 7 8 9 10 11
cmsDriver.py Phase2 -s L1P2GT,HLT:75e33_timing --processName=HLTX \ --conditions auto:phase2_realistic_T33 \ --geometry ExtendedRun4D110 \ --era Phase2C17I13M9 \ --eventcontent FEVTDEBUGHLT \ --customise SLHCUpgradeSimulations/Configuration/aging.customise_aging_1000 \ --filein file:dummy.root \ --inputCommands='keep *, drop *_hlt*_*_HLT, drop triggerTriggerFilterObjectWithRefs_l1t*_*_HLT' \ --python_filename HLTPhase2_timing.py \ --mc \ -n 500 --nThreads 1 --no_exec --output={}1edmConfigDump HLTPhase2_timing.py > HLTPhase2_timing_cff.py -
Submit a timing job on the timing machine from a CMSSW environment (area-based submission):
1 2 3 4 5 6 7 8 9
cd $CMSSW_BASE/src cmsenv cd - python3 timing/submit.py \ --ignore-unprescaled-check \ --l1menu sample_L1menu \ --event-type sample_eventtype \ --input-sample sample_name \ HLTPhase2_timing_cff.py -
NOTE: An area-less job can be submitted with a simpler command (from outside the CMSSW environment):
1python3 submit.py cmsDriver::L1P2GT,HLT:75e33_timing --cmssw 14_2_0_pre1 [sample-specific arguments]Then, additional customisations can be applied with the
--customisecommand argument, code lines can be appended to the default HLT menu configuration with the--append-codecommand argument and pull requests can be merged in the base release with the--pull-requestscommand argument. -
Monitor the execution and the results on the web page.
To run on the Spring23 samples
Rerun the L1T sequence following the 13_1_0 recipe
-
Get the branch:
1 2 3 4 5 6 7 8 9
cmsrel CMSSW_13_1_0 cd CMSSW_13_1_0/src/ cmsenv && git cms-init git cms-checkout-topic -u cms-l1t-offline:Phase2_prototypeSnapshot_3_CMSSW_13_1 #Recompiling these avoids a segfault git cms-addpkg L1Trigger/Phase2L1Taus git cms-addpkg HLTrigger/HLTfilters git cms-addpkg DataFormats/HLTReco git cms-addpkg HLTrigger/HLTcore -
Checkout branch with EGamma fixes and compile:
1 2
git cms-merge-topic SohamBhattacharya:test_Phase2-HLT_with_L1T-layer2_13_1_0 scram b -j 8 -
(Optional) If you want muons to get the low pt (<8 GeV) fix (see twiki):
1 2
git cms-merge-topic SohamBhattacharya:test_Phase2-HLT_with_L1T-layer2_l1tTkMuonsGmtLowPtFix_13_1_0 scram b -j 8 -
Run cmsDriver to get the config:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
cmsDriver.py step1 \ --conditions auto:phase2_realistic_T21 \ -n 100 \ --era Phase2C17I13M9 \ --eventcontent FEVTDEBUGHLT \ -s RAW2DIGI,L1:RUNP2GT \ --datatier GEN-SIM-DIGI-RAW-MINIAOD \ --fileout file:output_Phase2_L1T.root \ --customise SLHCUpgradeSimulations/Configuration/aging.customise_aging_1000,Configuration/DataProcessing/Utils.addMonitoring,L1Trigger/Configuration/customisePhase2.addHcalTriggerPrimitives,L1Trigger/Configuration/customisePhase2FEVTDEBUGHLT.customisePhase2FEVTDEBUGHLT \ --geometry Extended2026D95 \ --nThreads 1 \ --filein /store/mc/Phase2Spring23DIGIRECOMiniAOD/TT_TuneCP5_14TeV-powheg-pythia8/GEN-SIM-DIGI-RAW-MINIAOD/noPU_131X_mcRun4_realistic_v5-v1/2520000/00674431-77d6-4dce-9dad-41b6d0ff1d6f.root \ --mc \ --inputCommands='keep *, drop l1tPFJets_*_*_*' \ --outputCommands='keep *P2GT*_*_*_*, drop l1tPFJets_*_*_*' \ --python_filename rerunL1_only_cfg.py \ --no_exec -
Execute the above config:
1cmsRun rerunL1_only_cfg.py
Run HLT
-
If running out-of-the box w/o re-running L1T (see above):
1 2 3 4
cmsrel CMSSW_13_1_0 cd CMSSW_13_1_0/src cmsenv git cms-init -
Run cmsDriver to get the config. If running on top of the L1T output (see above), set
--filein=file:output_Phase2_L1T.root:
1 2 3 4 5 6 7 8 9
cmsDriver.py Phase2 -s HLT:75e33 --processName=HLTX \ --conditions auto:phase2_realistic_T21 \ --geometry Extended2026D95 \ --era Phase2C17I13M9 \ --customise SLHCUpgradeSimulations/Configuration/aging.customise_aging_1000 \ --eventcontent FEVTDEBUGHLT \ --filein=/store/mc/Phase2Spring23DIGIRECOMiniAOD/TT_TuneCP5_14TeV-powheg-pythia8/GEN-SIM-DIGI-RAW-MINIAOD/PU200_Trk1GeV_131X_mcRun4_realistic_v5-v1/30000/01607282-0427-4687-a122-ef0a41220590.root \ --inputCommands='keep *, drop *_hlt*_*_HLT, drop triggerTriggerFilterObjectWithRefs_l1t*_*_HLT' \ -n 100 --nThreads 1 --no_exec -
Execute the above config:
1cmsRun Phase2_HLT.py
Run HLT timing
- If you want to perform some timing measurements, use the following command instead:
1 2 3 4 5 6 7 8 9
cmsDriver.py Phase2 -s HLT:75e33_timing --processName=HLTX \ --conditions auto:phase2_realistic_T21 \ --geometry Extended2026D95 \ --era Phase2C17I13M9 \ --customise SLHCUpgradeSimulations/Configuration/aging.customise_aging_1000 \ --eventcontent FEVTDEBUGHLT \ --filein=/store/mc/Phase2Spring23DIGIRECOMiniAOD/TT_TuneCP5_14TeV-powheg-pythia8/GEN-SIM-DIGI-RAW-MINIAOD/PU200_Trk1GeV_131X_mcRun4_realistic_v5-v1/30000/01607282-0427-4687-a122-ef0a41220590.root \ --inputCommands='keep *, drop *_hlt*_*_HLT, drop triggerTriggerFilterObjectWithRefs_l1t*_*_HLT' \ -n 100 --nThreads 1 --no_exec --output={}
Important: In order to obtain correct and meaningful timing measurements in 13_1_1, you need to add the content of PR 42935. An easy way to do that is:
1 | |
- Execute the above config:
1cmsRun Phase2_HLT.py
To run on the Spring22 samples (with CMSSW release <12_5_X)
To solve a tracking issue, choose one of the options below: - merge this PR - add the following lines to your configuration:
1 2 3 | |
To add TICLv4, follow the instruction given here.
More resources
More info (potentially not up to date!) could be found on the following deprecated twiki pages: