Egamma HLT in CMSSW
Complete:
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.
HLT tables for MC
Luminosity: 8E29 cm-2s-1
L1 pass-through triggers
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
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:
(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 ?
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
Responsible:
AlessioGhezzi
Last reviewed by: Reviewer