@@ -26,33 +26,41 @@ class L1GTAcceptFilter : public edm::global::EDFilter<> {
2626
2727 const edm::EDGetTokenT<P2GTAlgoBlockMap> algoBlocksToken_;
2828 const DecisionType decisionEnum_;
29+ int triggerType_;
2930};
3031
3132L1GTAcceptFilter::L1GTAcceptFilter (const edm::ParameterSet& config)
3233 : algoBlocksToken_(consumes<P2GTAlgoBlockMap>(config.getParameter<edm::InputTag>(" algoBlocksTag" ))),
3334 decisionEnum_(config.getParameter<std::string>(" decision" ) == "beforeBxMaskAndPrescale" ? beforeBxMaskAndPrescale
3435 : config.getParameter<std::string>(" decision" ) == "beforePrescale" ? beforePrescale
35- : final ) {}
36+ : final ),
37+ triggerType_(config.getParameter<int >(" triggerType" )) {}
3638
3739bool L1GTAcceptFilter::filter (edm::StreamID, edm::Event& event, const edm::EventSetup& setup) const {
3840 const P2GTAlgoBlockMap& algoMap = event.get (algoBlocksToken_);
3941 bool decision = false ;
42+ bool veto = false ;
4043 for (const auto & [name, algoBlock] : algoMap) {
41- if (decisionEnum_ == beforeBxMaskAndPrescale) {
42- decision |= algoBlock.decisionBeforeBxMaskAndPrescale ();
43- } else if (decisionEnum_ == beforePrescale) {
44- decision |= algoBlock.decisionBeforePrescale ();
45- } else {
46- decision |= algoBlock.decisionFinal ();
44+ if (algoBlock.isVeto ()) {
45+ veto |= algoBlock.decisionFinal ();
46+ } else if ((algoBlock.triggerTypes () & triggerType_) > 0 ) {
47+ if (decisionEnum_ == beforeBxMaskAndPrescale) {
48+ decision |= algoBlock.decisionBeforeBxMaskAndPrescale ();
49+ } else if (decisionEnum_ == beforePrescale) {
50+ decision |= algoBlock.decisionBeforePrescale ();
51+ } else {
52+ decision |= algoBlock.decisionFinal ();
53+ }
4754 }
4855 }
4956
50- return decision;
57+ return decision && !veto ;
5158}
5259
5360void L1GTAcceptFilter::fillDescriptions (edm::ConfigurationDescriptions& descriptions) {
5461 edm::ParameterSetDescription desc;
5562 desc.add <edm::InputTag>(" algoBlocksTag" );
63+ desc.add <int >(" triggerType" , 1 );
5664 desc.ifValue (edm::ParameterDescription<std::string>(" decision" , " final" , true ),
5765 edm::allowedValues<std::string>(" beforeBxMaskAndPrescale" , " beforePrescale" , " final" ));
5866
0 commit comments