Skip to content

Simplified menu for Phase-2 High Level Trigger Upgrade

To run on the Spring24 samples (use CMSSW_14_2_0_pre1 or later)

Setup

  1. 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
    

  2. Compile:

    1
    scram b -j 8
    

Running the simplified menu

To set up the working area, follow the instructions above.

  1. Rerun L1 (from the L1T Phase 2 instructions with adapted inputCommands and outputCommands):

     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
    

  2. 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:

  1. Install the timing repository (it must be done on lxplus8). You can also check out the corresponding twiki.

  2. 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
    

  3. 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={}
    
    1
    edmConfigDump HLTPhase2_timing.py > HLTPhase2_timing_cff.py
    

  4. 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
    

  5. NOTE: An area-less job can be submitted with a simpler command (from outside the CMSSW environment):

    1
    python3 submit.py cmsDriver::L1P2GT,HLT:75e33_timing --cmssw 14_2_0_pre1  [sample-specific arguments]
    

    Then, additional customisations can be applied with the --customise command argument, code lines can be appended to the default HLT menu configuration with the --append-code command argument and pull requests can be merged in the base release with the --pull-requests command argument.

  6. 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

  1. 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
    

  2. 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
    

  3. (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
    

  4. 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
    

  5. Execute the above config:

    1
    cmsRun rerunL1_only_cfg.py
    

Run HLT

  1. 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
    

  2. 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
    

  3. Execute the above config:

    1
    cmsRun Phase2_HLT.py
    

Run HLT timing

  1. 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
git cms-merge-topic 42935

  1. Execute the above config:
    1
    cmsRun 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
process.siPixelClusters.ElectronPerADCGain = cms.double(1500.0)
process.siPixelClusters.Phase2DigiBaseline = cms.double(1000.0)
process.siPixelClusters.Phase2ReadoutMode = cms.int32(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: