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/SuperCluster.h"
00026 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
00027 #include "FWCore/Framework/interface/ESHandle.h"
00028 #include "RecoEcal/EgammaCoreTools/interface/EcalClusterTools.h"
00029 #include "Geometry/CaloTopology/interface/CaloTopology.h"
00030 #include "Geometry/CaloEventSetup/interface/CaloTopologyRecord.h"
00031 #include "DataFormats/Math/interface/Point3D.h"
00032
00033 #include <DQM/EcalCommon/interface/Numbers.h>
00034
00035 #include <DQM/EcalEndcapMonitorTasks/interface/EEClusterTask.h>
00036
00037 #include "TLorentzVector.h"
00038
00039 using namespace cms;
00040 using namespace edm;
00041 using namespace std;
00042 using namespace reco;
00043
00044 EEClusterTask::EEClusterTask(const ParameterSet& ps){
00045
00046 init_ = false;
00047
00048 dqmStore_ = Service<DQMStore>().operator->();
00049
00050 prefixME_ = ps.getUntrackedParameter<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 meBCEneFwdMap_ = 0;
00068 meBCNumFwdMap_ = 0;
00069 meBCETFwdMap_ = 0;
00070 meBCSizFwdMap_ = 0;
00071
00072 meBCEneFwdMapProjR_ = 0;
00073 meBCEneFwdMapProjPhi_ = 0;
00074 meBCNumFwdMapProjR_ = 0;
00075 meBCNumFwdMapProjPhi_ = 0;
00076 meBCETFwdMapProjR_ = 0;
00077 meBCETFwdMapProjPhi_ = 0;
00078 meBCSizFwdMapProjR_ = 0;
00079 meBCSizFwdMapProjPhi_ = 0;
00080
00081 meBCEneBwdMap_ = 0;
00082 meBCNumBwdMap_ = 0;
00083 meBCETBwdMap_ = 0;
00084 meBCSizBwdMap_ = 0;
00085
00086 meBCEneBwdMapProjR_ = 0;
00087 meBCEneBwdMapProjPhi_ = 0;
00088 meBCNumBwdMapProjR_ = 0;
00089 meBCNumBwdMapProjPhi_ = 0;
00090 meBCETBwdMapProjR_ = 0;
00091 meBCETBwdMapProjPhi_ = 0;
00092 meBCSizBwdMapProjR_ = 0;
00093 meBCSizBwdMapProjPhi_ = 0;
00094
00095 meSCEne_ = 0;
00096 meSCNum_ = 0;
00097 meSCSiz_ = 0;
00098
00099 mes1s9_ = 0;
00100 mes9s25_ = 0;
00101
00102 meInvMassPi0_ = 0;
00103 meInvMassJPsi_ = 0;
00104 meInvMassZ0_ = 0;
00105 meInvMassHigh_ = 0;
00106
00107 }
00108
00109 EEClusterTask::~EEClusterTask(){
00110
00111 }
00112
00113 void EEClusterTask::beginJob(const EventSetup& c){
00114
00115 ievt_ = 0;
00116
00117 if ( dqmStore_ ) {
00118 dqmStore_->setCurrentFolder(prefixME_ + "/EEClusterTask");
00119 dqmStore_->rmdir(prefixME_ + "/EEClusterTask");
00120 }
00121
00122 Numbers::initGeometry(c, false);
00123
00124 }
00125
00126 void EEClusterTask::beginRun(const Run& r, const EventSetup& c) {
00127
00128 if ( ! mergeRuns_ ) this->reset();
00129
00130 }
00131
00132 void EEClusterTask::endRun(const Run& r, const EventSetup& c) {
00133
00134 }
00135
00136 void EEClusterTask::reset(void) {
00137
00138 if ( meBCEne_ ) meBCEne_->Reset();
00139
00140 if ( meBCNum_ ) meBCNum_->Reset();
00141
00142 if ( meBCSiz_ ) meBCSiz_->Reset();
00143
00144 if ( meBCEneFwdMap_ ) meBCEneFwdMap_->Reset();
00145
00146 if ( meBCNumFwdMap_ ) meBCNumFwdMap_->Reset();
00147
00148 if ( meBCETFwdMap_ ) meBCETFwdMap_->Reset();
00149
00150 if ( meBCSizFwdMap_ ) meBCSizFwdMap_->Reset();
00151
00152 if ( meBCEneFwdMapProjR_ ) meBCEneFwdMapProjR_->Reset();
00153
00154 if ( meBCEneFwdMapProjPhi_ ) meBCEneFwdMapProjPhi_->Reset();
00155
00156 if ( meBCNumFwdMapProjR_ ) meBCNumFwdMapProjR_->Reset();
00157
00158 if ( meBCNumFwdMapProjPhi_ ) meBCNumFwdMapProjPhi_->Reset();
00159
00160 if ( meBCETFwdMapProjR_ ) meBCETFwdMapProjR_->Reset();
00161
00162 if ( meBCETFwdMapProjPhi_ ) meBCETFwdMapProjPhi_->Reset();
00163
00164 if ( meBCSizFwdMapProjR_ ) meBCSizFwdMapProjR_->Reset();
00165
00166 if ( meBCSizFwdMapProjPhi_ ) meBCSizFwdMapProjPhi_->Reset();
00167
00168 if ( meBCEneBwdMap_ ) meBCEneBwdMap_->Reset();
00169
00170 if ( meBCNumBwdMap_ ) meBCNumBwdMap_->Reset();
00171
00172 if ( meBCETBwdMap_ ) meBCETBwdMap_->Reset();
00173
00174 if ( meBCSizBwdMap_ ) meBCSizBwdMap_->Reset();
00175
00176 if ( meBCEneBwdMapProjR_ ) meBCEneBwdMapProjR_->Reset();
00177
00178 if ( meBCEneBwdMapProjPhi_ ) meBCEneBwdMapProjPhi_->Reset();
00179
00180 if ( meBCNumBwdMapProjR_ ) meBCNumBwdMapProjR_->Reset();
00181
00182 if ( meBCNumBwdMapProjPhi_ ) meBCNumBwdMapProjPhi_->Reset();
00183
00184 if ( meBCETBwdMapProjR_ ) meBCETBwdMapProjR_->Reset();
00185
00186 if ( meBCETBwdMapProjPhi_ ) meBCETBwdMapProjPhi_->Reset();
00187
00188 if ( meBCSizBwdMapProjR_ ) meBCSizBwdMapProjR_->Reset();
00189
00190 if ( meBCSizBwdMapProjPhi_ ) meBCSizBwdMapProjPhi_->Reset();
00191
00192 if ( meSCEne_ ) meSCEne_->Reset();
00193
00194 if ( meSCNum_ ) meSCNum_->Reset();
00195
00196 if ( meSCSiz_ ) meSCSiz_->Reset();
00197
00198 if ( mes1s9_ ) mes1s9_->Reset();
00199
00200 if ( mes9s25_ ) mes9s25_->Reset();
00201
00202 if ( meInvMassPi0_ ) meInvMassPi0_->Reset();
00203
00204 if ( meInvMassJPsi_ ) meInvMassJPsi_->Reset();
00205
00206 if ( meInvMassZ0_ ) meInvMassZ0_->Reset();
00207
00208 if ( meInvMassHigh_ ) meInvMassHigh_->Reset();
00209
00210 }
00211
00212 void EEClusterTask::setup(void){
00213
00214 init_ = true;
00215
00216 char histo[200];
00217
00218 if ( dqmStore_ ) {
00219 dqmStore_->setCurrentFolder(prefixME_ + "/EEClusterTask");
00220
00221 sprintf(histo, "EECLT BC energy");
00222 meBCEne_ = dqmStore_->book1D(histo, histo, 100, 0., 150.);
00223 meBCEne_->setAxisTitle("energy (GeV)", 1);
00224
00225 sprintf(histo, "EECLT BC number");
00226 meBCNum_ = dqmStore_->book1D(histo, histo, 100, 0., 150.);
00227 meBCNum_->setAxisTitle("number of clusters", 1);
00228
00229 sprintf(histo, "EECLT BC size");
00230 meBCSiz_ = dqmStore_->book1D(histo, histo, 100, 0., 150.);
00231 meBCSiz_->setAxisTitle("cluster size", 1);
00232
00233 sprintf(histo, "EECLT BC energy map EE +");
00234 meBCEneFwdMap_ = dqmStore_->bookProfile2D(histo, histo, 20, -150., 150., 20, -150., 150., 100, 0., 500., "s");
00235 meBCEneFwdMap_->setAxisTitle("x", 1);
00236 meBCEneFwdMap_->setAxisTitle("y", 2);
00237
00238 sprintf(histo, "EECLT BC number map EE +");
00239 meBCNumFwdMap_ = dqmStore_->book2D(histo, histo, 20, -150., 150., 20, -150., 150.);
00240 meBCNumFwdMap_->setAxisTitle("x", 1);
00241 meBCNumFwdMap_->setAxisTitle("y", 2);
00242
00243 sprintf(histo, "EECLT BC ET map EE +");
00244 meBCETFwdMap_ = dqmStore_->bookProfile2D(histo, histo, 20, -150., 150., 20, -150., 150., 100, 0., 500., "s");
00245 meBCETFwdMap_->setAxisTitle("x", 1);
00246 meBCETFwdMap_->setAxisTitle("y", 2);
00247
00248 sprintf(histo, "EECLT BC size map EE +");
00249 meBCSizFwdMap_ = dqmStore_->bookProfile2D(histo, histo, 20, -150., 150., 20, -150., 150., 100, 0., 100., "s");
00250 meBCSizFwdMap_->setAxisTitle("x", 1);
00251 meBCSizFwdMap_->setAxisTitle("y", 2);
00252
00253 sprintf(histo, "EECLT BC energy projection R EE +");
00254 meBCEneFwdMapProjR_ = dqmStore_->bookProfile(histo, histo, 20, 0., 150., 100, 0., 500., "s");
00255 meBCEneFwdMapProjR_->setAxisTitle("r", 1);
00256 meBCEneFwdMapProjR_->setAxisTitle("energy (GeV)", 2);
00257
00258 sprintf(histo, "EECLT BC energy projection phi EE +");
00259 meBCEneFwdMapProjPhi_ = dqmStore_->bookProfile(histo, histo, 50, -M_PI, M_PI, 100, 0., 500., "s");
00260 meBCEneFwdMapProjPhi_->setAxisTitle("phi", 1);
00261 meBCEneFwdMapProjPhi_->setAxisTitle("energy (GeV)", 2);
00262
00263 sprintf(histo, "EECLT BC number projection R EE +");
00264 meBCNumFwdMapProjR_ = dqmStore_->book1D(histo, histo, 20, 0., 150.);
00265 meBCNumFwdMapProjR_->setAxisTitle("r", 1);
00266 meBCNumFwdMapProjR_->setAxisTitle("number of clusters", 2);
00267
00268 sprintf(histo, "EECLT BC number projection phi EE +");
00269 meBCNumFwdMapProjPhi_ = dqmStore_->book1D(histo, histo, 50, -M_PI, M_PI);
00270 meBCNumFwdMapProjPhi_->setAxisTitle("phi", 1);
00271 meBCNumFwdMapProjPhi_->setAxisTitle("number of clusters", 2);
00272
00273 sprintf(histo, "EECLT BC ET projection R EE +");
00274 meBCETFwdMapProjR_ = dqmStore_->bookProfile(histo, histo, 20, 0., 150., 100, 0., 500., "s");
00275 meBCETFwdMapProjR_->setAxisTitle("r", 1);
00276 meBCETFwdMapProjR_->setAxisTitle("transverse energy (GeV)", 2);
00277
00278 sprintf(histo, "EECLT BC ET projection phi EE +");
00279 meBCETFwdMapProjPhi_ = dqmStore_->bookProfile(histo, histo, 50, -M_PI, M_PI, 100, 0., 500., "s");
00280 meBCETFwdMapProjPhi_->setAxisTitle("phi", 1);
00281 meBCETFwdMapProjPhi_->setAxisTitle("transverse energy (GeV)", 2);
00282
00283 sprintf(histo, "EECLT BC size projection R EE +");
00284 meBCSizFwdMapProjR_ = dqmStore_->bookProfile(histo, histo, 20, 0., 150., 100, 0., 100., "s");
00285 meBCSizFwdMapProjR_->setAxisTitle("r", 1);
00286 meBCSizFwdMapProjR_->setAxisTitle("cluster size", 2);
00287
00288 sprintf(histo, "EECLT BC size projection phi EE +");
00289 meBCSizFwdMapProjPhi_ = dqmStore_->bookProfile(histo, histo, 50, -M_PI, M_PI, 100, 0., 100., "s");
00290 meBCSizFwdMapProjPhi_->setAxisTitle("phi", 1);
00291 meBCSizFwdMapProjPhi_->setAxisTitle("cluster size", 2);
00292
00293 sprintf(histo, "EECLT BC energy map EE -");
00294 meBCEneBwdMap_ = dqmStore_->bookProfile2D(histo, histo, 20, -150., 150., 20, -150., 150., 100, 0., 500., "s");
00295 meBCEneBwdMap_->setAxisTitle("x", 1);
00296 meBCEneBwdMap_->setAxisTitle("y", 2);
00297
00298 sprintf(histo, "EECLT BC number map EE -");
00299 meBCNumBwdMap_ = dqmStore_->book2D(histo, histo, 20, -150., 150., 20, -150., 150.);
00300 meBCNumBwdMap_->setAxisTitle("x", 1);
00301 meBCNumBwdMap_->setAxisTitle("y", 2);
00302
00303 sprintf(histo, "EECLT BC ET map EE -");
00304 meBCETBwdMap_ = dqmStore_->bookProfile2D(histo, histo, 20, -150., 150., 20, -150., 150., 100, 0., 500., "s");
00305 meBCETBwdMap_->setAxisTitle("x", 1);
00306 meBCETBwdMap_->setAxisTitle("y", 2);
00307
00308 sprintf(histo, "EECLT BC size map EE -");
00309 meBCSizBwdMap_ = dqmStore_->bookProfile2D(histo, histo, 20, -150., 150., 20, -150., 150., 100, 0., 100., "s");
00310 meBCSizBwdMap_->setAxisTitle("x", 1);
00311 meBCSizBwdMap_->setAxisTitle("y", 2);
00312
00313 sprintf(histo, "EECLT BC energy projection R EE -");
00314 meBCEneBwdMapProjR_ = dqmStore_->bookProfile(histo, histo, 20, 0., 150., 100, 0., 500., "s");
00315 meBCEneBwdMapProjR_->setAxisTitle("r", 1);
00316 meBCEneBwdMapProjR_->setAxisTitle("energy (GeV)", 2);
00317
00318 sprintf(histo, "EECLT BC energy projection phi EE -");
00319 meBCEneBwdMapProjPhi_ = dqmStore_->bookProfile(histo, histo, 50, -M_PI, M_PI, 100, 0., 500., "s");
00320 meBCEneBwdMapProjPhi_->setAxisTitle("phi", 1);
00321 meBCEneBwdMapProjPhi_->setAxisTitle("energy (GeV)", 2);
00322
00323 sprintf(histo, "EECLT BC number projection R EE -");
00324 meBCNumBwdMapProjR_ = dqmStore_->book1D(histo, histo, 20, 0., 150.);
00325 meBCNumBwdMapProjR_->setAxisTitle("r", 1);
00326 meBCNumBwdMapProjR_->setAxisTitle("number of clusters", 2);
00327
00328 sprintf(histo, "EECLT BC number projection phi EE -");
00329 meBCNumBwdMapProjPhi_ = dqmStore_->book1D(histo, histo, 50, -M_PI, M_PI);
00330 meBCNumBwdMapProjPhi_->setAxisTitle("phi", 1);
00331 meBCNumBwdMapProjPhi_->setAxisTitle("number of clusters", 2);
00332
00333 sprintf(histo, "EECLT BC ET projection R EE -");
00334 meBCETBwdMapProjR_ = dqmStore_->bookProfile(histo, histo, 20, 0., 150., 100, 0., 500., "s");
00335 meBCETBwdMapProjR_->setAxisTitle("r", 1);
00336 meBCETBwdMapProjR_->setAxisTitle("transverse energy (GeV)", 2);
00337
00338 sprintf(histo, "EECLT BC ET projection phi EE -");
00339 meBCETBwdMapProjPhi_ = dqmStore_->bookProfile(histo, histo, 50, -M_PI, M_PI, 100, 0., 500., "s");
00340 meBCETBwdMapProjPhi_->setAxisTitle("phi", 1);
00341 meBCETBwdMapProjPhi_->setAxisTitle("transverse energy (GeV)", 2);
00342
00343 sprintf(histo, "EECLT BC size projection R EE -");
00344 meBCSizBwdMapProjR_ = dqmStore_->bookProfile(histo, histo, 20, 0., 150., 100, 0., 100., "s");
00345 meBCSizBwdMapProjR_->setAxisTitle("r", 1);
00346 meBCSizBwdMapProjR_->setAxisTitle("cluster size", 2);
00347
00348 sprintf(histo, "EECLT BC size projection phi EE -");
00349 meBCSizBwdMapProjPhi_ = dqmStore_->bookProfile(histo, histo, 50, -M_PI, M_PI, 100, 0., 100., "s");
00350 meBCSizBwdMapProjPhi_->setAxisTitle("phi", 1);
00351 meBCSizBwdMapProjPhi_->setAxisTitle("cluster size", 2);
00352
00353 sprintf(histo, "EECLT SC energy");
00354 meSCEne_ = dqmStore_->book1D(histo, histo, 100, 0., 150.);
00355 meSCEne_->setAxisTitle("energy (GeV)", 1);
00356
00357 sprintf(histo, "EECLT SC number");
00358 meSCNum_ = dqmStore_->book1D(histo, histo, 50, 0., 50.);
00359 meSCNum_->setAxisTitle("number of clusters", 1);
00360
00361 sprintf(histo, "EECLT SC size");
00362 meSCSiz_ = dqmStore_->book1D(histo, histo, 50, 0., 50.);
00363 meSCSiz_->setAxisTitle("cluster size", 1);
00364
00365 sprintf(histo, "EECLT s1s9");
00366 mes1s9_ = dqmStore_->book1D(histo, histo, 50, 0., 1.5);
00367 mes1s9_->setAxisTitle("s1/s9", 1);
00368
00369 sprintf(histo, "EECLT s9s25");
00370 mes9s25_ = dqmStore_->book1D(histo, histo, 75, 0., 1.5);
00371 mes9s25_->setAxisTitle("s9/s25", 1);
00372
00373 sprintf(histo, "EECLT dicluster invariant mass Pi0");
00374 meInvMassPi0_ = dqmStore_->book1D(histo, histo, 50, 0., 0.300);
00375 meInvMassPi0_->setAxisTitle("mass (GeV)", 1);
00376
00377 sprintf(histo, "EECLT dicluster invariant mass JPsi");
00378 meInvMassJPsi_ = dqmStore_->book1D(histo, histo, 50, 2.9, 3.3);
00379 meInvMassJPsi_->setAxisTitle("mass (GeV)", 1);
00380
00381 sprintf(histo, "EECLT dicluster invariant mass Z0");
00382 meInvMassZ0_ = dqmStore_->book1D(histo, histo, 50, 40, 110);
00383 meInvMassZ0_->setAxisTitle("mass (GeV)", 1);
00384
00385 sprintf(histo, "EECLT dicluster invariant mass high");
00386 meInvMassHigh_ = dqmStore_->book1D(histo, histo, 500, 110, 3000);
00387 meInvMassHigh_->setAxisTitle("mass (GeV)", 1);
00388
00389 }
00390
00391 }
00392
00393 void EEClusterTask::cleanup(void){
00394
00395 if ( ! init_ ) return;
00396
00397 if ( dqmStore_ ) {
00398 dqmStore_->setCurrentFolder(prefixME_ + "/EEClusterTask");
00399
00400 if ( meBCEne_ ) dqmStore_->removeElement( meBCEne_->getName() );
00401 meBCEne_ = 0;
00402
00403 if ( meBCNum_ ) dqmStore_->removeElement( meBCNum_->getName() );
00404 meBCNum_ = 0;
00405
00406 if ( meBCSiz_ ) dqmStore_->removeElement( meBCSiz_->getName() );
00407 meBCSiz_ = 0;
00408
00409 if ( meBCEneFwdMap_ ) dqmStore_->removeElement( meBCEneFwdMap_->getName() );
00410 meBCEneFwdMap_ = 0;
00411
00412 if ( meBCNumFwdMap_ ) dqmStore_->removeElement( meBCNumFwdMap_->getName() );
00413 meBCNumFwdMap_ = 0;
00414
00415 if ( meBCETFwdMap_ ) dqmStore_->removeElement( meBCETFwdMap_->getName() );
00416 meBCETFwdMap_ = 0;
00417
00418 if ( meBCSizFwdMap_ ) dqmStore_->removeElement( meBCSizFwdMap_->getName() );
00419 meBCSizFwdMap_ = 0;
00420
00421 if ( meBCEneFwdMapProjR_ ) dqmStore_->removeElement( meBCEneFwdMapProjR_->getName() );
00422 meBCEneFwdMapProjR_ = 0;
00423
00424 if ( meBCEneFwdMapProjPhi_ ) dqmStore_->removeElement( meBCEneFwdMapProjPhi_->getName() );
00425 meBCEneFwdMapProjPhi_ = 0;
00426
00427 if ( meBCNumFwdMapProjR_ ) dqmStore_->removeElement( meBCNumFwdMapProjR_->getName() );
00428 meBCNumFwdMapProjR_ = 0;
00429
00430 if ( meBCNumFwdMapProjPhi_ ) dqmStore_->removeElement( meBCNumFwdMapProjPhi_->getName() );
00431 meBCNumFwdMapProjPhi_ = 0;
00432
00433 if ( meBCETFwdMapProjR_ ) dqmStore_->removeElement( meBCETFwdMapProjR_->getName() );
00434 meBCETFwdMapProjR_ = 0;
00435
00436 if ( meBCETFwdMapProjPhi_ ) dqmStore_->removeElement( meBCETFwdMapProjPhi_->getName() );
00437 meBCETFwdMapProjPhi_ = 0;
00438
00439 if ( meBCSizFwdMapProjR_ ) dqmStore_->removeElement( meBCSizFwdMapProjR_->getName() );
00440 meBCSizFwdMapProjR_ = 0;
00441
00442 if ( meBCSizFwdMapProjPhi_ ) dqmStore_->removeElement( meBCSizFwdMapProjPhi_->getName() );
00443 meBCSizFwdMapProjPhi_ = 0;
00444
00445 if ( meBCEneBwdMap_ ) dqmStore_->removeElement( meBCEneBwdMap_->getName() );
00446 meBCEneBwdMap_ = 0;
00447
00448 if ( meBCNumBwdMap_ ) dqmStore_->removeElement( meBCNumBwdMap_->getName() );
00449 meBCNumBwdMap_ = 0;
00450
00451 if ( meBCETBwdMap_ ) dqmStore_->removeElement( meBCETBwdMap_->getName() );
00452 meBCETBwdMap_ = 0;
00453
00454 if ( meBCSizBwdMap_ ) dqmStore_->removeElement( meBCSizBwdMap_->getName() );
00455 meBCSizBwdMap_ = 0;
00456
00457 if ( meBCEneBwdMapProjR_ ) dqmStore_->removeElement( meBCEneBwdMapProjR_->getName() );
00458 meBCEneBwdMapProjR_ = 0;
00459
00460 if ( meBCEneBwdMapProjPhi_ ) dqmStore_->removeElement( meBCEneBwdMapProjPhi_->getName() );
00461 meBCEneBwdMapProjPhi_ = 0;
00462
00463 if ( meBCNumBwdMapProjR_ ) dqmStore_->removeElement( meBCNumBwdMapProjR_->getName() );
00464 meBCNumBwdMapProjR_ = 0;
00465
00466 if ( meBCNumBwdMapProjPhi_ ) dqmStore_->removeElement( meBCNumBwdMapProjPhi_->getName() );
00467 meBCNumBwdMapProjPhi_ = 0;
00468
00469 if ( meBCETBwdMapProjR_ ) dqmStore_->removeElement( meBCETBwdMapProjR_->getName() );
00470 meBCETBwdMapProjR_ = 0;
00471
00472 if ( meBCETBwdMapProjPhi_ ) dqmStore_->removeElement( meBCETBwdMapProjPhi_->getName() );
00473 meBCETBwdMapProjPhi_ = 0;
00474
00475 if ( meBCSizBwdMapProjR_ ) dqmStore_->removeElement( meBCSizBwdMapProjR_->getName() );
00476 meBCSizBwdMapProjR_ = 0;
00477
00478 if ( meBCSizBwdMapProjPhi_ ) dqmStore_->removeElement( meBCSizBwdMapProjPhi_->getName() );
00479 meBCSizBwdMapProjPhi_ = 0;
00480
00481 if ( meSCEne_ ) dqmStore_->removeElement( meSCEne_->getName() );
00482 meSCEne_ = 0;
00483
00484 if ( meSCNum_ ) dqmStore_->removeElement( meSCNum_->getName() );
00485 meSCNum_ = 0;
00486
00487 if ( meSCSiz_ ) dqmStore_->removeElement( meSCSiz_->getName() );
00488 meSCSiz_ = 0;
00489
00490 if ( mes1s9_ ) dqmStore_->removeElement( mes1s9_->getName() );
00491 mes1s9_ = 0;
00492
00493 if ( mes9s25_ ) dqmStore_->removeElement( mes9s25_->getName() );
00494 mes9s25_ = 0;
00495
00496 if ( meInvMassPi0_ ) dqmStore_->removeElement( meInvMassPi0_->getName() );
00497 meInvMassPi0_ = 0;
00498
00499 if ( meInvMassJPsi_ ) dqmStore_->removeElement( meInvMassJPsi_->getName() );
00500 meInvMassJPsi_ = 0;
00501
00502 if ( meInvMassZ0_ ) dqmStore_->removeElement( meInvMassZ0_->getName() );
00503 meInvMassZ0_ = 0;
00504
00505 if ( meInvMassHigh_ ) dqmStore_->removeElement( meInvMassHigh_->getName() );
00506 meInvMassHigh_ = 0;
00507
00508 }
00509
00510 init_ = false;
00511
00512 }
00513
00514 void EEClusterTask::endJob(void){
00515
00516 LogInfo("EEClusterTask") << "analyzed " << ievt_ << " events";
00517
00518 if ( enableCleanup_ ) this->cleanup();
00519
00520 }
00521
00522 void EEClusterTask::analyze(const Event& e, const EventSetup& c){
00523
00524 bool enable = false;
00525
00526 Handle<EcalRawDataCollection> dcchs;
00527
00528 if ( e.getByLabel(EcalRawDataCollection_, dcchs) ) {
00529
00530 for ( EcalRawDataCollection::const_iterator dcchItr = dcchs->begin(); dcchItr != dcchs->end(); ++dcchItr ) {
00531
00532 if ( Numbers::subDet( *dcchItr ) != EcalEndcap ) continue;
00533
00534 if ( dcchItr->getRunType() == EcalDCCHeaderBlock::BEAMH4 ||
00535 dcchItr->getRunType() == EcalDCCHeaderBlock::BEAMH2 ) enable = true;
00536
00537 if ( dcchItr->getRunType() == EcalDCCHeaderBlock::COSMIC ||
00538 dcchItr->getRunType() == EcalDCCHeaderBlock::MTCC ||
00539 dcchItr->getRunType() == EcalDCCHeaderBlock::COSMICS_GLOBAL ||
00540 dcchItr->getRunType() == EcalDCCHeaderBlock::PHYSICS_GLOBAL ||
00541 dcchItr->getRunType() == EcalDCCHeaderBlock::COSMICS_LOCAL ||
00542 dcchItr->getRunType() == EcalDCCHeaderBlock::PHYSICS_LOCAL ) enable = true;
00543
00544 break;
00545
00546 }
00547
00548 } else {
00549
00550 enable = true;
00551 LogWarning("EEClusterTask") << EcalRawDataCollection_ << " not available";
00552
00553 }
00554
00555 if ( ! enable ) return;
00556
00557 if ( ! init_ ) this->setup();
00558
00559 ievt_++;
00560
00561
00562
00563 Handle<BasicClusterCollection> pBasicClusters;
00564
00565 if ( e.getByLabel(BasicClusterCollection_, pBasicClusters) ) {
00566
00567 int nbcc = pBasicClusters->size();
00568 if (nbcc>0) meBCNum_->Fill(float(nbcc));
00569
00570 for ( BasicClusterCollection::const_iterator bCluster = pBasicClusters->begin(); bCluster != pBasicClusters->end(); ++bCluster ) {
00571
00572 meBCEne_->Fill(bCluster->energy());
00573 meBCSiz_->Fill(float(bCluster->getHitsByDetId().size()));
00574
00575 if ( bCluster->eta() > 0 ) {
00576 meBCEneFwdMap_->Fill(bCluster->x(), bCluster->y(), bCluster->energy());
00577 meBCEneFwdMapProjR_->Fill( sqrt(pow(bCluster->x(),2)+pow(bCluster->y(),2)), bCluster->energy() );
00578 meBCEneFwdMapProjPhi_->Fill( bCluster->phi(), bCluster->energy() );
00579
00580 meBCNumFwdMap_->Fill(bCluster->x(), bCluster->y());
00581 meBCNumFwdMapProjR_->Fill(sqrt(pow(bCluster->x(),2)+pow(bCluster->y(),2)));
00582 meBCNumFwdMapProjPhi_->Fill( bCluster->phi() );
00583
00584 meBCETFwdMap_->Fill(bCluster->x(), bCluster->y(), bCluster->energy() * sin(bCluster->position().theta()) );
00585 meBCETFwdMapProjR_->Fill( sqrt(pow(bCluster->x(),2)+pow(bCluster->y(),2)), bCluster->energy() * sin(bCluster->position().theta()) );
00586 meBCETFwdMapProjPhi_->Fill( bCluster->phi(), bCluster->energy() * sin(bCluster->position().theta()) );
00587
00588 meBCSizFwdMap_->Fill(bCluster->x(), bCluster->y(), float(bCluster->getHitsByDetId().size()) );
00589 meBCSizFwdMapProjR_->Fill( sqrt(pow(bCluster->x(),2)+pow(bCluster->y(),2)), float(bCluster->getHitsByDetId().size()) );
00590 meBCSizFwdMapProjPhi_->Fill( bCluster->phi(), float(bCluster->getHitsByDetId().size()) );
00591 } else {
00592 meBCEneBwdMap_->Fill(bCluster->x(), bCluster->y(), bCluster->energy());
00593 meBCEneBwdMapProjR_->Fill( sqrt(pow(bCluster->x(),2)+pow(bCluster->y(),2)), bCluster->energy() );
00594 meBCEneBwdMapProjPhi_->Fill( bCluster->phi(), bCluster->energy() );
00595
00596 meBCNumBwdMap_->Fill(bCluster->x(), bCluster->y());
00597 meBCNumBwdMapProjR_->Fill(sqrt(pow(bCluster->x(),2)+pow(bCluster->y(),2)));
00598 meBCNumBwdMapProjPhi_->Fill( bCluster->phi() );
00599
00600 meBCETBwdMap_->Fill(bCluster->x(), bCluster->y(), bCluster->energy() * sin(bCluster->position().theta()) );
00601 meBCETBwdMapProjR_->Fill( sqrt(pow(bCluster->x(),2)+pow(bCluster->y(),2)), bCluster->energy() * sin(bCluster->position().theta()) );
00602 meBCETBwdMapProjPhi_->Fill( bCluster->phi(), bCluster->energy() * sin(bCluster->position().theta()) );
00603
00604 meBCSizBwdMap_->Fill(bCluster->x(), bCluster->y(), float(bCluster->getHitsByDetId().size()) );
00605 meBCSizBwdMapProjR_->Fill( sqrt(pow(bCluster->x(),2)+pow(bCluster->y(),2)), float(bCluster->getHitsByDetId().size()) );
00606 meBCSizBwdMapProjPhi_->Fill( bCluster->phi(), float(bCluster->getHitsByDetId().size()) );
00607 }
00608
00609 }
00610
00611 } else {
00612
00613 LogWarning("EEClusterTask") << BasicClusterCollection_ << " not available";
00614
00615 }
00616
00617
00618
00619 Handle<SuperClusterCollection> pSuperClusters;
00620
00621 if ( e.getByLabel(SuperClusterCollection_, pSuperClusters) ) {
00622
00623 int nscc = pSuperClusters->size();
00624 if ( nscc > 0 ) meSCNum_->Fill(float(nscc));
00625
00626 TLorentzVector sc1_p(0,0,0,0);
00627 TLorentzVector sc2_p(0,0,0,0);
00628
00629 for ( SuperClusterCollection::const_iterator sCluster = pSuperClusters->begin(); sCluster != pSuperClusters->end(); sCluster++ ) {
00630
00631
00632 meSCEne_->Fill(sCluster->energy());
00633 meSCSiz_->Fill(float(sCluster->clustersSize()));
00634
00635
00636 edm::Handle< EcalRecHitCollection > pEERecHits;
00637 e.getByLabel( EcalRecHitCollection_, pEERecHits );
00638 if ( pEERecHits.isValid() ) {
00639 const EcalRecHitCollection *eeRecHits = pEERecHits.product();
00640
00641 edm::ESHandle<CaloTopology> pTopology;
00642 c.get<CaloTopologyRecord>().get(pTopology);
00643 if ( pTopology.isValid() ) {
00644 const CaloTopology *topology = pTopology.product();
00645
00646 BasicClusterRef theSeed = sCluster->seed();
00647 float eMax = EcalClusterTools::eMax( *theSeed, eeRecHits );
00648 float e3x3 = EcalClusterTools::e3x3( *theSeed, eeRecHits, topology );
00649 float e5x5 = EcalClusterTools::e5x5( *theSeed, eeRecHits, topology );
00650
00651 mes1s9_->Fill( eMax/e3x3 );
00652 mes9s25_->Fill( e3x3/e5x5 );
00653 }
00654 else {
00655 LogWarning("EEClusterTask") << "CaloTopology not valid";
00656 }
00657 }
00658 else {
00659 LogWarning("EEClusterTask") << EcalRecHitCollection_ << " not available";
00660 }
00661
00662
00663 if ( sCluster->energy() > sc1_p.Energy() ) {
00664 sc2_p=sc1_p;
00665 sc1_p.SetPtEtaPhiE(sCluster->energy()*sin(sCluster->position().theta()),
00666 sCluster->eta(), sCluster->phi(), sCluster->energy());
00667 } else if ( sCluster->energy() > sc2_p.Energy() ) {
00668 sc2_p.SetPtEtaPhiE(sCluster->energy()*sin(sCluster->position().theta()),
00669 sCluster->eta(), sCluster->phi(), sCluster->energy());
00670 }
00671
00672 }
00673
00674 if ( nscc >= 2) {
00675 TLorentzVector sum = sc1_p+sc2_p;
00676 float mass = sum.M();
00677 if ( mass < 0.3 ) {
00678 meInvMassPi0_->Fill( mass );
00679 } else if ( mass > 2.9 && mass < 3.3 ) {
00680 meInvMassJPsi_->Fill( mass );
00681 } else if ( mass > 40 && mass < 110 ) {
00682 meInvMassZ0_->Fill( mass );
00683 } else if ( mass > 110 ) {
00684 meInvMassHigh_->Fill( mass );
00685 }
00686 }
00687
00688 } else {
00689
00690 LogWarning("EEClusterTask") << SuperClusterCollection_ << " not available";
00691
00692 }
00693
00694 }