1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#include "FWCore/Framework/interface/stream/EDFilter.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
class StopAfterNEvents : public edm::stream::EDFilter<> {
public:
StopAfterNEvents(const edm::ParameterSet&);
~StopAfterNEvents() override = default;
private:
bool filter(edm::Event&, edm::EventSetup const&) override;
const int nMax_;
int n_;
const bool verbose_;
};
#include <iostream>
using namespace std;
using namespace edm;
StopAfterNEvents::StopAfterNEvents(const ParameterSet& pset)
: nMax_(pset.getParameter<int>("maxEvents")), n_(0), verbose_(pset.getUntrackedParameter<bool>("verbose", false)) {}
bool StopAfterNEvents::filter(Event&, EventSetup const&) {
if (n_ < 0)
return true;
n_++;
bool ret = n_ <= nMax_;
if (verbose_)
edm::LogInfo("StopAfterNEvents") << ">>> filtering event" << n_ << "/" << nMax_ << "(" << (ret ? "true" : "false")
<< ")" << endl;
return ret;
}
#include "FWCore/Framework/interface/MakerMacros.h"
DEFINE_FWK_MODULE(StopAfterNEvents);
|