Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 10:54:39

0001 #include <iostream>
0002 
0003 #include "FWCore/ServiceRegistry/interface/Service.h"
0004 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0005 
0006 #include "FWCore/Framework/interface/Event.h"
0007 #include "FWCore/Framework/interface/MakerMacros.h"
0008 
0009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0010 
0011 #include "DQMServices/Core/interface/DQMStore.h"
0012 
0013 #include "DQM/EcalPreshowerMonitorModule/interface/ESDcsInfoTask.h"
0014 
0015 using namespace cms;
0016 using namespace edm;
0017 using namespace std;
0018 
0019 ESDcsInfoTask::ESDcsInfoTask(const ParameterSet& ps) {
0020   usesResource("DQMStore");
0021   dqmStore_ = Service<DQMStore>().operator->();
0022 
0023   prefixME_ = ps.getUntrackedParameter<string>("prefixME", "");
0024 
0025   mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false);
0026 
0027   dcsStatustoken_ = consumes<DcsStatusCollection>(ps.getParameter<InputTag>("DcsStatusLabel"));
0028 
0029   meESDcsFraction_ = nullptr;
0030   meESDcsActiveMap_ = nullptr;
0031 }
0032 
0033 ESDcsInfoTask::~ESDcsInfoTask() {}
0034 
0035 void ESDcsInfoTask::beginJob(void) {
0036   char histo[200];
0037 
0038   if (dqmStore_) {
0039     dqmStore_->setCurrentFolder(prefixME_ + "/EventInfo");
0040 
0041     sprintf(histo, "DCSSummary");
0042     meESDcsFraction_ = dqmStore_->bookFloat(histo);
0043     meESDcsFraction_->Fill(-1.0);
0044 
0045     sprintf(histo, "DCSSummaryMap");
0046     meESDcsActiveMap_ = dqmStore_->book1D(histo, histo, 2, 0., 2.);
0047     meESDcsActiveMap_->setAxisTitle("(ES+/ES-)", 1);
0048   }
0049 }
0050 
0051 void ESDcsInfoTask::endJob(void) {}
0052 
0053 void ESDcsInfoTask::beginLuminosityBlock(const edm::LuminosityBlock& lumiBlock, const edm::EventSetup& iSetup) {
0054   this->reset();
0055 
0056   for (int i = 0; i < 2; i++) {
0057     meESDcsActiveMap_->setBinContent(i + 1, -1.0);
0058   }
0059 }
0060 
0061 void ESDcsInfoTask::endLuminosityBlock(const edm::LuminosityBlock&, const edm::EventSetup&) {}
0062 
0063 void ESDcsInfoTask::reset(void) {
0064   if (meESDcsFraction_)
0065     meESDcsFraction_->Reset();
0066 
0067   if (meESDcsActiveMap_)
0068     meESDcsActiveMap_->Reset();
0069 }
0070 
0071 void ESDcsInfoTask::analyze(const Event& e, const EventSetup& c) {
0072   ievt_++;
0073 
0074   float ESpDcsStatus = 0;
0075   float ESmDcsStatus = 0;
0076 
0077   Handle<DcsStatusCollection> dcsStatus;
0078   e.getByToken(dcsStatustoken_, dcsStatus);
0079   if (dcsStatus.isValid()) {
0080     for (DcsStatusCollection::const_iterator dcsStatusItr = dcsStatus->begin(); dcsStatusItr != dcsStatus->end();
0081          ++dcsStatusItr) {
0082       ESpDcsStatus = dcsStatusItr->ready(DcsStatus::ESp);
0083       ESmDcsStatus = dcsStatusItr->ready(DcsStatus::ESm);
0084     }
0085 
0086     ESpDcsStatus = (ESpDcsStatus + float(ievt_ - 1) * meESDcsActiveMap_->getBinContent(1)) / float(ievt_);
0087     ESmDcsStatus = (ESmDcsStatus + float(ievt_ - 1) * meESDcsActiveMap_->getBinContent(2)) / float(ievt_);
0088   }
0089 
0090   meESDcsActiveMap_->setBinContent(1, ESpDcsStatus);
0091   meESDcsActiveMap_->setBinContent(2, ESmDcsStatus);
0092 
0093   meESDcsFraction_->Fill((ESpDcsStatus + ESmDcsStatus) / 2.);
0094 }
0095 
0096 //define this as a plug-in
0097 DEFINE_FWK_MODULE(ESDcsInfoTask);