CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/DQM/DTMonitorModule/src/DTScalerInfoTask.cc

Go to the documentation of this file.
00001 /*
00002  * \file DTScalerInfoTask.cc
00003  * 
00004  * $Date: 2011/10/19 10:05:54 $
00005  * $Revision: 1.1 $
00006  * \author C. Battilana - CIEMAT
00007  *
00008 */
00009 
00010 #include "DQM/DTMonitorModule/src/DTScalerInfoTask.h"
00011 
00012 // Framework
00013 #include "FWCore/Framework/interface/EventSetup.h"
00014 
00015 // DT DQM
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   //retrieve the luminosity
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 }