Go to the documentation of this file.00001
00003
00004 #ifndef EventFilter_StorageManager_TriggerSelector_h
00005 #define EventFilter_StorageManager_TriggerSelector_h
00006
00007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00008 #include "DataFormats/Common/interface/HLTPathStatus.h"
00009 #include "DataFormats/Common/interface/TriggerResults.h"
00010 #include "DataFormats/Provenance/interface/ParameterSetID.h"
00011 #include "FWCore/Framework/interface/EventSelector.h"
00012
00013 #include "boost/shared_ptr.hpp"
00014
00015 #include <vector>
00016 #include <string>
00017
00018 namespace stor
00019 {
00020
00029 class TriggerSelector
00030 {
00031 public:
00032
00033 typedef std::vector<std::string> Strings;
00034
00038 TriggerSelector(Strings const& pathspecs,
00039 Strings const& names);
00040
00045 TriggerSelector(edm::ParameterSet const& pset,
00046 Strings const& triggernames, bool old_ = false);
00047
00051 TriggerSelector(std::string const& expression, Strings const& triggernames);
00052
00053 ~TriggerSelector() {};
00054
00058 bool wantAll() const {
00059
00060 return acceptAll_;
00061 }
00062
00066 bool acceptEvent(edm::TriggerResults const&) const;
00067
00068
00069
00070
00071
00072 bool acceptEvent(unsigned char const*, int) const;
00073
00074
00075
00076
00077 bool returnStatus(edm::HLTGlobalStatus const& trStatus) const {
00078 return masterElement_->returnStatus(trStatus);
00079 }
00080
00081
00082
00083
00084 static std::string makeXMLString(std::string const& input);
00085
00086
00087
00088
00089 static std::vector<std::string>
00090 getEventSelectionVString(edm::ParameterSet const& pset);
00091
00092 private:
00093
00094 bool acceptAll_;
00095
00096
00097
00098
00099 void init(std::string const& path, Strings const& triggernames);
00100
00101
00102
00103
00104 static std::string trim(std::string input);
00105
00106
00107
00108
00109 class TreeElement {
00110
00111 enum TreeOperator {
00112 NonInit = 0,
00113 AND = 1,
00114 OR = 2,
00115 NOT = 3,
00116 BR = 4
00117 };
00118
00119 public:
00120
00121
00122
00123
00124 TreeElement(std::string const& inputString,Strings const& tr,TreeElement* parentElement = NULL);
00125 ~TreeElement();
00126
00127
00128
00129
00130 bool returnStatus(edm::HLTGlobalStatus const& trStatus) const;
00131
00132
00133
00134
00135 TreeOperator op() const {return op_;}
00136
00137
00138
00139
00140 TreeElement * parent() const {return parent_;}
00141
00142 private:
00143
00144 TreeElement * parent_;
00145 std::vector<TreeElement*> children_;
00146 TreeOperator op_;
00147 int trigBit_;
00148 };
00149
00150 boost::shared_ptr<TreeElement> masterElement_;
00151
00152
00153 std::string expression_;
00154
00155 boost::shared_ptr<edm::EventSelector> eventSelector_;
00156 bool useOld_;
00157
00158 static const bool debug_ = false;
00159
00160 };
00161
00162 typedef boost::shared_ptr<TriggerSelector> TriggerSelectorPtr;
00163
00164 }
00165
00166 #endif // EventFilter_StorageManager_TriggerSelector_h
00167
00168