00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include <iostream>
00012 #include <fstream>
00013 #include <vector>
00014
00015 #include "FWCore/ServiceRegistry/interface/Service.h"
00016 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00017 #include "FWCore/Framework/interface/ESHandle.h"
00018
00019 #include "DQMServices/Core/interface/MonitorElement.h"
00020
00021 #include "DQMServices/Core/interface/DQMStore.h"
00022
00023 #include "DataFormats/EcalRawData/interface/EcalRawDataCollections.h"
00024 #include "DataFormats/EcalDetId/interface/EEDetId.h"
00025 #include "DataFormats/EcalDigi/interface/EEDataFrame.h"
00026 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"
00027 #include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHit.h"
00028 #include "DataFormats/EcalRecHit/interface/EcalRecHit.h"
00029 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
00030
00031 #include "CondFormats/EcalObjects/interface/EcalChannelStatus.h"
00032 #include "CondFormats/DataRecord/interface/EcalChannelStatusRcd.h"
00033 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgo.h"
00034
00035 #include "DQM/EcalCommon/interface/Numbers.h"
00036
00037 #include "DQM/EcalEndcapMonitorTasks/interface/EEOccupancyTask.h"
00038
00039 EEOccupancyTask::EEOccupancyTask(const edm::ParameterSet& ps){
00040
00041 init_ = false;
00042
00043 initCaloGeometry_ = false;
00044
00045 dqmStore_ = edm::Service<DQMStore>().operator->();
00046
00047 prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");
00048
00049 enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
00050
00051 mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false);
00052
00053 EcalRawDataCollection_ = ps.getParameter<edm::InputTag>("EcalRawDataCollection");
00054 EEDigiCollection_ = ps.getParameter<edm::InputTag>("EEDigiCollection");
00055 EcalPnDiodeDigiCollection_ = ps.getParameter<edm::InputTag>("EcalPnDiodeDigiCollection");
00056 EcalRecHitCollection_ = ps.getParameter<edm::InputTag>("EcalRecHitCollection");
00057 EcalTrigPrimDigiCollection_ = ps.getParameter<edm::InputTag>("EcalTrigPrimDigiCollection");
00058
00059 for (int i = 0; i < 18; i++) {
00060 meOccupancy_[i] = 0;
00061 meOccupancyMem_[i] = 0;
00062 meEERecHitEnergy_[i] = 0;
00063 meSpectrum_[i] = 0;
00064 }
00065
00066 meEERecHitSpectrum_[0] = 0;
00067 meEERecHitSpectrum_[1] = 0;
00068
00069 meEEDigiOccupancy_[0] = 0;
00070 meEEDigiOccupancyProEta_[0] = 0;
00071 meEEDigiOccupancyProPhi_[0] = 0;
00072 meEEDigiOccupancy_[1] = 0;
00073 meEEDigiOccupancyProEta_[1] = 0;
00074 meEEDigiOccupancyProPhi_[1] = 0;
00075
00076 meEERecHitOccupancy_[0] = 0;
00077 meEERecHitOccupancyProEta_[0] = 0;
00078 meEERecHitOccupancyProPhi_[0] = 0;
00079 meEERecHitOccupancy_[1] = 0;
00080 meEERecHitOccupancyProEta_[1] = 0;
00081 meEERecHitOccupancyProPhi_[1] = 0;
00082
00083 meEERecHitOccupancyThr_[0] = 0;
00084 meEERecHitOccupancyProEtaThr_[0] = 0;
00085 meEERecHitOccupancyProPhiThr_[0] = 0;
00086 meEERecHitOccupancyThr_[1] = 0;
00087 meEERecHitOccupancyProEtaThr_[1] = 0;
00088 meEERecHitOccupancyProPhiThr_[1] = 0;
00089
00090 meEETrigPrimDigiOccupancy_[0] = 0;
00091 meEETrigPrimDigiOccupancyProEta_[0] = 0;
00092 meEETrigPrimDigiOccupancyProPhi_[0] = 0;
00093 meEETrigPrimDigiOccupancy_[1] = 0;
00094 meEETrigPrimDigiOccupancyProEta_[1] = 0;
00095 meEETrigPrimDigiOccupancyProPhi_[1] = 0;
00096
00097 meEETrigPrimDigiOccupancyThr_[0] = 0;
00098 meEETrigPrimDigiOccupancyProEtaThr_[0] = 0;
00099 meEETrigPrimDigiOccupancyProPhiThr_[0] = 0;
00100 meEETrigPrimDigiOccupancyThr_[1] = 0;
00101 meEETrigPrimDigiOccupancyProEtaThr_[1] = 0;
00102 meEETrigPrimDigiOccupancyProPhiThr_[1] = 0;
00103
00104 meEETestPulseDigiOccupancy_[0] = 0;
00105 meEETestPulseDigiOccupancy_[1] = 0;
00106
00107 meEELaserDigiOccupancy_[0] = 0;
00108 meEELaserDigiOccupancy_[1] = 0;
00109
00110 meEELedDigiOccupancy_[0] = 0;
00111 meEELedDigiOccupancy_[1] = 0;
00112
00113 meEEPedestalDigiOccupancy_[0] = 0;
00114 meEEPedestalDigiOccupancy_[1] = 0;
00115
00116 recHitEnergyMin_ = 0.500;
00117 trigPrimEtMin_ = 4.;
00118
00119 for (int i = 0; i < EEDetId::kSizeForDenseIndexing; i++) {
00120 geometryEE[i][0] = 0;
00121 geometryEE[i][1] = 0;
00122 }
00123
00124 }
00125
00126 EEOccupancyTask::~EEOccupancyTask(){
00127
00128 }
00129
00130 void EEOccupancyTask::beginJob(void){
00131
00132 ievt_ = 0;
00133
00134 if ( dqmStore_ ) {
00135 dqmStore_->setCurrentFolder(prefixME_ + "/EEOccupancyTask");
00136 dqmStore_->rmdir(prefixME_ + "/EEOccupancyTask");
00137 }
00138
00139 }
00140
00141 void EEOccupancyTask::beginRun(const edm::Run& r, const edm::EventSetup& c) {
00142
00143 Numbers::initGeometry(c, false);
00144
00145 if( !initCaloGeometry_ ) {
00146 c.get<CaloGeometryRecord>().get(pGeometry_);
00147 initCaloGeometry_ = true;
00148 }
00149
00150 if ( ! mergeRuns_ ) this->reset();
00151
00152 }
00153
00154 void EEOccupancyTask::endRun(const edm::Run& r, const edm::EventSetup& c) {
00155
00156 }
00157
00158 void EEOccupancyTask::reset(void) {
00159
00160 for (int i = 0; i < 18; i++) {
00161 if ( meOccupancy_[i] ) meOccupancy_[i]->Reset();
00162 if ( meOccupancyMem_[i] ) meOccupancyMem_[i]->Reset();
00163 if ( meEERecHitEnergy_[i] ) meEERecHitEnergy_[i]->Reset();
00164 if ( meSpectrum_[i] ) meSpectrum_[i]->Reset();
00165 }
00166
00167 if ( meEERecHitSpectrum_[0] ) meEERecHitSpectrum_[0]->Reset();
00168 if ( meEERecHitSpectrum_[1] ) meEERecHitSpectrum_[1]->Reset();
00169
00170 if ( meEEDigiOccupancy_[0] ) meEEDigiOccupancy_[0]->Reset();
00171 if ( meEEDigiOccupancyProEta_[0] ) meEEDigiOccupancyProEta_[0]->Reset();
00172 if ( meEEDigiOccupancyProPhi_[0] ) meEEDigiOccupancyProPhi_[0]->Reset();
00173 if ( meEEDigiOccupancy_[1] ) meEEDigiOccupancy_[1]->Reset();
00174 if ( meEEDigiOccupancyProEta_[1] ) meEEDigiOccupancyProEta_[1]->Reset();
00175 if ( meEEDigiOccupancyProPhi_[1] ) meEEDigiOccupancyProPhi_[1]->Reset();
00176
00177 if ( meEERecHitOccupancy_[0] ) meEERecHitOccupancy_[0]->Reset();
00178 if ( meEERecHitOccupancyProEta_[0] ) meEERecHitOccupancyProEta_[0]->Reset();
00179 if ( meEERecHitOccupancyProPhi_[0] ) meEERecHitOccupancyProPhi_[0]->Reset();
00180 if ( meEERecHitOccupancy_[1] ) meEERecHitOccupancy_[1]->Reset();
00181 if ( meEERecHitOccupancyProEta_[1] ) meEERecHitOccupancyProEta_[1]->Reset();
00182 if ( meEERecHitOccupancyProPhi_[1] ) meEERecHitOccupancyProPhi_[1]->Reset();
00183
00184 if ( meEERecHitOccupancyThr_[0] ) meEERecHitOccupancyThr_[0]->Reset();
00185 if ( meEERecHitOccupancyProEtaThr_[0] ) meEERecHitOccupancyProEtaThr_[0]->Reset();
00186 if ( meEERecHitOccupancyProPhiThr_[0] ) meEERecHitOccupancyProPhiThr_[0]->Reset();
00187 if ( meEERecHitOccupancyThr_[1] ) meEERecHitOccupancyThr_[1]->Reset();
00188 if ( meEERecHitOccupancyProEtaThr_[1] ) meEERecHitOccupancyProEtaThr_[1]->Reset();
00189 if ( meEERecHitOccupancyProPhiThr_[1] ) meEERecHitOccupancyProPhiThr_[1]->Reset();
00190
00191 if ( meEETrigPrimDigiOccupancy_[0] ) meEETrigPrimDigiOccupancy_[0]->Reset();
00192 if ( meEETrigPrimDigiOccupancyProEta_[0] ) meEETrigPrimDigiOccupancyProEta_[0]->Reset();
00193 if ( meEETrigPrimDigiOccupancyProPhi_[0] ) meEETrigPrimDigiOccupancyProPhi_[0]->Reset();
00194 if ( meEETrigPrimDigiOccupancy_[1] ) meEETrigPrimDigiOccupancy_[1]->Reset();
00195 if ( meEETrigPrimDigiOccupancyProEta_[1] ) meEETrigPrimDigiOccupancyProEta_[1]->Reset();
00196 if ( meEETrigPrimDigiOccupancyProPhi_[1] ) meEETrigPrimDigiOccupancyProPhi_[1]->Reset();
00197
00198 if ( meEETrigPrimDigiOccupancyThr_[0] ) meEETrigPrimDigiOccupancyThr_[0]->Reset();
00199 if ( meEETrigPrimDigiOccupancyProEtaThr_[0] ) meEETrigPrimDigiOccupancyProEtaThr_[0]->Reset();
00200 if ( meEETrigPrimDigiOccupancyProPhiThr_[0] ) meEETrigPrimDigiOccupancyProPhiThr_[0]->Reset();
00201 if ( meEETrigPrimDigiOccupancyThr_[1] ) meEETrigPrimDigiOccupancyThr_[1]->Reset();
00202 if ( meEETrigPrimDigiOccupancyProEtaThr_[1] ) meEETrigPrimDigiOccupancyProEtaThr_[1]->Reset();
00203 if ( meEETrigPrimDigiOccupancyProPhiThr_[1] ) meEETrigPrimDigiOccupancyProPhiThr_[1]->Reset();
00204
00205 if ( meEETestPulseDigiOccupancy_[0] ) meEETestPulseDigiOccupancy_[0]->Reset();
00206 if ( meEETestPulseDigiOccupancy_[1] ) meEETestPulseDigiOccupancy_[1]->Reset();
00207
00208 if ( meEELaserDigiOccupancy_[0] ) meEELaserDigiOccupancy_[0]->Reset();
00209 if ( meEELaserDigiOccupancy_[1] ) meEELaserDigiOccupancy_[1]->Reset();
00210
00211 if ( meEELedDigiOccupancy_[0] ) meEELedDigiOccupancy_[0]->Reset();
00212 if ( meEELedDigiOccupancy_[1] ) meEELedDigiOccupancy_[1]->Reset();
00213
00214 if ( meEEPedestalDigiOccupancy_[0] ) meEEPedestalDigiOccupancy_[0]->Reset();
00215 if ( meEEPedestalDigiOccupancy_[1] ) meEEPedestalDigiOccupancy_[1]->Reset();
00216
00217 }
00218
00219 void EEOccupancyTask::setup(void){
00220
00221 init_ = true;
00222
00223 char histo[200];
00224
00225 if ( dqmStore_ ) {
00226 dqmStore_->setCurrentFolder(prefixME_ + "/EEOccupancyTask");
00227
00228 for (int i = 0; i < 18; i++) {
00229 sprintf(histo, "EEOT digi occupancy %s", Numbers::sEE(i+1).c_str());
00230 meOccupancy_[i] = dqmStore_->book2D(histo, histo, 50, Numbers::ix0EE(i+1)+0., Numbers::ix0EE(i+1)+50., 50, Numbers::iy0EE(i+1)+0., Numbers::iy0EE(i+1)+50.);
00231 meOccupancy_[i]->setAxisTitle("ix", 1);
00232 if ( i+1 >= 1 && i+1 <= 9 ) meOccupancy_[i]->setAxisTitle("101-ix", 1);
00233 meOccupancy_[i]->setAxisTitle("iy", 2);
00234 dqmStore_->tag(meOccupancy_[i], i+1);
00235
00236 sprintf(histo, "EEOT MEM digi occupancy %s", Numbers::sEE(i+1).c_str());
00237 meOccupancyMem_[i] = dqmStore_->book2D(histo, histo, 10, 0., 10., 5, 0., 5.);
00238 meOccupancyMem_[i]->setAxisTitle("pseudo-strip", 1);
00239 meOccupancyMem_[i]->setAxisTitle("channel", 2);
00240 dqmStore_->tag(meOccupancyMem_[i], i+1);
00241
00242 sprintf(histo, "EEOT rec hit energy %s", Numbers::sEE(i+1).c_str());
00243 meEERecHitEnergy_[i] = dqmStore_->bookProfile2D(histo, histo, 50, Numbers::ix0EE(i+1)+0., Numbers::ix0EE(i+1)+50., 50, Numbers::iy0EE(i+1)+0., Numbers::iy0EE(i+1)+50., 4096, 0., 4096., "s");
00244 meEERecHitEnergy_[i]->setAxisTitle("ix", 1);
00245 if ( i+1 >= 1 && i+1 <= 9 ) meEERecHitEnergy_[i]->setAxisTitle("101-ix", 1);
00246 meEERecHitEnergy_[i]->setAxisTitle("iy", 2);
00247 meEERecHitEnergy_[i]->setAxisTitle("energy (GeV)", 3);
00248 dqmStore_->tag(meEERecHitEnergy_[i], i+1);
00249
00250 sprintf(histo, "EEOT energy spectrum %s", Numbers::sEE(i+1).c_str());
00251 meSpectrum_[i] = dqmStore_->book1D(histo, histo, 100, 0., 1.5);
00252 meSpectrum_[i]->setAxisTitle("energy (GeV)", 1);
00253 dqmStore_->tag(meSpectrum_[i], i+1);
00254 }
00255
00256 sprintf(histo, "EEOT rec hit spectrum EE -");
00257 meEERecHitSpectrum_[0] = dqmStore_->book1D(histo, histo, 100, 0., 10.);
00258 meEERecHitSpectrum_[0]->setAxisTitle("energy (GeV)", 1);
00259
00260 sprintf(histo, "EEOT rec hit spectrum EE +");
00261 meEERecHitSpectrum_[1] = dqmStore_->book1D(histo, histo, 100, 0., 10.);
00262 meEERecHitSpectrum_[1]->setAxisTitle("energy (GeV)", 1);
00263
00264 sprintf(histo, "EEOT digi occupancy EE -");
00265 meEEDigiOccupancy_[0] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00266 meEEDigiOccupancy_[0]->setAxisTitle("jx", 1);
00267 meEEDigiOccupancy_[0]->setAxisTitle("jy", 2);
00268 sprintf(histo, "EEOT digi occupancy EE - projection eta");
00269 meEEDigiOccupancyProEta_[0] = dqmStore_->book1DD(histo, histo, 22, -3.0, -1.479);
00270 meEEDigiOccupancyProEta_[0]->setAxisTitle("eta", 1);
00271 meEEDigiOccupancyProEta_[0]->setAxisTitle("number of digis", 2);
00272 sprintf(histo, "EEOT digi occupancy EE - projection phi");
00273 meEEDigiOccupancyProPhi_[0] = dqmStore_->book1DD(histo, histo, 50, -M_PI, M_PI);
00274 meEEDigiOccupancyProPhi_[0]->setAxisTitle("phi", 1);
00275 meEEDigiOccupancyProPhi_[0]->setAxisTitle("number of digis", 2);
00276
00277 sprintf(histo, "EEOT digi occupancy EE +");
00278 meEEDigiOccupancy_[1] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00279 meEEDigiOccupancy_[1]->setAxisTitle("jx", 1);
00280 meEEDigiOccupancy_[1]->setAxisTitle("jy", 2);
00281 sprintf(histo, "EEOT digi occupancy EE + projection eta");
00282 meEEDigiOccupancyProEta_[1] = dqmStore_->book1DD(histo, histo, 22, 1.479, 3.0);
00283 meEEDigiOccupancyProEta_[1]->setAxisTitle("eta", 1);
00284 meEEDigiOccupancyProEta_[1]->setAxisTitle("number of digis", 2);
00285 sprintf(histo, "EEOT digi occupancy EE + projection phi");
00286 meEEDigiOccupancyProPhi_[1] = dqmStore_->book1DD(histo, histo, 50, -M_PI, M_PI);
00287 meEEDigiOccupancyProPhi_[1]->setAxisTitle("phi", 1);
00288 meEEDigiOccupancyProPhi_[1]->setAxisTitle("number of digis", 2);
00289
00290 sprintf(histo, "EEOT rec hit occupancy EE -");
00291 meEERecHitOccupancy_[0] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00292 meEERecHitOccupancy_[0]->setAxisTitle("jx", 1);
00293 meEERecHitOccupancy_[0]->setAxisTitle("jy", 2);
00294 sprintf(histo, "EEOT rec hit occupancy EE - projection eta");
00295 meEERecHitOccupancyProEta_[0] = dqmStore_->book1DD(histo, histo, 22, -3.0, -1.479);
00296 meEERecHitOccupancyProEta_[0]->setAxisTitle("eta", 1);
00297 meEERecHitOccupancyProEta_[0]->setAxisTitle("number of hits", 2);
00298 sprintf(histo, "EEOT rec hit occupancy EE - projection phi");
00299 meEERecHitOccupancyProPhi_[0] = dqmStore_->book1DD(histo, histo, 50, -M_PI, M_PI);
00300 meEERecHitOccupancyProPhi_[0]->setAxisTitle("phi", 1);
00301 meEERecHitOccupancyProPhi_[0]->setAxisTitle("number of hits", 2);
00302
00303 sprintf(histo, "EEOT rec hit occupancy EE +");
00304 meEERecHitOccupancy_[1] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00305 meEERecHitOccupancy_[1]->setAxisTitle("jx", 1);
00306 meEERecHitOccupancy_[1]->setAxisTitle("jy", 2);
00307 sprintf(histo, "EEOT rec hit occupancy EE + projection eta");
00308 meEERecHitOccupancyProEta_[1] = dqmStore_->book1DD(histo, histo, 22, 1.479, 3.0);
00309 meEERecHitOccupancyProEta_[1]->setAxisTitle("eta", 1);
00310 meEERecHitOccupancyProEta_[1]->setAxisTitle("number of hits", 2);
00311 sprintf(histo, "EEOT rec hit occupancy EE + projection phi");
00312 meEERecHitOccupancyProPhi_[1] = dqmStore_->book1DD(histo, histo, 50, -M_PI, M_PI);
00313 meEERecHitOccupancyProPhi_[1]->setAxisTitle("phi", 1);
00314 meEERecHitOccupancyProPhi_[1]->setAxisTitle("number of hits", 2);
00315
00316 sprintf(histo, "EEOT rec hit thr occupancy EE -");
00317 meEERecHitOccupancyThr_[0] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00318 meEERecHitOccupancyThr_[0]->setAxisTitle("jx", 1);
00319 meEERecHitOccupancyThr_[0]->setAxisTitle("jy", 2);
00320 sprintf(histo, "EEOT rec hit thr occupancy EE - projection eta");
00321 meEERecHitOccupancyProEtaThr_[0] = dqmStore_->book1DD(histo, histo, 22, -3.0, -1.479);
00322 meEERecHitOccupancyProEtaThr_[0]->setAxisTitle("eta", 1);
00323 meEERecHitOccupancyProEtaThr_[0]->setAxisTitle("number of hits", 2);
00324 sprintf(histo, "EEOT rec hit thr occupancy EE - projection phi");
00325 meEERecHitOccupancyProPhiThr_[0] = dqmStore_->book1DD(histo, histo, 50, -M_PI, M_PI);
00326 meEERecHitOccupancyProPhiThr_[0]->setAxisTitle("phi", 1);
00327 meEERecHitOccupancyProPhiThr_[0]->setAxisTitle("number of hits", 2);
00328
00329 sprintf(histo, "EEOT rec hit thr occupancy EE +");
00330 meEERecHitOccupancyThr_[1] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00331 meEERecHitOccupancyThr_[1]->setAxisTitle("jx", 1);
00332 meEERecHitOccupancyThr_[1]->setAxisTitle("jy", 2);
00333 sprintf(histo, "EEOT rec hit thr occupancy EE + projection eta");
00334 meEERecHitOccupancyProEtaThr_[1] = dqmStore_->book1DD(histo, histo, 22, 1.479, 3.0);
00335 meEERecHitOccupancyProEtaThr_[1]->setAxisTitle("eta", 1);
00336 meEERecHitOccupancyProEtaThr_[1]->setAxisTitle("number of hits", 2);
00337 sprintf(histo, "EEOT rec hit thr occupancy EE + projection phi");
00338 meEERecHitOccupancyProPhiThr_[1] = dqmStore_->book1DD(histo, histo, 50, -M_PI, M_PI);
00339 meEERecHitOccupancyProPhiThr_[1]->setAxisTitle("phi", 1);
00340 meEERecHitOccupancyProPhiThr_[1]->setAxisTitle("number of hits", 2);
00341
00342 sprintf(histo, "EEOT TP digi occupancy EE -");
00343 meEETrigPrimDigiOccupancy_[0] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00344 meEETrigPrimDigiOccupancy_[0]->setAxisTitle("jx", 1);
00345 meEETrigPrimDigiOccupancy_[0]->setAxisTitle("jy", 2);
00346 sprintf(histo, "EEOT TP digi occupancy EE - projection eta");
00347 meEETrigPrimDigiOccupancyProEta_[0] = dqmStore_->book1DD(histo, histo, 22, -3.0, -1.479);
00348 meEETrigPrimDigiOccupancyProEta_[0]->setAxisTitle("eta", 1);
00349 meEETrigPrimDigiOccupancyProEta_[0]->setAxisTitle("number of TP digis", 2);
00350 sprintf(histo, "EEOT TP digi occupancy EE - projection phi");
00351 meEETrigPrimDigiOccupancyProPhi_[0] = dqmStore_->book1DD(histo, histo, 50, -M_PI, M_PI);
00352 meEETrigPrimDigiOccupancyProPhi_[0]->setAxisTitle("phi", 1);
00353 meEETrigPrimDigiOccupancyProPhi_[0]->setAxisTitle("number of TP digis", 2);
00354
00355 sprintf(histo, "EEOT TP digi occupancy EE +");
00356 meEETrigPrimDigiOccupancy_[1] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00357 meEETrigPrimDigiOccupancy_[1]->setAxisTitle("jx", 1);
00358 meEETrigPrimDigiOccupancy_[1]->setAxisTitle("jy", 2);
00359 sprintf(histo, "EEOT TP digi occupancy EE + projection eta");
00360 meEETrigPrimDigiOccupancyProEta_[1] = dqmStore_->book1DD(histo, histo, 22, 1.479, 3.0);
00361 meEETrigPrimDigiOccupancyProEta_[1]->setAxisTitle("eta", 1);
00362 meEETrigPrimDigiOccupancyProEta_[1]->setAxisTitle("number of TP digis", 2);
00363 sprintf(histo, "EEOT TP digi occupancy EE + projection phi");
00364 meEETrigPrimDigiOccupancyProPhi_[1] = dqmStore_->book1DD(histo, histo, 50, -M_PI, M_PI);
00365 meEETrigPrimDigiOccupancyProPhi_[1]->setAxisTitle("phi", 1);
00366 meEETrigPrimDigiOccupancyProPhi_[1]->setAxisTitle("number of TP digis", 2);
00367
00368 sprintf(histo, "EEOT TP digi thr occupancy EE -");
00369 meEETrigPrimDigiOccupancyThr_[0] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00370 meEETrigPrimDigiOccupancyThr_[0]->setAxisTitle("jx", 1);
00371 meEETrigPrimDigiOccupancyThr_[0]->setAxisTitle("jy", 2);
00372 sprintf(histo, "EEOT TP digi thr occupancy EE - projection eta");
00373 meEETrigPrimDigiOccupancyProEtaThr_[0] = dqmStore_->book1DD(histo, histo, 22, -3.0, -1.479);
00374 meEETrigPrimDigiOccupancyProEtaThr_[0]->setAxisTitle("eta", 1);
00375 meEETrigPrimDigiOccupancyProEtaThr_[0]->setAxisTitle("number of TP digis", 2);
00376 sprintf(histo, "EEOT TP digi thr occupancy EE - projection phi");
00377 meEETrigPrimDigiOccupancyProPhiThr_[0] = dqmStore_->book1DD(histo, histo, 50, -M_PI, M_PI);
00378 meEETrigPrimDigiOccupancyProPhiThr_[0]->setAxisTitle("phi", 1);
00379 meEETrigPrimDigiOccupancyProPhiThr_[0]->setAxisTitle("number of TP digis", 2);
00380
00381 sprintf(histo, "EEOT TP digi thr occupancy EE +");
00382 meEETrigPrimDigiOccupancyThr_[1] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00383 meEETrigPrimDigiOccupancyThr_[1]->setAxisTitle("jx", 1);
00384 meEETrigPrimDigiOccupancyThr_[1]->setAxisTitle("jy", 2);
00385 sprintf(histo, "EEOT TP digi thr occupancy EE + projection eta");
00386 meEETrigPrimDigiOccupancyProEtaThr_[1] = dqmStore_->book1DD(histo, histo, 22, 1.479, 3.0);
00387 meEETrigPrimDigiOccupancyProEtaThr_[1]->setAxisTitle("eta", 1);
00388 meEETrigPrimDigiOccupancyProEtaThr_[1]->setAxisTitle("number of TP digis", 2);
00389 sprintf(histo, "EEOT TP digi thr occupancy EE + projection phi");
00390 meEETrigPrimDigiOccupancyProPhiThr_[1] = dqmStore_->book1DD(histo, histo, 50, -M_PI, M_PI);
00391 meEETrigPrimDigiOccupancyProPhiThr_[1]->setAxisTitle("phi", 1);
00392 meEETrigPrimDigiOccupancyProPhiThr_[1]->setAxisTitle("number of TP digis", 2);
00393
00394 sprintf(histo, "EEOT test pulse digi occupancy EE -");
00395 meEETestPulseDigiOccupancy_[0] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00396 meEETestPulseDigiOccupancy_[0]->setAxisTitle("jx", 1);
00397 meEETestPulseDigiOccupancy_[0]->setAxisTitle("jy", 2);
00398
00399 sprintf(histo, "EEOT test pulse digi occupancy EE +");
00400 meEETestPulseDigiOccupancy_[1] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00401 meEETestPulseDigiOccupancy_[1]->setAxisTitle("jx", 1);
00402 meEETestPulseDigiOccupancy_[1]->setAxisTitle("jy", 2);
00403
00404 sprintf(histo, "EEOT led digi occupancy EE -");
00405 meEELedDigiOccupancy_[0] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00406 meEELedDigiOccupancy_[0]->setAxisTitle("jx", 1);
00407 meEELedDigiOccupancy_[0]->setAxisTitle("jy", 2);
00408
00409 sprintf(histo, "EEOT led digi occupancy EE +");
00410 meEELedDigiOccupancy_[1] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00411 meEELedDigiOccupancy_[1]->setAxisTitle("jx", 1);
00412 meEELedDigiOccupancy_[1]->setAxisTitle("jy", 2);
00413
00414 sprintf(histo, "EEOT laser digi occupancy EE -");
00415 meEELaserDigiOccupancy_[0] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00416 meEELaserDigiOccupancy_[0]->setAxisTitle("jx", 1);
00417 meEELaserDigiOccupancy_[0]->setAxisTitle("jy", 2);
00418
00419 sprintf(histo, "EEOT laser digi occupancy EE +");
00420 meEELaserDigiOccupancy_[1] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00421 meEELaserDigiOccupancy_[1]->setAxisTitle("jx", 1);
00422 meEELaserDigiOccupancy_[1]->setAxisTitle("jy", 2);
00423
00424 sprintf(histo, "EEOT pedestal digi occupancy EE -");
00425 meEEPedestalDigiOccupancy_[0] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00426 meEEPedestalDigiOccupancy_[0]->setAxisTitle("jx", 1);
00427 meEEPedestalDigiOccupancy_[0]->setAxisTitle("jy", 2);
00428
00429 sprintf(histo, "EEOT pedestal digi occupancy EE +");
00430 meEEPedestalDigiOccupancy_[1] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
00431 meEEPedestalDigiOccupancy_[1]->setAxisTitle("jx", 1);
00432 meEEPedestalDigiOccupancy_[1]->setAxisTitle("jy", 2);
00433
00434 }
00435
00436 }
00437
00438 void EEOccupancyTask::cleanup(void){
00439
00440 if ( ! init_ ) return;
00441
00442 if ( dqmStore_ ) {
00443 dqmStore_->setCurrentFolder(prefixME_ + "/EEOccupancyTask");
00444
00445 for (int i = 0; i < 18; i++) {
00446 if ( meOccupancy_[i] ) dqmStore_->removeElement( meOccupancy_[i]->getName() );
00447 meOccupancy_[i] = 0;
00448 if ( meOccupancyMem_[i] ) dqmStore_->removeElement( meOccupancyMem_[i]->getName() );
00449 meOccupancyMem_[i] = 0;
00450 if ( meEERecHitEnergy_[i] ) dqmStore_->removeElement( meEERecHitEnergy_[i]->getName() );
00451 meEERecHitEnergy_[i] = 0;
00452 if ( meSpectrum_[i] ) dqmStore_->removeElement( meSpectrum_[i]->getName() );
00453 meSpectrum_[i] = 0;
00454 }
00455
00456 if ( meEERecHitSpectrum_[0] ) dqmStore_->removeElement( meEERecHitSpectrum_[0]->getName() );
00457 meEERecHitSpectrum_[0] = 0;
00458 if ( meEERecHitSpectrum_[1] ) dqmStore_->removeElement( meEERecHitSpectrum_[1]->getName() );
00459 meEERecHitSpectrum_[1] = 0;
00460
00461 if ( meEEDigiOccupancy_[0] ) dqmStore_->removeElement( meEEDigiOccupancy_[0]->getName() );
00462 meEEDigiOccupancy_[0] = 0;
00463 if ( meEEDigiOccupancyProEta_[0] ) dqmStore_->removeElement( meEEDigiOccupancyProEta_[0]->getName() );
00464 meEEDigiOccupancyProEta_[0] = 0;
00465 if ( meEEDigiOccupancyProPhi_[0] ) dqmStore_->removeElement( meEEDigiOccupancyProPhi_[0]->getName() );
00466 meEEDigiOccupancyProPhi_[0] = 0;
00467
00468 if ( meEEDigiOccupancy_[1] ) dqmStore_->removeElement( meEEDigiOccupancy_[1]->getName() );
00469 meEEDigiOccupancy_[1] = 0;
00470 if ( meEEDigiOccupancyProEta_[1] ) dqmStore_->removeElement( meEEDigiOccupancyProEta_[1]->getName() );
00471 meEEDigiOccupancyProEta_[1] = 0;
00472 if ( meEEDigiOccupancyProPhi_[1] ) dqmStore_->removeElement( meEEDigiOccupancyProPhi_[1]->getName() );
00473 meEEDigiOccupancyProPhi_[1] = 0;
00474
00475 if ( meEERecHitOccupancy_[0] ) dqmStore_->removeElement( meEERecHitOccupancy_[0]->getName() );
00476 meEERecHitOccupancy_[0] = 0;
00477 if ( meEERecHitOccupancyProEta_[0] ) dqmStore_->removeElement( meEERecHitOccupancyProEta_[0]->getName() );
00478 meEERecHitOccupancyProEta_[0] = 0;
00479 if ( meEERecHitOccupancyProPhi_[0] ) dqmStore_->removeElement( meEERecHitOccupancyProPhi_[0]->getName() );
00480 meEERecHitOccupancyProPhi_[0] = 0;
00481
00482 if ( meEERecHitOccupancy_[1] ) dqmStore_->removeElement( meEERecHitOccupancy_[1]->getName() );
00483 meEERecHitOccupancy_[1] = 0;
00484 if ( meEERecHitOccupancyProEta_[1] ) dqmStore_->removeElement( meEERecHitOccupancyProEta_[1]->getName() );
00485 meEERecHitOccupancyProEta_[1] = 0;
00486 if ( meEERecHitOccupancyProPhi_[1] ) dqmStore_->removeElement( meEERecHitOccupancyProPhi_[1]->getName() );
00487 meEERecHitOccupancyProPhi_[1] = 0;
00488
00489 if ( meEERecHitOccupancyThr_[0] ) dqmStore_->removeElement( meEERecHitOccupancyThr_[0]->getName() );
00490 meEERecHitOccupancyThr_[0] = 0;
00491 if ( meEERecHitOccupancyProEtaThr_[0] ) dqmStore_->removeElement( meEERecHitOccupancyProEtaThr_[0]->getName() );
00492 meEERecHitOccupancyProEtaThr_[0] = 0;
00493 if ( meEERecHitOccupancyProPhiThr_[0] ) dqmStore_->removeElement( meEERecHitOccupancyProPhiThr_[0]->getName() );
00494 meEERecHitOccupancyProPhiThr_[0] = 0;
00495
00496 if ( meEERecHitOccupancyThr_[1] ) dqmStore_->removeElement( meEERecHitOccupancyThr_[1]->getName() );
00497 meEERecHitOccupancyThr_[1] = 0;
00498 if ( meEERecHitOccupancyProEtaThr_[1] ) dqmStore_->removeElement( meEERecHitOccupancyProEtaThr_[1]->getName() );
00499 meEERecHitOccupancyProEtaThr_[1] = 0;
00500 if ( meEERecHitOccupancyProPhiThr_[1] ) dqmStore_->removeElement( meEERecHitOccupancyProPhiThr_[1]->getName() );
00501 meEERecHitOccupancyProPhiThr_[1] = 0;
00502
00503 if ( meEETrigPrimDigiOccupancy_[0] ) dqmStore_->removeElement( meEETrigPrimDigiOccupancy_[0]->getName() );
00504 meEETrigPrimDigiOccupancy_[0] = 0;
00505 if ( meEETrigPrimDigiOccupancyProEta_[0] ) dqmStore_->removeElement( meEETrigPrimDigiOccupancyProEta_[0]->getName() );
00506 meEETrigPrimDigiOccupancyProEta_[0] = 0;
00507 if ( meEETrigPrimDigiOccupancyProPhi_[0] ) dqmStore_->removeElement( meEETrigPrimDigiOccupancyProPhi_[0]->getName() );
00508 meEETrigPrimDigiOccupancyProPhi_[0] = 0;
00509
00510 if ( meEETrigPrimDigiOccupancy_[1] ) dqmStore_->removeElement( meEETrigPrimDigiOccupancy_[1]->getName() );
00511 meEETrigPrimDigiOccupancy_[1] = 0;
00512 if ( meEETrigPrimDigiOccupancyProEta_[1] ) dqmStore_->removeElement( meEETrigPrimDigiOccupancyProEta_[1]->getName() );
00513 meEETrigPrimDigiOccupancyProEta_[1] = 0;
00514 if ( meEETrigPrimDigiOccupancyProPhi_[1] ) dqmStore_->removeElement( meEETrigPrimDigiOccupancyProPhi_[1]->getName() );
00515 meEETrigPrimDigiOccupancyProPhi_[1] = 0;
00516
00517 if ( meEETrigPrimDigiOccupancyThr_[0] ) dqmStore_->removeElement( meEETrigPrimDigiOccupancyThr_[0]->getName() );
00518 meEETrigPrimDigiOccupancyThr_[0] = 0;
00519 if ( meEETrigPrimDigiOccupancyProEtaThr_[0] ) dqmStore_->removeElement( meEETrigPrimDigiOccupancyProEtaThr_[0]->getName() );
00520 meEETrigPrimDigiOccupancyProEtaThr_[0] = 0;
00521 if ( meEETrigPrimDigiOccupancyProPhiThr_[0] ) dqmStore_->removeElement( meEETrigPrimDigiOccupancyProPhiThr_[0]->getName() );
00522 meEETrigPrimDigiOccupancyProPhiThr_[0] = 0;
00523
00524 if ( meEETrigPrimDigiOccupancyThr_[1] ) dqmStore_->removeElement( meEETrigPrimDigiOccupancyThr_[1]->getName() );
00525 meEETrigPrimDigiOccupancyThr_[1] = 0;
00526 if ( meEETrigPrimDigiOccupancyProEtaThr_[1] ) dqmStore_->removeElement( meEETrigPrimDigiOccupancyProEtaThr_[1]->getName() );
00527 meEETrigPrimDigiOccupancyProEtaThr_[1] = 0;
00528 if ( meEETrigPrimDigiOccupancyProPhiThr_[1] ) dqmStore_->removeElement( meEETrigPrimDigiOccupancyProPhiThr_[1]->getName() );
00529 meEETrigPrimDigiOccupancyProPhiThr_[1] = 0;
00530
00531 if ( meEETestPulseDigiOccupancy_[0] ) dqmStore_->removeElement( meEETestPulseDigiOccupancy_[0]->getName() );
00532 meEETestPulseDigiOccupancy_[0] = 0;
00533 if ( meEETestPulseDigiOccupancy_[1] ) dqmStore_->removeElement( meEETestPulseDigiOccupancy_[1]->getName() );
00534 meEETestPulseDigiOccupancy_[1] = 0;
00535
00536 if ( meEELaserDigiOccupancy_[0] ) dqmStore_->removeElement( meEELaserDigiOccupancy_[0]->getName() );
00537 meEELaserDigiOccupancy_[0] = 0;
00538 if ( meEELaserDigiOccupancy_[1] ) dqmStore_->removeElement( meEELaserDigiOccupancy_[1]->getName() );
00539 meEELaserDigiOccupancy_[1] = 0;
00540
00541 if ( meEELedDigiOccupancy_[0] ) dqmStore_->removeElement( meEELedDigiOccupancy_[0]->getName() );
00542 meEELedDigiOccupancy_[0] = 0;
00543 if ( meEELedDigiOccupancy_[1] ) dqmStore_->removeElement( meEELedDigiOccupancy_[1]->getName() );
00544 meEELedDigiOccupancy_[1] = 0;
00545
00546 if ( meEEPedestalDigiOccupancy_[0] ) dqmStore_->removeElement( meEEPedestalDigiOccupancy_[0]->getName() );
00547 meEEPedestalDigiOccupancy_[0] = 0;
00548 if ( meEEPedestalDigiOccupancy_[1] ) dqmStore_->removeElement( meEEPedestalDigiOccupancy_[1]->getName() );
00549 meEEPedestalDigiOccupancy_[1] = 0;
00550
00551 }
00552
00553 init_ = false;
00554
00555 }
00556
00557 void EEOccupancyTask::endJob(void) {
00558
00559 edm::LogInfo("EEOccupancyTask") << "analyzed " << ievt_ << " events";
00560
00561 if ( enableCleanup_ ) this->cleanup();
00562
00563 }
00564
00565 void EEOccupancyTask::analyze(const edm::Event& e, const edm::EventSetup& c){
00566
00567 if ( ! init_ ) this->setup();
00568
00569 ievt_++;
00570
00571 int runType[18] = { notdata };
00572
00573 edm::Handle<EcalRawDataCollection> dcchs;
00574
00575 if ( e.getByLabel(EcalRawDataCollection_, dcchs) ) {
00576
00577 for ( EcalRawDataCollection::const_iterator dcchItr = dcchs->begin(); dcchItr != dcchs->end(); ++dcchItr ) {
00578
00579 if ( Numbers::subDet( *dcchItr ) != EcalEndcap ) continue;
00580
00581 int ism = Numbers::iSM( *dcchItr, EcalEndcap );
00582
00583 int runtype = dcchItr->getRunType();
00584
00585 if ( runtype == EcalDCCHeaderBlock::COSMIC ||
00586 runtype == EcalDCCHeaderBlock::MTCC ||
00587 runtype == EcalDCCHeaderBlock::COSMICS_GLOBAL ||
00588 runtype == EcalDCCHeaderBlock::PHYSICS_GLOBAL ||
00589 runtype == EcalDCCHeaderBlock::COSMICS_LOCAL ||
00590 runtype == EcalDCCHeaderBlock::PHYSICS_LOCAL ) runType[ism-1] = physics;
00591 if ( runtype == EcalDCCHeaderBlock::TESTPULSE_MGPA ||
00592 runtype == EcalDCCHeaderBlock::TESTPULSE_GAP ) runType[ism-1] = testpulse;
00593 if ( runtype == EcalDCCHeaderBlock::LASER_STD ||
00594 runtype == EcalDCCHeaderBlock::LASER_GAP ) runType[ism-1] = laser;
00595 if ( runtype == EcalDCCHeaderBlock::LED_STD ||
00596 runtype == EcalDCCHeaderBlock::LED_GAP ) runType[ism-1] = led;
00597 if ( runtype == EcalDCCHeaderBlock::PEDESTAL_STD ||
00598 runtype == EcalDCCHeaderBlock::PEDESTAL_GAP ) runType[ism-1] = pedestal;
00599
00600 }
00601
00602 } else {
00603 edm::LogWarning("EEOccupancyTask") << EcalRawDataCollection_ << " not available";
00604 }
00605
00606 edm::Handle<EEDigiCollection> digis;
00607
00608 if ( e.getByLabel(EEDigiCollection_, digis) ) {
00609
00610 int need = digis->size();
00611 LogDebug("EEOccupancyTask") << "event " << ievt_ << " digi collection size " << need;
00612
00613 for ( EEDigiCollection::const_iterator digiItr = digis->begin(); digiItr != digis->end(); ++digiItr ) {
00614
00615 EEDetId id = digiItr->id();
00616
00617 int ix = id.ix();
00618 int iy = id.iy();
00619
00620 int hi = id.hashedIndex();
00621
00622 if ( geometryEE[hi][0] == 0 ) {
00623 const GlobalPoint& pos = pGeometry_->getGeometry(id)->getPosition();
00624 geometryEE[hi][0] = pos.eta();
00625 geometryEE[hi][1] = pos.phi();
00626 }
00627
00628 float eta = geometryEE[hi][0];
00629 float phi = geometryEE[hi][1];
00630
00631 int ism = Numbers::iSM( id );
00632
00633 if ( ism >= 1 && ism <= 9 ) ix = 101 - ix;
00634
00635 float xix = ix - 0.5;
00636 float xiy = iy - 0.5;
00637
00638 if ( xix <= 0. || xix >= 100. || xiy <= 0. || xiy >= 100. ) {
00639 edm::LogWarning("EEOccupancyTask") << " det id = " << id;
00640 edm::LogWarning("EEOccupancyTask") << " sm, ix, iw " << ism << " " << ix << " " << iy;
00641 edm::LogWarning("EEOccupancyTask") << " xix, xiy " << xix << " " << xiy;
00642 }
00643
00644 if ( meOccupancy_[ism-1] ) meOccupancy_[ism-1]->Fill( xix, xiy );
00645
00646 int eex = id.ix();
00647 int eey = id.iy();
00648
00649 float xeex = eex - 0.5;
00650 float xeey = eey - 0.5;
00651
00652 if ( runType[ism-1] == physics || runType[ism-1] == notdata ) {
00653
00654 if ( ism >=1 && ism <= 9 ) {
00655 if ( meEEDigiOccupancy_[0] ) meEEDigiOccupancy_[0]->Fill( xeex, xeey );
00656 if ( meEEDigiOccupancyProEta_[0] ) meEEDigiOccupancyProEta_[0]->Fill( eta );
00657 if ( meEEDigiOccupancyProPhi_[0] ) meEEDigiOccupancyProPhi_[0]->Fill( phi );
00658 } else {
00659 if ( meEEDigiOccupancy_[1] ) meEEDigiOccupancy_[1]->Fill( xeex, xeey );
00660 if ( meEEDigiOccupancyProEta_[1] ) meEEDigiOccupancyProEta_[1]->Fill( eta );
00661 if ( meEEDigiOccupancyProPhi_[1] ) meEEDigiOccupancyProPhi_[1]->Fill( phi );
00662 }
00663
00664 }
00665
00666 if ( runType[ism-1] == testpulse ) {
00667
00668 if ( ism >=1 && ism <= 9 ) {
00669 if ( meEETestPulseDigiOccupancy_[0] ) meEETestPulseDigiOccupancy_[0]->Fill( xeex, xeey );
00670 } else {
00671 if ( meEETestPulseDigiOccupancy_[1] ) meEETestPulseDigiOccupancy_[1]->Fill( xeex, xeey );
00672 }
00673
00674 }
00675
00676 if ( runType[ism-1] == laser ) {
00677
00678 if ( ism >=1 && ism <= 9 ) {
00679 if ( meEELaserDigiOccupancy_[0] ) meEELaserDigiOccupancy_[0]->Fill( xeex, xeey );
00680 } else {
00681 if ( meEELaserDigiOccupancy_[1] ) meEELaserDigiOccupancy_[1]->Fill( xeex, xeey );
00682 }
00683
00684 }
00685
00686 if ( runType[ism-1] == led ) {
00687
00688 if ( ism >=1 && ism <= 9 ) {
00689 if ( meEELedDigiOccupancy_[0] ) meEELedDigiOccupancy_[0]->Fill( xeex, xeey );
00690 } else {
00691 if ( meEELedDigiOccupancy_[1] ) meEELedDigiOccupancy_[1]->Fill( xeex, xeey );
00692 }
00693
00694 }
00695
00696 if ( runType[ism-1] == pedestal ) {
00697
00698 if ( ism >=1 && ism <= 9 ) {
00699 if ( meEEPedestalDigiOccupancy_[0] ) meEEPedestalDigiOccupancy_[0]->Fill( xeex, xeey );
00700 } else {
00701 if ( meEEPedestalDigiOccupancy_[1] ) meEEPedestalDigiOccupancy_[1]->Fill( xeex, xeey );
00702 }
00703
00704 }
00705
00706 }
00707
00708 } else {
00709
00710 edm::LogWarning("EEOccupancyTask") << EEDigiCollection_ << " not available";
00711
00712 }
00713
00714 edm::Handle<EcalPnDiodeDigiCollection> PNs;
00715
00716 if ( e.getByLabel(EcalPnDiodeDigiCollection_, PNs) ) {
00717
00718
00719
00720
00721 for ( EcalPnDiodeDigiCollection::const_iterator pnItr = PNs->begin(); pnItr != PNs->end(); ++pnItr ) {
00722
00723 if ( Numbers::subDet( pnItr->id() ) != EcalEndcap ) continue;
00724
00725 int ism = Numbers::iSM( pnItr->id() );
00726
00727 float PnId = pnItr->id().iPnId();
00728
00729 PnId = PnId - 0.5;
00730 float st = 0.0;
00731
00732 for (int chInStrip = 1; chInStrip <= 5; chInStrip++){
00733 if ( meOccupancyMem_[ism-1] ) {
00734 st = chInStrip - 0.5;
00735 meOccupancyMem_[ism-1]->Fill(PnId, st);
00736 }
00737 }
00738
00739 }
00740
00741 } else {
00742
00743 edm::LogWarning("EEOccupancyTask") << EcalPnDiodeDigiCollection_ << " not available";
00744
00745 }
00746
00747
00748 edm::ESHandle<EcalChannelStatus> pChannelStatus;
00749 c.get<EcalChannelStatusRcd>().get(pChannelStatus);
00750 const EcalChannelStatus* chStatus = pChannelStatus.product();
00751
00752 edm::Handle<EcalRecHitCollection> rechits;
00753
00754 if ( e.getByLabel(EcalRecHitCollection_, rechits) ) {
00755
00756 int nebrh = rechits->size();
00757 LogDebug("EEOccupancyTask") << "event " << ievt_ << " rec hits collection size " << nebrh;
00758
00759 for ( EcalRecHitCollection::const_iterator rechitItr = rechits->begin(); rechitItr != rechits->end(); ++rechitItr ) {
00760
00761 EEDetId id = rechitItr->id();
00762
00763 int eex = id.ix();
00764 int eey = id.iy();
00765
00766 int hi = id.hashedIndex();
00767
00768 if ( geometryEE[hi][0] == 0 ) {
00769 const GlobalPoint& pos = pGeometry_->getGeometry(id)->getPosition();
00770 geometryEE[hi][0] = pos.eta();
00771 geometryEE[hi][1] = pos.phi();
00772 }
00773
00774 float eta = geometryEE[hi][0];
00775 float phi = geometryEE[hi][1];
00776
00777 int ism = Numbers::iSM( id );
00778
00779
00780 float xix = ( ism >= 1 && ism <= 9 ) ? 101 - eex - 0.5 : eex - 0.5;
00781 float xiy = eey - 0.5;
00782
00783
00784 float xeex = eex - 0.5;
00785 float xeey = eey - 0.5;
00786
00787 if ( runType[ism-1] == physics || runType[ism-1] == notdata ) {
00788
00789 if ( ism >= 1 && ism <= 9 ) {
00790 if ( meEERecHitOccupancy_[0] ) meEERecHitOccupancy_[0]->Fill( xeex, xeey );
00791 if ( meEERecHitOccupancyProEta_[0] ) meEERecHitOccupancyProEta_[0]->Fill( eta );
00792 if ( meEERecHitOccupancyProPhi_[0] ) meEERecHitOccupancyProPhi_[0]->Fill( phi );
00793 } else {
00794 if ( meEERecHitOccupancy_[1] ) meEERecHitOccupancy_[1]->Fill( xeex, xeey );
00795 if ( meEERecHitOccupancyProEta_[1] ) meEERecHitOccupancyProEta_[1]->Fill( eta );
00796 if ( meEERecHitOccupancyProPhi_[1] ) meEERecHitOccupancyProPhi_[1]->Fill( phi );
00797 }
00798
00799 uint32_t flag = rechitItr->recoFlag();
00800 uint32_t sev = EcalSeverityLevelAlgo::severityLevel(id, *rechits, *chStatus );
00801
00802 if ( rechitItr->energy() > recHitEnergyMin_ && flag == EcalRecHit::kGood && sev == EcalSeverityLevelAlgo::kGood ) {
00803
00804 if ( ism >= 1 && ism <= 9 ) {
00805 if ( meEERecHitOccupancyThr_[0] ) meEERecHitOccupancyThr_[0]->Fill( xeex, xeey );
00806 if ( meEERecHitOccupancyProEtaThr_[0] ) meEERecHitOccupancyProEtaThr_[0]->Fill( eta );
00807 if ( meEERecHitOccupancyProPhiThr_[0] ) meEERecHitOccupancyProPhiThr_[0]->Fill( phi );
00808 } else {
00809 if ( meEERecHitOccupancyThr_[1] ) meEERecHitOccupancyThr_[1]->Fill( xeex, xeey );
00810 if ( meEERecHitOccupancyProEtaThr_[1] ) meEERecHitOccupancyProEtaThr_[1]->Fill( eta );
00811 if ( meEERecHitOccupancyProPhiThr_[1] ) meEERecHitOccupancyProPhiThr_[1]->Fill( phi );
00812 }
00813
00814 }
00815
00816 if ( flag == EcalRecHit::kGood && sev == EcalSeverityLevelAlgo::kGood ) {
00817 if ( meEERecHitEnergy_[ism-1] ) meEERecHitEnergy_[ism-1]->Fill( xix, xiy, rechitItr->energy() );
00818 if ( meSpectrum_[ism-1] ) meSpectrum_[ism-1]->Fill( rechitItr->energy() );
00819 if ( ism >= 1 && ism <= 9 ) meEERecHitSpectrum_[0]->Fill( rechitItr->energy() );
00820 else meEERecHitSpectrum_[1]->Fill( rechitItr->energy() );
00821 }
00822
00823 }
00824 }
00825
00826 } else {
00827
00828 edm::LogWarning("EEOccupancyTask") << EcalRecHitCollection_ << " not available";
00829
00830 }
00831
00832 edm::Handle<EcalTrigPrimDigiCollection> trigPrimDigis;
00833
00834 if ( e.getByLabel(EcalTrigPrimDigiCollection_, trigPrimDigis) ) {
00835
00836 int nebtpg = trigPrimDigis->size();
00837 LogDebug("EEOccupancyTask") << "event " << ievt_ << " trigger primitives digis collection size " << nebtpg;
00838
00839 for ( EcalTrigPrimDigiCollection::const_iterator tpdigiItr = trigPrimDigis->begin(); tpdigiItr != trigPrimDigis->end(); ++tpdigiItr ) {
00840
00841 if ( Numbers::subDet( tpdigiItr->id() ) != EcalEndcap ) continue;
00842
00843 int ism = Numbers::iSM( tpdigiItr->id() );
00844
00845 std::vector<DetId>* crystals = Numbers::crystals( tpdigiItr->id() );
00846
00847 for ( unsigned int i=0; i<crystals->size(); i++ ) {
00848
00849 EEDetId id = (*crystals)[i];
00850
00851 int eex = id.ix();
00852 int eey = id.iy();
00853
00854 int hi = id.hashedIndex();
00855
00856 if ( geometryEE[hi][0] == 0 ) {
00857 const GlobalPoint& pos = pGeometry_->getGeometry(id)->getPosition();
00858 geometryEE[hi][0] = pos.eta();
00859 geometryEE[hi][1] = pos.phi();
00860 }
00861
00862 float eta = geometryEE[hi][0];
00863 float phi = geometryEE[hi][1];
00864
00865 float xeex = eex - 0.5;
00866 float xeey = eey - 0.5;
00867
00868 if ( runType[ism-1] == physics || runType[ism-1] == notdata ) {
00869
00870 if ( ism >= 1 && ism <= 9 ) {
00871 if ( meEETrigPrimDigiOccupancy_[0] ) meEETrigPrimDigiOccupancy_[0]->Fill( xeex, xeey );
00872 if ( meEETrigPrimDigiOccupancyProEta_[0] ) meEETrigPrimDigiOccupancyProEta_[0]->Fill( eta );
00873 if ( meEETrigPrimDigiOccupancyProPhi_[0] ) meEETrigPrimDigiOccupancyProPhi_[0]->Fill( phi );
00874 } else {
00875 if ( meEETrigPrimDigiOccupancy_[1] ) meEETrigPrimDigiOccupancy_[1]->Fill( xeex, xeey );
00876 if ( meEETrigPrimDigiOccupancyProEta_[1] ) meEETrigPrimDigiOccupancyProEta_[1]->Fill( eta );
00877 if ( meEETrigPrimDigiOccupancyProPhi_[1] ) meEETrigPrimDigiOccupancyProPhi_[1]->Fill( phi );
00878 }
00879
00880 if ( tpdigiItr->compressedEt() > trigPrimEtMin_ ) {
00881
00882 if ( ism >= 1 && ism <= 9 ) {
00883 if ( meEETrigPrimDigiOccupancyThr_[0] ) meEETrigPrimDigiOccupancyThr_[0]->Fill( xeex, xeey );
00884 if ( meEETrigPrimDigiOccupancyProEtaThr_[0] ) meEETrigPrimDigiOccupancyProEtaThr_[0]->Fill( eta );
00885 if ( meEETrigPrimDigiOccupancyProPhiThr_[0] ) meEETrigPrimDigiOccupancyProPhiThr_[0]->Fill( phi );
00886 } else {
00887 if ( meEETrigPrimDigiOccupancyThr_[1] ) meEETrigPrimDigiOccupancyThr_[1]->Fill( xeex, xeey );
00888 if ( meEETrigPrimDigiOccupancyProEtaThr_[1] ) meEETrigPrimDigiOccupancyProEtaThr_[1]->Fill( eta );
00889 if ( meEETrigPrimDigiOccupancyProPhiThr_[1] ) meEETrigPrimDigiOccupancyProPhiThr_[1]->Fill( phi );
00890 }
00891
00892 }
00893
00894 }
00895 }
00896 }
00897
00898 } else {
00899
00900 edm::LogWarning("EEOccupancyTask") << EcalTrigPrimDigiCollection_ << " not available";
00901
00902 }
00903
00904 }
00905