CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch12/src/CommonTools/UtilAlgos/interface/SingleObjectSelector.h

Go to the documentation of this file.
00001 #ifndef UtilAlgos_SingleObjectSelector_h
00002 #define UtilAlgos_SingleObjectSelector_h
00003 /* \class SingleObjectSelector
00004  *
00005  * \author Luca Lista, INFN
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