CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HLTCollectionProducer.h
Go to the documentation of this file.
1 #ifndef HLTCollectionProducer_h
2 #define HLTCollectionProducer_h
3 
4 //
5 // Package: HLTCollectionProducer
6 // Class: HLTCollectionProducer
7 //
14 //
15 // Original Author: Ian Tomalin
16 //
17 
18 // user include files
26 
27 #include <typeinfo>
28 #include <string>
29 #include <vector>
30 
31 //
32 // class declaration
33 //
34 
35 template <typename T>
37 
38  public:
40  virtual ~HLTCollectionProducer();
41  static void fillDescriptions(edm::ConfigurationDescriptions & descriptions);
42  virtual void produce(edm::Event&, const edm::EventSetup&);
43 
44  private:
47  std::vector<int> triggerTypes_;
48 };
49 
50 
51 //
52 // constructors and destructor
53 //
54 template <typename T>
56  hltObjectTag_ ( iConfig.getParameter<edm::InputTag>("HLTObject") ),
57  hltObjectToken_(consumes<trigger::TriggerFilterObjectWithRefs>(hltObjectTag_)),
58  triggerTypes_ ( iConfig.getParameter<std::vector<int> >("TriggerTypes") )
59 {
60  produces< std::vector<T> >();
61 }
62 
63 template <typename T>
65 
66 template<typename T>
67 void
70  desc.add<edm::InputTag> ("HLTObject", edm::InputTag("TriggerFilterObjectWithRefs"));
71  std::vector<int> triggerTypes;
72  desc.add<std::vector<int> > ("TriggerTypes",triggerTypes);
73  descriptions.add(std::string("hlt")+std::string(typeid(HLTCollectionProducer<T>).name()), desc);
74 }
75 
76 //
77 // member functions
78 //
79 
80 // ------------ method called to produce the data ------------
81 template <typename T>
82 void
84 {
85 
86  std::auto_ptr<std::vector<T> > collection ( new std::vector<T>() );
87 
88  // get hold of collection of TriggerFilterObjectsWithRefs
90  iEvent.getByToken(hltObjectToken_, hltObject);
91  std::vector<edm::Ref<std::vector<T> > > objectRefs;
92 
93  for (size_t t=0; t<triggerTypes_.size(); ++t) {
94  objectRefs.clear();
95  hltObject->getObjects( triggerTypes_[t], objectRefs );
96  for (size_t i = 0; i < objectRefs.size(); ++i) {
97  collection->push_back(*objectRefs[i]);
98  }
99  }
100 
101  iEvent.put(collection);
102 
103 }
104 
105 #endif // HLTCollectionProducer_h
int i
Definition: DBlmapReader.cc:9
std::vector< int > triggerTypes_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > hltObjectToken_
HLTCollectionProducer(const edm::ParameterSet &)
int iEvent
Definition: GenABIO.cc:243
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:116
virtual void produce(edm::Event &, const edm::EventSetup &)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)