CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/PhysicsTools/PatUtils/interface/TriggerHelper.h

Go to the documentation of this file.
00001 #ifndef PhysicsTools_PatUtils_TriggerHelper_h
00002 #define PhysicsTools_PatUtils_TriggerHelper_h
00003 
00004 
00005 // -*- C++ -*-
00006 //
00007 // Package:    PatUtils
00008 // Class:      pat::helper::TriggerHelper
00009 //
00010 // $Id: TriggerHelper.h,v 1.7 2011/04/05 19:41:33 vadler Exp $
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     // Method Templates
00078 
00079     // Get a reference to the trigger objects matched to a certain physics object given by a collection and index for a certain matcher module
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     // Get a table of references to all trigger objects matched to a certain physics object given by a collection and index
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