File indexing completed on 2024-09-07 04:35:56
0001 #ifndef DataFormats_PatCandidates_TriggerFilter_h
0002 #define DataFormats_PatCandidates_TriggerFilter_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #include <string>
0022 #include <vector>
0023
0024 #include "FWCore/Utilities/interface/InputTag.h"
0025 #include "DataFormats/Common/interface/Ref.h"
0026 #include "DataFormats/Common/interface/RefProd.h"
0027 #include "DataFormats/Common/interface/RefVector.h"
0028 #include "DataFormats/Common/interface/RefVectorIterator.h"
0029 #include "DataFormats/HLTReco/interface/TriggerTypeDefs.h"
0030
0031 namespace pat {
0032
0033 class TriggerFilter {
0034
0035
0036
0037 std::string label_;
0038
0039 std::string type_;
0040
0041
0042 std::vector<unsigned> objectKeys_;
0043
0044
0045
0046 std::vector<trigger::TriggerObjectType> triggerObjectTypes_;
0047
0048 int status_;
0049
0050
0051 bool saveTags_;
0052
0053 public:
0054
0055
0056
0057 TriggerFilter();
0058
0059 TriggerFilter(const std::string& label, int status = -1, bool saveTags = false);
0060
0061 TriggerFilter(const edm::InputTag& tag, int status = -1, bool saveTags = false);
0062
0063
0064 virtual ~TriggerFilter() {}
0065
0066
0067
0068
0069 void setLabel(const std::string& label) { label_ = label; };
0070
0071 void setType(const std::string& type) { type_ = type; };
0072
0073 void addObjectKey(unsigned objectKey) {
0074 if (!hasObjectKey(objectKey))
0075 objectKeys_.push_back(objectKey);
0076 };
0077
0078 void addTriggerObjectType(trigger::TriggerObjectType triggerObjectType) {
0079 if (!hasTriggerObjectType(triggerObjectType))
0080 triggerObjectTypes_.push_back(triggerObjectType);
0081 };
0082 void addTriggerObjectType(int triggerObjectType) {
0083 addTriggerObjectType(trigger::TriggerObjectType(triggerObjectType));
0084 };
0085 void addObjectId(trigger::TriggerObjectType triggerObjectType) {
0086 addTriggerObjectType(triggerObjectType);
0087 };
0088 void addObjectId(int triggerObjectType) {
0089 addTriggerObjectType(trigger::TriggerObjectType(triggerObjectType));
0090 };
0091
0092
0093 bool setStatus(int status);
0094
0095 void setSaveTags(bool saveTags) { saveTags_ = saveTags; };
0096
0097 const std::string& label() const { return label_; };
0098
0099 const std::string& type() const { return type_; };
0100
0101 const std::vector<unsigned>& objectKeys() const { return objectKeys_; };
0102
0103
0104
0105 std::vector<int> triggerObjectTypes() const;
0106 std::vector<int> objectIds() const { return triggerObjectTypes(); };
0107
0108 int status() const { return status_; };
0109
0110 bool saveTags() const { return saveTags_; };
0111 bool isL3() const { return saveTags(); };
0112 bool isFiring() const { return (saveTags() && status() == 1); };
0113
0114 bool hasObjectKey(unsigned objectKey) const;
0115
0116 bool hasTriggerObjectType(trigger::TriggerObjectType triggerObjectType) const;
0117 bool hasTriggerObjectType(int triggerObjectType) const {
0118 return hasTriggerObjectType(trigger::TriggerObjectType(triggerObjectType));
0119 };
0120 bool hasObjectId(trigger::TriggerObjectType triggerObjectType) const {
0121 return hasTriggerObjectType(triggerObjectType);
0122 };
0123 bool hasObjectId(int triggerObjectType) const {
0124 return hasTriggerObjectType(trigger::TriggerObjectType(triggerObjectType));
0125 };
0126 };
0127
0128
0129 typedef std::vector<TriggerFilter> TriggerFilterCollection;
0130
0131 typedef edm::Ref<TriggerFilterCollection> TriggerFilterRef;
0132
0133 typedef edm::RefProd<TriggerFilterCollection> TriggerFilterRefProd;
0134
0135 typedef edm::RefVector<TriggerFilterCollection> TriggerFilterRefVector;
0136
0137 typedef edm::RefVectorIterator<TriggerFilterCollection> TriggerFilterRefVectorIterator;
0138
0139 }
0140
0141 #endif