CMS 3D CMS Logo

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::GenJetcut_
 
const StringCutObjectSelector< reco::GenJetcutLoose_
 
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

◆ PATGenJetSlimmer()

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 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
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
const edm::EDGetTokenT< edm::View< reco::GenJet > > src_

◆ ~PATGenJetSlimmer()

pat::PATGenJetSlimmer::~PATGenJetSlimmer ( )
inlineoverride

Definition at line 28 of file PATGenJetSlimmer.cc.

28 {}

Member Function Documentation

◆ produce()

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

Definition at line 61 of file PATGenJetSlimmer.cc.

References mps_fire::i, iEvent, metsig::jet, crabWrapper::key, taus_updatedMVAIds_cff::mapping, eostools::move(), MillePedeFileConverter_cfg::out, edm::refToPtr(), and TrackRefitter_38T_cff::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
104  reco::CompositePtrCandidate::daughters old = jet.daughterPtrVector();
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_) {
120  jet.setSpecific(reco::GenJet::Specific());
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 }
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
const StringCutObjectSelector< reco::GenJet > cutLoose_
int iEvent
Definition: GenABIO.cc:224
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
Jets made from MC generator particles.
Definition: GenJet.h:23
std::vector< CandidatePtr > daughters
collection of references to daughters
const edm::EDGetTokenT< edm::View< reco::GenJet > > src_
HLT enums.
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

◆ clearDaughters_

const bool pat::PATGenJetSlimmer::clearDaughters_
private

reset daughters to an empty vector

Definition at line 41 of file PATGenJetSlimmer.cc.

◆ cut_

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

Definition at line 36 of file PATGenJetSlimmer.cc.

◆ cutLoose_

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

Definition at line 37 of file PATGenJetSlimmer.cc.

◆ dropSpecific_

const bool pat::PATGenJetSlimmer::dropSpecific_
private

drop the specific

Definition at line 43 of file PATGenJetSlimmer.cc.

◆ gp2pgp_

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

Definition at line 34 of file PATGenJetSlimmer.cc.

◆ nLoose_

const unsigned pat::PATGenJetSlimmer::nLoose_
private

Definition at line 38 of file PATGenJetSlimmer.cc.

◆ src_

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

Definition at line 33 of file PATGenJetSlimmer.cc.