Skip to content

Commit f99ad90

Browse files
committed
Make L1Filter thread friendly
Converted to global::EDFilter
1 parent 30a3bf4 commit f99ad90

File tree

1 file changed

+28
-29
lines changed

1 file changed

+28
-29
lines changed

L1Trigger/Skimmer/src/L1Filter.cc

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "FWCore/MessageLogger/interface/MessageLogger.h"
22

3-
#include "FWCore/Framework/interface/EDFilter.h"
3+
#include "FWCore/Framework/interface/global/EDFilter.h"
44
#include "FWCore/Framework/interface/Event.h"
55
#include "FWCore/ParameterSet/interface/ParameterSet.h"
66

@@ -20,70 +20,69 @@
2020
#include <iostream>
2121
#include <string>
2222

23-
class L1Filter : public edm::EDFilter {
23+
class L1Filter : public edm::global::EDFilter<> {
2424
public:
2525
explicit L1Filter(edm::ParameterSet const &);
2626

27-
~L1Filter() override;
28-
29-
bool filter(edm::Event &e, edm::EventSetup const &c) override;
30-
void endJob() override;
27+
bool filter(edm::StreamID, edm::Event &e, edm::EventSetup const &c) const override;
3128

3229
private:
33-
edm::InputTag inputTag_;
34-
bool useAODRecord_;
35-
bool useFinalDecision_;
36-
std::vector<std::string> algos_;
30+
edm::EDGetTokenT<L1GlobalTriggerRecord> triggerToken_;
31+
edm::EDGetTokenT<L1GlobalTriggerReadoutRecord> triggerReadoutToken_;
32+
const edm::ESGetToken<L1GtTriggerMenu, L1GtTriggerMenuRcd> menuToken_;
33+
const bool useAODRecord_;
34+
const bool useFinalDecision_;
35+
const std::vector<std::string> algos_;
3736
};
3837

3938
L1Filter::L1Filter(const edm::ParameterSet &ps)
40-
: inputTag_(ps.getParameter<edm::InputTag>("inputTag")),
39+
: menuToken_(esConsumes()),
4140
useAODRecord_(ps.getParameter<bool>("useAODRecord")),
4241
useFinalDecision_(ps.getParameter<bool>("useFinalDecision")),
43-
algos_(ps.getParameter<std::vector<std::string>>("algorithms")) {}
42+
algos_(ps.getParameter<std::vector<std::string>>("algorithms")) {
43+
auto inputTag = ps.getParameter<edm::InputTag>("inputTag");
4444

45-
L1Filter::~L1Filter() {}
45+
if (useAODRecord_) {
46+
triggerToken_ = consumes(inputTag);
47+
} else {
48+
triggerReadoutToken_ = consumes(inputTag);
49+
}
50+
}
4651

47-
bool L1Filter::filter(edm::Event &iEvent, edm::EventSetup const &evSetup) {
52+
bool L1Filter::filter(edm::StreamID, edm::Event &iEvent, edm::EventSetup const &evSetup) const {
4853
// get menu
49-
edm::ESHandle<L1GtTriggerMenu> menuRcd;
50-
evSetup.get<L1GtTriggerMenuRcd>().get(menuRcd);
51-
const L1GtTriggerMenu *menu = menuRcd.product();
54+
const L1GtTriggerMenu &menu = evSetup.getData(menuToken_);
5255

5356
bool passed = false;
5457
std::vector<std::string>::const_iterator algo;
5558

5659
if (useAODRecord_) {
57-
edm::Handle<L1GlobalTriggerRecord> gtRecord;
58-
iEvent.getByLabel(inputTag_, gtRecord);
59-
const DecisionWord dWord = gtRecord->decisionWord();
60+
L1GlobalTriggerRecord const &gtRecord = iEvent.get(triggerToken_);
6061

6162
if (useFinalDecision_)
62-
passed = gtRecord->decision();
63+
passed = gtRecord.decision();
6364
else {
65+
const DecisionWord dWord = gtRecord.decisionWord();
6466
for (algo = algos_.begin(); algo != algos_.end(); ++algo) {
65-
passed |= menu->gtAlgorithmResult((*algo), dWord);
67+
passed |= menu.gtAlgorithmResult((*algo), dWord);
6668
}
6769
}
6870
} else {
69-
edm::Handle<L1GlobalTriggerReadoutRecord> gtRecord;
70-
iEvent.getByLabel(inputTag_, gtRecord);
71-
const DecisionWord dWord = gtRecord->decisionWord();
71+
L1GlobalTriggerReadoutRecord const &gtRecord = iEvent.get(triggerReadoutToken_);
7272

7373
if (useFinalDecision_)
74-
passed = gtRecord->decision();
74+
passed = gtRecord.decision();
7575
else {
76+
const DecisionWord &dWord = gtRecord.decisionWord();
7677
for (algo = algos_.begin(); algo != algos_.end(); ++algo) {
77-
passed |= menu->gtAlgorithmResult((*algo), dWord);
78+
passed |= menu.gtAlgorithmResult((*algo), dWord);
7879
}
7980
}
8081
}
8182

8283
return passed;
8384
}
8485

85-
void L1Filter::endJob() {}
86-
8786
#include "FWCore/Framework/interface/MakerMacros.h"
8887

8988
DEFINE_FWK_MODULE(L1Filter);

0 commit comments

Comments
 (0)