CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ObjectSelector.h
Go to the documentation of this file.
1 #ifndef RecoAlgos_ObjectSelector_h
2 #define RecoAlgos_ObjectSelector_h
3 
26 #include <utility>
27 #include <vector>
28 #include <memory>
29 #include <algorithm>
30 
31 template<typename Selector,
33  typename SizeSelector = NonNullNumberSelector,
38  >
39 class ObjectSelector : public Base {
40 public:
42  // ObjectSelector()=default;
43  explicit ObjectSelector(const edm::ParameterSet & cfg) :
44  Base(cfg),
45  srcToken_( this-> template consumes<typename Selector::collection>(cfg.template getParameter<edm::InputTag>("src"))),
46  filter_(false),
47  selector_(cfg, this->consumesCollector()),
48  sizeSelector_(reco::modules::make<SizeSelector>(cfg)),
49  postProcessor_(cfg, this->consumesCollector()) {
50  const std::string filter("filter");
51  std::vector<std::string> bools = cfg.template getParameterNamesForType<bool>();
52  bool found = std::find(bools.begin(), bools.end(), filter) != bools.end();
53  if (found) filter_ = cfg.template getParameter<bool>(filter);
54  postProcessor_.init(* this);
55  }
57  virtual ~ObjectSelector() { }
58 
59 private:
61  bool filter(edm::Event& evt, const edm::EventSetup& es) {
62  Init::init(selector_, evt, es);
63  using namespace std;
66  StoreManager manager(source);
67  selector_.select(source, evt, es);
68  manager.cloneAndStore(selector_.begin(), selector_.end(), evt);
69  bool result = (! filter_ || sizeSelector_(manager.size()));
71  postProcessor_.process(filtered, evt);
72  return result;
73  }
77  bool filter_;
81  SizeSelector sizeSelector_;
83  PostProcessor postProcessor_;
84 };
85 
86 #endif
87 
tuple base
Main Program
Definition: newFWLiteAna.py:92
type
Definition: HCALResponse.h:21
tuple cfg
Definition: looper.py:293
bool filter(edm::Event &evt, const edm::EventSetup &es)
process one event
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
int init
Definition: HydjetWrapper.h:67
S make(const edm::ParameterSet &cfg)
edm::EDGetTokenT< typename Selector::collection > srcToken_
source collection label
SizeSelector sizeSelector_
selected object collection size selector
bool filter_
filter event
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
static const TGPicture * filtered(bool iBackgroundIsBlack)
tuple result
Definition: query.py:137
virtual ~ObjectSelector()
destructor
Functor that operates on &lt;T&gt;
Definition: Selector.h:24
ObjectSelector(const edm::ParameterSet &cfg)
constructor
PostProcessor postProcessor_
post processor
Selector selector_
Object collection selector.
volatile std::atomic< bool > shutdown_flag false
static std::string const source
Definition: EdmProvDump.cc:42
def template
Definition: svgfig.py:520