Produces reco::GenParticle from SimTracks. More...
Classes | |
struct | LessById |
Private Types | |
typedef StringCutObjectSelector< reco::GenParticle > | StrFilter |
Private Member Functions | |
void | addGenParticle (const SimTrack &stMom, const SimTrack &stDau, unsigned int momidx, const edm::SimTrackContainer &simtks, const edm::SimVertexContainer &simvtxs, reco::GenParticleCollection &mergedGens, const reco::GenParticleRefProd ref, std::vector< int > &genBarcodes, bool &barcodesAreSorted) const |
Try to link the GEANT particle to the generator particle it came from. More... | |
void | endJob () override |
void | produce (edm::Event &, const edm::EventSetup &) override |
Private Attributes | |
std::unique_ptr< StrFilter > | filter_ |
bool | firstEvent_ |
edm::EDGetTokenT< std::vector< int > > | genBarcodesToken_ |
edm::EDGetTokenT< reco::GenParticleCollection > | gensToken_ |
Collection of GenParticles I need to make refs to. It must also have its associated vector<int> of barcodes, aligned with them. More... | |
std::set< int > | pdgIds_ |
std::vector< PdtEntry > | pdts_ |
int | setStatus_ |
edm::EDGetTokenT< edm::SimTrackContainer > | simtracksToken_ |
edm::EDGetTokenT< edm::SimVertexContainer > | simverticesToken_ |
Additional Inherited Members | |
Public Types inherited from edm::EDProducer | |
typedef EDProducer | 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 |
Static Public Member Functions inherited from edm::EDProducer | |
static const std::string & | baseType () |
static void | fillDescriptions (ConfigurationDescriptions &descriptions) |
static void | prevalidate (ConfigurationDescriptions &descriptions) |
static bool | wantsGlobalLuminosityBlocks () |
static bool | wantsGlobalRuns () |
static bool | wantsInputProcessBlocks () |
static bool | wantsProcessBlocks () |
static bool | wantsStreamLuminosityBlocks () |
static bool | wantsStreamRuns () |
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 = InEvent> | |
EDConsumerBaseAdaptor< B > | consumes (edm::InputTag tag) noexcept |
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<Transition Tr = Transition::Event> | |
constexpr auto | esConsumes () noexcept |
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event> | |
auto | esConsumes (ESInputTag const &tag) |
template<Transition Tr = Transition::Event> | |
auto | esConsumes (ESInputTag tag) noexcept |
template<Transition Tr = Transition::Event> | |
ESGetTokenGeneric | esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey) |
Used with EventSetupRecord::doGet. More... | |
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) |
Produces reco::GenParticle from SimTracks.
The GenPlusSimParticleProducer produces GenParticles from SimTracks, so they can be used for MC matching. A copy of the original genParticle list is made and the genParticles created from the GEANT/FAMOS particles are added to the list including all ancestors and correct mother/daughter references
Sample useage in cfg.py file: process.genParticlePlusGEANT = cms.EDProducer("GenPlusSimParticleProducer", src = cms.InputTag("g4SimHits"), # use "fastSimProducer" for FastSim setStatus = cms.int32(8), # set status = 8 for GEANT GPs particleTypes = cms.vstring("pi+"), # also picks pi- (optional) filter = cms.vstring("pt > 0.0"), # just for testing genParticles = cms.InputTag("genParticles") # original genParticle list )
Definition at line 40 of file GenPlusSimParticleProducer.cc.
|
private |
Definition at line 56 of file GenPlusSimParticleProducer.cc.
|
explicit |
Definition at line 99 of file GenPlusSimParticleProducer.cc.
References looper::cfg, ALCARECOTkAlBeamHalo_cff::filter, filter_, and pdts_.
|
inlineoverride |
Definition at line 43 of file GenPlusSimParticleProducer.cc.
|
private |
Try to link the GEANT particle to the generator particle it came from.
Arguments: – Specific – gp: GenParticle made from the GEANT particle st: The GEANT simTrack for which we create a genParticle
– GEANT related – simtks: A list of GEANT tracks, sorted by track id simvtxs: The list of GEANT vertices, in their natural order (skimtks have pointers into this vector!)
– GenParticle related – gens : Handle to the GenParticles, to make the ref to genBarcodes : Barcodes for each GenParticle, in a vector aligned to the GenParticleCollection. barcodesAreSorted: true if the barcodes are sorted (which means I can use binary_search on them)
Definition at line 126 of file GenPlusSimParticleProducer.cc.
References CoreSimTrack::charge(), ALCARECOTkAlJpsiMuMu_cff::charge, filter_, EgammaValidation_cff::genp, heavyIonCSV_trainingSettings::idx, pfDeepBoostedJetPreprocessParams_cfi::lower_bound, CoreSimTrack::momentum(), SimTrack::noVertex(), p4, setStatus_, CoreSimTrack::trackId(), CoreSimTrack::type(), SimTrack::vertIndex(), and extraflags_cff::vtx.
Referenced by produce().
|
inlineoverrideprivatevirtual |
Reimplemented from edm::EDProducer.
Definition at line 47 of file GenPlusSimParticleProducer.cc.
|
overrideprivatevirtual |
Implements edm::EDProducer.
Definition at line 186 of file GenPlusSimParticleProducer.cc.
References funct::abs(), addGenParticle(), HLT_FULL_cff::cands, ztail::d, spr::find(), firstEvent_, genBarcodesToken_, gensToken_, mps_fire::i, edm::RefProd< C >::id(), heavyIonCSV_trainingSettings::idx, crabWrapper::key, pfDeepBoostedJetPreprocessParams_cfi::lower_bound, visualization-live-secondInstance_cfg::m, eostools::move(), pdgIds_, pdts_, simtracksToken_, simverticesToken_, jetUpdater_cfi::sort, and extraflags_cff::vtx.
|
private |
Definition at line 57 of file GenPlusSimParticleProducer.cc.
Referenced by addGenParticle(), and GenPlusSimParticleProducer().
|
private |
Definition at line 49 of file GenPlusSimParticleProducer.cc.
Referenced by produce().
|
private |
Definition at line 61 of file GenPlusSimParticleProducer.cc.
Referenced by produce().
|
private |
Collection of GenParticles I need to make refs to. It must also have its associated vector<int> of barcodes, aligned with them.
Definition at line 60 of file GenPlusSimParticleProducer.cc.
Referenced by produce().
|
private |
Definition at line 53 of file GenPlusSimParticleProducer.cc.
Referenced by produce().
|
private |
Definition at line 54 of file GenPlusSimParticleProducer.cc.
Referenced by GenPlusSimParticleProducer(), and produce().
|
private |
Definition at line 52 of file GenPlusSimParticleProducer.cc.
Referenced by addGenParticle().
|
private |
Definition at line 50 of file GenPlusSimParticleProducer.cc.
Referenced by produce().
|
private |
Definition at line 51 of file GenPlusSimParticleProducer.cc.
Referenced by produce().