diff --git a/GeneratorInterface/GenFilters/plugins/LHEGenericMassFilter.cc b/GeneratorInterface/GenFilters/plugins/LHEGenericMassFilter.cc index ee0d6039a9505..22337c9c3a14c 100644 --- a/GeneratorInterface/GenFilters/plugins/LHEGenericMassFilter.cc +++ b/GeneratorInterface/GenFilters/plugins/LHEGenericMassFilter.cc @@ -24,6 +24,7 @@ class LHEGenericMassFilter : public edm::global::EDFilter<> { public: explicit LHEGenericMassFilter(const edm::ParameterSet&); ~LHEGenericMassFilter() override = default; + static void fillDescriptions(edm::ConfigurationDescriptions&); private: bool filter(edm::StreamID, edm::Event&, edm::EventSetup const&) const override; @@ -35,14 +36,16 @@ class LHEGenericMassFilter : public edm::global::EDFilter<> { const std::vector particleID_; // vector of particle IDs to look for const double minMass_; const double maxMass_; + const bool requiredOutgoingStatus_; // Whether particles required to pass filter must have outgoing status }; LHEGenericMassFilter::LHEGenericMassFilter(const edm::ParameterSet& iConfig) : src_(consumes(iConfig.getParameter("src"))), numRequired_(iConfig.getParameter("NumRequired")), - particleID_(iConfig.getParameter >("ParticleID")), + particleID_(iConfig.getParameter>("ParticleID")), minMass_(iConfig.getParameter("MinMass")), - maxMass_(iConfig.getParameter("MaxMass")) {} + maxMass_(iConfig.getParameter("MaxMass")), + requiredOutgoingStatus_(iConfig.getParameter("RequiredOutgoingStatus")) {} // ------------ method called to skim the data ------------ bool LHEGenericMassFilter::filter(edm::StreamID iID, edm::Event& iEvent, edm::EventSetup const& iSetup) const { @@ -57,7 +60,8 @@ bool LHEGenericMassFilter::filter(edm::StreamID iID, edm::Event& iEvent, edm::Ev double E = 0.; for (int i = 0; i < EvtHandle->hepeup().NUP; ++i) { - if (EvtHandle->hepeup().ISTUP[i] != 1) { // keep only outgoing particles + // if requiredOutgoingStatus_ keep only outgoing particles, otherwise keep them all + if (requiredOutgoingStatus_ && EvtHandle->hepeup().ISTUP[i] != 1) { continue; } for (unsigned int j = 0; j < particleID_.size(); ++j) { @@ -84,5 +88,16 @@ bool LHEGenericMassFilter::filter(edm::StreamID iID, edm::Event& iEvent, edm::Ev return false; } +// ------------ method fills 'descriptions' with the allowed parameters for the module ------------ +void LHEGenericMassFilter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("NumRequired", 1); + desc.add>("ParticleID", std::vector{1}); + desc.add("MinMass", 0.0); + desc.add("MaxMass", 1.0); + desc.add("RequiredOutgoingStatus", true); + descriptions.addDefault(desc); +} + //define this as a plug-in DEFINE_FWK_MODULE(LHEGenericMassFilter);