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