CMS 3D CMS Logo

EEClusterTask.cc

Go to the documentation of this file.
00001 /*
00002  * \file EEClusterTask.cc
00003  *
00004  * $Date: 2008/12/03 12:55:49 $
00005  * $Revision: 1.57 $
00006  * \author G. Della Ricca
00007  * \author E. Di Marco
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   // parameters...
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   // histograms...
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   // --- Endcap Basic Clusters ---
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   // --- Endcap Super Clusters ----
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       // energy, size
00632       meSCEne_->Fill(sCluster->energy());
00633       meSCSiz_->Fill(float(sCluster->clustersSize()));
00634 
00635       // seed and shapes
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       // look for the two most energetic super clusters
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     // Get the invariant mass of the two most energetic super clusters
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 }

Generated on Tue Jun 9 17:32:52 2009 for CMSSW by  doxygen 1.5.4