Go to the documentation of this file.00001 #ifndef CommonTools_CandAlgos_CompositeCandSelector_h
00002 #define CommonTools_CandAlgos_CompositeCandSelector_h
00003 #include "CommonTools/UtilAlgos/interface/ParameterAdapter.h"
00004 #include "CommonTools/CandUtils/interface/CompositeCandSelector.h"
00005 #include "CommonTools/UtilAlgos/interface/StringCutObjectSelector.h"
00006
00007 namespace reco {
00008 namespace modules {
00009
00010 template<typename Selector, typename T1, typename T2, unsigned int nDau>
00011 struct ParameterAdapter<CompositeCandSelector<Selector, T1, T2, nDau> > {
00012 static CompositeCandSelector<Selector, T1, T2, nDau> make(const edm::ParameterSet & cfg) {
00013 return CompositeCandSelector<Selector, T1, T2, nDau>(modules::make<Selector>(cfg));
00014 }
00015 };
00016
00017 template<template<typename, typename> class Combiner, typename T1, typename T2, unsigned int nDau>
00018 struct ParameterAdapter<CompositeCandSelector<Combiner<StringCutObjectSelector<T1>,
00019 StringCutObjectSelector<T2> >, T1, T2, nDau> > {
00020 typedef CompositeCandSelector<Combiner<StringCutObjectSelector<T1>,
00021 StringCutObjectSelector<T2> >, T1, T2, nDau> Selector;
00022 static Selector make(const edm::ParameterSet & cfg) {
00023 StringCutObjectSelector<T1> s1(cfg.getParameter<std::string>("daughter1cut"));
00024 StringCutObjectSelector<T2> s2(cfg.getParameter<std::string>("daughter2cut"));
00025 Combiner<StringCutObjectSelector<T1>, StringCutObjectSelector<T2> > c(s1, s2);
00026 return Selector(c);
00027 }
00028 };
00029
00030 }
00031 }
00032
00033 #endif