Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include <iostream>
00011 #include <fstream>
00012
00013 #include "FWCore/ServiceRegistry/interface/Service.h"
00014 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00015
00016 #include "DQMServices/Core/interface/MonitorElement.h"
00017
00018 #include "DQMServices/Core/interface/DQMStore.h"
00019
00020 #include "DataFormats/EcalDetId/interface/EBDetId.h"
00021 #include "DataFormats/EcalDigi/interface/EBDataFrame.h"
00022 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"
00023
00024 #include "DQM/EcalCommon/interface/Numbers.h"
00025
00026 #include "DQM/EcalBarrelMonitorTasks/interface/EBPedestalOnlineTask.h"
00027
00028 EBPedestalOnlineTask::EBPedestalOnlineTask(const edm::ParameterSet& ps){
00029
00030 init_ = false;
00031
00032 dqmStore_ = edm::Service<DQMStore>().operator->();
00033
00034 prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");
00035
00036 enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
00037
00038 mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false);
00039
00040 EBDigiCollection_ = ps.getParameter<edm::InputTag>("EBDigiCollection");
00041
00042 for (int i = 0; i < 36; i++) {
00043 mePedMapG12_[i] = 0;
00044 }
00045
00046 }
00047
00048 EBPedestalOnlineTask::~EBPedestalOnlineTask(){
00049
00050 }
00051
00052 void EBPedestalOnlineTask::beginJob(void){
00053
00054 ievt_ = 0;
00055
00056 if ( dqmStore_ ) {
00057 dqmStore_->setCurrentFolder(prefixME_ + "/EBPedestalOnlineTask");
00058 dqmStore_->rmdir(prefixME_ + "/EBPedestalOnlineTask");
00059 }
00060
00061 }
00062
00063 void EBPedestalOnlineTask::beginRun(const edm::Run& r, const edm::EventSetup& c) {
00064
00065 Numbers::initGeometry(c, false);
00066
00067 if ( ! mergeRuns_ ) this->reset();
00068
00069 }
00070
00071 void EBPedestalOnlineTask::endRun(const edm::Run& r, const edm::EventSetup& c) {
00072
00073 }
00074
00075 void EBPedestalOnlineTask::reset(void) {
00076
00077 for (int i = 0; i < 36; i++) {
00078 if ( mePedMapG12_[i] ) mePedMapG12_[i]->Reset();
00079 }
00080
00081 }
00082
00083 void EBPedestalOnlineTask::setup(void){
00084
00085 init_ = true;
00086
00087 std::string name;
00088
00089 if ( dqmStore_ ) {
00090 dqmStore_->setCurrentFolder(prefixME_ + "/EBPedestalOnlineTask");
00091
00092 dqmStore_->setCurrentFolder(prefixME_ + "/EBPedestalOnlineTask/Gain12");
00093 for (int i = 0; i < 36; i++) {
00094 name = "EBPOT pedestal " + Numbers::sEB(i+1) + " G12";
00095 mePedMapG12_[i] = dqmStore_->bookProfile2D(name, name, 85, 0., 85., 20, 0., 20., 4096, 0., 4096., "s");
00096 mePedMapG12_[i]->setAxisTitle("ieta", 1);
00097 mePedMapG12_[i]->setAxisTitle("iphi", 2);
00098 dqmStore_->tag(mePedMapG12_[i], i+1);
00099 }
00100
00101 }
00102
00103 }
00104
00105 void EBPedestalOnlineTask::cleanup(void){
00106
00107 if ( ! init_ ) return;
00108
00109 if ( dqmStore_ ) {
00110 dqmStore_->setCurrentFolder(prefixME_ + "/EBPedestalOnlineTask");
00111
00112 dqmStore_->setCurrentFolder(prefixME_ + "/EBPedestalOnlineTask/Gain12");
00113 for ( int i = 0; i < 36; i++ ) {
00114 if ( mePedMapG12_[i] ) dqmStore_->removeElement( mePedMapG12_[i]->getName() );
00115 mePedMapG12_[i] = 0;
00116 }
00117
00118 }
00119
00120 init_ = false;
00121
00122 }
00123
00124 void EBPedestalOnlineTask::endJob(void){
00125
00126 edm::LogInfo("EBPedestalOnlineTask") << "analyzed " << ievt_ << " events";
00127
00128 if ( enableCleanup_ ) this->cleanup();
00129
00130 }
00131
00132 void EBPedestalOnlineTask::analyze(const edm::Event& e, const edm::EventSetup& c){
00133
00134 if ( ! init_ ) this->setup();
00135
00136 ievt_++;
00137
00138 edm::Handle<EBDigiCollection> digis;
00139
00140 if ( e.getByLabel(EBDigiCollection_, digis) ) {
00141
00142 int nebd = digis->size();
00143 LogDebug("EBPedestalOnlineTask") << "event " << ievt_ << " digi collection size " << nebd;
00144
00145 for ( EBDigiCollection::const_iterator digiItr = digis->begin(); digiItr != digis->end(); ++digiItr ) {
00146
00147 EBDetId id = digiItr->id();
00148
00149 int ic = id.ic();
00150 int ie = (ic-1)/20 + 1;
00151 int ip = (ic-1)%20 + 1;
00152
00153 int ism = Numbers::iSM( id );
00154
00155 float xie = ie - 0.5;
00156 float xip = ip - 0.5;
00157
00158 EBDataFrame dataframe = (*digiItr);
00159
00160 for (int i = 0; i < 3; i++) {
00161
00162 int adc = dataframe.sample(i).adc();
00163
00164 MonitorElement* mePedMap = 0;
00165
00166 if ( dataframe.sample(i).gainId() == 1 ) mePedMap = mePedMapG12_[ism-1];
00167 if ( dataframe.sample(i).gainId() == 2 ) mePedMap = 0;
00168 if ( dataframe.sample(i).gainId() == 3 ) mePedMap = 0;
00169
00170 float xval = float(adc);
00171
00172 if ( mePedMap ) mePedMap->Fill(xie, xip, xval);
00173
00174 }
00175
00176 }
00177
00178 } else {
00179
00180 edm::LogWarning("EBPedestalOnlineTask") << EBDigiCollection_ << " not available";
00181
00182 }
00183
00184 }
00185