Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Complete low pT electron chain (back port) #25887

Merged
merged 5 commits into from
Feb 21, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import FWCore.ParameterSet.Config as cms

from PhysicsTools.PatAlgos.mcMatchLayer0.electronMatch_cfi import *
from TrackingTools.TransientTrack.TransientTrackBuilder_cfi import *
from PhysicsTools.PatAlgos.producersLayer1.electronProducer_cfi import *

sourceElectrons = cms.InputTag("lowPtGsfElectrons")

lowPtElectronMatch = electronMatch.clone(
src = sourceElectrons,
)

patLowPtElectrons = patElectrons.clone(
# input collections
electronSource = sourceElectrons,
genParticleMatch = cms.InputTag("lowPtElectronMatch"),
# overrides
addElectronID = cms.bool(False),
addGenMatch = cms.bool(True),
addMVAVariables = cms.bool(False),
addPFClusterIso = cms.bool(False),
electronIDSources = cms.PSet(),
computeMiniIso = cms.bool(False),
isoDeposits = cms.PSet(),
isolationValues = cms.PSet(),
isolationValuesNoPFId = cms.PSet(),
miniIsoParamsB = cms.vdouble(),
miniIsoParamsE = cms.vdouble(),
usePfCandidateMultiMap = cms.bool(False),
# embedding
embedBasicClusters = cms.bool(False),
embedGenMatch = cms.bool(False),
embedGsfElectronCore = cms.bool(False),
embedGsfTrack = cms.bool(False),
embedHighLevelSelection = cms.bool(False),
embedPFCandidate = cms.bool(False),
embedPflowBasicClusters = cms.bool(False),
embedPflowPreshowerClusters = cms.bool(False),
embedPflowSuperCluster = cms.bool(False),
embedPreshowerClusters = cms.bool(False),
embedRecHits = cms.bool(False),
embedSeedCluster = cms.bool(False),
embedSuperCluster = cms.bool(False),
embedTrack = cms.bool(True),
)

makePatLowPtElectronsTask = cms.Task(
lowPtElectronMatch,
patLowPtElectrons
)

makePatLowPtElectrons = cms.Sequence(makePatLowPtElectronsTask)


# Modifiers
from Configuration.Eras.Modifier_fastSim_cff import fastSim
fastSim.toModify(patLowPtElectrons, embedTrack = False)
from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy
from Configuration.Eras.Modifier_run2_miniAOD_94XFall17_cff import run2_miniAOD_94XFall17
(run2_miniAOD_80XLegacy | run2_miniAOD_94XFall17).toModify(patLowPtElectrons,
electronSource = "gedGsfElectrons",
genParticleMatch = "electronMatch"
)
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import FWCore.ParameterSet.Config as cms

from PhysicsTools.PatAlgos.producersLayer1.electronProducer_cff import *
from PhysicsTools.PatAlgos.producersLayer1.lowPtElectronProducer_cff import *
from PhysicsTools.PatAlgos.producersLayer1.muonProducer_cff import *
from PhysicsTools.PatAlgos.producersLayer1.tauProducer_cff import *
from PhysicsTools.PatAlgos.producersLayer1.photonProducer_cff import *
Expand All @@ -13,6 +14,7 @@
logName = cms.untracked.string("patCandidates|PATSummaryTables"),
candidates = cms.VInputTag(
cms.InputTag("patElectrons"),
cms.InputTag("patLowPtElectrons"),
cms.InputTag("patMuons"),
cms.InputTag("patTaus"),
cms.InputTag("patPhotons"),
Expand All @@ -24,6 +26,7 @@

patCandidatesTask = cms.Task(
makePatElectronsTask,
makePatLowPtElectronsTask,
makePatMuonsTask,
makePatTausTask,
makePatPhotonsTask,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import FWCore.ParameterSet.Config as cms

# module to select Electrons
# See https://twiki.cern.ch/twiki/bin/view/CMS/SWGuidePhysicsCutParser
# on how to use the cut-string
#
selectedPatLowPtElectrons = cms.EDFilter("PATElectronSelector",
src = cms.InputTag("patLowPtElectrons"),
cut = cms.string("")
)

# Modifiers for legacy AOD
from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy
from Configuration.Eras.Modifier_run2_miniAOD_94XFall17_cff import run2_miniAOD_94XFall17
(run2_miniAOD_80XLegacy | run2_miniAOD_94XFall17).toModify(selectedPatLowPtElectrons,
cut = "pt>99999."
)
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import FWCore.ParameterSet.Config as cms

from PhysicsTools.PatAlgos.selectionLayer1.electronSelector_cfi import *
from PhysicsTools.PatAlgos.selectionLayer1.lowPtElectronSelector_cfi import *
from PhysicsTools.PatAlgos.selectionLayer1.muonSelector_cfi import *
from PhysicsTools.PatAlgos.selectionLayer1.tauSelector_cfi import *
from PhysicsTools.PatAlgos.selectionLayer1.photonSelector_cfi import *
Expand All @@ -13,6 +14,7 @@
logName = cms.untracked.string("selectedPatCanddiates|PATSummaryTables"),
candidates = cms.VInputTag(
cms.InputTag("selectedPatElectrons"),
cms.InputTag("selectedPatLowPtElectrons"),
cms.InputTag("selectedPatMuons"),
cms.InputTag("selectedPatTaus"),
cms.InputTag("selectedPatPhotons"),
Expand All @@ -23,6 +25,7 @@

selectedPatCandidatesTask = cms.Task(
selectedPatElectrons,
selectedPatLowPtElectrons,
selectedPatMuons,
selectedPatTaus,
selectedPatPhotons,
Expand Down
13 changes: 12 additions & 1 deletion PhysicsTools/PatAlgos/python/slimming/MicroEventContent_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
'drop *_*_caloTowers_*',
'drop *_*_pfCandidates_*',
'drop *_*_genJets_*',

'keep *_offlineBeamSpot_*_*',
'keep *_offlineSlimmedPrimaryVertices_*_*',
'keep patPackedCandidates_packedPFCandidates_*_*',
Expand Down Expand Up @@ -84,6 +83,18 @@
)
)

# Only add low pT electrons for bParking era
from Configuration.Eras.Modifier_bParking_cff import bParking
_bParking_extraCommands = ['keep *_slimmedLowPtElectrons_*_*',
'keep recoGsfElectronCores_lowPtGsfElectronCores_*_*',
'keep recoSuperClusters_lowPtGsfElectronSuperClusters_*_*',
'keep recoCaloClusters_lowPtGsfElectronSuperClusters_*_*',
'keep recoGsfTracks_lowPtGsfEleGsfTracks_*_*',
'keep floatedmValueMap_lowPtGsfElectronSeedValueMaps_*_*',
'keep floatedmValueMap_lowPtGsfElectronID_*_*',
]
bParking.toModify(MicroEventContent, outputCommands = MicroEventContent.outputCommands + _bParking_extraCommands)

MicroEventContentGEN = cms.PSet(
outputCommands = cms.untracked.vstring(
'keep patPackedGenParticles_packedGenParticles_*_*',
Expand Down
26 changes: 26 additions & 0 deletions PhysicsTools/PatAlgos/python/slimming/slimmedLowPtElectrons_cfi.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import FWCore.ParameterSet.Config as cms

slimmedLowPtElectrons = cms.EDProducer("PATElectronSlimmer",
src = cms.InputTag("selectedPatLowPtElectrons"),
dropSuperCluster = cms.string("0"), # you can put a cut to slim selectively, e.g. pt < 10
dropBasicClusters = cms.string("0"), # you can put a cut to slim selectively, e.g. pt < 10
dropPFlowClusters = cms.string("0"), # you can put a cut to slim selectively, e.g. pt < 10
dropPreshowerClusters = cms.string("0"), # you can put a cut to slim selectively, e.g. pt < 10
dropSeedCluster = cms.string("0"), # you can put a cut to slim selectively, e.g. pt < 10
dropRecHits = cms.string("0"), # you can put a cut to slim selectively, e.g. pt < 10
dropCorrections = cms.string("0"), # you can put a cut to slim selectively, e.g. pt < 10
dropIsolations = cms.string("0"), # you can put a cut to slim selectively, e.g. pt < 10
dropShapes = cms.string("0"), # you can put a cut to slim selectively, e.g. pt < 10
dropSaturation = cms.string("0"), # you can put a cut to slim selectively, e.g. pt < 10
dropExtrapolations = cms.string("0"), # you can put a cut to slim selectively, e.g. pt < 10
dropClassifications = cms.string("0"), # you can put a cut to slim selectively, e.g. pt < 10
linkToPackedPFCandidates = cms.bool(False), # remove for the moment
recoToPFMap = cms.InputTag("reducedEgamma","reducedGsfElectronPfCandMap"), # Not used, but the plugin asks for it anyhow
packedPFCandidates = cms.InputTag("packedPFCandidates"), # Not used, but the plugin asks for it anyhow
saveNonZSClusterShapes = cms.string("1"), # save additional user floats: (sigmaIetaIeta,sigmaIphiIphi,sigmaIetaIphi,r9,e1x5_over_e5x5)_NoZS
reducedBarrelRecHitCollection = cms.InputTag("reducedEcalRecHitsEB"),
reducedEndcapRecHitCollection = cms.InputTag("reducedEcalRecHitsEE"),
modifyElectrons = cms.bool(False),
modifierConfig = cms.PSet( modifications = cms.VPSet() )
)

2 changes: 2 additions & 0 deletions PhysicsTools/PatAlgos/python/slimming/slimming_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from PhysicsTools.PatAlgos.slimming.slimmedCaloJets_cfi import *
from PhysicsTools.PatAlgos.slimming.slimmedGenJets_cfi import *
from PhysicsTools.PatAlgos.slimming.slimmedElectrons_cfi import *
from PhysicsTools.PatAlgos.slimming.slimmedLowPtElectrons_cfi import *
from PhysicsTools.PatAlgos.slimming.slimmedMuons_cfi import *
from PhysicsTools.PatAlgos.slimming.slimmedPhotons_cfi import *
from PhysicsTools.PatAlgos.slimming.slimmedOOTPhotons_cff import *
Expand Down Expand Up @@ -40,6 +41,7 @@
slimmedGenJets,
slimmedGenJetsAK8,
slimmedElectrons,
slimmedLowPtElectrons,
slimmedMuons,
slimmedPhotons,
slimmedOOTPhotons,
Expand Down
9 changes: 6 additions & 3 deletions PhysicsTools/PatAlgos/python/tools/coreTools.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class RunOnData(ConfigToolBase):
_defaultParameters=dicttypes.SortedKeysDict()
def __init__(self):
ConfigToolBase.__init__(self)
self.addParameter(self._defaultParameters,'names',['All'], "collection name; supported are 'Photons', 'Electrons','Muons', 'Taus', 'TausBoosted', 'Jets', 'METs', 'All', 'PFAll', 'PFElectrons','PFTaus','PFMuons'", allowedValues=['Photons', 'Electrons','Muons', 'Taus', 'TausBoosted', 'Jets', 'METs', 'All', 'PFAll', 'PFElectrons','PFTaus','PFMuons'])
self.addParameter(self._defaultParameters,'names',['All'], "collection name; supported are 'Photons', 'Electrons', 'LowPtElectrons', 'Muons', 'Taus', 'TausBoosted', 'Jets', 'METs', 'All', 'PFAll', 'PFElectrons','PFTaus','PFMuons'", allowedValues=['Photons', 'Electrons', 'LowPtElectrons', 'Muons', 'Taus', 'TausBoosted', 'Jets', 'METs', 'All', 'PFAll', 'PFElectrons','PFTaus','PFMuons'])
self.addParameter(self._defaultParameters,'postfix',"", "postfix of default sequence")
self.addParameter(self._defaultParameters,'outputModules',['out'], "names of all output modules specified to be adapted (default is ['out'])")
self._parameters=copy.deepcopy(self._defaultParameters)
Expand Down Expand Up @@ -69,8 +69,8 @@ class RemoveMCMatching(ConfigToolBase):
def __init__(self):
ConfigToolBase.__init__(self)
self.addParameter(self._defaultParameters,'names',['All'],
"collection name; supported are 'Photons', 'OOTPhotons', 'Electrons','Muons', 'Taus', 'TausBoosted', 'Jets', 'METs', 'All', 'PFAll', 'PFElectrons','PFTaus','PFMuons'",
allowedValues=['Photons', 'OOTPhotons' ,'Electrons','Muons', 'Taus', 'TausBoosted', 'Jets', 'METs', 'All', 'PFAll', 'PFElectrons','PFTaus','PFMuons'])
"collection name; supported are 'Photons', 'OOTPhotons', 'Electrons', 'LowPtElectrons', 'Muons', 'Taus', 'TausBoosted', 'Jets', 'METs', 'All', 'PFAll', 'PFElectrons','PFTaus','PFMuons'",
allowedValues=['Photons', 'OOTPhotons' ,'Electrons', 'LowPtElectrons', 'Muons', 'Taus', 'TausBoosted', 'Jets', 'METs', 'All', 'PFAll', 'PFElectrons','PFTaus','PFMuons'])
self.addParameter(self._defaultParameters,'postfix',"", "postfix of default sequence")
self.addParameter(self._defaultParameters,'outputModules',['out'], "names of all output modules specified to be adapted (default is ['out'])")
self._parameters=copy.deepcopy(self._defaultParameters)
Expand Down Expand Up @@ -111,6 +111,9 @@ def toolCode(self, process):
if( names[obj] == 'Electrons' or names[obj] == 'All' ):
print "removing MC dependencies for electrons"
_removeMCMatchingForPATObject(process, 'electronMatch', 'patElectrons', postfix)
if( names[obj] == 'LowPtElectrons' or names[obj] == 'All' ):
print("removing MC dependencies for LowPtElectrons")
_removeMCMatchingForPATObject(process, 'lowPtElectronMatch', 'patLowPtElectrons', postfix)
if( names[obj] == 'Muons' or names[obj] == 'All' ):
print "removing MC dependencies for muons"
_removeMCMatchingForPATObject(process, 'muonMatch', 'patMuons', postfix)
Expand Down
4 changes: 3 additions & 1 deletion PhysicsTools/PatAlgos/test/IntegrationTest_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@
process.selectedPatCandidates
)


process.patLowPtElectrons.electronSource = "gedGsfElectrons"
process.patLowPtElectrons.genParticleMatch = "electronMatch"
process.selectedPatLowPtElectrons.cut = "pt>99999."

## ------------------------------------------------------
# In addition you usually want to change the following
Expand Down
3 changes: 3 additions & 0 deletions PhysicsTools/PatAlgos/test/patTuple_addTriggerInfo_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@
process.selectedPatCandidates
)

process.patLowPtElectrons.electronSource = "gedGsfElectrons"
process.patLowPtElectrons.genParticleMatch = "electronMatch"
process.selectedPatLowPtElectrons.cut = "pt>99999."

### Get PAT trigger tools
from PhysicsTools.PatAlgos.tools.trigTools import *
Expand Down
24 changes: 21 additions & 3 deletions RecoEgamma/Configuration/python/RecoEgamma_EventContent_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,13 @@
'keep *_hfEMClusters_*_*',
'keep *_gedGsfElectronCores_*_*',
'keep *_gedGsfElectrons_*_*',
'keep recoGsfTracks_lowPtGsfEleGsfTracks_*_*'
'keep recoCaloClusters_lowPtGsfElectronSuperClusters_*_*',
'keep recoGsfElectrons_lowPtGsfElectrons_*_*',
'keep recoGsfElectronCores_lowPtGsfElectronCores_*_*',
'keep recoGsfTracks_lowPtGsfEleGsfTracks_*_*',
'keep recoSuperClusters_lowPtGsfElectronSuperClusters_*_*',
'keep floatedmValueMap_lowPtGsfElectronSeedValueMaps_*_*',
'keep floatedmValueMap_lowPtGsfElectronID_*_*',
)
)

Expand Down Expand Up @@ -98,7 +104,13 @@
'keep *_hfEMClusters_*_*',
'keep *_gedGsfElectronCores_*_*',
'keep *_gedGsfElectrons_*_*',
'keep recoGsfTracks_lowPtGsfEleGsfTracks_*_*'
'keep recoCaloClusters_lowPtGsfElectronSuperClusters_*_*',
'keep recoGsfElectrons_lowPtGsfElectrons_*_*',
'keep recoGsfElectronCores_lowPtGsfElectronCores_*_*',
'keep recoGsfTracks_lowPtGsfEleGsfTracks_*_*',
'keep recoSuperClusters_lowPtGsfElectronSuperClusters_*_*',
'keep floatedmValueMap_lowPtGsfElectronSeedValueMaps_*_*',
'keep floatedmValueMap_lowPtGsfElectronID_*_*',
)
)

Expand Down Expand Up @@ -144,7 +156,13 @@
'keep *_hfEMClusters_*_*',
'keep *_gedGsfElectronCores_*_*',
'keep *_gedGsfElectrons_*_*',
'keep recoGsfTracks_lowPtGsfEleGsfTracks_*_*'
'keep recoCaloClusters_lowPtGsfElectronSuperClusters_*_*',
'keep recoGsfElectrons_lowPtGsfElectrons_*_*',
'keep recoGsfElectronCores_lowPtGsfElectronCores_*_*',
'keep recoGsfTracks_lowPtGsfEleGsfTracks_*_*',
'keep recoSuperClusters_lowPtGsfElectronSuperClusters_*_*',
'keep floatedmValueMap_lowPtGsfElectronSeedValueMaps_*_*',
'keep floatedmValueMap_lowPtGsfElectronID_*_*',
)
)

Expand Down
1 change: 1 addition & 0 deletions RecoEgamma/EgammaElectronProducers/BuildFile.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<use name="CondFormats/EgammaObjects"/>
<use name="DataFormats/BeamSpot"/>
<use name="DataFormats/EgammaCandidates"/>
<use name="DataFormats/ParticleFlowReco"/>
<use name="DataFormats/TrackReco"/>
<use name="FWCore/ParameterSet"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
#ifndef RecoEgamma_EgammaElectronProducers_LowPtGsfElectronIDHeavyObjectCache_h
#define RecoEgamma_EgammaElectronProducers_LowPtGsfElectronIDHeavyObjectCache_h

#include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h"
#include "CondFormats/EgammaObjects/interface/GBRForest.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include <vector>

namespace reco {
class BeamSpot;
class PreId;
}

namespace lowptgsfeleid {

class Features {
public:
// KF track
float trk_p_ = -1.;
float trk_nhits_ = -1.;
float trk_chi2red_ = -1.;
// GSF track
float gsf_nhits_ = -1.;
float gsf_chi2red_ = -1.;
// SC
float sc_E_ = -1.;
float sc_eta_ = -1.;
float sc_etaWidth_ = -1.;
float sc_phiWidth_ = -1.;
// Track-cluster matching
float match_seed_dEta_ = -1.;
float match_eclu_EoverP_ = -1.;
float match_SC_EoverP_ = -1.;
float match_SC_dEta_ = -1.;
float match_SC_dPhi_ = -1.;
// Shower shape vars
float shape_full5x5_sigmaIetaIeta_ = -1.;
float shape_full5x5_sigmaIphiIphi_ = -1.;
float shape_full5x5_HoverE_ = -1.;
float shape_full5x5_r9_ = -1.;
float shape_full5x5_circularity_ = -1.;
// Misc
float rho_ = -1.;
float brem_frac_ = -1.;
float ele_pt_ = -1.;
public:
std::vector<float> get();
void set( const reco::GsfElectronRef& ele, double rho );
};

class HeavyObjectCache {

public:

HeavyObjectCache( const edm::ParameterSet& );

std::vector<std::string> modelNames() const { return names_; }

double eval( const std::string& name, const reco::GsfElectronRef&, double rho ) const;

private:

std::vector<std::string> names_;
std::vector< std::unique_ptr<const GBRForest> > models_;
std::vector<double> thresholds_;

};
}

#endif // RecoEgamma_EgammaElectronProducers_LowPtGsfElectronIDHeavyObjectCache_h
Loading