00001 #ifndef CandAlgos_SingleObjectShallowCloneSelector_h
00002 #define CandAlgos_SingleObjectShallowCloneSelector_h
00003
00004
00005
00006
00007 #include "PhysicsTools/CandAlgos/interface/ObjectShallowCloneSelector.h"
00008 #include "PhysicsTools/UtilAlgos/interface/StoreContainerTrait.h"
00009 #include "PhysicsTools/UtilAlgos/interface/SelectionAdderTrait.h"
00010 #include "PhysicsTools/UtilAlgos/interface/SingleElementCollectionSelector.h"
00011
00012 template<typename InputCollection, typename Selector,
00013 typename StoreContainer = typename helper::StoreContainerTrait<reco::CandidateCollection>::type,
00014 typename PostProcessor = helper::NullPostProcessor<reco::CandidateCollection>,
00015 typename StoreManager = typename helper::StoreManagerTrait<reco::CandidateCollection>::type,
00016 typename Base = typename helper::StoreManagerTrait<reco::CandidateCollection>::base,
00017 typename RefAdder = typename helper::SelectionAdderTrait<InputCollection, StoreContainer>::type>
00018 class SingleObjectShallowCloneSelector :
00019 public ObjectShallowCloneSelector<SingleElementCollectionSelector<InputCollection, Selector, reco::CandidateCollection,
00020 StoreContainer, RefAdder>,
00021 NonNullNumberSelector, PostProcessor> {
00022 public:
00023 explicit SingleObjectShallowCloneSelector( const edm::ParameterSet & cfg ) :
00024 ObjectShallowCloneSelector<SingleElementCollectionSelector<InputCollection, Selector, reco::CandidateCollection,
00025 StoreContainer, RefAdder>,
00026 NonNullNumberSelector, PostProcessor>( cfg ) { }
00027 virtual ~SingleObjectShallowCloneSelector() { }
00028 };
00029
00030 #endif