High Pt Photon ID


The High pT photon ID was designed using the FLASHgg framework, with the following code https://github.com/cms-analysis/flashgg.

The High pT ID version 1 (V1) and version 2 (V2) were proposed during EXO diphoton meetings.

The most up-to-date version of the High pT ID is V2.

The V2 working points are documented in detail in AN-15-241 (Section 6), but will be repeated here. Different cuts are applied for EB and EE.

ECAL Geometry

The EB and EE cuts are defined with respect to the detector's coordinates, in particular, using "detector" eta (eta_det) or, equivalently, "supercluster" eta (eta_sc). This is in contrast to using the photon's eta coordinate. The cuts are defined as follows

EB: std::abs(eta_sc) < 1.4442

EE: 1.566 < std::abs(eta_sc) < 2.5

We omit the crack between EB and EE, and we do not extend to the crystal at 1.560.

Implementing the High pT ID

We are trying to reproduce what's being done in the FLASHgg framework here.


This ID was implemented using pat::Photon objects, rather than reco::Photon. Some differences have been noticed between the two. For miniAOD, we use the tag "slimmedPhotons".


We use the single HCAL tower behind the photon's ECAL energy deposit, from photon->hadTowOverEm().

Charged hadron isolation

We are calling photon->chargedHadronIso(). Note, this ID variable is not pileup (rho) corrected. Should be using a cone of 0.3.

Neutral hadron isolation

No neutral hadron isolation selections are applied.

Photon isolation

We are calling photon->photonIso(). Should be using a cone of 0.3.


Using "fixedGridRhoAll".

Note: Egamma uses "fixedGridRhoFastjetAll".

"Corrected" photon isolation

The photon isolation is pileup corrected. Instead of putting photon pT dependence in the cut, it is added to the photon isolation as well, further correcting it. The variable is defined as

corPhoIso = alpha + photon->photonIso() - rho*effectiveArea - kappa*photon->pt()

where alpha, kappa, and effectiveArea are numbers defined in the AN.


The full supercluster's 5x5 contribution is used, given by photon->full5x5_sigmaIetaIeta(). This variable's cut changes depending on whether or not the photon is saturated.

Electron veto

The CSEV is applied using photon->passElectronVeto().


Use detector coordinates, rather than the coordinates of the photon itself. Call photon->superCluster()->eta().

Photo Saturation

The High pT ID was tuned to take into account the affects of saturation. If the photon's seed crystal, or any cell in the 5x5 surrounding the seed with the seed at the center, is marked saturated, then the photon is considered saturated.

High pT ID Cuts

See the AN, for now.

Our code

See PhotonID.h for our implementation. https://github.com/cms-exotica-diphotons/diphoton-analysis/blob/master/CommonClasses/interface/PhotonID.h

Cross check with FLASHgg



https://indico.cern.ch/event/520444/ (latest)




https://indico.cern.ch/event/533798/ (EXO-NH Meeting)



https://indico.cern.ch/event/537546/ (EXO Meeting)


https://indico.cern.ch/event/540477/ (EXO Meeting)


https://indico.cern.ch/event/542711/ (latest)

-- AndrewBuccilli - 2016-03-07

Edit | Attach | Watch | Print version | History: r10 < r9 < r8 < r7 < r6 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r10 - 2016-10-25 - AndrewBuccilli
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Main All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2021 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