CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_1/src/DQM/EcalPreshowerMonitorModule/src/ESDcsInfoTask.cc

Go to the documentation of this file.
00001 #include <iostream>
00002 
00003 #include "FWCore/ServiceRegistry/interface/Service.h"
00004 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00005 
00006 #include "FWCore/Framework/interface/Event.h"
00007 #include "FWCore/Framework/interface/MakerMacros.h"
00008 
00009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00010 
00011 #include "DQMServices/Core/interface/MonitorElement.h"
00012 #include "DQMServices/Core/interface/DQMStore.h"
00013 
00014 #include "DataFormats/Scalers/interface/DcsStatus.h"
00015 
00016 #include "DQM/EcalPreshowerMonitorModule/interface/ESDcsInfoTask.h"
00017 
00018 using namespace cms;
00019 using namespace edm;
00020 using namespace std;
00021 
00022 ESDcsInfoTask::ESDcsInfoTask(const ParameterSet& ps) {
00023 
00024    dqmStore_ = Service<DQMStore>().operator->();
00025 
00026    prefixME_ = ps.getUntrackedParameter<string>("prefixME", "");
00027 
00028    enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
00029 
00030    mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false);
00031 
00032    dcsStatuslabel_      = ps.getParameter<InputTag>("DcsStatusLabel");
00033 
00034    meESDcsFraction_ = 0;
00035    meESDcsActiveMap_ = 0;
00036 
00037 }
00038 
00039 ESDcsInfoTask::~ESDcsInfoTask() {
00040 
00041 }
00042 
00043 void ESDcsInfoTask::beginJob(void){
00044 
00045    char histo[200];
00046 
00047    if ( dqmStore_ ) {
00048 
00049       dqmStore_->setCurrentFolder(prefixME_ + "/EventInfo");
00050 
00051       sprintf(histo, "DCSSummary");
00052       meESDcsFraction_ = dqmStore_->bookFloat(histo);
00053       meESDcsFraction_->Fill(-1.0);
00054 
00055       sprintf(histo, "DCSSummaryMap");
00056       meESDcsActiveMap_ = dqmStore_->book1D(histo,histo, 2, 0., 2.);
00057       meESDcsActiveMap_->setAxisTitle("(ES+/ES-)", 1);
00058 
00059 
00060    }
00061 
00062 }
00063 
00064 void ESDcsInfoTask::endJob(void) {
00065 
00066    if ( enableCleanup_ ) this->cleanup();
00067 
00068 }
00069 
00070 void ESDcsInfoTask::beginLuminosityBlock(const edm::LuminosityBlock& lumiBlock, const  edm::EventSetup& iSetup){
00071 
00072    this->reset();
00073 
00074    for( int i = 0; i < 2; i++) {
00075       meESDcsActiveMap_->setBinContent(i+1 , -1.0);
00076    }        
00077 
00078 }
00079 
00080 void ESDcsInfoTask::endLuminosityBlock(const edm::LuminosityBlock&  lumiBlock, const  edm::EventSetup& iSetup) {
00081 
00082 }
00083 
00084 void ESDcsInfoTask::reset(void) {
00085 
00086    if ( meESDcsFraction_ ) meESDcsFraction_->Reset();
00087 
00088    if ( meESDcsActiveMap_ ) meESDcsActiveMap_->Reset();
00089 
00090 }
00091 
00092 
00093 void ESDcsInfoTask::cleanup(void){
00094 
00095    if ( dqmStore_ ) {
00096 
00097       dqmStore_->setCurrentFolder(prefixME_ + "/EventInfo");
00098 
00099       if ( meESDcsFraction_ ) dqmStore_->removeElement( meESDcsFraction_->getName() );
00100 
00101       if ( meESDcsActiveMap_ ) dqmStore_->removeElement( meESDcsActiveMap_->getName() );
00102 
00103    }
00104 
00105 }
00106 
00107 void ESDcsInfoTask::analyze(const Event& e, const EventSetup& c){ 
00108 
00109    ievt_++;
00110 
00111    float ESpDcsStatus = 0;
00112    float ESmDcsStatus = 0;
00113 
00114    Handle<DcsStatusCollection> dcsStatus;
00115    e.getByLabel(dcsStatuslabel_, dcsStatus);
00116    if (dcsStatus.isValid()) {
00117      for (DcsStatusCollection::const_iterator dcsStatusItr = dcsStatus->begin(); dcsStatusItr != dcsStatus->end(); ++dcsStatusItr) {
00118        ESpDcsStatus = dcsStatusItr->ready(DcsStatus::ESp);
00119        ESmDcsStatus = dcsStatusItr->ready(DcsStatus::ESm);
00120      }
00121 
00122      ESpDcsStatus = (ESpDcsStatus + float(ievt_-1)*meESDcsActiveMap_->getBinContent(1))/float(ievt_);   
00123      ESmDcsStatus = (ESmDcsStatus + float(ievt_-1)*meESDcsActiveMap_->getBinContent(2))/float(ievt_);
00124    }
00125 
00126    meESDcsActiveMap_->setBinContent(1, ESpDcsStatus);   
00127    meESDcsActiveMap_->setBinContent(2, ESmDcsStatus);
00128 
00129    meESDcsFraction_->Fill( (ESpDcsStatus + ESmDcsStatus)/2. );
00130 
00131 }
00132 
00133 //define this as a plug-in
00134 DEFINE_FWK_MODULE(ESDcsInfoTask);