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