Exemple #1
0
def setModules(process, options):

    process.sampleInfo = cms.EDProducer("tnp::SampleInfoTree",
                                        genInfo = cms.InputTag("generator")
                                        )

    from HLTrigger.HLTfilters.hltHighLevel_cfi import hltHighLevel
    process.hltFilter = hltHighLevel.clone()
    process.hltFilter.throw = cms.bool(True)
    process.hltFilter.HLTPaths = options['TnPPATHS']
    
    from PhysicsTools.TagAndProbe.pileupConfiguration_cfi import pileupProducer
    process.pileupReweightingProducer = pileupProducer.clone()    

###################################################################
## ELECTRON MODULES
###################################################################
    
    process.goodPhotons = cms.EDFilter("PATPhotonRefSelector",
                                       src = cms.InputTag(options['PHOTON_COLL']),
                                       cut = cms.string(options['PHOTON_CUTS'])    
                                       )

###################################################################
## PHOTON ISOLATION
###################################################################
    process.load("RecoEgamma/PhotonIdentification/PhotonIDValueMapProducer_cfi")

###################################################################
## HLT MATCHING
###################################################################

    process.goodPhotonsTagHLT = cms.EDProducer("PatPhotonTriggerCandProducer",
                                               filterNames = options['TnPHLTTagFilters'],
                                               inputs      = cms.InputTag("goodPhotonsTAGCutBasedTight"),
                                               bits        = cms.InputTag('TriggerResults::HLT'),
                                               objects     = cms.InputTag('selectedPatTrigger'),
                                               dR          = cms.double(0.3),
                                               isAND       = cms.bool(True)
                                               )
    
    process.goodPhotonsProbeHLT = cms.EDProducer("PatPhotonTriggerCandProducer",
                                                 filterNames = options['TnPHLTProbeFilters'],
                                                 inputs      = cms.InputTag("goodPhotons"),
                                                 bits        = cms.InputTag('TriggerResults::HLT'),
                                                 objects     = cms.InputTag('selectedPatTrigger'),
                                                 dR          = cms.double(0.3),
                                                 isAND       = cms.bool(True)
                                                 )

    process.tagTightRECO = cms.EDProducer("CandViewShallowCloneCombiner",
                                          decay = cms.string("goodPhotonsTagHLT@+ goodPhotonsProbeHLT@-"), 
                                          checkCharge = cms.bool(False),
                                          cut = cms.string("60<mass<120"),
                                          )
def setModules(process, options):
    
    process.sampleInfo = cms.EDProducer("tnp::SampleInfoTree",
                                        #vertexCollection = cms.InputTag("offlineSlimmedPrimaryVertices"),
                                        genInfo = cms.InputTag("generator")
                                        )
    
    process.eleVarHelper = cms.EDProducer("PatElectronVariableHelper",
                                          probes = cms.InputTag(options['ELECTRON_COLL']),
                                          vertexCollection = cms.InputTag("offlineSlimmedPrimaryVertices"),
                                          mvaValuesMap = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring15NonTrig25nsV1Values"),
                                          photonSrc = cms.InputTag("packedPFCandidates"),
                                          packedPFCandidates = cms.InputTag("packedPFCandidates")
                                          )
    
    from HLTrigger.HLTfilters.hltHighLevel_cfi import hltHighLevel
    process.hltFilter = hltHighLevel.clone()
    process.hltFilter.throw = cms.bool(True)
    process.hltFilter.HLTPaths = options['TnPPATHS']
    
    from PhysicsTools.TagAndProbe.pileupConfiguration_cfi import pileupProducer
    process.pileupReweightingProducer = pileupProducer.clone()
    
###################################################################                                                                               
## ELECTRON MODULES                                                                                                                                    
###################################################################                                    
    
    process.goodElectrons = cms.EDFilter("PATElectronRefSelector",
                                         src = cms.InputTag(options['ELECTRON_COLL']),
                                         cut = cms.string(options['ELECTRON_CUTS'])
                                         )
    
###################################################################                                                                     
## SUPERCLUSTER MODULES                                                     
###################################################################         
    
    process.superClusterCands = cms.EDProducer("ConcreteEcalCandidateProducer",
                                               src = cms.InputTag(options['SUPERCLUSTER_COLL']),
                                               particleType = cms.int32(11),
                                               )
    
    process.goodSuperClusters = cms.EDFilter("RecoEcalCandidateRefSelector",
                                             src = cms.InputTag("superClusterCands"),
                                             cut = cms.string(options['SUPERCLUSTER_CUTS']),
                                             filter = cms.bool(True)
                                             )
    
    process.GsfMatchedSuperClusterCands = cms.EDProducer("ElectronMatchedCandidateProducer",
                                                         src     = cms.InputTag("superClusterCands"),
                                                         ReferenceElectronCollection = cms.untracked.InputTag("goodElectrons"),
                                                         cut = cms.string(options['SUPERCLUSTER_CUTS'])
                                                         )
    
###################################################################
## TRIGGER MATCHING
###################################################################
    
    process.goodElectronsTagHLT = cms.EDProducer("PatElectronTriggerCandProducer",
                                                 filterNames = cms.vstring(options['TnPHLTTagFilters']),
                                                 inputs      = cms.InputTag("goodElectronsTAGCutBasedTight"),
                                                 bits        = cms.InputTag('TriggerResults::HLT'),
                                                 objects     = cms.InputTag('selectedPatTrigger'),
                                                 dR          = cms.double(0.3),
                                                 isAND       = cms.bool(True)
                                                 )
    
    process.goodElectronsProbeHLT = cms.EDProducer("PatElectronTriggerCandProducer",
                                                   filterNames = cms.vstring(options['TnPHLTProbeFilters']),
                                                   inputs      = cms.InputTag("goodElectrons"),
                                                   bits        = cms.InputTag('TriggerResults::HLT'),
                                                   objects     = cms.InputTag('selectedPatTrigger'),
                                                   dR          = cms.double(0.3),
                                                   isAND       = cms.bool(True)
                                                   )
    
    process.goodElectronsProbeMeasureHLT = cms.EDProducer("PatElectronTriggerCandProducer",
                                                          filterNames = cms.vstring(options['TnPHLTProbeFilters']),
                                                          inputs      = cms.InputTag("goodElectrons"),
                                                          bits        = cms.InputTag('TriggerResults::HLT'),
                                                          objects     = cms.InputTag('selectedPatTrigger'),
                                                          dR          = cms.double(0.3),
                                                          isAND       = cms.bool(True)
                                                          )
    
    process.goodElectronsMeasureHLT = cms.EDProducer("PatElectronTriggerCandProducer",
                                                     filterNames = cms.vstring(options['HLTFILTERTOMEASURE']),
                                                     inputs      = cms.InputTag("goodElectronsProbeMeasureHLT"),
                                                     bits        = cms.InputTag('TriggerResults::HLT'),
                                                     objects     = cms.InputTag('selectedPatTrigger'),
                                                     dR          = cms.double(0.3),
                                                     isAND       = cms.bool(False)
                                                     )
    
    process.goodSuperClustersHLT = cms.EDProducer("RecoEcalCandidateTriggerCandProducer",
                                                  filterNames  = cms.vstring(options['TnPHLTProbeFilters']),
                                                  inputs       = cms.InputTag("goodSuperClusters"),
                                                  bits         = cms.InputTag('TriggerResults::HLT'),
                                                  objects      = cms.InputTag('selectedPatTrigger'),
                                                  dR           = cms.double(0.3),
                                                  isAND        = cms.bool(True)
                                                  )
    
###################################################################
## MC MATCHES
###################################################################
    
    process.McMatchHLT = cms.EDProducer("MCTruthDeltaRMatcherNew",
                                        matchPDGId = cms.vint32(11),
                                        src = cms.InputTag("goodElectrons"),
                                        distMin = cms.double(0.3),
                                        matched = cms.InputTag("prunedGenParticles"),
                                        checkCharge = cms.bool(True)
                                        )
    
    process.McMatchSC = cms.EDProducer("MCTruthDeltaRMatcherNew",
                                       matchPDGId = cms.vint32(11),
                                       src = cms.InputTag("goodSuperClusters"),
                                       distMin = cms.double(0.3),
                                       matched = cms.InputTag("prunedGenParticles"),
                                       checkCharge = cms.bool(False)
                                       )
    
    process.McMatchTag = cms.EDProducer("MCTruthDeltaRMatcherNew",
                                        matchPDGId = cms.vint32(11),
                                        src = cms.InputTag("goodElectronsTAGCutBasedTight"),
                                        distMin = cms.double(0.2),
                                        matched = cms.InputTag("prunedGenParticles"),
                                        checkCharge = cms.bool(True)
                                        )
    
    process.McMatchRECO = cms.EDProducer("MCTruthDeltaRMatcherNew",
                                         matchPDGId = cms.vint32(11),
                                         src = cms.InputTag("goodElectrons"),
                                         distMin = cms.double(0.2),
                                         matched = cms.InputTag("prunedGenParticles"),
                                         checkCharge = cms.bool(True)
                                         )
    
###################################################################
## TnP PAIRS
###################################################################
    
    process.tagTightHLT = cms.EDProducer("CandViewShallowCloneCombiner",
                                         decay = cms.string("goodElectronsTagHLT@+ goodElectronsProbeMeasureHLT@-"), 
                                         checkCharge = cms.bool(True),
                                         cut = cms.string("40<mass<1000"),
                                         )
    
    process.tagTightSC = cms.EDProducer("CandViewShallowCloneCombiner",
                                        decay = cms.string("goodElectronsTagHLT goodSuperClustersHLT"), 
                                        checkCharge = cms.bool(False),
                                        cut = cms.string("40<mass<1000"),
                                        )
    
    process.tagTightRECO = cms.EDProducer("CandViewShallowCloneCombiner",
                                          decay = cms.string("goodElectronsTagHLT@+ goodElectronsProbeHLT@-"), 
                                          checkCharge = cms.bool(True),
                                          cut = cms.string("40<mass<1000"),
                                          )
def setModules(process, options):

    process.sampleInfo = cms.EDProducer("tnp::FlashggSampleInfoTree", )

    from HLTrigger.HLTfilters.hltHighLevel_cfi import hltHighLevel
    process.hltFilter = hltHighLevel.clone()
    process.hltFilter.throw = cms.bool(False)
    process.hltFilter.HLTPaths = options['TnPPATHS']

    from PhysicsTools.TagAndProbe.pileupConfiguration_cfi import pileupProducer
    process.pileupReweightingProducer = pileupProducer.clone()

    ###################################################################
    ## ELECTRON MODULES
    ###################################################################

    #produces photons for tag+probe
    process.photonFromDiPhotons = cms.EDProducer(
        "FlashggPhotonFromDiPhotonProducer",
        src=cms.InputTag(options['DIPHOTON_COLL']),
        cut=cms.string(options['PHOTON_CUTS']),
        leadingPreselection=cms.string(options['LEADING_PRESELECTION']),
        subleadingPreselection=cms.string(options['SUBLEADING_PRESELECTION']),
        vertexSelection=cms.int32(
            -1
        ),  # -1 means take the chosen vertex, otherwise use the index to select 2it                                
        #diPhotonMVATag = cms.InputTag("flashggUpdatedIdMVADiPhotons"),
        diPhotonMVATag=cms.InputTag("flashggDiPhotonMVA"),
        diphotonMVAThreshold=cms.double(-0.6))

    #produces tag collection from diphotons
    process.goodPhotonTags = cms.EDFilter(
        "FlashggPhotonRefSelector",
        src=cms.InputTag("photonFromDiPhotons"),
        cut=cms.string(options['PHOTON_TAG_CUTS']))

    #produces probe collection from diphotons
    process.goodPhotonProbes = cms.EDFilter(
        "FlashggPhotonRefSelector",
        src=cms.InputTag("photonFromDiPhotons"),
        cut=cms.string(options['PHOTON_PROBE_CUTS']))

    ###################################################################

    #IDMVA for probes
    process.goodPhotonProbesIDMVA = cms.EDProducer(
        "FlashggPhotonSelectorByDoubleValueMap",
        input=cms.InputTag("goodPhotonProbes"),
        cut=cms.string(options['PHOTON_PROBE_CUTS']),
        selection=cms.InputTag("photonFromDiPhotons:idmva"),
        id_cut=cms.double(-0.9))
    process.goodPhotonsProbeTnPprobe = cms.EDProducer(
        "FlashggPhotonTriggerCandProducer",
        filterNames=options['TnPHLTProbeFilters'],
        inputs=cms.InputTag("goodPhotonProbesIDMVA"),
        bits=cms.InputTag(options['TRIGGER_RES']),
        objects=cms.InputTag(options['PAT_TRIG']),
        dR=cms.double(0.3),
        isAND=cms.bool(False))
    #numerator for Preselection
    process.goodPhotonProbesPreselection = cms.EDProducer(
        "FlashggPhotonSelectorByValueMap",
        input=cms.InputTag("goodPhotonsProbeTnPprobe"),
        cut=cms.string(options['PHOTON_PROBE_CUTS']),
        selection=cms.InputTag("photonFromDiPhotons:preselection"),
        id_cut=cms.bool(True))

    #probes match to l1
    #process.goodPhotonProbesL1 = cms.EDProducer("FlashggPhotonL1CandProducer",
    process.goodPhotonProbesL1 = cms.EDProducer(
        "FlashggPhotonL1Stage2CandProducer",
        inputs=cms.InputTag("goodPhotonProbesPreselection"),
        #isoObjects = cms.InputTag("l1extraParticles:Isolated"),
        #nonIsoObjects = cms.InputTag("l1extraParticles:NonIsolated"),
        #objects = cms.InputTag("hltCaloStage2Digis:EGamma"),
        objects=cms.InputTag("caloStage2Digis:EGamma"),
        #minET = cms.double(15), #lead eff only
        minET=cms.double(10),  #sublead eff only
        dRmatch=cms.double(
            0.2),  #defined to match L1 online matching to hlt (0.261)
        dRmatchEE=cms.double(
            0.2
        ),  #defined to match L1 online matching to hlt (should probably be tightened for stage2)
        isolatedOnly=cms.bool(False))

    #numerator passing HLT requiring preselection and L1
    process.goodPhotonsProbeHLT = cms.EDProducer(
        "FlashggPhotonTriggerCandProducer",
        filterNames=options['HLTFILTERTOMEASURE'],
        inputs=cms.InputTag("goodPhotonProbesPreselection"),
        bits=cms.InputTag(options['TRIGGER_RES']),
        objects=cms.InputTag(options['PAT_TRIG']),
        dR=cms.double(0.3),
        isAND=cms.bool(False))

    ###################################################################
    #IDMVA for tags
    process.goodPhotonTagsIDMVA = cms.EDProducer(
        "FlashggPhotonSelectorByDoubleValueMap",
        input=cms.InputTag("goodPhotonTags"),
        cut=cms.string(options['PHOTON_TAG_CUTS']),
        selection=cms.InputTag("photonFromDiPhotons:idmva"),
        id_cut=cms.double(-0.5))
    #preselection for tags
    process.goodPhotonTagsPreselection = cms.EDProducer(
        "FlashggPhotonSelectorByValueMap",
        input=cms.InputTag("goodPhotonTagsIDMVA"),
        cut=cms.string(options['PHOTON_TAG_CUTS']),
        selection=cms.InputTag("photonFromDiPhotons:preselection"),
        id_cut=cms.bool(True))

    #good match to lead HggFilter tag photons for denominator PRESELECTED
    process.goodPhotonsTagLeadMatch = cms.EDProducer(
        "FlashggPhotonTriggerCandProducer",
        filterNames=options['TagLeadMatchFilters'],
        inputs=cms.InputTag("goodPhotonTagsPreselection"),
        bits=cms.InputTag(options['TRIGGER_RES']),
        objects=cms.InputTag(options['PAT_TRIG']),
        dR=cms.double(0.3),
        isAND=cms.bool(False))
    #good preselected tag photons for denominator
    process.goodPhotonsTagHLT = cms.EDProducer(
        "FlashggPhotonTriggerCandProducer",
        filterNames=options['TnPHLTTagFilters'],
        inputs=cms.InputTag("goodPhotonsTagLeadMatch"),
        bits=cms.InputTag(options['TRIGGER_RES']),
        objects=cms.InputTag(options['PAT_TRIG']),
        dR=cms.double(0.3),
        isAND=cms.bool(False))

    ###################################################################
    ## PHOTON ISOLATION
    ###################################################################
    process.load(
        "RecoEgamma/PhotonIdentification/PhotonIDValueMapProducer_cfi")
    process.noL1RECO = cms.EDProducer(
        "CandViewShallowCloneCombiner",
        decay=cms.string("goodPhotonsTagHLT goodPhotonProbesPreselection"),
        #decay = cms.string("goodPhotonsTagHLT goodPhotonsProbeHLT"),
        checkCharge=cms.bool(False),
        cut=cms.string("40<mass<180"),
    )

    #efficiency for HLT with L1 requirement in denominator
    process.L1RECO = cms.EDProducer(
        "CandViewShallowCloneCombiner",
        decay=cms.string("goodPhotonsTagHLT goodPhotonProbesL1"),
        checkCharge=cms.bool(False),
        cut=cms.string("40<mass<180"),
    )
def setModules(process, options):

    process.sampleInfo = cms.EDProducer("tnp::FlashggSampleInfoTree",
                                        )

    from HLTrigger.HLTfilters.hltHighLevel_cfi import hltHighLevel
    process.hltFilter = hltHighLevel.clone()
    process.hltFilter.throw = cms.bool(False)
    process.hltFilter.HLTPaths = options['TnPPATHS']
    
    from PhysicsTools.TagAndProbe.pileupConfiguration_cfi import pileupProducer
    process.pileupReweightingProducer = pileupProducer.clone()    

    ###################################################################
    ## ELECTRON MODULES
    ###################################################################
    

    #produces photons for tag+probe                                                                                                                                                       
    process.photonFromDiPhotons = cms.EDProducer("FlashggPhotonFromDiPhotonProducer",
                                                 src = cms.InputTag(options['DIPHOTON_COLL']),
                                                 cut = cms.string(options['PHOTON_CUTS']),
                                                 leadingPreselection = cms.string(options['LEADING_PRESELECTION']),
                                                 subleadingPreselection = cms.string(options['SUBLEADING_PRESELECTION']),
                                                 vertexSelection = cms.int32(-1), # -1 means take the chosen vertex, otherwise use the index to select 2it                                
                                                 #diPhotonMVATag = cms.InputTag("flashggUpdatedIdMVADiPhotons"),                                                                          
                                                 diPhotonMVATag = cms.InputTag("flashggDiPhotonMVA"),
                                                 diphotonMVAThreshold = cms.double(-0.6)
                                                 )

    #produces tag collection from diphotons                                                                                                                                               
    process.goodPhotonTags = cms.EDFilter("FlashggPhotonRefSelector",
                                          src = cms.InputTag("photonFromDiPhotons"),
                                          cut = cms.string(options['PHOTON_TAG_CUTS'])
                                          )


    #produces probe collection from diphotons                                                                                                                                             
    process.goodPhotonProbes = cms.EDFilter("FlashggPhotonRefSelector",
                                            src = cms.InputTag("photonFromDiPhotons"),
                                            cut = cms.string(options['PHOTON_PROBE_CUTS'])
                                            )

    ###################################################################                                                                                                                   
    
#IDMVA for probes                                                                                                                                                                     
    process.goodPhotonProbesIDMVA = cms.EDProducer("FlashggPhotonSelectorByDoubleValueMap",
                                                   input     = cms.InputTag("goodPhotonProbes"),
                                                   cut       = cms.string(options['PHOTON_PROBE_CUTS']),
                                                   selection = cms.InputTag("photonFromDiPhotons:idmva"),
                                                   id_cut    = cms.double(-0.9)
                                                   )
    process.goodPhotonsProbeTnPprobe = cms.EDProducer("FlashggPhotonTriggerCandProducer",
                                                      filterNames = options['TnPHLTProbeFilters'],
                                                      inputs      = cms.InputTag("goodPhotonProbesIDMVA"),
                                                      bits        = cms.InputTag(options['TRIGGER_RES']),
                                                      objects     = cms.InputTag(options['PAT_TRIG']),
                                                      dR          = cms.double(0.3),
                                                      isAND       = cms.bool(False)
                                                      )
    #numerator for Preselection                                                                                                                                                           
    process.goodPhotonProbesPreselection = cms.EDProducer("FlashggPhotonSelectorByValueMap",
                                                          input     = cms.InputTag("goodPhotonsProbeTnPprobe"),
                                                          cut       = cms.string(options['PHOTON_PROBE_CUTS']),
                                                          selection = cms.InputTag("photonFromDiPhotons:preselection"),
                                                          id_cut    = cms.bool(True)
                                                          )
    
    #probes match to l1                                                                                                                                                                   
    #process.goodPhotonProbesL1 = cms.EDProducer("FlashggPhotonL1CandProducer",
    process.goodPhotonProbesL1 = cms.EDProducer("FlashggPhotonL1Stage2CandProducer",
                                                inputs = cms.InputTag("goodPhotonProbesPreselection"),
                                                #isoObjects = cms.InputTag("l1extraParticles:Isolated"),
                                                #nonIsoObjects = cms.InputTag("l1extraParticles:NonIsolated"),
                                                #objects = cms.InputTag("hltCaloStage2Digis:EGamma"),
                                                objects = cms.InputTag("caloStage2Digis:EGamma"),
                                                #minET = cms.double(15), #lead eff only
                                                minET = cms.double(10), #sublead eff only
                                                dRmatch = cms.double(0.2), #defined to match L1 online matching to hlt (0.261)
                                                dRmatchEE = cms.double(0.2), #defined to match L1 online matching to hlt (should probably be tightened for stage2)
                                                isolatedOnly = cms.bool(False)
                                                )

    #numerator passing HLT requiring preselection and L1  
    process.goodPhotonsProbeHLT = cms.EDProducer("FlashggPhotonTriggerCandProducer",
                                                    filterNames = options['HLTFILTERTOMEASURE'],
                                                    inputs      = cms.InputTag("goodPhotonProbesPreselection"),
                                                    bits        = cms.InputTag(options['TRIGGER_RES']),
                                                    objects     = cms.InputTag(options['PAT_TRIG']),
                                                    dR          = cms.double(0.3),
                                                    isAND       = cms.bool(False)
                                                    )
    
    
    ###################################################################                                                                                                                   
    #IDMVA for tags                                                                                                                                                                       
    process.goodPhotonTagsIDMVA = cms.EDProducer("FlashggPhotonSelectorByDoubleValueMap",
                                                 input     = cms.InputTag("goodPhotonTags"),
                                                 cut       = cms.string(options['PHOTON_TAG_CUTS']),
                                                 selection = cms.InputTag("photonFromDiPhotons:idmva"),
                                                 id_cut    = cms.double(-0.5)
                                                 )
    #preselection for tags                                                                                                                                                                
    process.goodPhotonTagsPreselection = cms.EDProducer("FlashggPhotonSelectorByValueMap",
                                                          input     = cms.InputTag("goodPhotonTagsIDMVA"),
                                                          cut       = cms.string(options['PHOTON_TAG_CUTS']),
                                                          selection = cms.InputTag("photonFromDiPhotons:preselection"),
                                                          id_cut    = cms.bool(True)
                                                          )


    #good match to lead HggFilter tag photons for denominator PRESELECTED                                    
    process.goodPhotonsTagLeadMatch = cms.EDProducer("FlashggPhotonTriggerCandProducer",
                                                        filterNames = options['TagLeadMatchFilters'],
                                                        inputs      = cms.InputTag("goodPhotonTagsPreselection"),
                                                        bits        = cms.InputTag(options['TRIGGER_RES']),
                                                        objects     = cms.InputTag(options['PAT_TRIG']),
                                                        dR          = cms.double(0.3),
                                                        isAND       = cms.bool(False)
                                                        )
    #good preselected tag photons for denominator                                                                                                                                         
    process.goodPhotonsTagHLT = cms.EDProducer("FlashggPhotonTriggerCandProducer",
                                                  filterNames = options['TnPHLTTagFilters'],
                                                  inputs      = cms.InputTag("goodPhotonsTagLeadMatch"),
                                                  bits        = cms.InputTag(options['TRIGGER_RES']),
                                                  objects     = cms.InputTag(options['PAT_TRIG']),
                                                  dR          = cms.double(0.3),
                                                  isAND       = cms.bool(False)
                                                  )




    ###################################################################                                                                                                                   
    ## PHOTON ISOLATION                                                                                                                                                                   
    ###################################################################            
    process.load("RecoEgamma/PhotonIdentification/PhotonIDValueMapProducer_cfi")
    process.noL1RECO = cms.EDProducer("CandViewShallowCloneCombiner",
                                      decay = cms.string("goodPhotonsTagHLT goodPhotonProbesPreselection"),
                                      #decay = cms.string("goodPhotonsTagHLT goodPhotonsProbeHLT"),
                                      checkCharge = cms.bool(False),
                                      cut = cms.string("40<mass<180"),
                                      )
    
    #efficiency for HLT with L1 requirement in denominator                                                                                                                                
    process.L1RECO = cms.EDProducer("CandViewShallowCloneCombiner",
                                    decay = cms.string("goodPhotonsTagHLT goodPhotonProbesL1"),
                                    checkCharge = cms.bool(False),
                                    cut = cms.string("40<mass<180"),
                                    )
def setModules(process, options):

    process.sampleInfo = cms.EDProducer("tnp::FlashggSampleInfoTree",
                                        )

    from HLTrigger.HLTfilters.hltHighLevel_cfi import hltHighLevel
    process.hltFilter = hltHighLevel.clone()
    process.hltFilter.throw = cms.bool(False)
    process.hltFilter.HLTPaths = options['TnPPATHS']
    
    from PhysicsTools.TagAndProbe.pileupConfiguration_cfi import pileupProducer
    process.pileupReweightingProducer = pileupProducer.clone()    

    ###################################################################
    ## ELECTRON MODULES
    ###################################################################
    
    process.photonFromDiPhotons = cms.EDProducer("FlashggPhotonFromDiPhotonProducer",
                                                 src = cms.InputTag(options['DIPHOTON_COLL']),
                                                 cut = cms.string(options['PHOTON_CUTS']),
                                                 leadingPreselection = cms.string(options['LEADING_PRESELECTION']),
                                                 subleadingPreselection = cms.string(options['SUBLEADING_PRESELECTION']),
                                                 vertexSelection = cms.int32(-1), # -1 means take the chosen vertex, otherwise use the index to select 2it
                                                 diPhotonMVATag = cms.InputTag("flashggDiPhotonMVA"),
                                                 diphotonMVAThreshold = cms.double(-0.6) #Previous value was -1.0
                                                 )

    process.goodPhotonTagL1 = cms.EDProducer("FlashggPhotonL1CandProducer",
                                             inputs = cms.InputTag("goodPhotonTags"),
                                             isoObjects = cms.InputTag("goodPhotonTags"),
                                             nonIsoObjects = cms.InputTag(""),
                                             minET = cms.double(25),
                                             dRmatch = cms.double(0.2),
                                             isolatedOnly = cms.bool(False)
                                             )
    
    process.goodPhotonTags = cms.EDFilter("FlashggPhotonRefSelector",
                                          src = cms.InputTag("photonFromDiPhotons"),
                                          cut = cms.string(options['PHOTON_TAG_CUTS'])
                                          )
    
    process.goodPhotonProbes = cms.EDFilter("FlashggPhotonRefSelector",
                                            src = cms.InputTag("photonFromDiPhotons"),
                                            cut = cms.string(options['PHOTON_CUTS'])
                                            )
    
    ###################################################################
    
    process.goodPhotonProbesPreselection = cms.EDProducer("FlashggPhotonSelectorByValueMap",
                                                          input     = cms.InputTag("goodPhotonProbes"),
                                                          cut       = cms.string(options['PHOTON_CUTS']),
                                                          selection = cms.InputTag("photonFromDiPhotons:preselection"),
                                                          id_cut    = cms.bool(True)
                                                          )
    
    process.goodPhotonProbesIDMVA = cms.EDProducer("FlashggPhotonSelectorByDoubleValueMap",
                                                   input     = cms.InputTag("goodPhotonProbes"),
                                                   cut       = cms.string(options['PHOTON_CUTS']),
                                                   selection = cms.InputTag("photonFromDiPhotons:idmva"),
                                                   id_cut    = cms.double(-0.9)
                                                   )
    
    process.goodPhotonTagsIDMVA = cms.EDProducer("FlashggPhotonSelectorByDoubleValueMap",
                                                 input     = cms.InputTag("goodPhotonTags"),
                                                 cut       = cms.string(options['PHOTON_CUTS']),
                                                 selection = cms.InputTag("photonFromDiPhotons:idmva"),
                                                 id_cut    = cms.double(-0.6)
                                                 )
    
    ###################################################################

    process.goodPhotonsTagHLT = cms.EDProducer("FlashggPhotonTriggerCandProducer",
                                               filterNames = options['TnPHLTTagFilters'],
                                               inputs      = cms.InputTag("goodPhotonTagsIDMVA"),
                                               bits        = cms.InputTag('TriggerResults::HLT'),
                                               objects     = cms.InputTag('selectedPatTrigger'),
                                               dR          = cms.double(0.3),
                                               isAND       = cms.bool(True)
                                               )
    
    process.goodPhotonsProbeHLT = cms.EDProducer("FlashggPhotonTriggerCandProducer",
                                                 filterNames = options['TnPHLTProbeFilters'],
                                                 inputs      = cms.InputTag("goodPhotonProbes"),
                                                 bits        = cms.InputTag('TriggerResults::HLT'),
                                                 objects     = cms.InputTag('selectedPatTrigger'),
                                                 dR          = cms.double(0.3),
                                                 isAND       = cms.bool(True)
                                                 )
    
    process.goodPhotonProbesL1 = cms.EDProducer("FlashggPhotonL1Stage2CandProducer",
                                                inputs = cms.InputTag("goodPhotonProbes"),
                                                objects = cms.InputTag("caloStage2Digis:EGamma"),
                                                minET = cms.double(40),
                                                dRmatch = cms.double(0.2),
                                                dRmatchEE = cms.double(0.2),
                                                isolatedOnly = cms.bool(False)
                                                )
    
    ###################################################################
    ## PHOTON ISOLATION
    ###################################################################
    process.load("RecoEgamma/PhotonIdentification/PhotonIDValueMapProducer_cfi")

    process.tagTightRECO = cms.EDProducer("CandViewShallowCloneCombiner",
                                      decay = cms.string("goodPhotonsTagHLT goodPhotonsProbeHLT"), 
                                      checkCharge = cms.bool(False),
                                      cut = cms.string("40<mass<130"),
                                      )
def setModules(process, options):
    
    process.sampleInfo = cms.EDProducer("tnp::SampleInfoTree",
                                        #vertexCollection = cms.InputTag("offlineSlimmedPrimaryVertices"),
                                        genInfo = cms.InputTag("generator")
                                        )
    
    process.eleVarHelper = cms.EDProducer("PatElectronVariableHelper",
                                          probes = cms.InputTag(options['ELECTRON_COLL']),
                                          vertexCollection = cms.InputTag("offlineSlimmedPrimaryVertices")
                                          )
    
    from HLTrigger.HLTfilters.hltHighLevel_cfi import hltHighLevel
    process.hltFilter = hltHighLevel.clone()
    process.hltFilter.throw = cms.bool(True)
    process.hltFilter.HLTPaths = options['TnPPATHS']
    
    from PhysicsTools.TagAndProbe.pileupConfiguration_cfi import pileupProducer
    process.pileupReweightingProducer = pileupProducer.clone()
    
###################################################################                                                                               
## ELECTRON MODULES                                                                                                                                    
###################################################################                                    
    
    process.goodElectrons = cms.EDFilter("PATElectronRefSelector",
                                         src = cms.InputTag(options['ELECTRON_COLL']),
                                         cut = cms.string(options['ELECTRON_CUTS'])
                                         )
    
###################################################################                                                                     
## SUPERCLUSTER MODULES                                                     
###################################################################         
    
    process.superClusterCands = cms.EDProducer("ConcreteEcalCandidateProducer",
                                               src = cms.InputTag(options['SUPERCLUSTER_COLL']),
                                               particleType = cms.int32(11),
                                               )
    
    process.goodSuperClusters = cms.EDFilter("RecoEcalCandidateRefSelector",
                                             src = cms.InputTag("superClusterCands"),
                                             cut = cms.string(options['SUPERCLUSTER_CUTS']),
                                             filter = cms.bool(True)
                                             )
    
    process.GsfMatchedSuperClusterCands = cms.EDProducer("PatElectronMatchedCandidateProducer",
                                                         src     = cms.InputTag("superClusterCands"),
                                                         ReferenceElectronCollection = cms.untracked.InputTag("goodElectrons"),
                                                         cut = cms.string(options['SUPERCLUSTER_CUTS'])
                                                         )
    
###################################################################
## TRIGGER MATCHING
###################################################################
    
    process.goodElectronsTagHLT = cms.EDProducer("PatElectronTriggerCandProducer",
                                                 filterNames = cms.vstring(options['TnPHLTTagFilters']),
                                                 inputs      = cms.InputTag("goodElectronsTAGCutBasedTight"),
                                                 bits        = cms.InputTag('TriggerResults::HLT'),
                                                 objects     = cms.InputTag('selectedPatTrigger'),
                                                 dR          = cms.double(0.3),
                                                 isAND       = cms.bool(True)
                                                 )
    
    process.goodElectronsProbeHLT = cms.EDProducer("PatElectronTriggerCandProducer",
                                                   filterNames = cms.vstring(options['TnPHLTProbeFilters']),
                                                   inputs      = cms.InputTag("goodElectrons"),
                                                   bits        = cms.InputTag('TriggerResults::HLT'),
                                                   objects     = cms.InputTag('selectedPatTrigger'),
                                                   dR          = cms.double(0.3),
                                                   isAND       = cms.bool(True)
                                                   )
    
    process.goodElectronsProbeMeasureHLT = cms.EDProducer("PatElectronTriggerCandProducer",
                                                          filterNames = cms.vstring(options['TnPHLTProbeFilters']),
                                                          inputs      = cms.InputTag("goodElectrons"),
                                                          bits        = cms.InputTag('TriggerResults::HLT'),
                                                          objects     = cms.InputTag('selectedPatTrigger'),
                                                          dR          = cms.double(0.3),
                                                          isAND       = cms.bool(True)
                                                          )
    
    process.goodElectronsMeasureHLT = cms.EDProducer("PatElectronTriggerCandProducer",
                                                     filterNames = cms.vstring(options['HLTFILTERTOMEASURE']),
                                                     inputs      = cms.InputTag("goodElectronsProbeMeasureHLT"),
                                                     bits        = cms.InputTag('TriggerResults::HLT'),
                                                     objects     = cms.InputTag('selectedPatTrigger'),
                                                     dR          = cms.double(0.3),
                                                     isAND       = cms.bool(False)
                                                     )
    
    process.goodSuperClustersHLT = cms.EDProducer("RecoEcalCandidateTriggerCandProducer",
                                                  filterNames  = cms.vstring(options['TnPHLTProbeFilters']),
                                                  inputs       = cms.InputTag("goodSuperClusters"),
                                                  bits         = cms.InputTag('TriggerResults::HLT'),
                                                  objects      = cms.InputTag('selectedPatTrigger'),
                                                  dR           = cms.double(0.3),
                                                  isAND        = cms.bool(True)
                                                  )

###################################################################
## TnP PAIRS
###################################################################
    
    process.tagTightHLT = cms.EDProducer("CandViewShallowCloneCombiner",
                                         decay = cms.string("goodElectronsTagHLT@+ goodElectronsProbeMeasureHLT@-"), 
                                         checkCharge = cms.bool(True),
                                         cut = cms.string("60<mass<120"),
                                         )
    
    process.tagTightSC = cms.EDProducer("CandViewShallowCloneCombiner",
                                        decay = cms.string("goodElectronsTagHLT goodSuperClustersHLT"), 
                                        checkCharge = cms.bool(False),
                                        cut = cms.string("60<mass<120"),
                                        )
    
    process.tagTightRECO = cms.EDProducer("CandViewShallowCloneCombiner",
                                          decay = cms.string("goodElectronsTagHLT@+ goodElectronsProbeHLT@-"), 
                                          checkCharge = cms.bool(True),
                                          cut = cms.string("60<mass<120"),
                                          )
Exemple #7
0
def setModules(process, options):

    process.sampleInfo = cms.EDProducer("tnp::FlashggSampleInfoTree", )

    from HLTrigger.HLTfilters.hltHighLevel_cfi import hltHighLevel
    process.hltFilter = hltHighLevel.clone()
    process.hltFilter.throw = cms.bool(False)
    process.hltFilter.HLTPaths = options['TnPPATHS']

    from PhysicsTools.TagAndProbe.pileupConfiguration_cfi import pileupProducer
    process.pileupReweightingProducer = pileupProducer.clone()

    ###################################################################
    ## ELECTRON MODULES
    ###################################################################

    process.photonFromDiPhotons = cms.EDProducer(
        "FlashggPhotonFromDiPhotonProducer",
        src=cms.InputTag(options['DIPHOTON_COLL']),
        cut=cms.string(options['PHOTON_CUTS']),
        leadingPreselection=cms.string(options['LEADING_PRESELECTION']),
        subleadingPreselection=cms.string(options['SUBLEADING_PRESELECTION']),
        vertexSelection=cms.int32(
            -1
        ),  # -1 means take the chosen vertex, otherwise use the index to select 2it
        diPhotonMVATag=cms.InputTag("flashggDiPhotonMVA"),
        diphotonMVAThreshold=cms.double(-1.0))

    process.goodPhotonTagL1 = cms.EDProducer(
        "FlashggPhotonL1CandProducer",
        inputs=cms.InputTag("goodPhotonTags"),
        isoObjects=cms.InputTag("goodPhotonTags"),
        nonIsoObjects=cms.InputTag(""),
        minET=cms.double(25),
        dRmatch=cms.double(0.2),
        isolatedOnly=cms.bool(False))

    process.goodPhotonTags = cms.EDFilter(
        "FlashggPhotonRefSelector",
        src=cms.InputTag("photonFromDiPhotons"),
        cut=cms.string(options['PHOTON_TAG_CUTS']))

    process.goodPhotonProbes = cms.EDFilter(
        "FlashggPhotonRefSelector",
        src=cms.InputTag("photonFromDiPhotons"),
        cut=cms.string(options['PHOTON_CUTS']))

    ###################################################################

    process.goodPhotonProbesPreselection = cms.EDProducer(
        "FlashggPhotonSelectorByValueMap",
        input=cms.InputTag("goodPhotonProbes"),
        cut=cms.string(options['PHOTON_CUTS']),
        selection=cms.InputTag("photonFromDiPhotons:preselection"),
        id_cut=cms.bool(True))

    process.goodPhotonProbesIDMVA = cms.EDProducer(
        "FlashggPhotonSelectorByDoubleValueMap",
        input=cms.InputTag("goodPhotonProbes"),
        cut=cms.string(options['PHOTON_CUTS']),
        selection=cms.InputTag("photonFromDiPhotons:idmva"),
        id_cut=cms.double(-0.9))

    process.goodPhotonTagsIDMVA = cms.EDProducer(
        "FlashggPhotonSelectorByDoubleValueMap",
        input=cms.InputTag("goodPhotonTags"),
        cut=cms.string(options['PHOTON_CUTS']),
        selection=cms.InputTag("photonFromDiPhotons:idmva"),
        id_cut=cms.double(0.0))

    ###################################################################

    process.goodPhotonsTagHLT = cms.EDProducer(
        "FlashggPhotonTriggerCandProducer",
        filterNames=options['TnPHLTTagFilters'],
        inputs=cms.InputTag("goodPhotonTagsIDMVA"),
        bits=cms.InputTag('TriggerResults::HLT'),
        objects=cms.InputTag('selectedPatTrigger'),
        dR=cms.double(0.3),
        isAND=cms.bool(True))

    process.goodPhotonsProbeHLT = cms.EDProducer(
        "FlashggPhotonTriggerCandProducer",
        filterNames=options['TnPHLTProbeFilters'],
        inputs=cms.InputTag("goodPhotonProbes"),
        bits=cms.InputTag('TriggerResults::HLT'),
        objects=cms.InputTag('selectedPatTrigger'),
        dR=cms.double(0.3),
        isAND=cms.bool(True))

    process.goodPhotonProbesL1 = cms.EDProducer(
        "FlashggPhotonL1CandProducer",
        inputs=cms.InputTag("goodPhotonProbes"),
        isoObjects=cms.InputTag("l1extraParticles:Isolated"),
        nonIsoObjects=cms.InputTag("l1extraParticles:NonIsolated"),
        minET=cms.double(40),
        dRmatch=cms.double(0.2),
        isolatedOnly=cms.bool(False))

    ###################################################################
    ## PHOTON ISOLATION
    ###################################################################
    process.load(
        "RecoEgamma/PhotonIdentification/PhotonIDValueMapProducer_cfi")

    process.tagTightRECO = cms.EDProducer(
        "CandViewShallowCloneCombiner",
        decay=cms.string("goodPhotonsTagHLT goodPhotonsProbeHLT"),
        checkCharge=cms.bool(False),
        cut=cms.string("40<mass<130"),
    )
def setModules(process, options):

    process.sampleInfo = cms.EDProducer("tnp::SampleInfoTree",
                                        #vertexCollection = cms.InputTag("offlineSlimmedPrimaryVertices"),
                                        genInfo = cms.InputTag("generator")
                                        )

    process.eleVarHelper = cms.EDProducer("GsfElectronVariableHelper",
                                          probes = cms.InputTag(options['ELECTRON_COLL']),
                                          vertexCollection = cms.InputTag("offlinePrimaryVertices")
                                          )

    process.hltVarHelper = cms.EDProducer("GsfElectronHLTVariableHelper",
                                          probes = cms.InputTag(options['ELECTRON_COLL']),
                                          hltCandidateCollection = cms.InputTag("hltEgammaCandidates"),
                                          mapOutputNames = cms.vstring("hltsieie",
                                                                       "hltecaliso",
                                                                       "hlthcaliso",
                                                                       "hlthoe",
                                                                       "hlttkiso",
                                                                       "hltdeta",
                                                                       "hltdetaseed",
                                                                       "hltdphi",
                                                                       "hlteop",
                                                                       "hltmishits"),
                                          mapInputTags = cms.VInputTag("hltEgammaClusterShape:sigmaIEtaIEta5x5",
                                                                       "hltEgammaEcalPFClusterIso",
                                                                       "hltEgammaHcalPFClusterIso",
                                                                       "hltEgammaHoverE", 
                                                                       "hltEgammaEleGsfTrackIso",
                                                                       "hltEgammaGsfTrackVars:Deta",
                                                                       "hltEgammaGsfTrackVars:DetaSeed",
                                                                       "hltEgammaGsfTrackVars:Dphi",
                                                                       "hltEgammaGsfTrackVars:OneOESuperMinusOneOP",
                                                                       "hltEgammaGsfTrackVars:MissingHits")
                                          )

    from HLTrigger.HLTfilters.hltHighLevel_cfi import hltHighLevel
    process.hltFilter = hltHighLevel.clone()
    process.hltFilter.throw = cms.bool(True)
    process.hltFilter.HLTPaths = options['TnPPATHS']

    from PhysicsTools.TagAndProbe.pileupConfiguration_cfi import pileupProducer
    process.pileupReweightingProducer = pileupProducer.clone()

###################################################################                                                                               
## ELECTRON MODULES                                                                                                                                    
###################################################################                                    
    
    process.goodElectrons = cms.EDFilter("GsfElectronRefSelector",
                                         src = cms.InputTag(options['ELECTRON_COLL']),
                                         cut = cms.string(options['ELECTRON_CUTS'])
                                         )
    
###################################################################                                                                     
## SUPERCLUSTER MODULES                                                     
###################################################################         
    
    process.superClusterCands = cms.EDProducer("ConcreteEcalCandidateProducer",
                                               src = cms.InputTag(options['SUPERCLUSTER_COLL']),
                                               particleType = cms.int32(11),
                                               )
    
    process.goodSuperClusters = cms.EDFilter("RecoEcalCandidateRefSelector",
                                             src = cms.InputTag("superClusterCands"),
                                             cut = cms.string(options['SUPERCLUSTER_CUTS']),
                                             filter = cms.bool(True)
                                             )
    
    process.GsfMatchedSuperClusterCands = cms.EDProducer("ElectronMatchedCandidateProducer",
                                                         src     = cms.InputTag("superClusterCands"),
                                                         ReferenceElectronCollection = cms.untracked.InputTag("goodElectrons"),
                                                         cut = cms.string(options['SUPERCLUSTER_CUTS'])
                                                         )
    
###################################################################
## TRIGGER MATCHING
###################################################################
    
    process.goodElectronsTagHLT = cms.EDProducer("GsfElectronTriggerCandProducer",
                                                 filterNames = cms.vstring(options['TnPHLTTagFilters']),
                                                 inputs      = cms.InputTag("goodElectronsTAGCutBasedTight"),
                                                 bits        = cms.InputTag('TriggerResults::HLT'),
                                                 objects     = cms.InputTag('hltTriggerSummaryAOD'),
                                                 dR          = cms.double(0.3),
                                                 isAND       = cms.bool(True)
                                                 )
    
    process.goodElectronsProbeHLT = cms.EDProducer("GsfElectronTriggerCandProducer",
                                                   filterNames = cms.vstring(options['TnPHLTProbeFilters']),
                                                   inputs      = cms.InputTag("goodElectrons"),
                                                   bits        = cms.InputTag('TriggerResults::HLT'),
                                                   objects     = cms.InputTag('hltTriggerSummaryAOD'),
                                                   dR          = cms.double(0.3),
                                                   isAND       = cms.bool(True)
                                                   )
    
    process.goodElectronsProbeMeasureHLT = cms.EDProducer("GsfElectronTriggerCandProducer",
                                                          filterNames = cms.vstring(options['TnPHLTProbeFilters']),
                                                          inputs      = cms.InputTag("goodElectrons"),
                                                          bits        = cms.InputTag('TriggerResults::HLT'),
                                                          objects     = cms.InputTag('hltTriggerSummaryAOD'),
                                                          dR          = cms.double(0.3),
                                                          isAND       = cms.bool(True)
                                                          )
    
    process.goodElectronsMeasureHLT = cms.EDProducer("GsfElectronTriggerCandProducer",
                                                     filterNames = cms.vstring(options['HLTFILTERTOMEASURE']),
                                                     inputs      = cms.InputTag("goodElectronsProbeMeasureHLT"),
                                                     bits        = cms.InputTag('TriggerResults::HLT'),
                                                     objects     = cms.InputTag('hltTriggerSummaryAOD'),
                                                     dR          = cms.double(0.3),
                                                     isAND       = cms.bool(False)
                                                     )
    
    process.goodSuperClustersHLT = cms.EDProducer("RecoEcalCandidateTriggerCandProducer",
                                                  filterNames  = cms.vstring(options['TnPHLTProbeFilters']),
                                                  inputs       = cms.InputTag("goodSuperClusters"),
                                                  bits         = cms.InputTag('TriggerResults::HLT'),
                                                  objects      = cms.InputTag('hltTriggerSummaryAOD'),
                                                  dR           = cms.double(0.3),
                                                  isAND        = cms.bool(True)
                                                  )
    
###################################################################
## MC MATCHES
###################################################################
    
   #process.McMatchHLT = cms.EDProducer("MCTruthDeltaRMatcherNew",
   #                                    matchPDGId = cms.vint32(11),
   #                                    src = cms.InputTag("goodElectrons"),
   #                                    distMin = cms.double(0.3),
   #                                    matched = cms.InputTag("prunedGenParticles"),
   #                                    checkCharge = cms.bool(True)
   #                                    )
   #
   #process.McMatchSC = cms.EDProducer("MCTruthDeltaRMatcherNew",
   #                                   matchPDGId = cms.vint32(11),
   #                                   src = cms.InputTag("goodSuperClusters"),
   #                                   distMin = cms.double(0.3),
   #                                   matched = cms.InputTag("prunedGenParticles"),
   #                                   checkCharge = cms.bool(False)
   #                                   )
   #
   #process.McMatchTag = cms.EDProducer("MCTruthDeltaRMatcherNew",
   #                                    matchPDGId = cms.vint32(11),
   #                                    src = cms.InputTag("goodElectronsTAGCutBasedTight"),
   #                                    distMin = cms.double(0.2),
   #                                    matched = cms.InputTag("prunedGenParticles"),
   #                                    checkCharge = cms.bool(True)
   #                                    )
   #
   #process.McMatchRECO = cms.EDProducer("MCTruthDeltaRMatcherNew",
   #                                     matchPDGId = cms.vint32(11),
   #                                     src = cms.InputTag("goodElectrons"),
   #                                     distMin = cms.double(0.2),
   #                                     matched = cms.InputTag("prunedGenParticles"),
   #                                     checkCharge = cms.bool(True)
   #                                     )
    
###################################################################
## TnP PAIRS
###################################################################
    
    process.tagTightHLT = cms.EDProducer("CandViewShallowCloneCombiner",
                                         decay = cms.string("goodElectronsTagHLT@+ goodElectronsProbeMeasureHLT@-"), 
                                         checkCharge = cms.bool(True),
                                         cut = cms.string("40<mass<1000"),
                                         )
    
    process.tagTightSC = cms.EDProducer("CandViewShallowCloneCombiner",
                                        decay = cms.string("goodElectronsTagHLT goodSuperClustersHLT"), 
                                        checkCharge = cms.bool(False),
                                        cut = cms.string("40<mass<1000"),
                                        )
    
    process.tagTightRECO = cms.EDProducer("CandViewShallowCloneCombiner",
                                          decay = cms.string("goodElectronsTagHLT@+ goodElectronsProbeHLT@-"), 
                                          checkCharge = cms.bool(True),
                                          cut = cms.string("40<mass<1000"),
                                          )
Exemple #9
0
def setModules(process, options):

    process.sampleInfo = cms.EDProducer(
        "tnp::SampleInfoTree",
        #vertexCollection = cms.InputTag("offlineSlimmedPrimaryVertices"),
        genInfo=cms.InputTag("generator"))

    process.eleVarHelper = cms.EDProducer(
        "GsfElectronVariableHelper",
        probes=cms.InputTag(options['ELECTRON_COLL']),
        vertexCollection=cms.InputTag("offlinePrimaryVertices"))

    process.hltVarHelper = cms.EDProducer(
        "GsfElectronHLTVariableHelper",
        probes=cms.InputTag(options['ELECTRON_COLL']),
        hltCandidateCollection=cms.InputTag("hltEgammaCandidates"),
        mapOutputNames=cms.vstring("hltsieie", "hltecaliso", "hlthcaliso",
                                   "hlthoe", "hlttkiso", "hltdeta",
                                   "hltdetaseed", "hltdphi", "hlteop",
                                   "hltmishits"),
        mapInputTags=cms.VInputTag(
            "hltEgammaClusterShape:sigmaIEtaIEta5x5",
            "hltEgammaEcalPFClusterIso", "hltEgammaHcalPFClusterIso",
            "hltEgammaHoverE", "hltEgammaEleGsfTrackIso",
            "hltEgammaGsfTrackVars:Deta", "hltEgammaGsfTrackVars:DetaSeed",
            "hltEgammaGsfTrackVars:Dphi",
            "hltEgammaGsfTrackVars:OneOESuperMinusOneOP",
            "hltEgammaGsfTrackVars:MissingHits"))

    from HLTrigger.HLTfilters.hltHighLevel_cfi import hltHighLevel
    process.hltFilter = hltHighLevel.clone()
    process.hltFilter.throw = cms.bool(True)
    process.hltFilter.HLTPaths = options['TnPPATHS']

    from PhysicsTools.TagAndProbe.pileupConfiguration_cfi import pileupProducer
    process.pileupReweightingProducer = pileupProducer.clone()

    ###################################################################
    ## ELECTRON MODULES
    ###################################################################

    process.goodElectrons = cms.EDFilter(
        "GsfElectronRefSelector",
        src=cms.InputTag(options['ELECTRON_COLL']),
        cut=cms.string(options['ELECTRON_CUTS']))

    ###################################################################
    ## SUPERCLUSTER MODULES
    ###################################################################
    process.superClusterMerger = cms.EDProducer(
        "EgammaSuperClusterMerger",
        src=cms.VInputTag(
            cms.InputTag(
                "particleFlowSuperClusterECAL:particleFlowSuperClusterECALBarrel"
            ),
            cms.InputTag(
                "particleFlowSuperClusterECAL:particleFlowSuperClusterECALEndcapWithPreshower"
            )))

    process.superClusterCands = cms.EDProducer(
        "ConcreteEcalCandidateProducer",
        src=cms.InputTag("superClusterMerger"),
        particleType=cms.int32(11),
    )

    process.goodSuperClusters = cms.EDFilter(
        "RecoEcalCandidateRefSelector",
        src=cms.InputTag("superClusterCands"),
        cut=cms.string(options['SUPERCLUSTER_CUTS']),
        filter=cms.bool(True))

    process.GsfMatchedSuperClusterCands = cms.EDProducer(
        "GsfElectronMatchedCandidateProducer",
        src=cms.InputTag("superClusterCands"),
        ReferenceElectronCollection=cms.untracked.InputTag("goodElectrons"),
        cut=cms.string(options['SUPERCLUSTER_CUTS']))

    ###################################################################
    ## TRIGGER MATCHING
    ###################################################################

    process.goodElectronsTagHLT = cms.EDProducer(
        "GsfElectronTriggerCandProducer",
        filterNames=cms.vstring(options['TnPHLTTagFilters']),
        inputs=cms.InputTag("goodElectronsTAGCutBasedTight"),
        bits=cms.InputTag('TriggerResults::HLT'),
        objects=cms.InputTag('hltTriggerSummaryAOD'),
        dR=cms.double(0.3),
        isAND=cms.bool(True))

    process.goodElectronsProbeHLT = cms.EDProducer(
        "GsfElectronTriggerCandProducer",
        filterNames=cms.vstring(options['TnPHLTProbeFilters']),
        inputs=cms.InputTag("goodElectrons"),
        bits=cms.InputTag('TriggerResults::HLT'),
        objects=cms.InputTag('hltTriggerSummaryAOD'),
        dR=cms.double(0.3),
        isAND=cms.bool(True))

    process.goodElectronsProbeMeasureHLT = cms.EDProducer(
        "GsfElectronTriggerCandProducer",
        filterNames=cms.vstring(options['TnPHLTProbeFilters']),
        inputs=cms.InputTag("goodElectrons"),
        bits=cms.InputTag('TriggerResults::HLT'),
        objects=cms.InputTag('hltTriggerSummaryAOD'),
        dR=cms.double(0.3),
        isAND=cms.bool(True))

    process.goodElectronsMeasureHLT = cms.EDProducer(
        "GsfElectronTriggerCandProducer",
        filterNames=cms.vstring(options['HLTFILTERTOMEASURE']),
        inputs=cms.InputTag("goodElectronsProbeMeasureHLT"),
        bits=cms.InputTag('TriggerResults::HLT'),
        objects=cms.InputTag('hltTriggerSummaryAOD'),
        dR=cms.double(0.3),
        isAND=cms.bool(False))

    process.goodSuperClustersHLT = cms.EDProducer(
        "RecoEcalCandidateTriggerCandProducer",
        filterNames=cms.vstring(options['TnPHLTProbeFilters']),
        inputs=cms.InputTag("goodSuperClusters"),
        bits=cms.InputTag('TriggerResults::HLT'),
        objects=cms.InputTag('hltTriggerSummaryAOD'),
        dR=cms.double(0.3),
        isAND=cms.bool(True))

    ###################################################################
    ## TnP PAIRS
    ###################################################################

    process.tagTightHLT = cms.EDProducer(
        "CandViewShallowCloneCombiner",
        decay=cms.string(
            "goodElectronsTagHLT@+ goodElectronsProbeMeasureHLT@-"),
        checkCharge=cms.bool(True),
        cut=cms.string("60<mass<120"),
    )

    process.tagTightSC = cms.EDProducer(
        "CandViewShallowCloneCombiner",
        decay=cms.string("goodElectronsTagHLT goodSuperClustersHLT"),
        checkCharge=cms.bool(False),
        cut=cms.string("60<mass<120"),
    )

    process.tagTightRECO = cms.EDProducer(
        "CandViewShallowCloneCombiner",
        decay=cms.string("goodElectronsTagHLT@+ goodElectronsProbeHLT@-"),
        checkCharge=cms.bool(True),
        cut=cms.string("60<mass<120"),
    )
def setModules(process, options):

    process.sampleInfo = cms.EDProducer("tnp::SampleInfoTree", genInfo=cms.InputTag("generator"))

    from HLTrigger.HLTfilters.hltHighLevel_cfi import hltHighLevel

    process.hltFilter = hltHighLevel.clone()
    process.hltFilter.throw = cms.bool(True)
    process.hltFilter.HLTPaths = options["TnPPATHS"]

    from PhysicsTools.TagAndProbe.pileupConfiguration_cfi import pileupProducer

    process.pileupReweightingProducer = pileupProducer.clone()

    ###################################################################
    ## ELECTRON MODULES
    ###################################################################

    process.goodPhotons = cms.EDFilter(
        "PATPhotonRefSelector", src=cms.InputTag(options["PHOTON_COLL"]), cut=cms.string(options["PHOTON_CUTS"])
    )

    ###################################################################
    ## PHOTON ISOLATION
    ###################################################################
    process.load("RecoEgamma/PhotonIdentification/PhotonIDValueMapProducer_cfi")

    ###################################################################
    ## HLT MATCHING
    ###################################################################

    process.goodPhotonsTagHLT = cms.EDProducer(
        "PatPhotonTriggerCandProducer",
        filterNames=options["TnPHLTTagFilters"],
        inputs=cms.InputTag("goodPhotonsTAGCutBasedTight"),
        bits=cms.InputTag("TriggerResults::HLT"),
        objects=cms.InputTag("selectedPatTrigger"),
        dR=cms.double(0.3),
        isAND=cms.bool(True),
    )

    process.goodPhotonsProbeHLT = cms.EDProducer(
        "PatPhotonTriggerCandProducer",
        filterNames=options["TnPHLTProbeFilters"],
        inputs=cms.InputTag("goodPhotons"),
        bits=cms.InputTag("TriggerResults::HLT"),
        objects=cms.InputTag("selectedPatTrigger"),
        dR=cms.double(0.3),
        isAND=cms.bool(True),
    )

    process.tagTightRECO = cms.EDProducer(
        "CandViewShallowCloneCombiner",
        decay=cms.string("goodPhotonsTagHLT@+ goodPhotonsProbeHLT@-"),
        checkCharge=cms.bool(False),
        cut=cms.string("40<mass<1000"),
    )

    ###################################################################
    ## MC MATCHING
    ###################################################################

    process.McMatchTag = cms.EDProducer(
        "MCTruthDeltaRMatcherNew",
        matchPDGId=cms.vint32(11),
        src=cms.InputTag("goodPhotonsTAGCutBasedTight"),
        distMin=cms.double(0.2),
        matched=cms.InputTag("prunedGenParticles"),
        checkCharge=cms.bool(False),
    )

    process.McMatchRECO = cms.EDProducer(
        "MCTruthDeltaRMatcherNew",
        matchPDGId=cms.vint32(11),
        src=cms.InputTag("goodPhotons"),
        distMin=cms.double(0.2),
        matched=cms.InputTag("prunedGenParticles"),
        checkCharge=cms.bool(False),
    )