Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
import FWCore.ParameterSet.Config as cms


# HLT dimuon trigger
import HLTrigger.HLTfilters.hltHighLevel_cfi
hltZEEHI = HLTrigger.HLTfilters.hltHighLevel_cfi.hltHighLevel.clone()
hltZEEHI.HLTPaths = ["HLT_HIEle*Gsf_v*","HLT_HIDoubleEle*"]
hltZEEHI.throw = False
hltZEEHI.andOr = True

# selection of valid vertex
primaryVertexFilterForZEE = cms.EDFilter("VertexSelector",
                                         src = cms.InputTag("offlinePrimaryVertices"),
                                         cut = cms.string("!isFake && abs(z) <= 25 && position.Rho <= 2"), 
                                         filter = cms.bool(True),   # otherwise it won't filter the events
                                         )

# single lepton selector
goodElectronsForZEE = cms.EDFilter("GsfElectronRefSelector",
                                   src = cms.InputTag("gedGsfElectrons"),
                                   cut = cms.string("pt > 25")
                                   )

## dilepton selectors
diElectronsForZEE = cms.EDProducer("CandViewShallowCloneCombiner",
                                   decay       = cms.string("goodElectronsForZEE goodElectronsForZEE"),
                                   checkCharge = cms.bool(False),
                                   cut         = cms.string("mass > 60")
                                   )

# dilepton counter
diElectronsFilterForZEE = cms.EDFilter("CandViewCountFilter",
                                       src = cms.InputTag("diElectronsForZEE"),
                                       minNumber = cms.uint32(1)
                                       )

# Z->ee skim sequence
zEESkimSequence = cms.Sequence(
    hltZEEHI *
    primaryVertexFilterForZEE *
    goodElectronsForZEE * 
    diElectronsForZEE * 
    diElectronsFilterForZEE
)