13 |
|
|
14 |
|
class TriggerReader { |
15 |
|
public: |
16 |
< |
TriggerReader() : cacheRun(0) {} |
16 |
> |
TriggerReader(bool passAllEvents=false) : passAll(passAllEvents) {} |
17 |
|
|
18 |
|
void setEvent( fwlite::Event * e) { ev=e;} |
19 |
|
|
20 |
|
bool accept(const std::string & triggername) |
21 |
|
{ |
22 |
+ |
if(passAll) return true; |
23 |
|
fwlite::Handle<edm::TriggerResults> hTriggerResults; |
24 |
|
hTriggerResults.getByLabel(*ev,"TriggerResults","","HLT"); |
25 |
|
|
34 |
|
|
35 |
|
|
36 |
|
std::map<std::string,size_t>::iterator nit; |
37 |
< |
if(ev->getRun().run() != cacheRun || nameMap.find(triggername) == nameMap.end()) |
37 |
> |
if(ev->getRun().run() != cacheRun[triggername] || nameMap.find(triggername) == nameMap.end()) |
38 |
|
{ |
39 |
< |
cacheRun=ev->getRun().run(); |
39 |
> |
std::cout << "new run" << ev->getRun().run() << std::endl; |
40 |
> |
cacheRun[triggername]=ev->getRun().run(); |
41 |
|
edm::TriggerNames const& triggerNames = ev->triggerNames(*hTriggerResults); |
42 |
|
std::string oldiname="whatever"; |
43 |
|
nit=nameMap.find(triggername); |
62 |
|
|
63 |
|
} |
64 |
|
} |
65 |
+ |
regfree(®ex); |
66 |
|
nit=nameMap.find(triggername); |
67 |
|
if(nit==nameMap.end()) |
68 |
|
{ |
69 |
|
std::cout << "ERROR: trigger name not found" << std::endl; |
70 |
|
edm::TriggerNames const& triggerNames = ev->triggerNames(*hTriggerResults); |
71 |
< |
for (unsigned i = 0; i < triggerNames.size(); ++i) std::cout << triggerNames.triggerName(i) << " is bit " << i << "looking for: "<< triggername << std::endl; |
72 |
< |
|
71 |
> |
// for (unsigned i = 0; i < triggerNames.size(); ++i) std::cout << triggerNames.triggerName(i) << " is bit " << i << "looking for: "<< triggername << std::endl; |
72 |
> |
nameMap[triggername]=100000000; // meaning not found in this run |
73 |
|
|
74 |
|
return false; |
75 |
|
} |
76 |
+ |
if(nit->second==100000000) return false; |
77 |
|
return hTriggerResults->accept(nit->second); |
78 |
|
} |
79 |
|
|
80 |
|
private: |
81 |
|
std::map<std::string,size_t> nameMap; |
82 |
< |
unsigned int cacheRun; |
82 |
> |
std::map<std::string,size_t> cacheRun; |
83 |
> |
// unsigned int cacheRun; |
84 |
|
fwlite::Event * ev; |
85 |
+ |
bool passAll; |
86 |
|
|
87 |
|
}; |
88 |
|
|