15 |
|
public: |
16 |
|
TriggerReader(bool passAllEvents=false) : passAll(passAllEvents) {} |
17 |
|
|
18 |
< |
void setEvent( fwlite::Event * e) { ev=e;} |
18 |
> |
void setEvent( fwlite::Event * e) { ev=e; |
19 |
> |
if(!passAll) { |
20 |
> |
hTriggerResults.getByLabel(*ev,"TriggerResults","","HLT"); |
21 |
> |
run = ev->eventAuxiliary().id().run(); |
22 |
> |
} |
23 |
> |
} |
24 |
|
|
25 |
|
bool accept(const std::string & triggername) |
26 |
|
{ |
27 |
|
if(passAll) return true; |
23 |
– |
fwlite::Handle<edm::TriggerResults> hTriggerResults; |
24 |
– |
hTriggerResults.getByLabel(*ev,"TriggerResults","","HLT"); |
28 |
|
|
29 |
|
|
30 |
|
regex_t regex; |
31 |
|
int reti; |
32 |
|
|
33 |
|
|
31 |
– |
reti = regcomp(®ex, triggername.c_str(), 0); |
32 |
– |
// reti = regcomp(®ex, "HLT_Ele32_CaloIdVT_CaloIsoT_TrkIdT_TrkIsoT_v.*", 0); |
33 |
– |
if( reti ){ std::cerr << "Could not compile regex" << std::endl;} |
34 |
|
|
35 |
|
|
36 |
|
std::map<std::string,size_t>::iterator nit; |
37 |
< |
if(ev->getRun().run() != cacheRun[triggername] || nameMap.find(triggername) == nameMap.end()) |
37 |
> |
if(run != cacheRun[triggername] || nameMap.find(triggername) == nameMap.end()) |
38 |
|
{ |
39 |
< |
std::cout << "new run" << ev->getRun().run() << std::endl; |
40 |
< |
cacheRun[triggername]=ev->getRun().run(); |
39 |
> |
|
40 |
> |
reti = regcomp(®ex, triggername.c_str(), 0); |
41 |
> |
// reti = regcomp(®ex, "HLT_Ele32_CaloIdVT_CaloIsoT_TrkIdT_TrkIsoT_v.*", 0); |
42 |
> |
if( reti ){ std::cerr << "Could not compile regex" << std::endl;} |
43 |
> |
|
44 |
> |
std::cout << "new run" << run << std::endl; |
45 |
> |
// cacheRun[triggername]=ev->getRun().run(); |
46 |
> |
cacheRun[triggername]=run; |
47 |
|
edm::TriggerNames const& triggerNames = ev->triggerNames(*hTriggerResults); |
48 |
|
std::string oldiname="whatever"; |
49 |
|
nit=nameMap.find(triggername); |
67 |
|
} |
68 |
|
|
69 |
|
} |
70 |
+ |
regfree(®ex); |
71 |
|
} |
72 |
|
nit=nameMap.find(triggername); |
73 |
|
if(nit==nameMap.end()) |
74 |
|
{ |
75 |
|
std::cout << "ERROR: trigger name not found" << std::endl; |
76 |
< |
edm::TriggerNames const& triggerNames = ev->triggerNames(*hTriggerResults); |
76 |
> |
// edm::TriggerNames const& triggerNames = ev->triggerNames(*hTriggerResults); |
77 |
|
// for (unsigned i = 0; i < triggerNames.size(); ++i) std::cout << triggerNames.triggerName(i) << " is bit " << i << "looking for: "<< triggername << std::endl; |
78 |
|
nameMap[triggername]=100000000; // meaning not found in this run |
79 |
|
|
84 |
|
} |
85 |
|
|
86 |
|
private: |
87 |
+ |
fwlite::Handle<edm::TriggerResults> hTriggerResults; |
88 |
|
std::map<std::string,size_t> nameMap; |
89 |
|
std::map<std::string,size_t> cacheRun; |
90 |
|
// unsigned int cacheRun; |
91 |
|
fwlite::Event * ev; |
92 |
|
bool passAll; |
93 |
+ |
unsigned int run; |
94 |
|
|
95 |
|
}; |
96 |
|
|