1 |
//
|
2 |
// $Id: TriggerHelper.cc,v 1.1.2.1 2009/04/28 18:36:12 vadler Exp $
|
3 |
//
|
4 |
|
5 |
|
6 |
#include "PhysicsTools/PatUtils/interface/TriggerHelper.h"
|
7 |
|
8 |
#include "DataFormats/Common/interface/AssociativeIterator.h"
|
9 |
|
10 |
|
11 |
using namespace pat;
|
12 |
using namespace pat::helper;
|
13 |
|
14 |
|
15 |
|
16 |
/// functions
|
17 |
|
18 |
TriggerObjectRef TriggerMatchHelper::triggerMatchObject( const reco::CandidateBaseRef & candRef, const TriggerObjectMatch * matchResult, const edm::Event & event, const TriggerEvent & triggerEvent ) const
|
19 |
{
|
20 |
if ( matchResult ) {
|
21 |
edm::AssociativeIterator< reco::CandidateBaseRef, TriggerObjectMatch > it( *matchResult, edm::EdmEventItemGetter< reco::CandidateBaseRef >( event ) ), itEnd( it.end() );
|
22 |
while ( it != itEnd ) {
|
23 |
if ( it->first.isNonnull() && it->second.isNonnull() && it->second.isAvailable() ) {
|
24 |
if ( it->first == candRef ) {
|
25 |
return TriggerObjectRef( it->second );
|
26 |
}
|
27 |
}
|
28 |
++it;
|
29 |
}
|
30 |
}
|
31 |
return TriggerObjectRef();
|
32 |
}
|
33 |
TriggerObjectRef TriggerMatchHelper::triggerMatchObject( const reco::CandidateBaseRef & candRef, const std::string & labelMatcher, const edm::Event & event, const TriggerEvent & triggerEvent ) const
|
34 |
{
|
35 |
return triggerMatchObject( candRef, triggerEvent.triggerObjectMatchResult( labelMatcher ), event, triggerEvent );
|
36 |
}
|
37 |
|
38 |
TriggerObjectMatchMap TriggerMatchHelper::triggerMatchObjects( const reco::CandidateBaseRef & candRef, const edm::Event & event, const TriggerEvent & triggerEvent ) const
|
39 |
{
|
40 |
TriggerObjectMatchMap theContainer;
|
41 |
const std::vector< std::string > matchers( triggerEvent.triggerMatchers() );
|
42 |
for ( size_t iMatch = 0; iMatch < matchers.size(); ++iMatch ) {
|
43 |
theContainer[ matchers.at( iMatch ) ] = triggerMatchObject( candRef, matchers.at( iMatch ), event, triggerEvent );
|
44 |
}
|
45 |
return theContainer;
|
46 |
}
|
47 |
|
48 |
reco::CandidateBaseRefVector TriggerMatchHelper::triggerMatchCandidates( const TriggerObjectRef & objectRef, const TriggerObjectMatch * matchResult, const edm::Event & event, const TriggerEvent & triggerEvent ) const
|
49 |
{
|
50 |
reco::CandidateBaseRefVector theCands;
|
51 |
if ( matchResult ) {
|
52 |
edm::AssociativeIterator< reco::CandidateBaseRef, TriggerObjectMatch > it( *matchResult, edm::EdmEventItemGetter< reco::CandidateBaseRef >( event ) ), itEnd( it.end() );
|
53 |
while ( it != itEnd ) {
|
54 |
if ( it->first.isNonnull() && it->second.isNonnull() && it->second.isAvailable() ) {
|
55 |
if ( it->second == objectRef ) {
|
56 |
theCands.push_back( it->first );
|
57 |
}
|
58 |
}
|
59 |
++it;
|
60 |
}
|
61 |
}
|
62 |
return theCands;
|
63 |
}
|
64 |
reco::CandidateBaseRefVector TriggerMatchHelper::triggerMatchCandidates( const TriggerObjectRef & objectRef, const std::string & labelMatcher, const edm::Event & event, const TriggerEvent & triggerEvent ) const
|
65 |
{
|
66 |
return triggerMatchCandidates( objectRef, triggerEvent.triggerObjectMatchResult( labelMatcher ), event, triggerEvent );
|
67 |
}
|