00001 #ifndef PhysicsTools_PatUtils_TriggerHelper_h
00002 #define PhysicsTools_PatUtils_TriggerHelper_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00025 #include <string>
00026
00027 #include "DataFormats/PatCandidates/interface/TriggerEvent.h"
00028 #include "DataFormats/Candidate/interface/Candidate.h"
00029 #include "FWCore/Framework/interface/Event.h"
00030
00031
00032 namespace pat {
00033
00034 namespace helper {
00035
00036 class TriggerMatchHelper {
00037
00038 public:
00039
00041
00043 TriggerMatchHelper() {};
00044
00046 ~TriggerMatchHelper() {};
00047
00049
00052 TriggerObjectRef triggerMatchObject( const reco::CandidateBaseRef & candRef, const TriggerObjectMatch * matchResult, const edm::Event & event, const TriggerEvent & triggerEvent ) const;
00054 TriggerObjectRef triggerMatchObject( const reco::CandidateBaseRef & candRef, const std::string & labelMatcher , const edm::Event & event, const TriggerEvent & triggerEvent ) const;
00057 template< class C > TriggerObjectRef triggerMatchObject( const edm::Handle< C > & candCollHandle, const size_t iCand, const TriggerObjectMatch * matchResult, const edm::Event & event, const TriggerEvent & triggerEvent ) const;
00059 template< class C > TriggerObjectRef triggerMatchObject( const edm::Handle< C > & candCollHandle, const size_t iCand, const std::string & labelMatcher , const edm::Event & event, const TriggerEvent & triggerEvent ) const;
00061 TriggerObjectMatchMap triggerMatchObjects( const reco::CandidateBaseRef & candRef, const edm::Event & event, const TriggerEvent & triggerEvent ) const;
00063 template< class C > TriggerObjectMatchMap triggerMatchObjects( const edm::Handle< C > & candCollHandle, const size_t iCand, const edm::Event & event, const TriggerEvent & triggerEvent ) const;
00066 reco::CandidateBaseRefVector triggerMatchCandidates( const pat::TriggerObjectRef & objectRef, const TriggerObjectMatch * matchResult, const edm::Event & event, const TriggerEvent & triggerEvent ) const;
00068 reco::CandidateBaseRefVector triggerMatchCandidates( const pat::TriggerObjectRef & objectRef, const std::string & labelMatcher , const edm::Event & event, const TriggerEvent & triggerEvent ) const;
00071 reco::CandidateBaseRefVector triggerMatchCandidates( const edm::Handle< TriggerObjectCollection > & trigCollHandle, const size_t iTrig, const TriggerObjectMatch * matchResult, const edm::Event & event, const TriggerEvent & triggerEvent ) const;
00073 reco::CandidateBaseRefVector triggerMatchCandidates( const edm::Handle< TriggerObjectCollection > & trigCollHandle, const size_t iTrig, const std::string & labelMatcher , const edm::Event & event, const TriggerEvent & triggerEvent ) const;
00074
00075 };
00076
00077
00078
00079
00080 template< class C > TriggerObjectRef TriggerMatchHelper::triggerMatchObject( const edm::Handle< C > & candCollHandle, const size_t iCand, const TriggerObjectMatch * matchResult, const edm::Event & event, const TriggerEvent & triggerEvent ) const
00081 {
00082 const reco::CandidateBaseRef candRef( edm::Ref< C >( candCollHandle, iCand ) );
00083 return triggerMatchObject( candRef, matchResult, event, triggerEvent );
00084 }
00085 template< class C > TriggerObjectRef TriggerMatchHelper::triggerMatchObject( const edm::Handle< C > & candCollHandle, const size_t iCand, const std::string & labelMatcher, const edm::Event & event, const TriggerEvent & triggerEvent ) const
00086 {
00087 return triggerMatchObject( candCollHandle, iCand, triggerEvent.triggerObjectMatchResult( labelMatcher ), event, triggerEvent );
00088 }
00089
00090
00091 template< class C > TriggerObjectMatchMap TriggerMatchHelper::triggerMatchObjects( const edm::Handle< C > & candCollHandle, const size_t iCand, const edm::Event & event, const TriggerEvent & triggerEvent ) const
00092 {
00093 const reco::CandidateBaseRef candRef( edm::Ref< C >( candCollHandle, iCand ) );
00094 return triggerMatchObjects( candRef, event, triggerEvent );
00095 }
00096
00097 }
00098
00099 }
00100
00101
00102 #endif