00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include <iostream>
00012 #include <fstream>
00013 #include <vector>
00014 #include <math.h>
00015
00016 #include "FWCore/ServiceRegistry/interface/Service.h"
00017 #include "FWCore/MessageLogger/interface/MessageLogger.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/EgammaReco/interface/BasicCluster.h"
00025 #include "DataFormats/EgammaReco/interface/BasicClusterFwd.h"
00026 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
00027 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
00028 #include "FWCore/Framework/interface/ESHandle.h"
00029 #include "RecoEcal/EgammaCoreTools/interface/EcalClusterTools.h"
00030 #include "Geometry/CaloTopology/interface/CaloTopology.h"
00031 #include "Geometry/CaloEventSetup/interface/CaloTopologyRecord.h"
00032 #include "DataFormats/Math/interface/Point3D.h"
00033 #include "CondFormats/EcalObjects/interface/EcalADCToGeVConstant.h"
00034 #include "CondFormats/DataRecord/interface/EcalADCToGeVConstantRcd.h"
00035
00036 #include "DQM/EcalCommon/interface/Numbers.h"
00037
00038 #include "DQM/EcalBarrelMonitorTasks/interface/EBClusterTask.h"
00039
00040 #include "DataFormats/EcalDetId/interface/EBDetId.h"
00041
00042 #include "TLorentzVector.h"
00043
00044 EBClusterTask::EBClusterTask(const edm::ParameterSet& ps){
00045
00046 init_ = false;
00047
00048 dqmStore_ = edm::Service<DQMStore>().operator->();
00049
00050 prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");
00051
00052 enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
00053
00054 mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false);
00055
00056
00057 EcalRawDataCollection_ = ps.getParameter<edm::InputTag>("EcalRawDataCollection");
00058 BasicClusterCollection_ = ps.getParameter<edm::InputTag>("BasicClusterCollection");
00059 SuperClusterCollection_ = ps.getParameter<edm::InputTag>("SuperClusterCollection");
00060 EcalRecHitCollection_ = ps.getParameter<edm::InputTag>("EcalRecHitCollection");
00061
00062
00063 meBCEne_ = 0;
00064 meBCNum_ = 0;
00065 meBCSiz_ = 0;
00066
00067 meBCEneMap_ = 0;
00068 meBCNumMap_ = 0;
00069 meBCETMap_ = 0;
00070 meBCSizMap_ = 0;
00071
00072 meBCEneMapProjEta_ = 0;
00073 meBCNumMapProjEta_ = 0;
00074 meBCETMapProjEta_ = 0;
00075 meBCSizMapProjEta_ = 0;
00076
00077 meBCEneMapProjPhi_ = 0;
00078 meBCNumMapProjPhi_ = 0;
00079 meBCETMapProjPhi_ = 0;
00080 meBCSizMapProjPhi_ = 0;
00081
00082 meSCEne_ = 0;
00083 meSCNum_ = 0;
00084 meSCSiz_ = 0;
00085
00086 meSCCrystalSiz_ = 0;
00087 meSCSeedEne_ = 0;
00088 meSCEne2_ = 0;
00089 meSCEneVsEMax_ = 0;
00090 meSCEneLowScale_ = 0;
00091 meSCSeedMapOcc_ = 0;
00092 meSCMapSingleCrystal_ = 0;
00093
00094 mes1s9_ = 0;
00095 mes1s9thr_ = 0;
00096 mes9s25_ = 0;
00097
00098 meInvMassPi0_ = 0;
00099 meInvMassJPsi_ = 0;
00100 meInvMassZ0_ = 0;
00101 meInvMassHigh_ = 0;
00102
00103 meInvMassPi0Sel_ = 0;
00104 meInvMassJPsiSel_ = 0;
00105 meInvMassZ0Sel_ = 0;
00106 meInvMassHighSel_ = 0;
00107
00108 thrS4S9_ = 0.85;
00109 thrClusEt_ = 0.200;
00110 thrCandEt_ = 0.650;
00111
00112 }
00113
00114 EBClusterTask::~EBClusterTask(){
00115
00116 }
00117
00118 void EBClusterTask::beginJob(void){
00119
00120 ievt_ = 0;
00121
00122 if ( dqmStore_ ) {
00123 dqmStore_->setCurrentFolder(prefixME_ + "/EBClusterTask");
00124 dqmStore_->rmdir(prefixME_ + "/EBClusterTask");
00125 }
00126
00127 }
00128
00129 void EBClusterTask::beginRun(const edm::Run& r, const edm::EventSetup& c) {
00130
00131 Numbers::initGeometry(c, false);
00132
00133 if ( ! mergeRuns_ ) this->reset();
00134
00135 }
00136
00137 void EBClusterTask::endRun(const edm::Run& r, const edm::EventSetup& c) {
00138
00139 }
00140
00141 void EBClusterTask::reset(void) {
00142
00143 if ( meBCEne_ ) meBCEne_->Reset();
00144
00145 if ( meBCNum_ ) meBCNum_->Reset();
00146
00147 if ( meBCSiz_ ) meBCSiz_->Reset();
00148
00149 if ( meBCEneMap_ ) meBCEneMap_->Reset();
00150
00151 if ( meBCNumMap_ ) meBCNumMap_->Reset();
00152
00153 if ( meBCETMap_ ) meBCETMap_->Reset();
00154
00155 if ( meBCSizMap_ ) meBCSizMap_->Reset();
00156
00157 if ( meBCEneMapProjEta_ ) meBCEneMapProjEta_->Reset();
00158
00159 if ( meBCEneMapProjPhi_ ) meBCEneMapProjPhi_->Reset();
00160
00161 if ( meBCNumMapProjEta_ ) meBCNumMapProjEta_->Reset();
00162
00163 if ( meBCNumMapProjPhi_ ) meBCNumMapProjPhi_->Reset();
00164
00165 if ( meBCETMapProjEta_ ) meBCETMapProjEta_->Reset();
00166
00167 if ( meBCETMapProjPhi_ ) meBCETMapProjPhi_->Reset();
00168
00169 if ( meBCSizMapProjEta_ ) meBCSizMapProjEta_->Reset();
00170
00171 if ( meBCSizMapProjPhi_ ) meBCSizMapProjPhi_->Reset();
00172
00173 if ( meSCEne_ ) meSCEne_->Reset();
00174
00175 if ( meSCNum_ ) meSCNum_->Reset();
00176
00177 if ( meSCSiz_ ) meSCSiz_->Reset();
00178
00179 if ( meSCCrystalSiz_ ) meSCCrystalSiz_->Reset();
00180
00181 if ( meSCSeedEne_ ) meSCSeedEne_->Reset();
00182
00183 if ( meSCEne2_ ) meSCEne2_->Reset();
00184
00185 if ( meSCEneVsEMax_ ) meSCEneVsEMax_->Reset();
00186
00187 if ( meSCEneLowScale_ ) meSCEneLowScale_->Reset();
00188
00189 if ( meSCSeedMapOcc_ ) meSCSeedMapOcc_->Reset();
00190
00191 if ( meSCMapSingleCrystal_ ) meSCMapSingleCrystal_->Reset();
00192
00193 if ( mes1s9_ ) mes1s9_->Reset();
00194
00195 if ( mes1s9thr_ ) mes1s9thr_->Reset();
00196
00197 if ( mes9s25_ ) mes9s25_->Reset();
00198
00199 if ( meInvMassPi0_ ) meInvMassPi0_->Reset();
00200
00201 if ( meInvMassJPsi_ ) meInvMassJPsi_->Reset();
00202
00203 if ( meInvMassZ0_ ) meInvMassZ0_->Reset();
00204
00205 if ( meInvMassHigh_ ) meInvMassHigh_->Reset();
00206
00207 if ( meInvMassPi0Sel_ ) meInvMassPi0Sel_->Reset();
00208
00209 if ( meInvMassJPsiSel_ ) meInvMassJPsiSel_->Reset();
00210
00211 if ( meInvMassZ0Sel_ ) meInvMassZ0Sel_->Reset();
00212
00213 if ( meInvMassHighSel_ ) meInvMassHighSel_->Reset();
00214
00215 }
00216
00217 void EBClusterTask::setup(void){
00218
00219 init_ = true;
00220
00221 char histo[200];
00222
00223 if ( dqmStore_ ) {
00224 dqmStore_->setCurrentFolder(prefixME_ + "/EBClusterTask");
00225
00226 sprintf(histo, "EBCLT BC energy");
00227 meBCEne_ = dqmStore_->book1D(histo, histo, 100, 0., 150.);
00228 meBCEne_->setAxisTitle("energy (GeV)", 1);
00229
00230 sprintf(histo, "EBCLT BC number");
00231 meBCNum_ = dqmStore_->book1D(histo, histo, 100, 0., 100.);
00232 meBCNum_->setAxisTitle("number of clusters", 1);
00233
00234 sprintf(histo, "EBCLT BC size");
00235 meBCSiz_ = dqmStore_->book1D(histo, histo, 100, 0., 100.);
00236 meBCSiz_->setAxisTitle("cluster size", 1);
00237
00238 sprintf(histo, "EBCLT BC energy map");
00239 meBCEneMap_ = dqmStore_->bookProfile2D(histo, histo, 72, -M_PI*(9+1.5)/9, M_PI*(9-1.5)/9, 34, -1.479, 1.479, 100, 0., 500., "s");
00240 meBCEneMap_->setAxisTitle("phi", 1);
00241 meBCEneMap_->setAxisTitle("eta", 2);
00242
00243 sprintf(histo, "EBCLT BC number map");
00244 meBCNumMap_ = dqmStore_->book2D(histo, histo, 72, -M_PI*(9+1.5)/9, M_PI*(9-1.5)/9, 34, -1.479, 1.479);
00245 meBCNumMap_->setAxisTitle("phi", 1);
00246 meBCNumMap_->setAxisTitle("eta", 2);
00247
00248 sprintf(histo, "EBCLT BC ET map");
00249 meBCETMap_ = dqmStore_->bookProfile2D(histo, histo, 72, -M_PI*(9+1.5)/9, M_PI*(9-1.5)/9, 34, -1.479, 1.479, 100, 0., 500., "s");
00250 meBCETMap_->setAxisTitle("phi", 1);
00251 meBCETMap_->setAxisTitle("eta", 2);
00252
00253 sprintf(histo, "EBCLT BC size map");
00254 meBCSizMap_ = dqmStore_->bookProfile2D(histo, histo, 72, -M_PI*(9+1.5)/9, M_PI*(9-1.5)/9, 34, -1.479, 1.479, 100, 0., 100., "s");
00255 meBCSizMap_->setAxisTitle("phi", 1);
00256 meBCSizMap_->setAxisTitle("eta", 2);
00257
00258 sprintf(histo, "EBCLT BC energy projection eta");
00259 meBCEneMapProjEta_ = dqmStore_->bookProfile(histo, histo, 34, -1.479, 1.479, 100, 0., 500., "s");
00260 meBCEneMapProjEta_->setAxisTitle("eta", 1);
00261 meBCEneMapProjEta_->setAxisTitle("energy (GeV)", 2);
00262
00263 sprintf(histo, "EBCLT BC energy projection phi");
00264 meBCEneMapProjPhi_ = dqmStore_->bookProfile(histo, histo, 72, -M_PI*(9+1.5)/9, M_PI*(9-1.5)/9, 100, 0., 500., "s");
00265 meBCEneMapProjPhi_->setAxisTitle("phi", 1);
00266 meBCEneMapProjPhi_->setAxisTitle("energy (GeV)", 2);
00267
00268 sprintf(histo, "EBCLT BC number projection eta");
00269 meBCNumMapProjEta_ = dqmStore_->book1D(histo, histo, 34, -1.479, 1.479);
00270 meBCNumMapProjEta_->setAxisTitle("eta", 1);
00271 meBCNumMapProjEta_->setAxisTitle("number of clusters", 2);
00272
00273 sprintf(histo, "EBCLT BC number projection phi");
00274 meBCNumMapProjPhi_ = dqmStore_->book1D(histo, histo, 72, -M_PI*(9+1.5)/9, M_PI*(9-1.5)/9);
00275 meBCNumMapProjPhi_->setAxisTitle("phi", 1);
00276 meBCNumMapProjPhi_->setAxisTitle("number of clusters", 2);
00277
00278 sprintf(histo, "EBCLT BC ET projection eta");
00279 meBCETMapProjEta_ = dqmStore_->bookProfile(histo, histo, 34, -1.479, 1.479, 100, 0., 500., "s");
00280 meBCETMapProjEta_->setAxisTitle("eta", 1);
00281 meBCETMapProjEta_->setAxisTitle("transverse energy (GeV)", 2);
00282
00283 sprintf(histo, "EBCLT BC ET projection phi");
00284 meBCETMapProjPhi_ = dqmStore_->bookProfile(histo, histo, 72, -M_PI*(9+1.5)/9, M_PI*(9-1.5)/9, 100, 0., 500., "s");
00285 meBCETMapProjPhi_->setAxisTitle("phi", 1);
00286 meBCETMapProjPhi_->setAxisTitle("transverse energy (GeV)", 2);
00287
00288 sprintf(histo, "EBCLT BC size projection eta");
00289 meBCSizMapProjEta_ = dqmStore_->bookProfile(histo, histo, 34, -1.479, 1.479, 100, 0., 100., "s");
00290 meBCSizMapProjEta_->setAxisTitle("eta", 1);
00291 meBCSizMapProjEta_->setAxisTitle("cluster size", 2);
00292
00293 sprintf(histo, "EBCLT BC size projection phi");
00294 meBCSizMapProjPhi_ = dqmStore_->bookProfile(histo, histo, 72, -M_PI*(9+1.5)/9, M_PI*(9-1.5)/9, 100, 0., 100., "s");
00295 meBCSizMapProjPhi_->setAxisTitle("phi", 1);
00296 meBCSizMapProjPhi_->setAxisTitle("cluster size", 2);
00297
00298 sprintf(histo, "EBCLT SC energy");
00299 meSCEne_ = dqmStore_->book1D(histo, histo, 100, 0., 150.);
00300 meSCEne_->setAxisTitle("energy (GeV)", 1);
00301
00302 sprintf(histo, "EBCLT SC number");
00303 meSCNum_ = dqmStore_->book1D(histo, histo, 50, 0., 50.);
00304 meSCNum_->setAxisTitle("number of clusters", 1);
00305
00306 sprintf(histo, "EBCLT SC size");
00307 meSCSiz_ = dqmStore_->book1D(histo, histo, 50, 0., 50.);
00308 meSCSiz_->setAxisTitle("cluster size", 1);
00309
00310 sprintf(histo, "EBCLT SC size (crystal)");
00311 meSCCrystalSiz_ = dqmStore_->book1D(histo, histo, 150, 0, 150);
00312 meSCCrystalSiz_->setAxisTitle("cluster size in crystals", 1);
00313
00314 sprintf(histo, "EBCLT SC seed crystal energy");
00315 meSCSeedEne_ = dqmStore_->book1D(histo, histo, 100, 0., 10.);
00316 meSCSeedEne_->setAxisTitle("seed crystal energy (GeV)", 1);
00317
00318 sprintf(histo, "EBCLT SC e2");
00319 meSCEne2_ = dqmStore_->book1D(histo, histo, 100, 0., 10.);
00320 meSCEne2_->setAxisTitle("seed + highest neighbor crystal energy (GeV)", 1);
00321
00322 sprintf(histo, "EBCLT SC energy vs seed crystal energy");
00323 meSCEneVsEMax_ = dqmStore_->book2D(histo, histo, 50, 0., 10., 50, 0., 10.);
00324 meSCEneVsEMax_->setAxisTitle("seed crystal energy (GeV)", 1);
00325 meSCEneVsEMax_->setAxisTitle("cluster energy (GeV)", 2);
00326
00327 sprintf(histo, "EBCLT SC energy (low scale)");
00328 meSCEneLowScale_ = dqmStore_->book1D(histo, histo, 200, 0., 10.);
00329 meSCEneLowScale_->setAxisTitle("cluster energy (GeV)", 1);
00330
00331 sprintf(histo, "EBCLT SC seed occupancy map");
00332 meSCSeedMapOcc_ = dqmStore_->book2D(histo, histo, 72, 0., 360., 34, -85, 85);
00333 meSCSeedMapOcc_->setAxisTitle("jphi", 1);
00334 meSCSeedMapOcc_->setAxisTitle("jeta", 2);
00335
00336 sprintf(histo, "EBCLT SC single crystal cluster seed occupancy map");
00337 meSCMapSingleCrystal_ = dqmStore_->book2D(histo, histo, 72, 0., 360., 34, -85, 85);
00338 meSCMapSingleCrystal_->setAxisTitle("jphi", 1);
00339 meSCMapSingleCrystal_->setAxisTitle("jeta", 2);
00340
00341 sprintf(histo, "EBCLT s1s9");
00342 mes1s9_ = dqmStore_->book1D(histo, histo, 50, 0., 1.5);
00343 mes1s9_->setAxisTitle("s1/s9", 1);
00344
00345 sprintf(histo, "EBCLT s1s9 thr");
00346 mes1s9thr_ = dqmStore_->book1D(histo, histo, 50, 0., 1.5);
00347 mes1s9thr_->setAxisTitle("s1/s9", 1);
00348
00349 sprintf(histo, "EBCLT s9s25");
00350 mes9s25_ = dqmStore_->book1D(histo, histo, 75, 0., 1.5);
00351 mes9s25_->setAxisTitle("s9/s25", 1);
00352
00353 sprintf(histo, "EBCLT dicluster invariant mass Pi0");
00354 meInvMassPi0_ = dqmStore_->book1D(histo, histo, 50, 0.0, 0.500);
00355 meInvMassPi0_->setAxisTitle("mass (GeV)", 1);
00356
00357 sprintf(histo, "EBCLT dicluster invariant mass JPsi");
00358 meInvMassJPsi_ = dqmStore_->book1D(histo, histo, 50, 2.9, 3.3);
00359 meInvMassJPsi_->setAxisTitle("mass (GeV)", 1);
00360
00361 sprintf(histo, "EBCLT dicluster invariant mass Z0");
00362 meInvMassZ0_ = dqmStore_->book1D(histo, histo, 50, 40, 110);
00363 meInvMassZ0_->setAxisTitle("mass (GeV)", 1);
00364
00365 sprintf(histo, "EBCLT dicluster invariant mass high");
00366 meInvMassHigh_ = dqmStore_->book1D(histo, histo, 500, 110, 3000);
00367 meInvMassHigh_->setAxisTitle("mass (GeV)", 1);
00368
00369 sprintf(histo, "EBCLT dicluster invariant mass Pi0 sel");
00370 meInvMassPi0Sel_ = dqmStore_->book1D(histo, histo, 50, 0.00, 0.500);
00371 meInvMassPi0Sel_->setAxisTitle("mass (GeV)", 1);
00372
00373 sprintf(histo, "EBCLT dicluster invariant mass JPsi sel");
00374 meInvMassJPsiSel_ = dqmStore_->book1D(histo, histo, 50, 2.9, 3.3);
00375 meInvMassJPsiSel_->setAxisTitle("mass (GeV)", 1);
00376
00377 sprintf(histo, "EBCLT dicluster invariant mass Z0 sel");
00378 meInvMassZ0Sel_ = dqmStore_->book1D(histo, histo, 50, 40, 110);
00379 meInvMassZ0Sel_->setAxisTitle("mass (GeV)", 1);
00380
00381 sprintf(histo, "EBCLT dicluster invariant mass high sel");
00382 meInvMassHighSel_ = dqmStore_->book1D(histo, histo, 500, 110, 3000);
00383 meInvMassHighSel_->setAxisTitle("mass (GeV)", 1);
00384
00385 }
00386
00387 }
00388
00389 void EBClusterTask::cleanup(void){
00390
00391 if ( ! init_ ) return;
00392
00393 if ( dqmStore_ ) {
00394 dqmStore_->setCurrentFolder(prefixME_ + "/EBClusterTask");
00395
00396 if ( meBCEne_ ) dqmStore_->removeElement( meBCEne_->getName() );
00397 meBCEne_ = 0;
00398
00399 if ( meBCNum_ ) dqmStore_->removeElement( meBCNum_->getName() );
00400 meBCNum_ = 0;
00401
00402 if ( meBCSiz_ ) dqmStore_->removeElement( meBCSiz_->getName() );
00403 meBCSiz_ = 0;
00404
00405 if ( meBCEneMap_ ) dqmStore_->removeElement( meBCEneMap_->getName() );
00406 meBCEneMap_ = 0;
00407
00408 if ( meBCNumMap_ ) dqmStore_->removeElement( meBCNumMap_->getName() );
00409 meBCNumMap_ = 0;
00410
00411 if ( meBCETMap_ ) dqmStore_->removeElement( meBCETMap_->getName() );
00412 meBCETMap_ = 0;
00413
00414 if ( meBCSizMap_ ) dqmStore_->removeElement( meBCSizMap_->getName() );
00415 meBCSizMap_ = 0;
00416
00417 if ( meBCEneMapProjEta_ ) dqmStore_->removeElement( meBCEneMapProjEta_->getName() );
00418 meBCEneMapProjEta_ = 0;
00419
00420 if ( meBCEneMapProjPhi_ ) dqmStore_->removeElement( meBCEneMapProjPhi_->getName() );
00421 meBCEneMapProjPhi_ = 0;
00422
00423 if ( meBCNumMapProjEta_ ) dqmStore_->removeElement( meBCNumMapProjEta_->getName() );
00424 meBCNumMapProjEta_ = 0;
00425
00426 if ( meBCNumMapProjPhi_ ) dqmStore_->removeElement( meBCNumMapProjPhi_->getName() );
00427 meBCNumMapProjPhi_ = 0;
00428
00429 if ( meBCETMapProjEta_ ) dqmStore_->removeElement( meBCETMapProjEta_->getName() );
00430 meBCETMapProjEta_ = 0;
00431
00432 if ( meBCETMapProjPhi_ ) dqmStore_->removeElement( meBCETMapProjPhi_->getName() );
00433 meBCETMapProjPhi_ = 0;
00434
00435 if ( meBCSizMapProjEta_ ) dqmStore_->removeElement( meBCSizMapProjEta_->getName() );
00436 meBCSizMapProjEta_ = 0;
00437
00438 if ( meBCSizMapProjPhi_ ) dqmStore_->removeElement( meBCSizMapProjPhi_->getName() );
00439 meBCSizMapProjPhi_ = 0;
00440
00441 if ( meSCEne_ ) dqmStore_->removeElement( meSCEne_->getName() );
00442 meSCEne_ = 0;
00443
00444 if ( meSCNum_ ) dqmStore_->removeElement( meSCNum_->getName() );
00445 meSCNum_ = 0;
00446
00447 if ( meSCSiz_ ) dqmStore_->removeElement( meSCSiz_->getName() );
00448 meSCSiz_ = 0;
00449
00450 if ( meSCCrystalSiz_ ) dqmStore_->removeElement( meSCCrystalSiz_->getName() );
00451 meSCCrystalSiz_ = 0;
00452
00453 if ( meSCSeedEne_ ) dqmStore_->removeElement( meSCSeedEne_->getName() );
00454 meSCSeedEne_ = 0;
00455
00456 if ( meSCEne2_ ) dqmStore_->removeElement( meSCEne2_->getName() );
00457 meSCEne2_ = 0;
00458
00459 if ( meSCEneVsEMax_ ) dqmStore_->removeElement( meSCEneVsEMax_->getName() );
00460 meSCEneVsEMax_ = 0;
00461
00462 if ( meSCEneLowScale_ ) dqmStore_->removeElement( meSCEneLowScale_->getName() );
00463 meSCEneLowScale_ = 0;
00464
00465 if ( meSCSeedMapOcc_ ) dqmStore_->removeElement( meSCSeedMapOcc_->getName() );
00466 meSCSeedMapOcc_ = 0;
00467
00468 if ( meSCMapSingleCrystal_ ) dqmStore_->removeElement( meSCMapSingleCrystal_->getName() );
00469 meSCMapSingleCrystal_ = 0;
00470
00471 if ( mes1s9_ ) dqmStore_->removeElement( mes1s9_->getName() );
00472 mes1s9_ = 0;
00473
00474 if ( mes1s9thr_ ) dqmStore_->removeElement( mes1s9thr_->getName() );
00475 mes1s9thr_ = 0;
00476
00477 if ( mes9s25_ ) dqmStore_->removeElement( mes9s25_->getName() );
00478 mes9s25_ = 0;
00479
00480 if ( meInvMassPi0_ ) dqmStore_->removeElement( meInvMassPi0_->getName() );
00481 meInvMassPi0_ = 0;
00482
00483 if ( meInvMassJPsi_ ) dqmStore_->removeElement( meInvMassJPsi_->getName() );
00484 meInvMassJPsi_ = 0;
00485
00486 if ( meInvMassZ0_ ) dqmStore_->removeElement( meInvMassZ0_->getName() );
00487 meInvMassZ0_ = 0;
00488
00489 if ( meInvMassHigh_ ) dqmStore_->removeElement( meInvMassHigh_->getName() );
00490 meInvMassHigh_ = 0;
00491
00492 if ( meInvMassPi0Sel_ ) dqmStore_->removeElement( meInvMassPi0Sel_->getName() );
00493 meInvMassPi0Sel_ = 0;
00494
00495 if ( meInvMassJPsiSel_ ) dqmStore_->removeElement( meInvMassJPsiSel_->getName() );
00496 meInvMassJPsiSel_ = 0;
00497
00498 if ( meInvMassZ0Sel_ ) dqmStore_->removeElement( meInvMassZ0Sel_->getName() );
00499 meInvMassZ0Sel_ = 0;
00500
00501 if ( meInvMassHighSel_ ) dqmStore_->removeElement( meInvMassHighSel_->getName() );
00502 meInvMassHighSel_ = 0;
00503
00504 }
00505
00506 init_ = false;
00507
00508 }
00509
00510 void EBClusterTask::endJob(void){
00511
00512 edm::LogInfo("EBClusterTask") << "analyzed " << ievt_ << " events";
00513
00514 if ( enableCleanup_ ) this->cleanup();
00515
00516 }
00517
00518 void EBClusterTask::analyze(const edm::Event& e, const edm::EventSetup& c){
00519
00520 bool enable = false;
00521
00522 edm::Handle<EcalRawDataCollection> dcchs;
00523
00524 if ( e.getByLabel(EcalRawDataCollection_, dcchs) ) {
00525
00526 for ( EcalRawDataCollection::const_iterator dcchItr = dcchs->begin(); dcchItr != dcchs->end(); ++dcchItr ) {
00527
00528 if ( Numbers::subDet( *dcchItr ) != EcalBarrel ) continue;
00529
00530 if ( dcchItr->getRunType() == EcalDCCHeaderBlock::BEAMH4 ||
00531 dcchItr->getRunType() == EcalDCCHeaderBlock::BEAMH2 ) enable = true;
00532
00533 if ( dcchItr->getRunType() == EcalDCCHeaderBlock::COSMIC ||
00534 dcchItr->getRunType() == EcalDCCHeaderBlock::MTCC ||
00535 dcchItr->getRunType() == EcalDCCHeaderBlock::COSMICS_GLOBAL ||
00536 dcchItr->getRunType() == EcalDCCHeaderBlock::PHYSICS_GLOBAL ||
00537 dcchItr->getRunType() == EcalDCCHeaderBlock::COSMICS_LOCAL ||
00538 dcchItr->getRunType() == EcalDCCHeaderBlock::PHYSICS_LOCAL ) enable = true;
00539
00540 break;
00541
00542 }
00543
00544 } else {
00545
00546 enable = true;
00547 edm::LogWarning("EBClusterTask") << EcalRawDataCollection_ << " not available";
00548
00549 }
00550
00551 if ( ! enable ) return;
00552
00553 if ( ! init_ ) this->setup();
00554
00555 ievt_++;
00556
00557
00558 edm::ESHandle<CaloTopology> pTopology;
00559 c.get<CaloTopologyRecord>().get(pTopology);
00560 if ( !pTopology.isValid() ) {
00561 edm::LogWarning("EBClusterTask") << "Topology not valid";
00562 return;
00563 }
00564 const CaloTopology* topology = pTopology.product();
00565
00566
00567 edm::Handle< EcalRecHitCollection > pEBRecHits;
00568 e.getByLabel( EcalRecHitCollection_, pEBRecHits );
00569 if ( !pEBRecHits.isValid() ) {
00570 edm::LogWarning("EBClusterTask") << "RecHit collection " << EcalRecHitCollection_ << " not available.";
00571 return;
00572 }
00573 const EcalRecHitCollection* ebRecHits = pEBRecHits.product();
00574
00575 reco::BasicClusterCollection bcSel;
00576
00577
00578 edm::Handle<reco::BasicClusterCollection> pBasicClusters;
00579 if ( e.getByLabel(BasicClusterCollection_, pBasicClusters) ) {
00580
00581 int nbcc = pBasicClusters->size();
00582 if ( nbcc > 0 ) meBCNum_->Fill(float(nbcc));
00583
00584 for ( reco::BasicClusterCollection::const_iterator bCluster = pBasicClusters->begin(); bCluster != pBasicClusters->end(); ++bCluster ) {
00585
00586 meBCEne_->Fill(bCluster->energy());
00587 meBCSiz_->Fill(float(bCluster->size()));
00588
00589 float xphi = bCluster->phi();
00590 if ( xphi > M_PI*(9-1.5)/9 ) xphi = xphi - M_PI*2;
00591
00592 meBCEneMap_->Fill(xphi, bCluster->eta(), bCluster->energy());
00593 meBCEneMapProjEta_->Fill(bCluster->eta(), bCluster->energy());
00594 meBCEneMapProjPhi_->Fill(xphi, bCluster->energy());
00595
00596 meBCNumMap_->Fill(xphi, bCluster->eta());
00597 meBCNumMapProjEta_->Fill(bCluster->eta());
00598 meBCNumMapProjPhi_->Fill(xphi);
00599
00600 meBCSizMap_->Fill(xphi, bCluster->eta(), float(bCluster->size()));
00601 meBCSizMapProjEta_->Fill(bCluster->eta(), float(bCluster->size()));
00602 meBCSizMapProjPhi_->Fill(xphi, float(bCluster->size()));
00603
00604 meBCETMap_->Fill(xphi, bCluster->eta(), float(bCluster->energy()) * sin(bCluster->position().theta()));
00605 meBCETMapProjEta_->Fill(bCluster->eta(), float(bCluster->energy()) * sin(bCluster->position().theta()));
00606 meBCETMapProjPhi_->Fill(xphi, float(bCluster->energy()) * sin(bCluster->position().theta()));
00607
00608 float e2x2 = EcalClusterTools::e2x2( *bCluster, ebRecHits, topology );
00609 float e3x3 = EcalClusterTools::e3x3( *bCluster, ebRecHits, topology );
00610
00611
00612 float pt = std::abs( bCluster->energy()*sin(bCluster->position().theta()) );
00613 if ( pt > thrClusEt_ && e2x2/e3x3 > thrS4S9_ ) bcSel.push_back(*bCluster);
00614 }
00615
00616 } else {
00617 edm::LogWarning("EBClusterTask") << BasicClusterCollection_ << " not available";
00618 }
00619
00620 for ( reco::BasicClusterCollection::const_iterator bc1 = bcSel.begin(); bc1 != bcSel.end(); ++bc1 ) {
00621 TLorentzVector bc1P;
00622 bc1P.SetPtEtaPhiE(std::abs(bc1->energy()*sin(bc1->position().theta())),
00623 bc1->eta(), bc1->phi(), bc1->energy());
00624 for ( reco::BasicClusterCollection::const_iterator bc2 = bc1+1; bc2 != bcSel.end(); ++bc2 ) {
00625 TLorentzVector bc2P;
00626 bc2P.SetPtEtaPhiE(std::abs(bc2->energy()*sin(bc2->position().theta())),
00627 bc2->eta(), bc2->phi(), bc2->energy());
00628
00629 TLorentzVector candP = bc1P + bc2P;
00630
00631 if ( candP.Pt() > thrCandEt_ ) {
00632 float mass = candP.M();
00633 if ( mass < 0.500 ) {
00634 meInvMassPi0Sel_->Fill( mass );
00635 } else if ( mass > 2.9 && mass < 3.3 ) {
00636 meInvMassJPsiSel_->Fill( mass );
00637 } else if ( mass > 40 && mass < 110 ) {
00638 meInvMassZ0Sel_->Fill( mass );
00639 } else if ( mass > 110 ) {
00640 meInvMassHighSel_->Fill( mass );
00641 }
00642
00643 }
00644
00645 }
00646 }
00647
00648
00649 edm::Handle<reco::SuperClusterCollection> pSuperClusters;
00650 if ( e.getByLabel(SuperClusterCollection_, pSuperClusters) ) {
00651
00652 int nscc = pSuperClusters->size();
00653 if ( nscc > 0 ) meSCNum_->Fill(float(nscc));
00654
00655 TLorentzVector sc1_p(0,0,0,0);
00656 TLorentzVector sc2_p(0,0,0,0);
00657
00658 for ( reco::SuperClusterCollection::const_iterator sCluster = pSuperClusters->begin(); sCluster != pSuperClusters->end(); ++sCluster ) {
00659
00660
00661 meSCEne_->Fill( sCluster->energy() );
00662 meSCSiz_->Fill( float(sCluster->clustersSize()) );
00663
00664 reco::CaloClusterPtr theSeed = sCluster->seed();
00665
00666
00667 std::vector< std::pair<DetId,float> > sIds = sCluster->hitsAndFractions();
00668
00669 float eMax, e2nd;
00670 EcalRecHitCollection::const_iterator seedItr = ebRecHits->begin();
00671 EcalRecHitCollection::const_iterator secondItr = ebRecHits->begin();
00672
00673 for(std::vector< std::pair<DetId,float> >::const_iterator idItr = sIds.begin(); idItr != sIds.end(); ++idItr) {
00674 DetId id = idItr->first;
00675 if(id.det() != DetId::Ecal) { continue; }
00676 EcalRecHitCollection::const_iterator hitItr = ebRecHits->find(id);
00677 if(hitItr == ebRecHits->end()) { continue; }
00678 if(hitItr->energy() > secondItr->energy()) { secondItr = hitItr; }
00679 if(hitItr->energy() > seedItr->energy()) { std::swap(seedItr,secondItr); }
00680 }
00681
00682 eMax = seedItr->energy();
00683 e2nd = secondItr->energy();
00684 EBDetId seedId = (EBDetId) seedItr->id();
00685
00686 float e3x3 = EcalClusterTools::e3x3( *theSeed, ebRecHits, topology );
00687 float e5x5 = EcalClusterTools::e5x5( *theSeed, ebRecHits, topology );
00688
00689 meSCCrystalSiz_->Fill(sIds.size());
00690 meSCSeedEne_->Fill(eMax);
00691 meSCEne2_->Fill(eMax+e2nd);
00692 meSCEneVsEMax_->Fill(eMax,sCluster->energy());
00693 meSCEneLowScale_->Fill(sCluster->energy());
00694
00695
00696 int ebeta = seedId.ieta();
00697 int ebphi = seedId.iphi();
00698 float xebeta = ebeta - 0.5 * seedId.zside();
00699 float xebphi = ebphi - 0.5;
00700
00701 meSCSeedMapOcc_->Fill(xebphi,xebeta);
00702
00703 if(sIds.size() == 1) meSCMapSingleCrystal_->Fill(xebphi,xebeta);
00704
00705 mes1s9_->Fill( eMax/e3x3 );
00706 if ( eMax > 3.0 ) mes1s9thr_->Fill( eMax/e3x3 );
00707 mes9s25_->Fill( e3x3/e5x5 );
00708
00709 if ( nscc >= 2 ) {
00710
00711 if ( sCluster->energy() > sc1_p.Energy() ) {
00712 sc2_p=sc1_p;
00713 sc1_p.SetPtEtaPhiE(std::abs(sCluster->energy()*sin(sCluster->position().theta())),
00714 sCluster->eta(), sCluster->phi(), sCluster->energy());
00715 } else if ( sCluster->energy() > sc2_p.Energy() ) {
00716 sc2_p.SetPtEtaPhiE(std::abs(sCluster->energy()*sin(sCluster->position().theta())),
00717 sCluster->eta(), sCluster->phi(), sCluster->energy());
00718 }
00719 }
00720
00721 }
00722
00723 if ( nscc >= 2 ) {
00724 TLorentzVector sum = sc1_p+sc2_p;
00725 float mass = sum.M();
00726 if ( mass < 0.500 ) {
00727 meInvMassPi0_->Fill( mass );
00728 } else if ( mass > 2.9 && mass < 3.3 ) {
00729 meInvMassJPsi_->Fill( mass );
00730 } else if ( mass > 40 && mass < 110 ) {
00731 meInvMassZ0_->Fill( mass );
00732 } else if ( mass > 110 ) {
00733 meInvMassHigh_->Fill( mass );
00734 }
00735 }
00736
00737 } else {
00738
00739 edm::LogWarning("EBClusterTask") << SuperClusterCollection_ << " not available";
00740
00741 }
00742
00743 }