Go to the documentation of this file.00001
00002
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <memory>
00023
00024
00025 #include "FWCore/Framework/interface/Frameworkfwd.h"
00026 #include "FWCore/Framework/interface/EDFilter.h"
00027
00028 #include "FWCore/Framework/interface/Event.h"
00029 #include "FWCore/Framework/interface/MakerMacros.h"
00030
00031 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00032
00033 #include "FWCore/ServiceRegistry/interface/Service.h"
00034
00035 #include "DQMServices/Core/interface/DQMStore.h"
00036 #include "DQMServices/Core/interface/MonitorElement.h"
00037
00038
00039
00040
00041
00042 class StatisticsFilter : public edm::EDFilter {
00043 public:
00044 explicit StatisticsFilter(const edm::ParameterSet&);
00045 ~StatisticsFilter();
00046
00047 private:
00048 virtual void beginJob() ;
00049 virtual bool filter(edm::Event&, const edm::EventSetup&);
00050 virtual void endJob() ;
00051
00052
00053
00054 DQMStore* dqmStore_;
00055
00056 std::string filename, dirpath;
00057 int TotNumberOfEvents;
00058 int MinNumberOfEvents;
00059
00060 };
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073 StatisticsFilter::StatisticsFilter(const edm::ParameterSet& iConfig) : filename(iConfig.getUntrackedParameter<std::string>("rootFilename","")),
00074 dirpath(iConfig.getUntrackedParameter<std::string>("histoDirPath","")),
00075 MinNumberOfEvents(iConfig.getUntrackedParameter<int>("minNumberOfEvents"))
00076 {
00077
00078
00079 dqmStore_ = edm::Service<DQMStore>().operator->();
00080 dqmStore_->open(filename.c_str(), false);
00081 }
00082
00083
00084 StatisticsFilter::~StatisticsFilter()
00085 {
00086
00087
00088
00089
00090 }
00091
00092
00093
00094
00095
00096
00097
00098 bool
00099 StatisticsFilter::filter(edm::Event& iEvent, const edm::EventSetup& iSetup)
00100 {
00101 TotNumberOfEvents = 0;
00102
00103 std::vector<MonitorElement*> MEs = dqmStore_->getAllContents(dirpath);
00104
00105 std::vector<MonitorElement*>::const_iterator iter=MEs.begin();
00106 std::vector<MonitorElement*>::const_iterator iterEnd=MEs.end();
00107
00108 for (; iter!=iterEnd;++iter)
00109 {
00110 std::string me_name = (*iter)->getName();
00111
00112 if ( strstr(me_name.c_str(),"TotalNumberOfCluster__T")!=NULL && strstr(me_name.c_str(),"Profile")==NULL )
00113 {
00114 TotNumberOfEvents = ((TH1F*)(*iter)->getTH1F())->GetEntries();
00115
00116 break;
00117 }
00118 }
00119
00120 if ( TotNumberOfEvents<MinNumberOfEvents )
00121 {
00122 edm::LogInfo("StatisticsFilter") << "Only " << TotNumberOfEvents << " events in the run. Run will not be analyzed!";
00123
00124 return false;
00125 }
00126
00127 return true;
00128 }
00129
00130
00131 void
00132 StatisticsFilter::beginJob()
00133 {
00134 }
00135
00136
00137 void
00138 StatisticsFilter::endJob() {
00139 }
00140
00141
00142 DEFINE_FWK_MODULE(StatisticsFilter);