CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Attributes
pat::PATGenJetSlimmer Class Reference

Matcher of reconstructed objects to L1 Muons. More...

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

Public Member Functions

 PATGenJetSlimmer (const edm::ParameterSet &iConfig)
 
void produce (edm::Event &iEvent, const edm::EventSetup &iSetup) override
 
 ~PATGenJetSlimmer () override
 
- 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 bool clearDaughters_
 reset daughters to an empty vector More...
 
const StringCutObjectSelector
< reco::GenJet
cut_
 
const StringCutObjectSelector
< reco::GenJet
cutLoose_
 
const bool dropSpecific_
 drop the specific More...
 
const edm::EDGetTokenT
< edm::Association
< std::vector
< pat::PackedGenParticle > > > 
gp2pgp_
 
const unsigned nLoose_
 
const edm::EDGetTokenT
< edm::View< reco::GenJet > > 
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

Matcher of reconstructed objects to L1 Muons.

Author
Giovanni Petrucciani

Definition at line 25 of file PATGenJetSlimmer.cc.

Constructor & Destructor Documentation

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

Definition at line 48 of file PATGenJetSlimmer.cc.

49  : src_(consumes<edm::View<reco::GenJet> >(iConfig.getParameter<edm::InputTag>("src"))),
50  gp2pgp_(consumes<edm::Association<std::vector<pat::PackedGenParticle> > >(
51  iConfig.getParameter<edm::InputTag>("packedGenParticles"))),
52  cut_(iConfig.getParameter<std::string>("cut")),
53  cutLoose_(iConfig.getParameter<std::string>("cutLoose")),
54  nLoose_(iConfig.getParameter<unsigned>("nLoose")),
55  clearDaughters_(iConfig.getParameter<bool>("clearDaughters")),
56  dropSpecific_(iConfig.getParameter<bool>("dropSpecific")) {
57  produces<std::vector<reco::GenJet> >();
58  produces<edm::Association<std::vector<reco::GenJet> > >("slimmedGenJetAssociation");
59 }
const StringCutObjectSelector< reco::GenJet > cutLoose_
const bool clearDaughters_
reset daughters to an empty vector
const StringCutObjectSelector< reco::GenJet > cut_
const edm::EDGetTokenT< edm::Association< std::vector< pat::PackedGenParticle > > > gp2pgp_
const bool dropSpecific_
drop the specific
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::EDGetTokenT< edm::View< reco::GenJet > > src_
pat::PATGenJetSlimmer::~PATGenJetSlimmer ( )
inlineoverride

Definition at line 28 of file PATGenJetSlimmer.cc.

28 {}

Member Function Documentation

void pat::PATGenJetSlimmer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 61 of file PATGenJetSlimmer.cc.

References reco::CompositePtrCandidate::addDaughter(), reco::CompositePtrCandidate::clearDaughters(), reco::CompositePtrCandidate::daughterPtrVector(), edm::Event::getByToken(), mps_fire::i, metsig::jet, submitPVResolutionJobs::key, eostools::move(), submitPVResolutionJobs::out, edm::Event::put(), edm::refToPtr(), reco::GenJet::setSpecific(), and alcazmumu_cfi::src.

61  {
62  using namespace edm;
63  using namespace std;
64 
66  iEvent.getByToken(src_, src);
67 
68  auto out = std::make_unique<vector<reco::GenJet> >();
69  out->reserve(src->size());
70 
72  iEvent.getByToken(gp2pgp_, gp2pgp);
73 
74  auto genJetSlimmedGenJetAssociation = make_unique<edm::Association<std::vector<reco::GenJet> > >();
75 
76  auto mapping = std::make_unique<std::vector<int> >();
77  mapping->reserve(src->size());
78 
79  unsigned nm = 0; // number of mapped jets
80  unsigned nl = 0; // number of loose jets
81  for (View<reco::GenJet>::const_iterator it = src->begin(), ed = src->end(); it != ed; ++it) {
82  bool selectedLoose = false;
83  if (nLoose_ > 0 && nl < nLoose_ && cutLoose_(*it)) {
84  selectedLoose = true;
85  ++nl;
86  }
87 
88  bool pass = cut_(*it) || selectedLoose;
89  if (!pass) {
90  mapping->push_back(-1);
91  continue;
92  }
93 
94  out->push_back(*it);
95  reco::GenJet& jet = out->back();
96 
97  mapping->push_back(nm++);
98 
99  if (clearDaughters_) {
100  jet.clearDaughters();
101  } else // rekey
102  {
103  //copy old
105  jet.clearDaughters();
106  std::map<unsigned int, reco::CandidatePtr> ptrs;
107  for (unsigned int i = 0; i < old.size(); i++) {
108  // if(! ((*gp2pgp)[old[i]]).isNonnull()) {
109  // std::cout << "Missing ref for key" << old[i].key() << " pdgid " << old[i]->pdgId() << " st "<< old[i]->status() << " pt " << old[i]->pt() << " eta " << old[i]->eta() << std::endl;
110  // }
111  ptrs[((*gp2pgp)[old[i]]).key()] = refToPtr((*gp2pgp)[old[i]]);
112  }
113  for (std::map<unsigned int, reco::CandidatePtr>::iterator itp = ptrs.begin(); itp != ptrs.end();
114  itp++) //iterate on sorted items
115  {
116  jet.addDaughter(itp->second);
117  }
118  }
119  if (dropSpecific_) {
121  }
122  }
123 
125 
126  auto asso = std::make_unique<edm::Association<std::vector<reco::GenJet> > >(orphanHandle);
127  edm::Association<std::vector<reco::GenJet> >::Filler slimmedAssoFiller(*asso);
128  slimmedAssoFiller.insert(src, mapping->begin(), mapping->end());
129  slimmedAssoFiller.fill();
130 
131  iEvent.put(std::move(asso), "slimmedGenJetAssociation");
132 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
Ptr< typename C::value_type > refToPtr(Ref< C, typename C::value_type, refhelper::FindUsingAdvance< C, typename C::value_type > > const &ref)
Definition: RefToPtr.h:18
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
const StringCutObjectSelector< reco::GenJet > cutLoose_
virtual const daughters & daughterPtrVector() const
references to daughtes
const bool clearDaughters_
reset daughters to an empty vector
const StringCutObjectSelector< reco::GenJet > cut_
const edm::EDGetTokenT< edm::Association< std::vector< pat::PackedGenParticle > > > gp2pgp_
def move
Definition: eostools.py:511
const bool dropSpecific_
drop the specific
tuple key
prepare the HTCondor submission files and eventually submit them
Jets made from MC generator particles.
Definition: GenJet.h:23
virtual void clearDaughters()
clear daughter references
std::vector< CandidatePtr > daughters
collection of references to daughters
const edm::EDGetTokenT< edm::View< reco::GenJet > > src_
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
void setSpecific(const Specific &spec)
set the specific (note: responsibility of keeping it consistent with the jet daughers belongs to the ...
Definition: GenJet.h:121
void addDaughter(const CandidatePtr &)
add a daughter via a reference

Member Data Documentation

const bool pat::PATGenJetSlimmer::clearDaughters_
private

reset daughters to an empty vector

Definition at line 41 of file PATGenJetSlimmer.cc.

const StringCutObjectSelector<reco::GenJet> pat::PATGenJetSlimmer::cut_
private

Definition at line 36 of file PATGenJetSlimmer.cc.

const StringCutObjectSelector<reco::GenJet> pat::PATGenJetSlimmer::cutLoose_
private

Definition at line 37 of file PATGenJetSlimmer.cc.

const bool pat::PATGenJetSlimmer::dropSpecific_
private

drop the specific

Definition at line 43 of file PATGenJetSlimmer.cc.

const edm::EDGetTokenT<edm::Association<std::vector<pat::PackedGenParticle> > > pat::PATGenJetSlimmer::gp2pgp_
private

Definition at line 34 of file PATGenJetSlimmer.cc.

const unsigned pat::PATGenJetSlimmer::nLoose_
private

Definition at line 38 of file PATGenJetSlimmer.cc.

const edm::EDGetTokenT<edm::View<reco::GenJet> > pat::PATGenJetSlimmer::src_
private

Definition at line 33 of file PATGenJetSlimmer.cc.