00001 #ifndef DataFormats_PatCandidates_TriggerObject_h 00002 #define DataFormats_PatCandidates_TriggerObject_h 00003 00004 00005 // -*- C++ -*- 00006 // 00007 // Package: PatCandidates 00008 // Class: pat::TriggerObject 00009 // 00010 // $Id: TriggerObject.h,v 1.1.2.3 2009/03/27 21:31:05 vadler Exp $ 00011 // 00027 #include "DataFormats/Candidate/interface/LeafCandidate.h" 00028 00029 #include <map> 00030 #include <string> 00031 #include <vector> 00032 00033 #include "DataFormats/HLTReco/interface/TriggerObject.h" 00034 #include "DataFormats/Common/interface/Ref.h" 00035 #include "DataFormats/Common/interface/RefProd.h" 00036 #include "DataFormats/Common/interface/RefVector.h" 00037 #include "DataFormats/Common/interface/Association.h" 00038 00039 00040 namespace pat { 00041 00042 class TriggerObject : public reco::LeafCandidate { 00043 00045 std::string collection_; 00046 std::vector< unsigned > filterIds_; // special filter related ID as defined in enum 'TriggerObjectType' in DataFormats/HLTReco/interface/TriggerTypeDefs.h 00047 // empty, if object was not used in last active filter 00048 00049 public: 00050 00052 TriggerObject(); 00053 TriggerObject( const reco::Particle::LorentzVector & vec, int id = 0 ); 00054 TriggerObject( const reco::Particle::PolarLorentzVector & vec, int id = 0 ); 00055 TriggerObject( const trigger::TriggerObject & aTrigObj ); 00056 virtual ~TriggerObject() {}; 00057 00059 void setCollection( const std::string & collection ) { collection_ = collection; }; 00060 void addFilterId( unsigned filterId ) { filterIds_.push_back( filterId ); }; 00061 std::string collection() const { return collection_; }; 00062 std::vector< unsigned > filterIds() const { return filterIds_; }; 00063 bool hasFilterId( unsigned filterId ) const; 00064 00065 }; 00066 00067 00069 typedef std::vector< TriggerObject > TriggerObjectCollection; 00071 typedef edm::Ref< TriggerObjectCollection > TriggerObjectRef; 00073 typedef std::map< std::string, TriggerObjectRef > TriggerObjectMatchMap; 00075 typedef edm::RefProd< TriggerObjectCollection > TriggerObjectRefProd; 00077 typedef edm::RefVector< TriggerObjectCollection > TriggerObjectRefVector; 00079 typedef edm::Association< TriggerObjectCollection > TriggerObjectMatch; 00081 typedef edm::RefProd< TriggerObjectMatch > TriggerObjectMatchRefProd; 00083 typedef std::map< std::string, TriggerObjectMatchRefProd > TriggerObjectMatchContainer; 00084 00085 } 00086 00087 00088 #endif