Egamma HLT in CMSSW

Complete: 3

This page is being redesigned for CMSSW_3_X releases. You can find instructions for older releases here

Generalities of HLT in CMSSW_3_X

The High-Level Trigger in recent CMSSW releases is structured in two different "menus", i.e. lists of trigger bit definitions. They are often referred to as "lean" menus because they are only meant to contain the main physics triggers which are essential for the start-up phase of LHC, plus some monitoring inclusive triggers, often prescaled and used only to measure efficiency of the main ones, and back-up triggers, to be activated in place of the main ones, if some sub-detector has problems and/or background rates are too high to be sustained. Express stream (ES) bits are special paths with additional requests w.r.t. a normal physics path, used to retain events with particular physics relevance at a very low rate (1-2 Hz). The two menus are named after the instantaneous LHC luminosities where they are expected to be effective: 8E29 and 1E31. General information about them can be found here.

Egamma Trigger Tables

L1 tables

Only relaxed L1 triggers (i.e. including isolated and non-isolated) are used at the start-up, with no H/E requirement.

L1 Trigger Trigger Name Thresholds (GeV) prescale
L1_SingleEG5 Single EGamma relaxed 5 no
L1_SingleEG8 Single EGamma relaxed 8 no
L1_DoubleEG2 Double EGamma relaxed 2/2 no
L1_DoubleEG5 Double EGamma relaxed 5/5 no

HLT tables for MC

Luminosity: 8E29 cm-2s-1

L1 pass-through triggers

HLT path L1 seeds L1 prescale HLT prescale Trigger Type Availability
HLT_L1SingleEG5 L1_SingleEG5 1 50 Monitoring 3.1.0-pre6, 2.2.6-HLT
HLT_L1SingleEG8 L1_SingleEG8 1 10 Monitoring 3.1.0-pre6, 2.2.6-HLT
HLT_L1DoubleEG5 L1_DoubleEG5 1 5 Monitoring 3.1.0-pre6, 2.2.6-HLT

Electron triggers

HLT path L1 seeds L1 prescale HLT prescale Trigger Type Availability
HLT_Ele10_LW_L1R L1_SingleEG5 1 1 Physics 3.1.0-pre6, 2.2.6-HLT
HLT_Ele10_LW_EleId_L1R L1_SingleEG5 1 1 Backup 3.1.0-pre6, 2.2.6-HLT
HLT_Ele15_LW_L1R L1_SingleEG8 1 1 Backup 3.1.0-pre6, 2.2.6-HLT
HLT_Ele15_SC10_LW_L1R L1_SingleEG8 1 1 ES bit 3.1.0-pre6, 2.2.6-HLT
HLT_Ele20_LW_L1R L1_SingleEG8 1 1 ES bit 3.1.0-pre6, 2.2.6-HLT
HLT_DoubleEle5_SW_L1R L1_DoubleEG5 1 1 Physics 3.1.0-pre6, 2.2.6-HLT
HLT_DoublePhoton5_eeRes_L1R L1_SingleEG8 OR L1_DoubleEG5 1, 1 1 Physics 3.1.0-pre6, 2.2.11-HLT
HLT_DoublePhoton5_Jpsi_L1R L1_SingleEG8 OR L1_DoubleEG5 1, 1 1 Backup 3.1.0-pre6, 2.2.11-HLT
HLT_DoublePhoton5_Upsilon_L1R L1_SingleEG8 OR L1_DoubleEG5 1, 1 1 Backup 3.1.0-pre6, 2.2.11-HLT

Photon triggers

HLT path L1 seeds L1 prescale HLT prescale Trigger Type Availability
HLT_Photon10_L1R L1_SingleEG5 1 25 Monitoring 3.1.0-pre6, 2.2.6-HLT
HLT_Photon15_L1R L1_SingleEG8 1 1 Physics 3.1.0-pre6, 2.2.6-HLT
HLT_Photon15_TrackIso_L1R L1_SingleEG8 1 1 Backup 3.1.0-pre6, 2.2.6-HLT
HLT_Photon15_LooseEcalIso_L1R L1_SingleEG8 1 1 Backup 3.1.0-pre6, 2.2.6-HLT
HLT_Photon20_L1R L1_SingleEG8 1 1 Backup 3.1.0-pre6, 2.2.6-HLT
HLT_Photon30_L1R_8E29 L1_SingleEG8 1 1 ES bit 3.1.0-pre6, 2.2.6-HLT
HLT_DoublePhoton10_L1R L1_DoubleEG5 1 1 Physics 3.1.0-pre6, 2.2.6-HLT

Luminosity: 1E31 cm-2s-1

L1 pass-through triggers

HLT path L1 seeds L1 prescale HLT prescale Trigger Type Availability
HLT_L1SingleEG5 L1_SingleEG5 1 2500 Monitoring 3.1.0-pre6

Electron triggers

HLT path L1 seeds L1 prescale HLT prescale Trigger Type Availability
HLT_Ele10_SW_L1R L1_SingleEG5 1 50 Monitoring 3.1.0-pre6, 2.2.13-HLT
HLT_Ele15_SW_L1R L1_SingleEG8 1 10 Monitoring 3.1.0-pre6, 2.2.13-HLT
HLT_Ele15_SW_LooseTrackIso_L1R L1_SingleEG8 1 1 Physics 3.1.0-pre6, 2.2.13-HLT
HLT_Ele15_SW_EleId_L1R L1_SingleEG8 1 1 Physics 3.1.0-pre8, 2.2.13-HLT
HLT_Ele20_SW_L1R L1_SingleEG8 1 1 Physics 3.1.0-pre6, 2.2.13-HLT
HLT_Ele25_SW_L1R L1_SingleEG8 1 1 Backup 3.1.0-pre6, 2.2.13-HLT
HLT_DoubleEle5_SW_Jpsi_L1R L1_SingleEG8 OR L1_DoubleEG5 1, 1 1 Backup 3.1.0-pre6, 2.2.13-HLT
HLT_DoubleEle5_SW_Upsilon_L1R L1_SingleEG8 OR L1_DoubleEG5 1, 1 1 Backup 3.1.0-pre6, 2.2.13-HLT
HLT_DoubleEle10_SW_L1R L1_DoubleEG5 1 1 Physics 3.1.0-pre6, 2.2.13-HLT
HLT_Ele15_SC15_SW_LooseTrackIso_L1R L1_SingleEG8 1 1 ES bit 3.1.0-pre6, 2.2.13-HLT
HLT_Ele15_SC15_SW_EleId_L1R L1_SingleEG8 1 1 ES bit 3.1.0-pre8, 2.2.13-HLT
HLT_Ele20_SC15_SW_L1R L1_SingleEG8 1 1 ES bit 3.1.0-pre6, 2.2.13-HLT
HLT_Ele25_SW_EleId_LooseTrackIso_L1R L1_SingleEG8 1 1 ES bit 3.1.0-pre8, 2.2.13-HLT

Photon triggers

HLT path L1 seeds L1 prescale HLT prescale Trigger Type Availability
HLT_Photon10_L1R L1_SingleEG5 1 500 Monitoring 3.1.0-pre6, 2.2.13-HLT
HLT_Photon10_LooseEcalIso_TrackIso_L1R L1_SingleEG5 1 100 Monitoring 3.1.0-pre6, 2.2.13-HLT
HLT_Photon15_L1R L1_SingleEG8 1 20 Monitoring 3.1.0-pre6, 2.2.13-HLT
HLT_Photon25_L1R L1_SingleEG8 1 1 Physics 3.1.0-pre6, 2.2.13-HLT
HLT_Photon25_LooseEcalIso_TrackIso_L1R L1_SingleEG8 1 1 Backup 3.1.0-pre6, 2.2.13-HLT
HLT_Photon30_L1R_1E31 L1_SingleEG8 1 1 Backup 3.1.0-pre6, 2.2.13-HLT
HLT_DoublePhoton10_L1R L1_DoubleEG5 1 20 Monitoring 3.1.0-pre6, 2.2.13-HLT
HLT_DoublePhoton15_L1R L1_DoubleEG5 1 1 Physics 3.1.0-pre6, 2.2.13-HLT
HLT_DoublePhoton15_VeryLooseEcalIso_L1R L1_DoubleEG5 1 1 Physics 3.1.0-pre6, 2.2.13-HLT
HLT_Photon70_L1R L1_SingleEG8 1 1 ES bit 3.1.0-pre6, 2.2.13-HLT

HLT tables for real data

Due to rate and dataset size constraints, menus in data are rapidly evolving. Please refer to the FAQs section in order to find updated information on the e-gamma triggers running online.

Naming conventions and cut definitions

  • After first underscore: type of (Single)/Double object and E_T threshold (in GeV) at HLT
  • After second underscore: additional selections.
    • H/E (not specified in the name):
      • Ratio between the HCAL energy deposit in a cone of R < 0.14 and the SC energy
      • Data loose : < 0.15
      • Data tight : < 0.05
    • Electron Pixel-matching windows (LW, SW):
      • LW = large windows (very relaxed values, for the worst-case start-up scenario)
      • SW = small windows (tuned values for optimized W efficiency)
    • Electron Track Isolation (TrackIso):
      • Sum-pT of tracks (with pT > 1.5 GeV/c) inside a hollow cone of 0.02 < R < 0.2 around the electron track
      • MC Loose : [Sum-pT < 8 GeV/c] OR [Sum-pT / pT(electron) < 0.5]
      • Data : [Sum-pT < 7 GeV/c] OR [Sum-pT / pT(electron) < 0.2]
    • Calorimeter-only ID (CaloId) :
      • Cluster shape (Sigma iEta-iEta) only
      • MC : < 0.015 (ECAL barrel); < 0.040 (ECAL endcap)
      • Data loose : < 0.014 (ECAL barrel); < 0.035 (ECAL endcap)
      • Data tight : < 0.012 (ECAL barrel); < 0.032 (ECAL endcap)
    • Track-based Electron ID (EleId) :
      • CaloId plus angular matching between SuperCluster and electron track
      • MC : Deta < 0.008, Dphi < 0.1 (ECAL barrel); Deta < 0.011, Dphi < 0.1 (ECAL endcap)
      • Data : Deta < 0.008, Dphi < 0.1 (ECAL barrel); Deta < 0.011, Dphi not applied (ECAL endcap)
    • Electron pair Invariant Mass (double triggers only) :
      • eeRes = M(ee) > 2.0 GeV
      • Jpsi = 2.0 GeV < M(ee) < 4.5 GeV
      • Upsilon = 8.0 GeV < M(ee) < 11.0 GeV
    • Photon Spike Cleaning (Cleaned):
      • Ratio of energy released in the central crystal of the cluster and itself plus the 8 around it (default) or plus the 4 sharing one side (Swiss cross)
      • Data : < 0.98 (ECAL barrel); not applied (ECAL endcap)
    • Photon ECAL Isolation (EcalIso):
      • "Jurassic" algorithm: Sum of RecHits energy over a region with a defined pattern.
      • MC Loose : [Sum-Energy < 3 GeV] OR [Sum-Energy / E(photon) < 0.1].
      • MC Very Loose : [Sum-Energy < 5 GeV] OR [Sum-Energy / E(photon) < 0.2]
    • Photon Track Isolation (TrackIso):
      • Sum-pT of tracks (with at least 1.5 GeV pT) inside a hollow cone of 0.06 < R < 0.3 around the direction of the photon SC centroid
      • MC : [Sum-pT < 4 GeV] OR [Sum-pT/pT(photon) < 0.05]
      • Data : [Sum-pT < 7 GeV] OR [Sum-pT/pT(photon) < 0.2]
  • After last underscore: L1 seed type (always relaxed in startup menus)

Window values

Large windows:

Variable Minimum Maximum
ePhi1 -0.10 0.05
pPhi1 -0.05 0.10
Phi2 -0.008 0.008
r2 F -0.3 0.3
r2 I -0.2 0.2
z2 B -0.2 0.2

Small windows:

Variable Minimum Maximum
ePhi1 -0.08 0.04
pPhi1 -0.04 0.08
Phi2 -0.004 0.004
r2 F -0.15 0.15
r2 I -0.2 0.2
z2 B -0.09 0.09

Setting up your code area

To run the Egamma HLT follow the instruction to run the global HLT for a given release listed here.

If you want to run only the Egamma HLT paths, you need to check out from CVS the HLTrigger/Configuration package (or addpkg inside a release) and modify one of the following files:

HLTrigger/Configuration/python/HLT_8E29_cff.py       (8E29 menu)
HLTrigger/Configuration/python/HLT_1E31_cff.py       (1E31 menu)
HLTrigger/Configuration/python/HLT_FULL_cff.py       (both menus)

removing from the schedule the unwanted triggers. Also, the PrescaleService (in the same HLT configuration file) needs to be edited to keep only those triggers you wish to run. The list of Egamma triggers to be kept are listed above.

MC validation

See here.

FAQs and useful recipes for analysts

What does an E/gamma HLT path do ?

In short:
2010-12-01-egamma-structure.png

(adapted from a presentation given by Marco Pieri at the November/December 2010 trigger review)

See also modules of two example HLT paths with comments.

What kind of EDFilters are typically used in an Electron path ?

CMSSW class remarks
HLTTriggerTypeFilter requires a physics trigger (as opposed to random or calibration etc. triggers)
HLTLevel1GTSeed requires the presence of the Level 1 seed (Level 1 candidate determined by hardware)
HLTPrescaler HLT prescaling of this path
HLTEgammaL1MatchFilterRegional requires matching of reconstructed superclusters to level 1 seeds (?)
HLTEgammaEtFilter requires a minimum Et on trigger clusters
HLTEgammaGenericFilter used in several places: Δη cut, Δφ cut, super cluster shape cut, HCAL isolation cut, R9 shape cut, H/E cut
HLTElectronPixelMatchFilter checks whether the produced pixel seeds are compatible with a supercluster (??)
HLTElectronOneOEMinusOneOPFilterRegional cutting on 1/E - 1/p and requires that there is a track reconstructed from the available seeds (?)
HLTBool present on ALL HLT paths

See also some example E/gamma paths.

When has a specific trigger path appeared / disappeared / been prescaled etc.?

Make a combined use of:

Example: At which run number did HLT_Photon15_L1R disappear from the online configuration?

  • Have a rough idea of the answer (e.g. around run 140000)
  • In a) choose a run range which contains that run (e.g. 139977-140121)
  • Look at the HLT_KEYS column in the table, searching only for the physics runs (no cosmics, no castor tests... etc.). In this case you will notice two changes:
    • /cdaq/physics/Run2010/v2.3/HLT_8E29_pre3/V2 ---> /cdaq/physics/Run2010/v3.0/HLT_1.6E30_pre3/V1 (run 139982 --> 140042)
    • /cdaq/physics/Run2010/v3.0/HLT_1.6E30_pre3/V1 ---> /cdaq/physics/Run2010/v3.0/HLT_1.6E30/V1 (run 140059 --> 140070)
  • Inspect these menus on b). You will easily see that HLT_Photon15_L1R is present in v2.3/HLT_8E29_pre3/V2 but not in v3.0/HLT_1.6E30_pre3/V1, so the answer is: 140042

What will happen to a specific trigger path in the next future?

  • Go to the TMD planning pages and look for draft tables for in the next luminosity scenario.
  • Click on "show EG"
  • If what's planned there sounds crazy to you, complain to us and TMD representatives (Roberto Rossin, Len Apanasevich), so we can arrange for a better choice.

Retrieving offline the HLT information: Triggers fired per event

This assumes that the HLT code has already processed the sample you want to look at, and that the HLT information was stored (HLTDEBUG-level information is only for experts and is not necessary for the instructions below). The example is taken from the HLTrigger/HLTcore package. The information about a given bit being fired in an event or not are stored in the edm::TriggerResults object. To access it, do:

    edm::Handle<edm::TriggerResults> HLTR;
    event.getByLabel(InputTag("TriggerResults","","HLT"), HLTR);
    HLTConfigProvider hltConfig;

    hltConfig.init("HLT");
    unsigned int triggerIndex( hltConfig.triggerIndex("<a string containing a path name>") );
    bool isFired = false;
    // triggerIndex must be less than the size of HLTR or you get a CMSException: _M_range_check
    if (triggerIndex < HLTR->size()) isFired = HLTR->accept(triggerIndex);
    

Retrieving offline the HLT information: Matching of the HLT candidates with the offline objects

This assumes that the HLT code has already processed the sample you want to look at, and that the HLT information was stored (HLTDEBUG-level information is only for experts and is not necessary for the instructions below). The example is taken from the HLTrigger/HLTcore package. In order to do any matching with an offline object (angular, by momentum ... etc.) it is necessary to retrieve in the event the so-called HLT "L3" object(s) which have caused a given bit to be fired. They are stored in the trigger::TriggerEvent object and can be retrieved via the name of the last filter in a path.

    edm::Handle<trigger::TriggerEvent> trgEvent;
    event.getByLabel(InputTag("hltTriggerSummaryAOD","","HLT"), trgEvent);
    
    myLastFilter = edm::InputTag("<a string containing the name of the last filter from the tables below>","","HLT");
    const TriggerObjectCollection& TOC(trgEvent->getObjects());
    // filterIndex must be less than the size of trgEvent or you get a CMSException: _M_range_check
    if ( trgEvent->filterIndex(myLastFilter) < trgEvent->size() ) {
        const Keys& keys( trgEvent->filterKeys( trgEvent->filterIndex(myLastFilter) ) );

        for ( int hlto = 0; hlto < keys.size(); hlto++ ) {
              size_type hltf = keys[hlto];
              const TriggerObject& L3obj(TOC[hltf]);
              float pL3obj = L3obj.p();              ... etc.
     

The names of last filters are only given in the tables below for physics triggers. Offline analysis should not be based on Monitoring or Backup triggers.

Luminosity: 8E29 cm-2s-1

Trigger Path name Tag for the last filter
HLT_Ele10_LW_L1R hltL1NonIsoHLTNonIsoSingleElectronLWEt10PixelMatchFilter
HLT_DoubleEle5_SW_L1R hltL1NonIsoHLTNonIsoDoubleElectronEt5PixelMatchFilter
HLT_DoublePhoton5_eeRes_L1R hltL1NonIsoDoublePhotonEt5eeResPMMassFilter
HLT_Photon15_L1R hltL1NonIsoHLTNonIsoSinglePhotonEt15HcalIsolFilter
HLT_DoublePhoton10_L1R hltL1NonIsoHLTNonIsoDoublePhotonEt10HcalIsolFilter

Luminosity: 1E31 cm-2s-1

Trigger Path name Tag for the last filter
HLT_Ele15_SW_LooseTrackIso_L1R hltL1NonIsoHLTNonIsoSingleElectronEt15LTITrackIsolFilter
HLT_Ele20_SW_L1R hltL1NonIsoHLTNonIsoSingleElectronEt20PixelMatchFilter
HLT_DoubleEle10_SW_L1R hltL1NonIsoHLTNonIsoDoubleElectronEt10PixelMatchFilter
HLT_Photon20_LooseEcalIso_TrackIso_L1R hltL1NonIsoHLTLEITISinglePhotonEt20TrackIsolFilter
HLT_Photon25_L1R hltL1NonIsoHLTNonIsoSinglePhotonEt25HcalIsolFilter
HLT_DoublePhoton15_L1R hltL1NonIsoHLTNonIsoDoublePhotonEt15HcalIsolFilter
HLT_DoublePhoton15_VeryLooseEcalIso_L1R hltL1NonIsoHLTVLEIDoublePhotonEt15HcalIsolFilter

Note that all the candidates that fired a given trigger path are stored regardless of whether another candidate has already fired the given trigger path or not.
Note also that for the path requiring two electrons or photons, the requirement of having at least two candidates is applied at each step of the trigger paths, and the path is interrupted as soon as this condition fails. This mean that even if an electron would have pass all the selection criteria of an HLT_DoubleEle path, it will not appear to have passed the hltDoubleElectronHcalIsolFilter if in the event there were no other electrons passing the selections of HLT_DoubleEle.

Is the transverse energy (Et) of electrons/photons at HLT corrected for the primary vertex ?

No, it isn't (the primary vertex is not calculated at all in most e-gamma paths as of September 2010).

What steps are typically taken in an electron/photon path ?

See for example page 6 of this presentation.

How are Δη and Δφ between track and cluster calculated ?

The relevant code in RecoEgamma/EgammaHLTProducers/src/EgammaHLTElectronDetaDphiProducer.cc is:

 const reco::SuperClusterRef theClus = eleref->superCluster();
 const math::XYZVector trackMom =  eleref->track()->momentum();
  
 math::XYZPoint SCcorrPosition(theClus->x()-BSPosition.x(), theClus->y()-BSPosition.y() , theClus->z()-eleref->track()->vz() );
 ...
 deltaeta = fabs(SCcorrPosition.eta()-eleref->track()->eta());
 ...
 deltaphi=fabs(eleref->track()->outerPosition().phi()-theClus->phi());
 if(deltaphi>6.283185308) deltaphi -= 6.283185308;
 if(deltaphi>3.141592654) deltaphi = 6.283185308-deltaphi;
So it's calculated from the supercluster position (corrected for the beam spot) and the outerPosition of the track.

In the current MC HLT menu, the beamspot comes from the module hltOfflineBeamSpot.

The (untracked) parameter seems to be unset (i.e. defaults to false in current MC HLT menus), so by default, the track is not extrapolated to the surface of the ECAL (which would be done under the two charge hypotheses if the parameter is set to true).


Can one load python HLT configuration files into confdb ?

This seems possible, but one has to convert the file with HLTrigger/Configuration/test/add/pythonToPythonTranslator.py first.

How can I quickly analyze the products produced by the HLT ?

There is a PyROOT/FWLite example in HLTriggerOffline/Egamma/test/exampleHLTanalysis.py.

Where can I find more information about the 2010 and 2011 HLT menu contents ?

Documentation

Talks:

Some notes about the E/gamma HLT path validation are collected here.

Examples

The composition of an example electron HLT path is shown here.

Links

Review Status

Reviewer/Editor and Date (copy from screen) Comments
Main.monicava - 26 Oct 2006 page author
Main.monicava - 04 Feb 2007 page content last edited
JennyWilliams - 06 Feb 2007 editing to include in SWGuide
AlessioGhezzi - 31 Jan 2008 instruction for the matching with the offline
RobertoCovarelli - 12 May 2009 major update to 3_1_X

Responsible: AlessioGhezzi
Last reviewed by: Reviewer

Topic attachments
I Attachment History Action Size Date Who Comment
PNGpng 2010-12-01-egamma-structure.png r1 manage 24.0 K 2011-02-25 - 10:23 AndreHolzner  
PowerPointppt 2010-12-01-egamma-structure.ppt r1 manage 203.0 K 2011-02-25 - 10:22 AndreHolzner  
GIFgif photon_rates_errors.gif r1 manage 8.7 K 2007-06-15 - 16:09 UnknownUser  
Edit | Attach | Watch | Print version | History: r117 < r116 < r115 < r114 < r113 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r117 - 2011-04-15 - AndreHolzner



 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    CMSPublic All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright &© 2008-2023 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback