55 std::vector<edm::EDGetTokenT<edm::Association<reco::GenParticleCollection> > >
genMatchTokens_;
82 : isolator_(iConfig.exists(
"userIsolation") ? iConfig.getParameter<edm::
ParameterSet>(
"userIsolation")
86 userDataHelper_(iConfig.getParameter<edm::
ParameterSet>(
"userData"), consumesCollector()) {
108 iConfig.
getParameter<std::vector<edm::InputTag> >(
"genParticleMatch"),
114 addQuality_ =
iConfig.getParameter<
bool>(
"addQuality");
115 qualitySrcToken_ = mayConsume<edm::ValueMap<float> >(
iConfig.getParameter<
edm::InputTag>(
"qualitySource"));
118 produces<std::vector<GenericParticle> >();
120 if (
iConfig.exists(
"isoDeposits")) {
122 if (depconf.
exists(
"tracker"))
124 if (depconf.
exists(
"ecal"))
126 if (depconf.
exists(
"hcal"))
128 if (depconf.
exists(
"user")) {
129 std::vector<edm::InputTag> userdeps = depconf.
getParameter<std::vector<edm::InputTag> >(
"user");
130 std::vector<edm::InputTag>::const_iterator it = userdeps.begin(), ed = userdeps.end();
132 for (; it != ed; ++it, ++
key) {
133 isoDepositLabels_.push_back(std::make_pair(
IsolationKeys(key), *it));
139 return consumes<edm::ValueMap<IsoDeposit> >(label.second);
143 addEfficiencies_ =
iConfig.getParameter<
bool>(
"addEfficiencies");
144 if (addEfficiencies_) {
150 addResolutions_ =
iConfig.getParameter<
bool>(
"addResolutions");
151 if (addResolutions_) {
156 if (
iConfig.exists(
"vertexing")) {
162 useUserData_ =
false;
163 if (
iConfig.exists(
"userData")) {
168 PATGenericParticleProducer::~PATGenericParticleProducer() {}
187 std::vector<edm::Handle<edm::ValueMap<IsoDeposit> > > deposits(
isoDepositTokens_.size());
188 for (
size_t j = 0, nd = deposits.size();
j < nd; ++
j) {
193 std::vector<edm::Handle<edm::Association<reco::GenParticleCollection> > > genMatches(
genMatchTokens_.size());
206 std::vector<GenericParticle>* PATGenericParticles =
new std::vector<GenericParticle>();
208 itGenericParticle++) {
210 unsigned int idx = itGenericParticle - cands->begin();
246 for (
size_t j = 0, nd = deposits.size();
j < nd; ++
j) {
252 for (
size_t i = 0,
n = genMatches.size();
i <
n; ++
i) {
261 aGenericParticle.
setQuality((*qualities)[candRef]);
286 std::sort(PATGenericParticles->begin(), PATGenericParticles->end(),
eTComparator_);
289 std::unique_ptr<std::vector<GenericParticle> > myGenericParticles(PATGenericParticles);
bool enabled() const
'true' if this there is at least one efficiency configured
Assists in assimilating all pat::UserData into pat objects.
void newEvent(const edm::Event &event)
To be called for each new event, reads in the ValueMaps for efficiencies.
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
void setIsolation(IsolationKeys key, float value)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
bool exists(std::string const ¶meterName) const
checks if a parameter exists
void embedTrack()
embeds the master track instead of keeping a reference to it
IsolationKeys
Enum defining isolation keys.
std::vector< edm::EDGetTokenT< edm::Association< reco::GenParticleCollection > > > genMatchTokens_
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
void setResolutions(pat::PATObject< T > &obj) const
Sets the efficiencies for this object, using the reference to the original objects.
bool enabled() const
'true' if this there is at least one efficiency configured
bool enabled() const
True if it has a non null configuration.
Analysis-level Generic Particle class (e.g. for hadron or muon not fully reconstructed) ...
pat::PATUserDataHelper< pat::GenericParticle > userDataHelper_
void beginEvent(const edm::Event &event, const edm::EventSetup &eventSetup)
void embedStandalone()
embeds the stand-alone track instead of keeping a reference to it
pat::helper::MultiIsolator::IsolationValuePairs isolatorTmpStorage_
edm::EDGetTokenT< edm::View< reco::Candidate > > srcToken_
void newEvent(const edm::Event &event, const edm::EventSetup &setup)
To be called for each new event, reads in the EventSetup object.
PATGenericParticleProducer(const edm::ParameterSet &iConfig)
GreaterByEt< GenericParticle > eTComparator_
Produces the pat::GenericParticle.
~PATGenericParticleProducer() override
tuple key
prepare the HTCondor submission files and eventually submit them
const char * qualities[3]
std::vector< edm::EDGetTokenT< edm::ValueMap< IsoDeposit > > > isoDepositTokens_
void embedGsfTrack()
embeds the gsf track instead of keeping a reference to it
void embedSuperCluster()
embeds the supercluster instead of keeping a reference to it
std::vector< std::pair< pat::IsolationKeys, float > > IsolationValuePairs
void addGenParticleRef(const reco::GenParticleRef &ref)
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
void embedTracks()
embeds the other tracks instead of keeping references
void newEvent(const edm::Event &event)
To be called for each new event, reads in the vertex collection.
std::vector< std::pair< pat::IsolationKeys, edm::InputTag > > isoDepositLabels_
T getParameter(std::string const &) const
void setEfficiencies(pat::PATObject< T > &obj, const R &originalRef) const
Sets the efficiencies for this object, using the reference to the original objects.
bool enabled() const
returns true if this was given a non dummy configuration
pat::helper::EfficiencyLoader efficiencyLoader_
pat::helper::VertexingHelper vertexingHelper_
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
void setIsoDeposit(IsolationKeys key, const IsoDeposit &dep)
Sets the IsoDeposit associated with some key; if it is already existent, it is overwritten.
pat::helper::MultiIsolator isolator_
void embedCaloTower()
embeds the calotower instead of keeping a reference to it
void setQuality(float quality)
sets a user defined quality value
void embedCombined()
embeds the combined track instead of keeping a reference to it
pat::helper::KinResolutionsLoader resolutionLoader_
edm::EDGetTokenT< edm::ValueMap< float > > qualitySrcToken_
Produces and/or checks pat::VertexAssociation's.
void setVertexAssociation(const pat::VertexAssociation &assoc)
Set a single vertex association.
void fill(const edm::View< T > &coll, int idx, IsolationValuePairs &isolations) const