1 |
dgele |
1.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 |
|
|
}
|