File indexing completed on 2024-04-06 12:01:16
0001 #ifndef UtilAlgos_SelectedOutputCollectionTrait_h
0002 #define UtilAlgos_SelectedOutputCollectionTrait_h
0003
0004
0005
0006
0007
0008 #include "DataFormats/Common/interface/AssociationVector.h"
0009 #include "DataFormats/Common/interface/RefToBase.h"
0010 #include "DataFormats/Common/interface/RefToBaseVector.h"
0011 #include "DataFormats/Common/interface/RefToBaseProd.h"
0012 #include "DataFormats/Common/interface/RefVector.h"
0013 #include "DataFormats/Common/interface/View.h"
0014
0015 namespace helper {
0016
0017 template <typename InputCollection>
0018 struct SelectedOutputCollectionTrait {
0019 typedef InputCollection type;
0020 };
0021
0022 template <typename K, typename C>
0023 struct SelectedOutputCollectionTrait<edm::AssociationVector<edm::RefProd<K>, C> > {
0024 typedef typename edm::RefProd<K>::product_type type;
0025 };
0026
0027 template <typename T, typename C>
0028 struct SelectedOutputCollectionTrait<edm::AssociationVector<edm::RefToBaseProd<T>, C> > {
0029 typedef typename edm::RefToBaseVector<T> type;
0030 };
0031
0032 template <typename T>
0033 struct SelectedOutputCollectionTrait<edm::View<T> > {
0034 typedef typename edm::RefToBaseVector<T> type;
0035 };
0036
0037 template <typename T>
0038 struct SelectedOutputCollectionTrait<edm::RefToBaseVector<T> > {
0039 typedef typename edm::RefToBaseVector<T> type;
0040 };
0041
0042 template <typename C>
0043 struct SelectedOutputCollectionTrait<edm::RefVector<C> > {
0044 typedef typename edm::RefVector<C> type;
0045 };
0046
0047 }
0048
0049 #endif