CMS 3D CMS Logo

CategoryCriteria.h
Go to the documentation of this file.
1 #ifndef CategoryCriteria_h
2 #define CategoryCriteria_h
3 
9 
11 
14 template <typename Collection, typename Classifier>
16 public:
17  // Input collection type
18  typedef Collection collection;
19 
20  // Type of the collection elements
21  typedef typename Collection::value_type type;
22 
23  // Oumemberut collection type
24  typedef std::vector<const type *> container;
25 
26  // Iterator over result collection type.
27  typedef typename container::const_iterator const_iterator;
28 
29  // Constructor from parameter set configurability
31  : classifier_(config, std::move(iC)), evaluate_(config.getParameter<std::string>("cut")) {}
32 
33  // Select object from a collection and possibly event content
34  void select(const edm::Handle<collection> &collectionHandler, const edm::Event &event, const edm::EventSetup &setup) {
35  selected_.clear();
36 
37  // const collection & collectionPointer = *(collectionHandler.product());
38 
39  classifier_.newEvent(event, setup);
40 
41  for (typename collection::size_type i = 0; i < collectionHandler->size(); ++i) {
42  edm::Ref<Collection> member(collectionHandler, i);
43 
44  classifier_.evaluate(member);
45 
46  // Classifier is evaluated using StringCutObjectSelector
48  selected_.push_back(&(*member));
49  }
50  }
51 
52  // Iterators over selected objects: collection begin
53  const_iterator begin() const { return selected_.begin(); }
54 
55  // Iterators over selected objects: collection end
56  const_iterator end() const { return selected_.end(); }
57 
58  // True if no object has been selected
59  std::size_t size() const { return selected_.size(); }
60 
61 private:
62  container selected_;
63 
64  Classifier classifier_;
65 
67 };
68 
69 #endif
Classifier classifier_
Collection collection
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:2
std::size_t size() const
Definition: config.py:1
const_iterator begin() const
CategoryCriteria(const edm::ParameterSet &config, edm::ConsumesCollector &&iC)
uint16_t size_type
std::vector< const type * > container
void select(const edm::Handle< collection > &collectionHandler, const edm::Event &event, const edm::EventSetup &setup)
Collection::value_type type
StringCutObjectSelector< typename Classifier::Categories > evaluate_
container::const_iterator const_iterator
const_iterator end() const
def move(src, dest)
Definition: eostools.py:511
Definition: event.py:1