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
0097 DEFINE_FWK_MODULE(ESDcsInfoTask);