ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/DGele/PhysicsTools/PatAlgos/plugins/PATTriggerMatchSelector.h
Revision: 1.2
Committed: Tue Oct 20 17:42:59 2009 UTC (15 years, 6 months ago) by dgele
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +2 -2 lines
State: FILE REMOVED
Error occurred while calculating annotation data.
Log Message:
remove

File Contents

# Content
1 #ifndef PhysicsTools_PatAlgos_PATTriggerMatchSelector_h
2 #define PhysicsTools_PatAlgos_PATTriggerMatchSelector_h
3
4
5 // -*- C++ -*-
6 //
7 // Package: PatAlgos
8 // Class: PATTriggerMatchSelector
9 //
10 /**
11 \class pat::PATTriggerMatchSelector PATTriggerMatchSelector.h "PhysicsTools/PatAlgos/plugins/PATTriggerMatchSelector.h"
12 \brief
13
14 .
15
16 \author Volker Adler
17 \version $Id: PATTriggerMatchSelector.h,v 1.1 2009/10/20 17:15:14 dgele Exp $
18 */
19 //
20 // $Id: PATTriggerMatchSelector.h,v 1.1 2009/10/20 17:15:14 dgele Exp $
21 //
22
23
24 #include <string>
25 #include <vector>
26 #include <map>
27
28 #include "FWCore/ParameterSet/interface/ParameterSet.h"
29
30 #include "DataFormats/HLTReco/interface/TriggerTypeDefs.h"
31 /* */
32 #include <iostream>
33 /* */
34
35
36 namespace pat {
37
38 template< typename T1, typename T2 >
39 class PATTriggerMatchSelector {
40
41 bool andOr_; // AND used if 'false', OR otherwise
42 std::vector< unsigned > filterIds_; // special filter related ID as defined in enum 'TriggerObjectType' in DataFormats/HLTReco/interface/TriggerTypeDefs.h
43 std::vector< std::string > filterIdsEnum_; // special filter related ID as defined in enum 'TriggerObjectType' in DataFormats/HLTReco/interface/TriggerTypeDefs.h
44 std::vector< std::string > filterLabels_;
45 std::vector< std::string > pathNames_;
46 std::vector< std::string > collectionTags_; // needs full tag strings (as from edm::InputTag::encode()), not only labels
47
48 public:
49
50 PATTriggerMatchSelector( const edm::ParameterSet & iConfig ) :
51 andOr_( iConfig.getParameter< bool >( "andOr" ) ),
52 filterIds_( iConfig.getParameter< std::vector< unsigned > >( "filterIds" ) ),
53 filterIdsEnum_( iConfig.getParameter< std::vector< std::string > >( "filterIdsEnum" ) ),
54 filterLabels_( iConfig.getParameter< std::vector< std::string > >( "filterLabels" ) ),
55 pathNames_( iConfig.getParameter< std::vector< std::string > >( "pathNames" ) ),
56 collectionTags_( iConfig.getParameter< std::vector< std::string > >( "collectionTags" ) )
57 {
58 }
59
60 bool operator()( const T1 & patObj, const T2 & trigObj ) const {
61 std::map< std::string, trigger::TriggerObjectType > filterIdsEnumMap;
62 filterIdsEnumMap.insert( std::make_pair( "TriggerL1Mu" , trigger::TriggerL1Mu ) );
63 filterIdsEnumMap.insert( std::make_pair( "TriggerL1NoIsoEG" , trigger::TriggerL1NoIsoEG ) );
64 filterIdsEnumMap.insert( std::make_pair( "TriggerL1IsoEG" , trigger::TriggerL1IsoEG ) );
65 filterIdsEnumMap.insert( std::make_pair( "TriggerL1CenJet" , trigger::TriggerL1CenJet ) );
66 filterIdsEnumMap.insert( std::make_pair( "TriggerL1ForJet" , trigger::TriggerL1ForJet ) );
67 filterIdsEnumMap.insert( std::make_pair( "TriggerL1TauJet" , trigger::TriggerL1TauJet ) );
68 filterIdsEnumMap.insert( std::make_pair( "TriggerL1ETM" , trigger::TriggerL1ETM ) );
69 filterIdsEnumMap.insert( std::make_pair( "TriggerL1ETT" , trigger::TriggerL1ETT ) );
70 filterIdsEnumMap.insert( std::make_pair( "TriggerL1HTT" , trigger::TriggerL1HTT ) );
71 filterIdsEnumMap.insert( std::make_pair( "TriggerL1JetCounts", trigger::TriggerL1JetCounts ) );
72 filterIdsEnumMap.insert( std::make_pair( "TriggerPhoton" , trigger::TriggerPhoton ) );
73 filterIdsEnumMap.insert( std::make_pair( "TriggerElectron" , trigger::TriggerElectron ) );
74 filterIdsEnumMap.insert( std::make_pair( "TriggerMuon" , trigger::TriggerMuon ) );
75 filterIdsEnumMap.insert( std::make_pair( "TriggerTau" , trigger::TriggerTau ) );
76 filterIdsEnumMap.insert( std::make_pair( "TriggerJet" , trigger::TriggerJet ) );
77 filterIdsEnumMap.insert( std::make_pair( "TriggerBJet" , trigger::TriggerBJet ) );
78 filterIdsEnumMap.insert( std::make_pair( "TriggerMET" , trigger::TriggerMET ) );
79 filterIdsEnumMap.insert( std::make_pair( "TriggerHT" , trigger::TriggerHT ) );
80 filterIdsEnumMap.insert( std::make_pair( "TriggerTrack" , trigger::TriggerTrack ) );
81 filterIdsEnumMap.insert( std::make_pair( "TriggerCluster" , trigger::TriggerCluster ) );
82 filterIdsEnumMap.insert( std::make_pair( "TriggerMETSig" , trigger::TriggerMETSig ) );
83 filterIdsEnumMap.insert( std::make_pair( "TriggerELongit" , trigger::TriggerELongit ) );
84 if ( andOr_ ) { // OR
85 for ( size_t i = 0; i < filterIds_.size(); ++i ) {
86 if ( filterIds_.at( i ) == 0 || trigObj.hasFilterId( filterIds_.at( i ) ) ) return true;
87 }
88 for ( size_t j = 0; j < filterLabels_.size(); ++j ) {
89 if ( filterLabels_.at( j ) == "*" || filterLabels_.at( j ) == "@" || trigObj.hasFilterLabel( filterLabels_.at( j ) ) ) return true;
90 }
91 for ( size_t k = 0; k < pathNames_.size(); ++k ) {
92 if ( pathNames_.at( k ) == "*" || pathNames_.at( k ) == "@" || trigObj.hasPathName( pathNames_.at( k ) ) ) return true;
93 }
94 for ( size_t l = 0; l < collectionTags_.size(); ++l ) {
95 if ( collectionTags_.at( l ) == "*" || collectionTags_.at( l ) == "@" || collectionTags_.at( l ) == trigObj.collection() ) return true;
96 }
97 for ( size_t m = 0; m < filterIdsEnum_.size(); ++m ) {
98 if ( filterIdsEnum_.at( m ) == "*" || filterIdsEnum_.at( m ) == "@" ) return true;
99 std::map< std::string, trigger::TriggerObjectType >::const_iterator iter( filterIdsEnumMap.find( filterIdsEnum_.at( m ) ) );
100 if ( iter != filterIdsEnumMap.end() && trigObj.hasFilterId( iter->second ) ) return true;
101 }
102 return false;
103 } else { // AND
104 for ( size_t i = 0; i < filterIds_.size(); ++i ) {
105 if ( filterIds_.at( i ) == 0 || trigObj.hasFilterId( filterIds_.at( i ) ) ) {
106 for ( size_t j = 0; j < filterLabels_.size(); ++j ) {
107 if ( filterLabels_.at( j ) == "*" || filterLabels_.at( j ) == "@" || trigObj.hasFilterLabel( filterLabels_.at( j ) ) ) {
108 for ( size_t k = 0; k < pathNames_.size(); ++k ) {
109 if ( pathNames_.at( k ) == "*" || pathNames_.at( k ) == "@" || trigObj.hasPathName( pathNames_.at( k ) ) ) {
110 for ( size_t l = 0; l < collectionTags_.size(); ++l ) {
111 if ( collectionTags_.at( l ) == "*" || collectionTags_.at( l ) == "@" || collectionTags_.at( l ) == trigObj.collection() ) {
112 for ( size_t m = 0; m < filterIdsEnum_.size(); ++m ) {
113 if ( filterIdsEnum_.at( m ) == "*" || filterIdsEnum_.at( m ) == "@" ) return true;
114 std::map< std::string, trigger::TriggerObjectType >::const_iterator iter( filterIdsEnumMap.find( filterIdsEnum_.at( m ) ) );
115 if ( iter != filterIdsEnumMap.end() && trigObj.hasFilterId( iter->second ) ) return true;
116 }
117 }
118 }
119 }
120 }
121 }
122 }
123 }
124 }
125 return false;
126 }
127 return false;
128 }
129
130 };
131
132 }
133
134
135 #endif