CMS 3D CMS Logo

TriggerEvent.h

Go to the documentation of this file.
00001 #ifndef HLTReco_TriggerEvent_h
00002 #define HLTReco_TriggerEvent_h
00003 
00016 #include "DataFormats/HLTReco/interface/TriggerTypeDefs.h"
00017 #include "DataFormats/HLTReco/interface/TriggerObject.h"
00018 #include "FWCore/Utilities/interface/InputTag.h"
00019 #include <string>
00020 #include <vector>
00021 
00022 namespace trigger
00023 {
00024 
00026   class TriggerEvent {
00027 
00028   public:
00029 
00031     class TriggerFilterObject {
00032     public:
00034       std::string filterTag_;
00036       Vids filterIds_;
00038       Keys filterKeys_;
00040       TriggerFilterObject(): filterTag_(), filterIds_(), filterKeys_() {
00041         filterTag_=edm::InputTag().encode();
00042       }
00043       TriggerFilterObject(const edm::InputTag& filterTag): filterTag_(filterTag.encode()), filterIds_(), filterKeys_() { }
00044       TriggerFilterObject(const edm::InputTag& filterTag, const Vids& filterIds, const Keys& filterKeys): filterTag_(filterTag.encode()), filterIds_(filterIds), filterKeys_(filterKeys) { }
00045     };
00046 
00048   private:
00050     std::string usedProcessName_;
00052     std::vector<std::string> collectionTags_;
00054     Keys collectionKeys_;
00056     TriggerObjectCollection triggerObjects_;
00058     std::vector<TriggerFilterObject> triggerFilters_;
00059 
00061   public:
00063     TriggerEvent(): usedProcessName_(), collectionTags_(), collectionKeys_(), triggerObjects_(), triggerFilters_() { }
00064     TriggerEvent(const std::string& usedProcessName, size_type nc, size_type no, size_type nf):
00065       usedProcessName_(usedProcessName), 
00066       collectionTags_(),
00067       collectionKeys_(),
00068       triggerObjects_(), 
00069       triggerFilters_() 
00070     {
00071       collectionTags_.reserve(nc); collectionKeys_.reserve(nc);
00072       triggerObjects_.reserve(no); triggerFilters_.reserve(nf); 
00073     }
00074 
00076     void addObjects(const TriggerObjectCollection& triggerObjects) {triggerObjects_.insert(triggerObjects_.end(), triggerObjects.begin(), triggerObjects.end());}
00077     void addCollections(const std::vector<edm::InputTag>& collectionTags, const Keys& collectionKeys) {
00078       assert(collectionTags.size()==collectionKeys.size());
00079       const size_type n(collectionTags.size());
00080       for (size_type i=0; i!=n; ++i) {
00081         collectionTags_.push_back(collectionTags[i].encode());
00082       }
00083       collectionKeys_.insert(collectionKeys_.end(), collectionKeys.begin(), collectionKeys.end());
00084     }
00085 
00086     void addFilter(const edm::InputTag& filterTag, const Vids& filterIds, const Keys& filterKeys) {triggerFilters_.push_back(TriggerFilterObject(filterTag, filterIds, filterKeys));}
00087 
00089     const std::string& usedProcessName() const {return usedProcessName_;}
00090     const std::vector<std::string>& collectionTags() const {return collectionTags_;}
00091     const Keys& collectionKeys() const {return collectionKeys_;}
00092     const TriggerObjectCollection& getObjects() const {return triggerObjects_;}
00093 
00094     const edm::InputTag collectionTag(size_type index) const {return edm::InputTag(collectionTags_.at(index));}
00095     size_type collectionKey(size_type index) const {return collectionKeys_.at(index);}
00096     const edm::InputTag filterTag(size_type index) const {return edm::InputTag(triggerFilters_.at(index).filterTag_);}
00097     const Vids& filterIds(size_type index) const {return triggerFilters_.at(index).filterIds_;}
00098     const Keys& filterKeys(size_type index) const {return triggerFilters_.at(index).filterKeys_;}
00099 
00101     size_type collectionIndex(const edm::InputTag& collectionTag) const {
00102       const std::string encodedCollectionTag(collectionTag.encode());
00103       const size_type n(collectionTags_.size());
00104       for (size_type i=0; i!=n; ++i) {
00105         if (encodedCollectionTag==collectionTags_[i]) {return i;}
00106       }
00107       return n;
00108     }
00110     size_type filterIndex(const edm::InputTag& filterTag) const {
00111       const std::string encodedFilterTag(filterTag.encode());
00112       const size_type n(triggerFilters_.size());
00113       for (size_type i=0; i!=n; ++i) {
00114         if (encodedFilterTag==triggerFilters_[i].filterTag_) {return i;}
00115       }
00116       return n;
00117     }
00118 
00120     size_type sizeCollections() const {return collectionTags_.size();}
00121     size_type sizeObjects() const {return triggerObjects_.size();}
00122     size_type sizeFilters() const {return triggerFilters_.size();}
00123 
00124   };
00125 
00126 }
00127 
00128 #endif

Generated on Tue Jun 9 17:31:01 2009 for CMSSW by  doxygen 1.5.4