Go to the documentation of this file.00001 #ifndef UtilAlgos_SingleObjectSelector_h
00002 #define UtilAlgos_SingleObjectSelector_h
00003
00004
00005
00006
00007 #include "CommonTools/UtilAlgos/interface/ObjectSelector.h"
00008 #include "CommonTools/UtilAlgos/interface/StoreContainerTrait.h"
00009 #include "CommonTools/UtilAlgos/interface/SelectionAdderTrait.h"
00010 #include "CommonTools/UtilAlgos/interface/SingleElementCollectionSelector.h"
00011
00012 template<typename InputCollection, typename Selector,
00013 typename OutputCollection = typename ::helper::SelectedOutputCollectionTrait<InputCollection>::type,
00014 typename StoreContainer = typename ::helper::StoreContainerTrait<OutputCollection>::type,
00015 typename PostProcessor = ::helper::NullPostProcessor<OutputCollection>,
00016 typename StoreManager = typename ::helper::StoreManagerTrait<OutputCollection>::type,
00017 typename Base = typename ::helper::StoreManagerTrait<OutputCollection>::base,
00018 typename RefAdder = typename ::helper::SelectionAdderTrait<InputCollection, StoreContainer>::type>
00019 class SingleObjectSelector :
00020 public ObjectSelector<SingleElementCollectionSelector<InputCollection, Selector, OutputCollection, StoreContainer, RefAdder>,
00021 OutputCollection, NonNullNumberSelector, PostProcessor, StoreManager, Base> {
00022 public:
00023 explicit SingleObjectSelector( const edm::ParameterSet & cfg ) :
00024 ObjectSelector<SingleElementCollectionSelector<InputCollection, Selector, OutputCollection, StoreContainer, RefAdder>,
00025 OutputCollection, NonNullNumberSelector, PostProcessor>( cfg ) { }
00026 virtual ~SingleObjectSelector() { }
00027 };
00028
00029 #endif