CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ObjectPairFilter.h
Go to the documentation of this file.
1 #ifndef RecoAlgos_ObjectPairFilter_h
2 #define RecoAlgos_ObjectPairFilter_h
3 
20 #include <vector>
21 #include <algorithm>
22 
23 template<typename C, typename S>
25 public:
27  explicit ObjectPairFilter( const edm::ParameterSet & cfg ) :
28  select_( reco::modules::make<S>( cfg ) ),
29  srcToken_( consumes<C>( cfg.template getParameter<edm::InputTag>( "src" ) ) ),
30  minNumber_( 1 ) {
31  std::vector<std::string> ints = cfg.template getParameterNamesForType<unsigned int>();
32  const std::string minNumber( "minNumber" );
33  bool foundMinNumber = std::find( ints.begin(), ints.end(), minNumber ) != ints.end();
34  if ( foundMinNumber )
35  minNumber_ = cfg.template getParameter<unsigned int>( minNumber );
36  }
37 
38 private:
40  bool filter( edm::Event& evt, const edm::EventSetup&) override {
42  evt.getByToken( srcToken_, source );
43  size_t n = 0;
44  for( typename C::const_iterator i = source->begin(); i != source->end(); ++ i )
45  for( typename C::const_iterator j = i + 1; j != source->end(); ++ j ) {
46  if ( select_( * i, * j ) ) n ++;
47  if ( n >= minNumber_ ) return true;
48  }
49  return false;
50  }
56  unsigned int minNumber_;
57 };
58 
59 #endif
60 
int i
Definition: DBlmapReader.cc:9
tuple cfg
Definition: looper.py:293
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
S make(const edm::ParameterSet &cfg)
S select_
object filter
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
int j
Definition: DBlmapReader.cc:9
edm::EDGetTokenT< C > srcToken_
source collection label
double S(const TLorentzVector &, const TLorentzVector &)
Definition: Particle.cc:99
bool filter(edm::Event &evt, const edm::EventSetup &) override
process one event
unsigned int minNumber_
minimum number of entries in a collection
ObjectPairFilter(const edm::ParameterSet &cfg)
constructor
static std::string const source
Definition: EdmProvDump.cc:42
def template
Definition: svgfig.py:520