Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "DQM/DTMonitorModule/src/DTScalerInfoTask.h"
00011
00012
00013 #include "FWCore/Framework/interface/EventSetup.h"
00014
00015
00016 #include "DQM/DTMonitorModule/interface/DTTimeEvolutionHisto.h"
00017
00018 #include "DataFormats/Luminosity/interface/LumiDetails.h"
00019 #include "DataFormats/Scalers/interface/LumiScalers.h"
00020
00021 #include <sstream>
00022 #include <iostream>
00023 #include <fstream>
00024
00025 using namespace edm;
00026 using namespace std;
00027
00028 DTScalerInfoTask::DTScalerInfoTask(const edm::ParameterSet& ps) :
00029 nEvents(0) {
00030
00031 LogTrace("DTDQM|DTMonitorModule|DTScalerInfoTask")
00032 << "[DTScalerInfoTask]: Constructor"<<endl;
00033
00034 theScalerTag = ps.getUntrackedParameter<InputTag>("inputTagScaler");
00035 theParams = ps;
00036 theDQMStore = edm::Service<DQMStore>().operator->();
00037
00038 }
00039
00040
00041 DTScalerInfoTask::~DTScalerInfoTask() {
00042
00043 LogTrace("DTDQM|DTMonitorModule|DTScalerInfoTask")
00044 << "[DTScalerInfoTask]: analyzed " << nEvents << " events" << endl;
00045
00046 }
00047
00048
00049 void DTScalerInfoTask::beginJob() {
00050
00051 LogTrace("DTDQM|DTMonitorModule|DTScalerInfoTask")
00052 << "[DTScalerInfoTask]: BeginJob" << endl;
00053
00054 }
00055
00056
00057 void DTScalerInfoTask::beginRun(const edm::Run& run, const edm::EventSetup& context) {
00058
00059 LogTrace("DTDQM|DTMonitorModule|DTScalerInfoTask")
00060 << "[DTScalerInfoTask]: BeginRun" << endl;
00061
00062 bookHistos();
00063
00064 }
00065
00066
00067 void DTScalerInfoTask::beginLuminosityBlock(const LuminosityBlock& lumiSeg, const EventSetup& context) {
00068
00069 nEventsInLS=0;
00070
00071 LogTrace("DTDQM|DTMonitorModule|DTScalerInfoTask")
00072 << "[DTScalerInfoTask]: Begin of LS transition" << endl;
00073
00074 }
00075
00076 void DTScalerInfoTask::endLuminosityBlock(const LuminosityBlock& lumiSeg, const EventSetup& context) {
00077
00078 LogTrace("DTDQM|DTMonitorModule|DTScalerInfoTask")
00079 << "[DTScalerInfoTask]: End of LS transition" << endl;
00080
00081
00082 int block = lumiSeg.luminosityBlock();
00083
00084 map<string,DTTimeEvolutionHisto* >::const_iterator histoIt = trendHistos.begin();
00085 map<string,DTTimeEvolutionHisto* >::const_iterator histoEnd = trendHistos.end();
00086 for(;histoIt!=histoEnd;++histoIt) {
00087 histoIt->second->updateTimeSlot(block, nEventsInLS);
00088 }
00089
00090 }
00091
00092
00093 void DTScalerInfoTask::endJob() {
00094
00095 LogVerbatim("DTDQM|DTMonitorModule|DTScalerInfoTask")
00096 << "[DTScalerInfoTask]: analyzed " << nEvents << " events" << endl;
00097
00098 }
00099
00100
00101 void DTScalerInfoTask::analyze(const edm::Event& e, const edm::EventSetup& c){
00102
00103 nEvents++;
00104 nEventsInLS++;
00105 nEventMonitor->Fill(nEvents);
00106
00107
00108 edm::Handle<LumiScalersCollection> lumiScalers;
00109 e.getByLabel(theScalerTag, lumiScalers);
00110 LumiScalersCollection::const_iterator lumiIt = lumiScalers->begin();
00111 trendHistos["AvgLumivsLumiSec"]->accumulateValueTimeSlot(lumiIt->instantLumi());
00112
00113 }
00114
00115
00116 void DTScalerInfoTask::bookHistos() {
00117
00118 theDQMStore->setCurrentFolder("DT/EventInfo/Counters");
00119 nEventMonitor = theDQMStore->bookFloat("nProcessedEventsScalerInfo");
00120
00121 theDQMStore->setCurrentFolder("DT/00-DataIntegrity/ScalerInfo");
00122
00123 string histoName = "AvgLumivsLumiSec";
00124 string histoTitle = "Average Lumi vs LumiSec";
00125 trendHistos[histoName] = new DTTimeEvolutionHisto(theDQMStore,histoName,histoTitle,200,10,true,0);
00126
00127 }