CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/HLTrigger/HLTcore/interface/HLTConfigProvider.h

Go to the documentation of this file.
00001 #ifndef HLTcore_HLTConfigProvider_h
00002 #define HLTcore_HLTConfigProvider_h
00003 
00016 #include "FWCore/Framework/interface/Run.h"
00017 #include "FWCore/Framework/interface/Event.h"
00018 #include "FWCore/Framework/interface/LuminosityBlock.h"
00019 
00020 #include "L1Trigger/GlobalTriggerAnalyzer/interface/L1GtUtils.h"
00021 #include "HLTrigger/HLTcore/interface/HLTConfigData.h"
00022 
00023 #include "boost/shared_ptr.hpp"
00024 
00025 #include<map>
00026 #include<string>
00027 #include<vector>
00028 
00029 
00030 //
00031 // class declaration
00032 //
00033 
00034 class HLTConfigProvider {
00035 
00036  public:
00038   HLTConfigProvider();
00039   
00040  public:
00044   bool init(const edm::Run& iRun, const edm::EventSetup& iSetup,
00045             const std::string& processName, bool& changed);
00046 
00048   void dump(const std::string& what) const {
00049     hltConfigData_->dump(what);
00050   }
00051 
00053 
00055   const std::string& processName() const {
00056     return hltConfigData_->processName();
00057   }
00059   bool inited() const {
00060     return inited_;
00061   }
00063   bool changed() const {
00064     return changed_;
00065   }
00066 
00068   unsigned int size() const {
00069     return hltConfigData_->size();
00070   }
00072   unsigned int size(unsigned int trigger) const {
00073     return hltConfigData_->size(trigger);
00074   }
00075   unsigned int size(const std::string& trigger) const {
00076     return hltConfigData_->size(trigger);
00077   }
00078 
00080   const std::string& tableName() const {
00081     return hltConfigData_->tableName();
00082   }
00083 
00085   const std::vector<std::string>& triggerNames() const {
00086     return hltConfigData_->triggerNames();
00087   }
00088   const std::string& triggerName(unsigned int triggerIndex) const {
00089     return hltConfigData_->triggerName(triggerIndex);
00090   }
00091 
00093   unsigned int triggerIndex(const std::string& triggerName) const {
00094     return hltConfigData_->triggerIndex(triggerName);
00095   }
00096 
00098   const std::vector<std::string>& moduleLabels(unsigned int trigger) const {
00099     return hltConfigData_->moduleLabels(trigger);
00100   }
00101   const std::vector<std::string>& moduleLabels(const std::string& trigger) const {
00102     return hltConfigData_->moduleLabels(trigger);
00103   }
00104   const std::vector<std::string>& saveTagsModules(unsigned int trigger) const {
00105     return hltConfigData_->saveTagsModules(trigger);
00106   }
00107   const std::vector<std::string>& saveTagsModules(const std::string& trigger) const {
00108     return hltConfigData_->saveTagsModules(trigger);
00109   }
00110   const std::string& moduleLabel(unsigned int trigger, unsigned int module) const {
00111     return hltConfigData_->moduleLabel(trigger,module);
00112   }
00113   const std::string& moduleLabel(const std::string& trigger, unsigned int module) const {
00114     return hltConfigData_->moduleLabel(trigger,module);
00115   }
00116 
00118   unsigned int moduleIndex(unsigned int trigger, const std::string& module) const {
00119     return hltConfigData_->moduleIndex(trigger,module);
00120   }
00121   unsigned int moduleIndex(const std::string& trigger, const std::string& module) const {
00122     return hltConfigData_->moduleIndex(trigger,module);
00123   }
00124 
00126   const std::string moduleType(const std::string& module) const {
00127     return hltConfigData_->moduleType(module);
00128   }
00129 
00131   const std::string moduleEDMType(const std::string& module) const {
00132     return hltConfigData_->moduleEDMType(module);
00133   }
00134 
00136   const edm::ParameterSet& processPSet() const {
00137     return hltConfigData_->processPSet();
00138   }
00139 
00141   const edm::ParameterSet& modulePSet(const std::string& module) const {
00142     return hltConfigData_->modulePSet(module);
00143   }
00144 
00146   bool saveTags(const std::string& module) const {
00147     return hltConfigData_->saveTags(module);
00148   }
00149 
00150 
00153   const std::vector<std::vector<std::pair<bool,std::string> > >& hltL1GTSeeds() const {
00154     return hltConfigData_->hltL1GTSeeds();
00155   }
00157   const std::vector<std::pair<bool,std::string> >& hltL1GTSeeds(const std::string& trigger) const {
00158     return hltConfigData_->hltL1GTSeeds(trigger);
00159   }
00161   const std::vector<std::pair<bool,std::string> >& hltL1GTSeeds(unsigned int trigger) const {
00162     return hltConfigData_->hltL1GTSeeds(trigger);
00163   }
00164 
00165 
00168   const std::vector<std::string>& streamNames() const {
00169     return hltConfigData_->streamNames();
00170   }
00172   const std::string& streamName(unsigned int stream) const {
00173     return hltConfigData_->streamName(stream);
00174   }
00176   unsigned int streamIndex(const std::string& stream) const {
00177     return hltConfigData_->streamIndex(stream);
00178   }
00180   const std::vector<std::vector<std::string> >& streamContents() const {
00181     return hltConfigData_->streamContents();
00182   }
00184   const std::vector<std::string>& streamContent(unsigned int stream) const {
00185     return hltConfigData_->streamContent(stream);
00186   }
00188   const std::vector<std::string>& streamContent(const std::string& stream) const {
00189     return hltConfigData_->streamContent(stream);
00190   }
00191 
00192 
00195   const std::vector<std::string>& datasetNames() const {
00196     return hltConfigData_->datasetNames();
00197   }
00199   const std::string& datasetName(unsigned int dataset) const {
00200     return hltConfigData_->datasetName(dataset);
00201   }
00203   unsigned int datasetIndex(const std::string& dataset) const {
00204     return hltConfigData_->datasetIndex(dataset);
00205   }
00207   const std::vector<std::vector<std::string> >& datasetContents() const {
00208     return hltConfigData_->datasetContents();
00209   }
00211   const std::vector<std::string>& datasetContent(unsigned int dataset) const {
00212     return hltConfigData_->datasetContent(dataset);
00213   }
00215   const std::vector<std::string>& datasetContent(const std::string& dataset) const {
00216     return hltConfigData_->datasetContent(dataset);
00217   }
00218 
00219 
00222   unsigned int prescaleSize() const {
00223     return hltConfigData_->prescaleSize();
00224   }
00226   unsigned int prescaleValue(unsigned int set, const std::string& trigger) const {
00227     return hltConfigData_->prescaleValue(set,trigger);
00228   }
00229 
00232   int prescaleSet(const edm::Event& iEvent, const edm::EventSetup& iSetup) const;
00233   // negative == error
00234   
00236   unsigned int prescaleValue(const edm::Event& iEvent, const edm::EventSetup& iSetup, const std::string& trigger) const;
00237   
00239   std::pair<int,int> prescaleValues(const edm::Event& iEvent, const edm::EventSetup& iSetup, const std::string& trigger) const;
00240   // any one negative => error in retrieving this (L1T or HLT) prescale
00241 
00242 
00244   const std::vector<std::string>& prescaleLabels() const {
00245     return hltConfigData_->prescaleLabels();
00246   }
00247   const std::map<std::string,std::vector<unsigned int> >& prescaleTable() const {
00248     return hltConfigData_->prescaleTable();
00249   }
00250 
00252   static const std::vector<std::string> matched(const std::vector<std::string>& inputs, const std::string& pattern);
00253   static const std::string removeVersion(const std::string& trigger);
00254   static const std::vector<std::string> restoreVersion(const std::vector<std::string>& inputs, const std::string& trigger);
00255 
00256  private:
00257 
00258   void getDataFrom(const edm::ParameterSetID& iID);
00259   void init(const edm::ProcessHistory& iHistory, const std::string& processName);
00260   void init(const std::string& processName);
00261   void clear();
00262   
00264   std::string processName_;
00265   bool inited_;
00266   bool changed_;
00267   const HLTConfigData* hltConfigData_;
00268   boost::shared_ptr<L1GtUtils> l1GtUtils_;
00269   
00270 };
00271 #endif