CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
pat::PATElectronSlimmer Class Reference

Slimmer of PAT Electrons. More...

Inheritance diagram for pat::PATElectronSlimmer:
edm::stream::EDProducer<>

Public Member Functions

 PATElectronSlimmer (const edm::ParameterSet &iConfig)
 
void produce (edm::Event &iEvent, const edm::EventSetup &iSetup) final
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Private Attributes

const StringCutObjectSelector< pat::ElectrondropBasicClusters_
 
const StringCutObjectSelector< pat::ElectrondropClassifications_
 
const StringCutObjectSelector< pat::ElectrondropCorrections_
 
const StringCutObjectSelector< pat::ElectrondropExtrapolations_
 
const StringCutObjectSelector< pat::ElectrondropIsolations_
 
const StringCutObjectSelector< pat::ElectrondropPFlowClusters_
 
const StringCutObjectSelector< pat::ElectrondropPreshowerClusters_
 
const StringCutObjectSelector< pat::ElectrondropRecHits_
 
const StringCutObjectSelector< pat::ElectrondropSaturation_
 
const StringCutObjectSelector< pat::ElectrondropSeedCluster_
 
const StringCutObjectSelector< pat::ElectrondropShapes_
 
const StringCutObjectSelector< pat::ElectrondropSuperClusters_
 
const EcalClusterLazyTools::ESGetTokens ecalClusterToolsESGetTokens_
 
std::unique_ptr< pat::ObjectModifier< pat::Electron > > electronModifier_
 
const bool linkToPackedPF_
 
const bool modifyElectron_
 
const edm::EDGetTokenT< pat::PackedCandidateCollectionpc_
 
const edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > pf2pc_
 
const edm::EDGetTokenT< edm::ValueMap< std::vector< reco::PFCandidateRef > > > reco2pf_
 
const edm::EDGetTokenT< EcalRecHitCollectionreducedBarrelRecHitCollectionToken_
 
const edm::EDGetTokenT< EcalRecHitCollectionreducedEndcapRecHitCollectionToken_
 
const StringCutObjectSelector< pat::ElectronsaveNonZSClusterShapes_
 
const edm::EDGetTokenT< edm::View< pat::Electron > > src_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Slimmer of PAT Electrons.

Definition at line 26 of file PATElectronSlimmer.cc.

Constructor & Destructor Documentation

◆ PATElectronSlimmer()

pat::PATElectronSlimmer::PATElectronSlimmer ( const edm::ParameterSet iConfig)
explicit

Definition at line 54 of file PATElectronSlimmer.cc.

55  : src_(consumes<edm::View<pat::Electron>>(iConfig.getParameter<edm::InputTag>("src"))),
56  dropSuperClusters_(iConfig.getParameter<std::string>("dropSuperCluster")),
57  dropBasicClusters_(iConfig.getParameter<std::string>("dropBasicClusters")),
58  dropPFlowClusters_(iConfig.getParameter<std::string>("dropPFlowClusters")),
59  dropPreshowerClusters_(iConfig.getParameter<std::string>("dropPreshowerClusters")),
60  dropSeedCluster_(iConfig.getParameter<std::string>("dropSeedCluster")),
61  dropRecHits_(iConfig.getParameter<std::string>("dropRecHits")),
62  dropCorrections_(iConfig.getParameter<std::string>("dropCorrections")),
63  dropIsolations_(iConfig.getParameter<std::string>("dropIsolations")),
64  dropShapes_(iConfig.getParameter<std::string>("dropShapes")),
65  dropSaturation_(iConfig.getParameter<std::string>("dropSaturation")),
66  dropExtrapolations_(iConfig.getParameter<std::string>("dropExtrapolations")),
67  dropClassifications_(iConfig.getParameter<std::string>("dropClassifications")),
68  reco2pf_(mayConsume<edm::ValueMap<std::vector<reco::PFCandidateRef>>>(
69  iConfig.getParameter<edm::InputTag>("recoToPFMap"))),
71  iConfig.getParameter<edm::InputTag>("packedPFCandidates"))),
72  pc_(mayConsume<pat::PackedCandidateCollection>(iConfig.getParameter<edm::InputTag>("packedPFCandidates"))),
73  linkToPackedPF_(iConfig.getParameter<bool>("linkToPackedPFCandidates")),
74  saveNonZSClusterShapes_(iConfig.getParameter<std::string>("saveNonZSClusterShapes")),
76  consumes(iConfig.getParameter<edm::InputTag>("reducedBarrelRecHitCollection"))),
78  consumes(iConfig.getParameter<edm::InputTag>("reducedEndcapRecHitCollection"))),
79  ecalClusterToolsESGetTokens_{consumesCollector()},
80  modifyElectron_(iConfig.getParameter<bool>("modifyElectrons")) {
81  if (modifyElectron_) {
82  const edm::ParameterSet& mod_config = iConfig.getParameter<edm::ParameterSet>("modifierConfig");
83  electronModifier_ = std::make_unique<pat::ObjectModifier<pat::Electron>>(mod_config, consumesCollector());
84  }
85 
86  mayConsume<EcalRecHitCollection>(edm::InputTag("reducedEcalRecHitsEB"));
87  mayConsume<EcalRecHitCollection>(edm::InputTag("reducedEcalRecHitsEE"));
88 
89  produces<std::vector<pat::Electron>>();
90 }
const edm::EDGetTokenT< EcalRecHitCollection > reducedEndcapRecHitCollectionToken_
const StringCutObjectSelector< pat::Electron > dropRecHits_
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
const StringCutObjectSelector< pat::Electron > dropIsolations_
const edm::EDGetTokenT< edm::ValueMap< std::vector< reco::PFCandidateRef > > > reco2pf_
const StringCutObjectSelector< pat::Electron > dropSuperClusters_
const StringCutObjectSelector< pat::Electron > dropCorrections_
const edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > pf2pc_
const edm::EDGetTokenT< EcalRecHitCollection > reducedBarrelRecHitCollectionToken_
std::unique_ptr< pat::ObjectModifier< pat::Electron > > electronModifier_
const StringCutObjectSelector< pat::Electron > dropBasicClusters_
const EcalClusterLazyTools::ESGetTokens ecalClusterToolsESGetTokens_
const StringCutObjectSelector< pat::Electron > dropPreshowerClusters_
const StringCutObjectSelector< pat::Electron > dropClassifications_
const StringCutObjectSelector< pat::Electron > dropShapes_
const StringCutObjectSelector< pat::Electron > dropExtrapolations_
const StringCutObjectSelector< pat::Electron > saveNonZSClusterShapes_
const StringCutObjectSelector< pat::Electron > dropSeedCluster_
const StringCutObjectSelector< pat::Electron > dropPFlowClusters_
const StringCutObjectSelector< pat::Electron > dropSaturation_
const edm::EDGetTokenT< edm::View< pat::Electron > > src_
const edm::EDGetTokenT< pat::PackedCandidateCollection > pc_

Member Function Documentation

◆ produce()

void pat::PATElectronSlimmer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
final

Definition at line 92 of file PATElectronSlimmer.cc.

References HPSPFTauProducerPuppi_cfi::electron, edm::HandleBase::id(), iEvent, ALPAKA_ACCELERATOR_NAMESPACE::vertexFinder::it, submitPVResolutionJobs::key, relativeConstraints::keys, eostools::move(), MillePedeFileConverter_cfg::out, packedPFCandidateRefMixer_cfi::pf, and TrackRefitter_38T_cff::src.

92  {
93  using namespace edm;
94  using namespace std;
95 
97  iEvent.getByToken(src_, src);
98 
102  if (linkToPackedPF_) {
103  iEvent.getByToken(reco2pf_, reco2pf);
104  iEvent.getByToken(pf2pc_, pf2pc);
105  iEvent.getByToken(pc_, pc);
106  }
107  noZS::EcalClusterLazyTools lazyToolsNoZS(iEvent,
111 
112  auto out = std::make_unique<std::vector<pat::Electron>>();
113  out->reserve(src->size());
114 
115  if (modifyElectron_) {
116  electronModifier_->setEvent(iEvent);
117  }
118  if (modifyElectron_)
119  electronModifier_->setEventContent(iSetup);
120 
121  std::vector<unsigned int> keys;
122  for (View<pat::Electron>::const_iterator it = src->begin(), ed = src->end(); it != ed; ++it) {
123  out->push_back(*it);
124  pat::Electron& electron = out->back();
125 
126  if (modifyElectron_) {
127  electronModifier_->modify(electron);
128  }
129 
131  electron.superCluster_.clear();
132  electron.embeddedSuperCluster_ = false;
133  }
135  electron.basicClusters_.clear();
136  }
138  electron.pflowSuperCluster_.clear();
139  electron.embeddedPflowSuperCluster_ = false;
140  }
142  electron.pflowBasicClusters_.clear();
143  }
145  electron.preshowerClusters_.clear();
146  }
148  electron.pflowPreshowerClusters_.clear();
149  }
150  if (dropSeedCluster_(electron)) {
151  electron.seedCluster_.clear();
152  electron.embeddedSeedCluster_ = false;
153  }
154  if (dropRecHits_(electron)) {
155  electron.recHits_ = EcalRecHitCollection();
156  electron.embeddedRecHits_ = false;
157  }
158  if (dropCorrections_(electron)) {
159  electron.setCorrections(reco::GsfElectron::Corrections());
160  }
161  if (dropIsolations_(electron)) {
164  electron.setPfIsolationVariables(reco::GsfElectron::PflowIsolationVariables());
165  }
166  if (dropShapes_(electron)) {
167  electron.setShowerShape(reco::GsfElectron::ShowerShape());
168  }
169  if (dropSaturation_(electron)) {
170  electron.setSaturationInfo(reco::GsfElectron::SaturationInfo());
171  }
173  electron.setTrackExtrapolations(reco::GsfElectron::TrackExtrapolations());
174  }
176  electron.setClassificationVariables(reco::GsfElectron::ClassificationVariables());
177  electron.setClassification(reco::GsfElectron::Classification());
178  }
179  if (linkToPackedPF_) {
180  //std::cout << " PAT electron in " << src.id() << " comes from " << electron.refToOrig_.id() << ", " << electron.refToOrig_.key() << std::endl;
181  keys.clear();
182  for (auto const& pf : (*reco2pf)[electron.refToOrig_]) {
183  if (pf2pc->contains(pf.id())) {
184  keys.push_back((*pf2pc)[pf].key());
185  }
186  }
187  electron.setAssociatedPackedPFCandidates(
189  //std::cout << "Electron with pt " << electron.pt() << " associated to " << electron.associatedPackedFCandidateIndices_.size() << " PF Candidates\n";
190  //if there's just one PF Cand then it's me, otherwise I have no univoque parent so my ref will be null
191  if (keys.size() == 1) {
192  electron.refToOrig_ = electron.sourceCandidatePtr(0);
193  } else {
194  electron.refToOrig_ = reco::CandidatePtr(pc.id());
195  }
196  }
198  const auto& vCov = lazyToolsNoZS.localCovariances(*(electron.superCluster()->seed()));
199  electron.full5x5_setSigmaIetaIphi(vCov[1]);
200  }
201  }
202 
203  iEvent.put(std::move(out));
204 }
const edm::EDGetTokenT< EcalRecHitCollection > reducedEndcapRecHitCollectionToken_
const StringCutObjectSelector< pat::Electron > dropRecHits_
const StringCutObjectSelector< pat::Electron > dropIsolations_
ProductID id() const
Definition: HandleBase.cc:29
const edm::EDGetTokenT< edm::ValueMap< std::vector< reco::PFCandidateRef > > > reco2pf_
const StringCutObjectSelector< pat::Electron > dropSuperClusters_
const StringCutObjectSelector< pat::Electron > dropCorrections_
const edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > pf2pc_
const edm::EDGetTokenT< EcalRecHitCollection > reducedBarrelRecHitCollectionToken_
std::unique_ptr< pat::ObjectModifier< pat::Electron > > electronModifier_
ESData get(edm::EventSetup const &eventSetup) const
int iEvent
Definition: GenABIO.cc:224
const StringCutObjectSelector< pat::Electron > dropBasicClusters_
const EcalClusterLazyTools::ESGetTokens ecalClusterToolsESGetTokens_
const StringCutObjectSelector< pat::Electron > dropPreshowerClusters_
const StringCutObjectSelector< pat::Electron > dropClassifications_
const StringCutObjectSelector< pat::Electron > dropShapes_
const StringCutObjectSelector< pat::Electron > dropExtrapolations_
const StringCutObjectSelector< pat::Electron > saveNonZSClusterShapes_
key
prepare the HTCondor submission files and eventually submit them
const StringCutObjectSelector< pat::Electron > dropSeedCluster_
edm::Ptr< Candidate > CandidatePtr
persistent reference to an object in a collection of Candidate objects
Definition: CandidateFwd.h:25
const StringCutObjectSelector< pat::Electron > dropPFlowClusters_
Analysis-level electron class.
Definition: Electron.h:51
const StringCutObjectSelector< pat::Electron > dropSaturation_
HLT enums.
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:88
const edm::EDGetTokenT< edm::View< pat::Electron > > src_
const edm::EDGetTokenT< pat::PackedCandidateCollection > pc_
def move(src, dest)
Definition: eostools.py:511
edm::SortedCollection< EcalRecHit > EcalRecHitCollection

Member Data Documentation

◆ dropBasicClusters_

const StringCutObjectSelector<pat::Electron> pat::PATElectronSlimmer::dropBasicClusters_
private

Definition at line 35 of file PATElectronSlimmer.cc.

◆ dropClassifications_

const StringCutObjectSelector<pat::Electron> pat::PATElectronSlimmer::dropClassifications_
private

Definition at line 37 of file PATElectronSlimmer.cc.

◆ dropCorrections_

const StringCutObjectSelector<pat::Electron> pat::PATElectronSlimmer::dropCorrections_
private

Definition at line 37 of file PATElectronSlimmer.cc.

◆ dropExtrapolations_

const StringCutObjectSelector<pat::Electron> pat::PATElectronSlimmer::dropExtrapolations_
private

Definition at line 37 of file PATElectronSlimmer.cc.

◆ dropIsolations_

const StringCutObjectSelector<pat::Electron> pat::PATElectronSlimmer::dropIsolations_
private

Definition at line 37 of file PATElectronSlimmer.cc.

◆ dropPFlowClusters_

const StringCutObjectSelector<pat::Electron> pat::PATElectronSlimmer::dropPFlowClusters_
private

Definition at line 35 of file PATElectronSlimmer.cc.

◆ dropPreshowerClusters_

const StringCutObjectSelector<pat::Electron> pat::PATElectronSlimmer::dropPreshowerClusters_
private

Definition at line 35 of file PATElectronSlimmer.cc.

◆ dropRecHits_

const StringCutObjectSelector<pat::Electron> pat::PATElectronSlimmer::dropRecHits_
private

Definition at line 35 of file PATElectronSlimmer.cc.

◆ dropSaturation_

const StringCutObjectSelector<pat::Electron> pat::PATElectronSlimmer::dropSaturation_
private

Definition at line 37 of file PATElectronSlimmer.cc.

◆ dropSeedCluster_

const StringCutObjectSelector<pat::Electron> pat::PATElectronSlimmer::dropSeedCluster_
private

Definition at line 35 of file PATElectronSlimmer.cc.

◆ dropShapes_

const StringCutObjectSelector<pat::Electron> pat::PATElectronSlimmer::dropShapes_
private

Definition at line 37 of file PATElectronSlimmer.cc.

◆ dropSuperClusters_

const StringCutObjectSelector<pat::Electron> pat::PATElectronSlimmer::dropSuperClusters_
private

Definition at line 35 of file PATElectronSlimmer.cc.

◆ ecalClusterToolsESGetTokens_

const EcalClusterLazyTools::ESGetTokens pat::PATElectronSlimmer::ecalClusterToolsESGetTokens_
private

Definition at line 47 of file PATElectronSlimmer.cc.

◆ electronModifier_

std::unique_ptr<pat::ObjectModifier<pat::Electron> > pat::PATElectronSlimmer::electronModifier_
private

Definition at line 49 of file PATElectronSlimmer.cc.

◆ linkToPackedPF_

const bool pat::PATElectronSlimmer::linkToPackedPF_
private

Definition at line 43 of file PATElectronSlimmer.cc.

◆ modifyElectron_

const bool pat::PATElectronSlimmer::modifyElectron_
private

Definition at line 48 of file PATElectronSlimmer.cc.

◆ pc_

const edm::EDGetTokenT<pat::PackedCandidateCollection> pat::PATElectronSlimmer::pc_
private

Definition at line 42 of file PATElectronSlimmer.cc.

◆ pf2pc_

const edm::EDGetTokenT<edm::Association<pat::PackedCandidateCollection> > pat::PATElectronSlimmer::pf2pc_
private

Definition at line 41 of file PATElectronSlimmer.cc.

◆ reco2pf_

const edm::EDGetTokenT<edm::ValueMap<std::vector<reco::PFCandidateRef> > > pat::PATElectronSlimmer::reco2pf_
private

Definition at line 40 of file PATElectronSlimmer.cc.

◆ reducedBarrelRecHitCollectionToken_

const edm::EDGetTokenT<EcalRecHitCollection> pat::PATElectronSlimmer::reducedBarrelRecHitCollectionToken_
private

Definition at line 45 of file PATElectronSlimmer.cc.

◆ reducedEndcapRecHitCollectionToken_

const edm::EDGetTokenT<EcalRecHitCollection> pat::PATElectronSlimmer::reducedEndcapRecHitCollectionToken_
private

Definition at line 45 of file PATElectronSlimmer.cc.

◆ saveNonZSClusterShapes_

const StringCutObjectSelector<pat::Electron> pat::PATElectronSlimmer::saveNonZSClusterShapes_
private

Definition at line 44 of file PATElectronSlimmer.cc.

◆ src_

const edm::EDGetTokenT<edm::View<pat::Electron> > pat::PATElectronSlimmer::src_
private

Definition at line 33 of file PATElectronSlimmer.cc.