CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Protected Attributes
pat::PATJetSelector Class Reference

#include <PATJetSelector.h>

Inheritance diagram for pat::PATJetSelector:
edm::stream::EDFilter<> edm::stream::EDFilterBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

virtual void beginJob ()
 
virtual void endJob ()
 
bool filter (edm::Event &iEvent, const edm::EventSetup &iSetup) override
 
 PATJetSelector (edm::ParameterSet const &params)
 
 ~PATJetSelector () override
 
- Public Member Functions inherited from edm::stream::EDFilter<>
 EDFilter ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
- Public Member Functions inherited from edm::stream::EDFilterBase
 EDFilterBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDFilterBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::stream::EDFilterBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Protected Attributes

const std::string cut_
 
const std::string cutLoose_
 
const bool filter_
 
const unsigned nLoose_
 
const StringCutObjectSelector< Jetselector_
 
const StringCutObjectSelector< JetselectorLoose_
 
const edm::EDGetTokenT< edm::View< pat::Jet > > srcToken_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDFilter<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDFilterBase
typedef EDFilterAdaptorBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::ProducerBase
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Detailed Description

Definition at line 23 of file PATJetSelector.h.

Constructor & Destructor Documentation

◆ PATJetSelector()

pat::PATJetSelector::PATJetSelector ( edm::ParameterSet const &  params)
inline

Definition at line 25 of file PATJetSelector.h.

26  : srcToken_(consumes<edm::View<pat::Jet>>(params.getParameter<edm::InputTag>("src"))),
27  cut_(params.getParameter<std::string>("cut")),
28  cutLoose_(params.getParameter<std::string>("cutLoose")),
29  filter_(params.exists("filter") ? params.getParameter<bool>("filter") : false),
30  nLoose_(params.getParameter<unsigned>("nLoose")),
31  selector_(cut_),
33  produces<std::vector<pat::Jet>>();
34  produces<reco::GenJetCollection>("genJets");
35  produces<std::vector<CaloTower>>("caloTowers");
36  produces<reco::PFCandidateCollection>("pfCandidates");
37  produces<edm::OwnVector<reco::BaseTagInfo>>("tagInfos");
38  }

◆ ~PATJetSelector()

pat::PATJetSelector::~PATJetSelector ( )
inlineoverride

Definition at line 40 of file PATJetSelector.h.

40 {}

Member Function Documentation

◆ beginJob()

virtual void pat::PATJetSelector::beginJob ( void  )
inlinevirtual

Definition at line 42 of file PATJetSelector.h.

42 {}

◆ endJob()

virtual void pat::PATJetSelector::endJob ( void  )
inlinevirtual

Definition at line 43 of file PATJetSelector.h.

43 {}

◆ fillDescriptions()

static void pat::PATJetSelector::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
inlinestatic

Definition at line 205 of file PATJetSelector.h.

205  {
207  iDesc.setComment("Energy Correlation Functions adder");
208  iDesc.add<edm::InputTag>("src", edm::InputTag("no default"))->setComment("input collection");
209  iDesc.add<std::string>("cut", "")->setComment("Jet selection.");
210  iDesc.add<std::string>("cutLoose", "")->setComment("Loose jet selection. Will keep nLoose loose jets.");
211  iDesc.add<bool>("filter", false)->setComment("Filter selection?");
212  iDesc.add<unsigned>("nLoose", 0)->setComment("Keep nLoose loose jets that satisfy cutLoose");
213  descriptions.add("PATJetSelector", iDesc);
214  }

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), HLT_2018_cff::InputTag, edm::ParameterSetDescription::setComment(), and AlCaHLTBitMon_QueryRunRegistry::string.

◆ filter()

bool pat::PATJetSelector::filter ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
inlineoverridevirtual

Implements edm::stream::EDFilterBase.

Definition at line 45 of file PATJetSelector.h.

45  {
46  auto patJets = std::make_unique<std::vector<Jet>>();
47 
48  auto genJetsOut = std::make_unique<reco::GenJetCollection>();
49  auto caloTowersOut = std::make_unique<std::vector<CaloTower>>();
50  auto pfCandidatesOut = std::make_unique<reco::PFCandidateCollection>();
51  auto tagInfosOut = std::make_unique<edm::OwnVector<reco::BaseTagInfo>>();
52 
53  edm::RefProd<reco::GenJetCollection> h_genJetsOut = iEvent.getRefBeforePut<reco::GenJetCollection>("genJets");
54  edm::RefProd<std::vector<CaloTower>> h_caloTowersOut =
55  iEvent.getRefBeforePut<std::vector<CaloTower>>("caloTowers");
57  iEvent.getRefBeforePut<reco::PFCandidateCollection>("pfCandidates");
59  iEvent.getRefBeforePut<edm::OwnVector<reco::BaseTagInfo>>("tagInfos");
60 
62  iEvent.getByToken(srcToken_, h_jets);
63 
64  unsigned nl = 0; // number of loose jets
65  // First loop over the products and make the secondary output collections
66  for (edm::View<pat::Jet>::const_iterator ibegin = h_jets->begin(), iend = h_jets->end(), ijet = ibegin;
67  ijet != iend;
68  ++ijet) {
69  bool selectedLoose = false;
70  if (nLoose_ > 0 && nl < nLoose_ && selectorLoose_(*ijet)) {
71  selectedLoose = true;
72  ++nl;
73  }
74 
75  if (selector_(*ijet) || selectedLoose) {
76  // Copy over the calo towers
77  for (CaloTowerFwdPtrVector::const_iterator itowerBegin = ijet->caloTowersFwdPtr().begin(),
78  itowerEnd = ijet->caloTowersFwdPtr().end(),
79  itower = itowerBegin;
80  itower != itowerEnd;
81  ++itower) {
82  // Add to global calo tower list
83  caloTowersOut->push_back(**itower);
84  }
85 
86  // Copy over the pf candidates
87  for (reco::PFCandidateFwdPtrVector::const_iterator icandBegin = ijet->pfCandidatesFwdPtr().begin(),
88  icandEnd = ijet->pfCandidatesFwdPtr().end(),
89  icand = icandBegin;
90  icand != icandEnd;
91  ++icand) {
92  // Add to global pf candidate list
93  pfCandidatesOut->push_back(**icand);
94  }
95 
96  // Copy the tag infos
97  for (TagInfoFwdPtrCollection::const_iterator iinfoBegin = ijet->tagInfosFwdPtr().begin(),
98  iinfoEnd = ijet->tagInfosFwdPtr().end(),
99  iinfo = iinfoBegin;
100  iinfo != iinfoEnd;
101  ++iinfo) {
102  // Add to global calo tower list
103  tagInfosOut->push_back(**iinfo);
104  }
105 
106  // Copy the gen jet
107  if (ijet->genJet() != nullptr) {
108  genJetsOut->push_back(*(ijet->genJet()));
109  }
110  }
111  }
112 
113  // Output the secondary collections.
114  edm::OrphanHandle<reco::GenJetCollection> oh_genJetsOut = iEvent.put(std::move(genJetsOut), "genJets");
115  edm::OrphanHandle<std::vector<CaloTower>> oh_caloTowersOut = iEvent.put(std::move(caloTowersOut), "caloTowers");
117  iEvent.put(std::move(pfCandidatesOut), "pfCandidates");
119  iEvent.put(std::move(tagInfosOut), "tagInfos");
120 
121  unsigned int caloTowerIndex = 0;
122  unsigned int pfCandidateIndex = 0;
123  unsigned int tagInfoIndex = 0;
124  unsigned int genJetIndex = 0;
125  // Now set the Ptrs with the orphan handles.
126  nl = 0; // Reset number of loose jets
127  for (edm::View<pat::Jet>::const_iterator ibegin = h_jets->begin(), iend = h_jets->end(), ijet = ibegin;
128  ijet != iend;
129  ++ijet) {
130  bool selectedLoose = false;
131  if (nLoose_ > 0 && nl < nLoose_ && selectorLoose_(*ijet)) {
132  selectedLoose = true;
133  ++nl;
134  }
135 
136  if (selector_(*ijet) || selectedLoose) {
137  // Add the jets that pass to the output collection
138  patJets->push_back(*ijet);
139 
140  // Copy over the calo towers
141  for (CaloTowerFwdPtrVector::const_iterator itowerBegin = ijet->caloTowersFwdPtr().begin(),
142  itowerEnd = ijet->caloTowersFwdPtr().end(),
143  itower = itowerBegin;
144  itower != itowerEnd;
145  ++itower) {
146  // Update the "forward" bit of the FwdPtr to point at the new tower collection.
147 
148  // ptr to "this" tower in the global list
149  edm::Ptr<CaloTower> outPtr(oh_caloTowersOut, caloTowerIndex);
150  patJets->back().updateFwdCaloTowerFwdPtr(itower - itowerBegin, // index of "this" tower in the jet
151  outPtr);
152  ++caloTowerIndex;
153  }
154 
155  // Copy over the pf candidates
156  for (reco::PFCandidateFwdPtrVector::const_iterator icandBegin = ijet->pfCandidatesFwdPtr().begin(),
157  icandEnd = ijet->pfCandidatesFwdPtr().end(),
158  icand = icandBegin;
159  icand != icandEnd;
160  ++icand) {
161  // Update the "forward" bit of the FwdPtr to point at the new tower collection.
162 
163  // ptr to "this" cand in the global list
164  edm::Ptr<reco::PFCandidate> outPtr(oh_pfCandidatesOut, pfCandidateIndex);
165  patJets->back().updateFwdPFCandidateFwdPtr(icand - icandBegin, // index of "this" tower in the jet
166  outPtr);
167  ++pfCandidateIndex;
168  }
169 
170  // Copy the tag infos
171  for (TagInfoFwdPtrCollection::const_iterator iinfoBegin = ijet->tagInfosFwdPtr().begin(),
172  iinfoEnd = ijet->tagInfosFwdPtr().end(),
173  iinfo = iinfoBegin;
174  iinfo != iinfoEnd;
175  ++iinfo) {
176  // Update the "forward" bit of the FwdPtr to point at the new tower collection.
177 
178  // ptr to "this" info in the global list
179  edm::Ptr<reco::BaseTagInfo> outPtr(oh_tagInfosOut, tagInfoIndex);
180  patJets->back().updateFwdTagInfoFwdPtr(iinfo - iinfoBegin, // index of "this" tower in the jet
181  outPtr);
182  ++tagInfoIndex;
183  }
184 
185  // Copy the gen jet
186  if (ijet->genJet() != nullptr) {
187  patJets->back().updateFwdGenJetFwdRef(
188  edm::Ref<reco::GenJetCollection>(oh_genJetsOut, genJetIndex) // ref to "this" genjet in the global list
189  );
190  ++genJetIndex;
191  }
192  }
193  }
194 
195  // put genEvt in Event
196  bool pass = !patJets->empty();
197  iEvent.put(std::move(patJets));
198 
199  if (filter_)
200  return pass;
201  else
202  return true;
203  }

References edm::OwnVector< T, P >::begin(), edm::OwnVector< T, P >::end(), filter_, iEvent, eostools::move(), nLoose_, hemisphereProducer_cfi::patJets, selector_, selectorLoose_, and srcToken_.

Member Data Documentation

◆ cut_

const std::string pat::PATJetSelector::cut_
protected

Definition at line 218 of file PATJetSelector.h.

◆ cutLoose_

const std::string pat::PATJetSelector::cutLoose_
protected

Definition at line 219 of file PATJetSelector.h.

◆ filter_

const bool pat::PATJetSelector::filter_
protected

Definition at line 220 of file PATJetSelector.h.

Referenced by filter().

◆ nLoose_

const unsigned pat::PATJetSelector::nLoose_
protected

Definition at line 221 of file PATJetSelector.h.

Referenced by filter().

◆ selector_

const StringCutObjectSelector<Jet> pat::PATJetSelector::selector_
protected

Definition at line 222 of file PATJetSelector.h.

Referenced by filter().

◆ selectorLoose_

const StringCutObjectSelector<Jet> pat::PATJetSelector::selectorLoose_
protected

Definition at line 223 of file PATJetSelector.h.

Referenced by filter().

◆ srcToken_

const edm::EDGetTokenT<edm::View<pat::Jet> > pat::PATJetSelector::srcToken_
protected

Definition at line 217 of file PATJetSelector.h.

Referenced by filter().

edm::RefProd
Definition: EDProductfwd.h:25
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
pat::PATJetSelector::selector_
const StringCutObjectSelector< Jet > selector_
Definition: PATJetSelector.h:222
edm::OwnVector::end
iterator end()
Definition: OwnVector.h:285
reco::GenJetCollection
std::vector< GenJet > GenJetCollection
collection of GenJet objects
Definition: GenJetCollection.h:14
CalibrationSummaryClient_cfi.params
params
Definition: CalibrationSummaryClient_cfi.py:14
pat::PATJetSelector::filter_
const bool filter_
Definition: PATJetSelector.h:220
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
pat::PATJetSelector::nLoose_
const unsigned nLoose_
Definition: PATJetSelector.h:221
edm::Handle
Definition: AssociativeIterator.h:50
edm::Ref
Definition: AssociativeIterator.h:58
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::View
Definition: CaloClusterFwd.h:14
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
edm::ParameterSetDescription::setComment
void setComment(std::string const &value)
Definition: ParameterSetDescription.cc:33
pat::PATJetSelector::cutLoose_
const std::string cutLoose_
Definition: PATJetSelector.h:219
iEvent
int iEvent
Definition: GenABIO.cc:224
hemisphereProducer_cfi.patJets
patJets
Definition: hemisphereProducer_cfi.py:5
edm::Ptr
Definition: AssociationVector.h:31
eostools.move
def move(src, dest)
Definition: eostools.py:511
edm::OrphanHandle
Definition: EDProductfwd.h:39
reco::PFCandidateCollection
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
Definition: PFCandidateFwd.h:12
pat::PATJetSelector::srcToken_
const edm::EDGetTokenT< edm::View< pat::Jet > > srcToken_
Definition: PATJetSelector.h:217
edm::View::const_iterator
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
pat::PATJetSelector::cut_
const std::string cut_
Definition: PATJetSelector.h:218
edm::EDConsumerBase::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: EDConsumerBase.h:126
edm::OwnVector::begin
iterator begin()
Definition: OwnVector.h:280
pat::PATJetSelector::selectorLoose_
const StringCutObjectSelector< Jet > selectorLoose_
Definition: PATJetSelector.h:223
edm::InputTag
Definition: InputTag.h:15
edm::OwnVector< reco::BaseTagInfo >