CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules 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::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 }

◆ ~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.

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 }

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.

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.

mps_fire.i
i
Definition: mps_fire.py:428
reco::GenJet
Jets made from MC generator particles.
Definition: GenJet.h:23
edm
HLT enums.
Definition: AlignableModifier.h:19
pat::PATGenJetSlimmer::cutLoose_
const StringCutObjectSelector< reco::GenJet > cutLoose_
Definition: PATGenJetSlimmer.cc:37
edm::Handle
Definition: AssociativeIterator.h:50
edm::refToPtr
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
reco::GenJet::Specific
Definition: GenJet.h:25
pat::PATGenJetSlimmer::clearDaughters_
const bool clearDaughters_
reset daughters to an empty vector
Definition: PATGenJetSlimmer.cc:41
pat::PATGenJetSlimmer::cut_
const StringCutObjectSelector< reco::GenJet > cut_
Definition: PATGenJetSlimmer.cc:36
edm::View
Definition: CaloClusterFwd.h:14
pat::PATGenJetSlimmer::gp2pgp_
const edm::EDGetTokenT< edm::Association< std::vector< pat::PackedGenParticle > > > gp2pgp_
Definition: PATGenJetSlimmer.cc:34
pat::PATGenJetSlimmer::dropSpecific_
const bool dropSpecific_
drop the specific
Definition: PATGenJetSlimmer.cc:43
TrackRefitter_38T_cff.src
src
Definition: TrackRefitter_38T_cff.py:24
iEvent
int iEvent
Definition: GenABIO.cc:224
pat::PATGenJetSlimmer::nLoose_
const unsigned nLoose_
Definition: PATGenJetSlimmer.cc:38
edm::Association
Definition: Association.h:18
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
reco::CompositePtrCandidate::daughters
std::vector< CandidatePtr > daughters
collection of references to daughters
Definition: CompositePtrCandidate.h:20
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
edm::OrphanHandle
Definition: EDProductfwd.h:39
metsig::jet
Definition: SignAlgoResolutions.h:47
pat::PATGenJetSlimmer::src_
const edm::EDGetTokenT< edm::View< reco::GenJet > > src_
Definition: PATGenJetSlimmer.cc:33
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::View::const_iterator
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
crabWrapper.key
key
Definition: crabWrapper.py:19
taus_updatedMVAIds_cff.mapping
mapping
Definition: taus_updatedMVAIds_cff.py:29
edm::InputTag
Definition: InputTag.h:15