00001 #include "DQMOffline/Hcal/interface/CaloTowersAnalyzer.h"
00002 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h"
00003 #include "DataFormats/HcalDetId/interface/HcalSubdetector.h"
00004 #include "DataFormats/EcalDetId/interface/EcalSubdetector.h"
00005 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
00006
00007 CaloTowersAnalyzer::CaloTowersAnalyzer(edm::ParameterSet const& conf):
00008 theCaloTowerCollectionLabel(conf.getUntrackedParameter<edm::InputTag>("CaloTowerCollectionLabel"))
00009 {
00010
00011 outputFile_ = conf.getUntrackedParameter<std::string>("outputFile", "myfile.root");
00012
00013 hcalselector_ = conf.getUntrackedParameter<std::string>("hcalselector", "all");
00014
00015 useAllHistos_ = conf.getUntrackedParameter<bool>("useAllHistos", false);
00016
00017 etaMin[0] = 0.;
00018 etaMax[0] = 1.4;
00019 etaMin[1] = 1.4;
00020 etaMax[1] = 2.9;
00021 etaMin[2] = 2.9;
00022 etaMax[2] = 5.2;
00023
00024 isub = 0;
00025 if(hcalselector_ == "HB") isub = 1;
00026 if(hcalselector_ == "HE") isub = 2;
00027 if(hcalselector_ == "HF") isub = 3;
00028
00029 if ( outputFile_.size() != 0 ) {
00030 edm::LogInfo("OutputInfo") << " Hcal RecHit Task histograms will be saved to '" << outputFile_.c_str() << "'";
00031 } else {
00032 edm::LogInfo("OutputInfo") << " Hcal RecHit Task histograms will NOT be saved";
00033 }
00034
00035 dbe_ = 0;
00036
00037 dbe_ = edm::Service<DQMStore>().operator->();
00038
00039
00040
00041 Char_t histo[100];
00042
00043 if ( dbe_ ) {
00044 dbe_->setCurrentFolder("CaloTowersD/CaloTowersTask");
00045 }
00046
00047
00048
00049
00050 sprintf (histo, "Ntowers_per_event_vs_ieta" );
00051 Ntowers_vs_ieta = dbe_->book1D(histo, histo, 82, -41., 41.);
00052
00053 sprintf (histo, "CaloTowersTask_map_Nentries" );
00054 mapEnergy_N = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00055
00056
00057
00058
00059
00060 if (useAllHistos_){
00061 sprintf (histo, "emean_vs_ieta_E" );
00062 emean_vs_ieta_E = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000., "s");
00063 sprintf (histo, "emean_vs_ieta_H" );
00064 emean_vs_ieta_H = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000., "s");
00065 sprintf (histo, "emean_vs_ieta_EH" );
00066 emean_vs_ieta_EH = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000., "s");
00067 }
00068
00069 sprintf (histo, "emean_vs_ieta_E1" );
00070 emean_vs_ieta_E1 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000., "s");
00071 sprintf (histo, "emean_vs_ieta_H1" );
00072 emean_vs_ieta_H1 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000., "s");
00073 sprintf (histo, "emean_vs_ieta_EH1" );
00074 emean_vs_ieta_EH1 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000., "s");
00075
00076
00077
00078 if (useAllHistos_){
00079 sprintf (histo, "CaloTowersTask_map_energy_E" );
00080 mapEnergy_E = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00081 sprintf (histo, "CaloTowersTask_map_energy_H");
00082 mapEnergy_H = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00083 sprintf (histo, "CaloTowersTask_map_energy_EH" );
00084 mapEnergy_EH = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00085 }
00086
00087
00088
00089 sprintf (histo, "number_of_bad_cells_Ecal_EB");
00090 numBadCellsEcal_EB = dbe_->book1D(histo, histo, 26, 0, 26);
00091 sprintf (histo, "number_of_bad_cells_Ecal_EE");
00092 numBadCellsEcal_EE = dbe_->book1D(histo, histo, 26, 0, 26);
00093 sprintf (histo, "number_of_recovered_cells_Ecal_EB");
00094 numRcvCellsEcal_EB = dbe_->book1D(histo, histo, 26, 0, 26);
00095 sprintf (histo, "number_of_recovered_cells_Ecal_EE");
00096 numRcvCellsEcal_EE = dbe_->book1D(histo, histo, 26, 0, 26);
00097 sprintf (histo, "number_of_problematic_cells_Ecal_EB");
00098 numPrbCellsEcal_EB = dbe_->book1D(histo, histo, 26, 0, 26);
00099 sprintf (histo, "number_of_problematic_cells_Ecal_EE");
00100 numPrbCellsEcal_EE = dbe_->book1D(histo, histo, 26, 0, 26);
00101
00102
00103 sprintf (histo, "CaloTowersTask_map_occupancy" );
00104 occupancy_map = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00105
00106 sprintf (histo, "CaloTowersTask_occupancy_vs_ieta" );
00107 occupancy_vs_ieta = dbe_->book1D(histo, histo, 82, -41, 41);
00108
00109 if( isub == 1 || isub == 0) {
00110
00111 sprintf (histo, "number_of_bad_cells_Hcal_HB");
00112 numBadCellsHcal_HB = dbe_->book1D(histo, histo, 5, 0, 5);
00113 sprintf (histo, "number_of_recovered_cells_Hcal_HB");
00114 numRcvCellsHcal_HB = dbe_->book1D(histo, histo, 5, 0, 5);
00115 sprintf (histo, "number_of_problematic_cells_Hcal_HB");
00116 numPrbCellsHcal_HB = dbe_->book1D(histo, histo, 5, 0, 5);
00117
00118
00119
00120 sprintf (histo, "CaloTowersTask_energy_HCAL_HB" ) ;
00121 meEnergyHcal_HB = dbe_->book1D(histo, histo, 4100, -200, 8000);
00122
00123 sprintf (histo, "CaloTowersTask_energy_ECAL_HB" ) ;
00124 meEnergyEcal_HB = dbe_->book1D(histo, histo, 3100, -200, 6000);
00125
00126 sprintf (histo, "CaloTowersTask_number_of_fired_towers_HB" ) ;
00127 meNumFiredTowers_HB = dbe_->book1D(histo, histo, 1000, 0, 2000);
00128
00129 sprintf (histo, "CaloTowersTask_MET_HB" ) ;
00130 MET_HB = dbe_->book1D(histo, histo, 3000, 0. , 3000. ) ;
00131
00132 sprintf (histo, "CaloTowersTask_SET_HB" ) ;
00133 SET_HB = dbe_->book1D(histo, histo, 8000, 0. , 8000. ) ;
00134
00135
00136
00137
00138 sprintf (histo, "CaloTowersTask_EM_Timing_HB" ) ;
00139 emTiming_HB = dbe_->book1D(histo, histo, 110, -120., 100. ) ;
00140
00141 sprintf (histo, "CaloTowersTask_HAD_Timing_HB" ) ;
00142 hadTiming_HB = dbe_->book1D(histo, histo, 70, -48., 92. ) ;
00143
00144
00145
00146 sprintf (histo, "CaloTowersTask_EM_Energy_Timing_Low_HB" ) ;
00147 emEnergyTiming_Low_HB = dbe_->book2D(histo, histo, 40, 0. , 40., 110, -120., 100. ) ;
00148
00149 sprintf (histo, "CaloTowersTask_EM_Energy_Timing_HB" ) ;
00150 emEnergyTiming_HB = dbe_->book2D(histo, histo, 200, 0. , 400., 110, -120., 100. ) ;
00151
00152 sprintf (histo, "CaloTowersTask_EM_Energy_Timing_High_HB" ) ;
00153 emEnergyTiming_High_HB = dbe_->book2D(histo, histo, 200, 0. , 3000., 110, -120., 100. ) ;
00154
00155 sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_Low_HB" ) ;
00156 emEnergyTiming_profile_Low_HB = dbe_->bookProfile(histo, histo, 40, 0. , 40., 110, -120., 100. ) ;
00157
00158 sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_HB" ) ;
00159 emEnergyTiming_profile_HB = dbe_->bookProfile(histo, histo, 200, 0. , 400., 110, -120., 100. ) ;
00160
00161 sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_High_HB" ) ;
00162 emEnergyTiming_profile_High_HB = dbe_->bookProfile(histo, histo, 200, 0. , 3000., 110, -120., 100. ) ;
00163
00164
00165 sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_Low_HB" ) ;
00166 hadEnergyTiming_Low_HB = dbe_->book2D(histo, histo, 40, 0. , 40., 70, -48., 92. ) ;
00167
00168 sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_HB" ) ;
00169 hadEnergyTiming_HB = dbe_->book2D(histo, histo, 100, 0. , 200., 70, -48., 92. ) ;
00170
00171 sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_High_HB" ) ;
00172 hadEnergyTiming_High_HB = dbe_->book2D(histo, histo, 300, 0. , 3000., 70, -48., 92. ) ;
00173
00174 sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_Low_HB" ) ;
00175 hadEnergyTiming_profile_Low_HB = dbe_->bookProfile(histo, histo, 40, 0. , 40., 70, -48., 92. ) ;
00176
00177 sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_HB" ) ;
00178 hadEnergyTiming_profile_HB = dbe_->bookProfile(histo, histo, 100, 0. , 200., 70, -48., 92. ) ;
00179
00180 sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_High_HB" ) ;
00181 hadEnergyTiming_profile_High_HB = dbe_->bookProfile(histo, histo, 300, 0. , 3000., 70, -48., 92. ) ;
00182
00183
00184
00185 if (useAllHistos_){
00186 sprintf (histo, "CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HB") ;
00187 meEnergyHcalvsEcal_HB = dbe_->book2D(histo, histo, 500, 0., 500., 500, 0., 500.);
00188
00189 sprintf (histo, "CaloTowersTask_energy_OUTER_HB" ) ;
00190 meEnergyHO_HB = dbe_->book1D(histo, histo, 1640, -200, 8000);
00191
00192 sprintf (histo, "CaloTowersTask_energy_of_ECAL_component_of_tower_HB" ) ;
00193 meEnergyEcalTower_HB = dbe_->book1D(histo, histo, 440, -200, 2000);
00194
00195 sprintf (histo, "CaloTowersTask_energy_of_HCAL_component_of_tower_HB" ) ;
00196 meEnergyHcalTower_HB = dbe_->book1D(histo, histo, 440 , -200 , 2000);
00197
00198 sprintf (histo, "CaloTowersTask_energy_HcalPlusEcalPlusHO_HB" ) ;
00199 meTotEnergy_HB = dbe_->book1D(histo, histo,400, 0., 2000.) ;
00200
00201 sprintf (histo, "CaloTowersTask_map_energy_HB" );
00202 mapEnergy_HB = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00203 sprintf (histo, "CaloTowersTask_map_energy_HCAL_HB");
00204 mapEnergyHcal_HB = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00205 sprintf (histo, "CaloTowersTask_map_energy_ECAL_HB" );
00206 mapEnergyEcal_HB = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00207
00208 sprintf (histo, "CaloTowersTask_phi_MET_HB" ) ;
00209 phiMET_HB = dbe_->book1D(histo, histo, 72, -3.1415926535898, 3.1415926535898 ) ;
00210 }
00211 }
00212
00213 if( isub == 2 || isub == 0) {
00214
00215 sprintf (histo, "number_of_bad_cells_Hcal_HE");
00216 numBadCellsHcal_HE = dbe_->book1D(histo, histo, 5, 0, 5);
00217 sprintf (histo, "number_of_recovered_cells_Hcal_HE");
00218 numRcvCellsHcal_HE = dbe_->book1D(histo, histo, 5, 0, 5);
00219 sprintf (histo, "number_of_problematic_cells_Hcal_HE");
00220 numPrbCellsHcal_HE = dbe_->book1D(histo, histo, 5, 0, 5);
00221
00222
00223
00224 sprintf (histo, "CaloTowersTask_energy_HCAL_HE" ) ;
00225 meEnergyHcal_HE = dbe_->book1D(histo, histo, 440, -200, 2000);
00226
00227 sprintf (histo, "CaloTowersTask_energy_ECAL_HE" ) ;
00228 meEnergyEcal_HE = dbe_->book1D(histo, histo, 440, -200, 2000);
00229
00230 sprintf (histo, "CaloTowersTask_number_of_fired_towers_HE" ) ;
00231 meNumFiredTowers_HE = dbe_->book1D(histo, histo, 1000, 0, 2000);
00232
00233 sprintf (histo, "CaloTowersTask_MET_HE" ) ;
00234 MET_HE = dbe_->book1D(histo, histo, 1000, 0. , 1000. ) ;
00235
00236 sprintf (histo, "CaloTowersTask_SET_HE" ) ;
00237 SET_HE = dbe_->book1D(histo, histo, 2000, 0. , 2000. ) ;
00238
00239
00240
00241
00242 sprintf (histo, "CaloTowersTask_EM_Timing_HE" ) ;
00243 emTiming_HE = dbe_->book1D(histo, histo, 110, -120., 100. ) ;
00244
00245 sprintf (histo, "CaloTowersTask_HAD_Timing_HE" ) ;
00246 hadTiming_HE = dbe_->book1D(histo, histo, 70, -48., 92. ) ;
00247
00248
00249
00250 sprintf (histo, "CaloTowersTask_EM_Energy_Timing_Low_HE" ) ;
00251 emEnergyTiming_Low_HE = dbe_->book2D(histo, histo, 160, 0. , 160., 110, -120., 100. ) ;
00252
00253 sprintf (histo, "CaloTowersTask_EM_Energy_Timing_HE" ) ;
00254 emEnergyTiming_HE = dbe_->book2D(histo, histo, 200, 0. , 800., 110, -120., 100. ) ;
00255
00256 sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_Low_HE" ) ;
00257 emEnergyTiming_profile_Low_HE = dbe_->bookProfile(histo, histo, 160, 0. , 160., 110, -120., 100. ) ;
00258
00259 sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_HE" ) ;
00260 emEnergyTiming_profile_HE = dbe_->bookProfile(histo, histo, 200, 0. , 800., 110, -120., 100. ) ;
00261
00262
00263 sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_Low_HE" ) ;
00264 hadEnergyTiming_Low_HE = dbe_->book2D(histo, histo, 160, 0. , 160., 70, -48., 92. ) ;
00265
00266 sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_HE" ) ;
00267 hadEnergyTiming_HE = dbe_->book2D(histo, histo, 200, 0. , 800., 70, -48., 92. ) ;
00268
00269 sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_Low_HE" ) ;
00270 hadEnergyTiming_profile_Low_HE = dbe_->bookProfile(histo, histo, 160, 0. , 160., 70, -48., 92. ) ;
00271
00272 sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_HE" ) ;
00273 hadEnergyTiming_profile_HE = dbe_->bookProfile(histo, histo, 200, 0. , 800., 70, -48., 92. ) ;
00274
00275
00276
00277 if (useAllHistos_){
00278 sprintf (histo, "CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HE") ;
00279 meEnergyHcalvsEcal_HE = dbe_->book2D(histo, histo, 500, 0., 500., 500, 0., 500.);
00280
00281 sprintf (histo, "CaloTowersTask_energy_OUTER_HE" ) ;
00282 meEnergyHO_HE = dbe_->book1D(histo, histo, 440, -200, 2000);
00283
00284 sprintf (histo, "CaloTowersTask_energy_of_ECAL_component_of_tower_HE" ) ;
00285 meEnergyEcalTower_HE = dbe_->book1D(histo, histo, 1100, -200, 2000);
00286
00287 sprintf (histo, "CaloTowersTask_energy_of_HCAL_component_of_tower_HE" ) ;
00288 meEnergyHcalTower_HE = dbe_->book1D(histo, histo, 1100 , -200 , 2000);
00289
00290 sprintf (histo, "CaloTowersTask_energy_HcalPlusEcalPlusHO_HE" ) ;
00291 meTotEnergy_HE = dbe_->book1D(histo, histo,400, 0., 2000.) ;
00292
00293 sprintf (histo, "CaloTowersTask_map_energy_HE" );
00294 mapEnergy_HE = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00295 sprintf (histo, "CaloTowersTask_map_energy_HCAL_HE");
00296 mapEnergyHcal_HE = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00297 sprintf (histo, "CaloTowersTask_map_energy_ECAL_HE" );
00298 mapEnergyEcal_HE = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00299
00300 sprintf (histo, "CaloTowersTask_phi_MET_HE" ) ;
00301 phiMET_HE = dbe_->book1D(histo, histo, 72, -3.1415926535898, 3.1415926535898 ) ;
00302 }
00303 }
00304
00305
00306 if( isub == 3 || isub == 0) {
00307
00308 sprintf (histo, "number_of_bad_cells_Hcal_HF");
00309 numBadCellsHcal_HF = dbe_->book1D(histo, histo, 5, 0, 5);
00310 sprintf (histo, "number_of_recovered_cells_Hcal_HF");
00311 numRcvCellsHcal_HF = dbe_->book1D(histo, histo, 5, 0, 5);
00312 sprintf (histo, "number_of_problematic_cells_Hcal_HF");
00313 numPrbCellsHcal_HF = dbe_->book1D(histo, histo, 5, 0, 5);
00314
00315
00316
00317 sprintf (histo, "CaloTowersTask_energy_HCAL_HF" ) ;
00318 meEnergyHcal_HF = dbe_->book1D(histo, histo, 440, -200, 2000);
00319
00320 sprintf (histo, "CaloTowersTask_energy_ECAL_HF" ) ;
00321 meEnergyEcal_HF = dbe_->book1D(histo, histo, 440, -200, 2000);
00322
00323 sprintf (histo, "CaloTowersTask_number_of_fired_towers_HF" ) ;
00324 meNumFiredTowers_HF = dbe_->book1D(histo, histo, 1000, 0, 2000);
00325
00326 sprintf (histo, "CaloTowersTask_MET_HF" ) ;
00327 MET_HF = dbe_->book1D(histo, histo, 500, 0. , 500. ) ;
00328
00329 sprintf (histo, "CaloTowersTask_SET_HF" ) ;
00330 SET_HF = dbe_->book1D(histo, histo, 200, 0. , 200. ) ;
00331
00332
00333
00334
00335 sprintf (histo, "CaloTowersTask_EM_Timing_HF" ) ;
00336 emTiming_HF = dbe_->book1D(histo, histo, 110, -120., 100. ) ;
00337
00338 sprintf (histo, "CaloTowersTask_HAD_Timing_HF" ) ;
00339 hadTiming_HF = dbe_->book1D(histo, histo, 70, -48., 92. ) ;
00340
00341
00342 sprintf (histo, "CaloTowersTask_EM_Energy_Timing_HF" ) ;
00343 emEnergyTiming_HF = dbe_->book2D(histo, histo, 150, 0. , 300., 110, -120., 100. ) ;
00344
00345 sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_HF" ) ;
00346 emEnergyTiming_profile_HF = dbe_->bookProfile(histo, histo, 150, 0. , 300., 110, -120., 100. ) ;
00347
00348
00349 sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_Low_HF" ) ;
00350 hadEnergyTiming_Low_HF = dbe_->book2D(histo, histo, 40, 0. , 40., 70, -48., 92. ) ;
00351
00352 sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_HF" ) ;
00353 hadEnergyTiming_HF = dbe_->book2D(histo, histo, 200, 0. , 600., 70, -48., 92. ) ;
00354
00355 sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_Low_HF" ) ;
00356 hadEnergyTiming_profile_Low_HF = dbe_->bookProfile(histo, histo, 40, 0. , 40., 70, -48., 92. ) ;
00357
00358 sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_HF" ) ;
00359 hadEnergyTiming_profile_HF = dbe_->bookProfile(histo, histo, 200, 0. , 600., 70, -48., 92. ) ;
00360
00361
00362
00363 if (useAllHistos_){
00364 sprintf (histo, "CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HF") ;
00365 meEnergyHcalvsEcal_HF = dbe_->book2D(histo, histo, 500, 0., 500., 500, 0., 500.);
00366
00367 sprintf (histo, "CaloTowersTask_energy_OUTER_HF" ) ;
00368 meEnergyHO_HF = dbe_->book1D(histo, histo, 440, -200, 2000);
00369
00370 sprintf (histo, "CaloTowersTask_energy_of_ECAL_component_of_tower_HF" ) ;
00371 meEnergyEcalTower_HF = dbe_->book1D(histo, histo, 440, -200, 2000);
00372
00373 sprintf (histo, "CaloTowersTask_energy_of_HCAL_component_of_tower_HF" ) ;
00374 meEnergyHcalTower_HF = dbe_->book1D(histo, histo, 440 , -200 , 2000);
00375
00376 sprintf (histo, "CaloTowersTask_energy_HcalPlusEcalPlusHO_HF" ) ;
00377 meTotEnergy_HF = dbe_->book1D(histo, histo, 400, 0., 2000.) ;
00378
00379 sprintf (histo, "CaloTowersTask_map_energy_HF" );
00380 mapEnergy_HF = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00381 sprintf (histo, "CaloTowersTask_map_energy_HCAL_HF");
00382 mapEnergyHcal_HF = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00383 sprintf (histo, "CaloTowersTask_map_energy_ECAL_HF" );
00384 mapEnergyEcal_HF = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00385
00386 sprintf (histo, "CaloTowersTask_phi_MET_HF" ) ;
00387 phiMET_HF = dbe_->book1D(histo, histo, 72, -3.1415926535898, 3.1415926535898 ) ;
00388 }
00389 }
00390
00391 }
00392
00393
00394 void CaloTowersAnalyzer::beginRun() {}
00395
00396 void CaloTowersAnalyzer::endRun() {}
00397
00398 CaloTowersAnalyzer::~CaloTowersAnalyzer() {
00399
00400 }
00401
00402 void CaloTowersAnalyzer::endJob() {
00403 if ( outputFile_.size() != 0 && dbe_ ) dbe_->save(outputFile_);
00404 }
00405
00406 void CaloTowersAnalyzer::beginJob(){ nevent = 0; }
00407
00408 void CaloTowersAnalyzer::analyze(edm::Event const& event, edm::EventSetup const& c) {
00409
00410 nevent++;
00411
00412 edm::Handle<CaloTowerCollection> towers;
00413 event.getByLabel(theCaloTowerCollectionLabel,towers);
00414 CaloTowerCollection::const_iterator cal;
00415
00416 double met;
00417 double phimet;
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428 double sumEnergyHcal_HB = 0.;
00429 double sumEnergyEcal_HB = 0.;
00430 double sumEnergyHO_HB = 0.;
00431 Int_t numFiredTowers_HB = 0;
00432 double metx_HB = 0.;
00433 double mety_HB = 0.;
00434 double metz_HB = 0.;
00435 double sEt_HB = 0.;
00436
00437 double sumEnergyHcal_HE = 0.;
00438 double sumEnergyEcal_HE = 0.;
00439 double sumEnergyHO_HE = 0.;
00440 Int_t numFiredTowers_HE = 0;
00441 double metx_HE = 0.;
00442 double mety_HE = 0.;
00443 double metz_HE = 0.;
00444 double sEt_HE = 0.;
00445
00446 double sumEnergyHcal_HF = 0.;
00447 double sumEnergyEcal_HF = 0.;
00448 double sumEnergyHO_HF = 0.;
00449 Int_t numFiredTowers_HF = 0;
00450 double metx_HF = 0.;
00451 double mety_HF = 0.;
00452 double metz_HF = 0.;
00453 double sEt_HF = 0.;
00454
00455 for ( cal = towers->begin(); cal != towers->end(); ++cal ) {
00456
00457 double eE = cal->emEnergy();
00458 double eH = cal->hadEnergy();
00459 double eHO = cal->outerEnergy();
00460 double etaT = cal->eta();
00461
00462 double en = cal->energy();
00463 double etT = cal->et();
00464 double had_tm = cal->hcalTime();
00465 double em_tm = cal->ecalTime();
00466
00467 int numBadEcalCells = cal->numBadEcalCells();
00468 int numRcvEcalCells = cal->numRecoveredEcalCells();
00469 int numPrbEcalCells = cal->numProblematicEcalCells();
00470
00471 int numBadHcalCells = cal->numBadHcalCells();
00472 int numRcvHcalCells = cal->numRecoveredHcalCells();
00473 int numPrbHcalCells = cal->numProblematicHcalCells();
00474
00475 math::RhoEtaPhiVector mom(cal->et(), cal->eta(), cal->phi());
00476
00477
00478
00479 CaloTowerDetId idT = cal->id();
00480 int ieta = idT.ieta();
00481 if(ieta > 0) ieta -= 1;
00482 int iphi = idT.iphi();
00483
00484
00485
00486 std::vector<int> inEcals(2), inHcals(3);
00487 unsigned int constitSize = cal->constituentsSize();
00488 for(unsigned int ic=0; ic<constitSize; ic++){
00489 DetId detId = cal->constituent(ic);
00490 if(detId.det() == DetId::Ecal){
00491 if( detId.subdetId()==EcalBarrel ) inEcals[0] =1;
00492 else if( detId.subdetId()==EcalEndcap ) inEcals[1] =1;
00493 }
00494 if(detId.det() == DetId::Hcal){
00495 if( HcalDetId(detId).subdet()==HcalBarrel ) inHcals[0] =1;
00496 else if( HcalDetId(detId).subdet()==HcalEndcap ) inHcals[1] =1;
00497 else if( HcalDetId(detId).subdet()==HcalForward ) inHcals[2] =1;
00498 }
00499 }
00500
00501 if( inEcals[0] ) {
00502 numBadCellsEcal_EB->Fill(numBadEcalCells);
00503 numRcvCellsEcal_EB->Fill(numRcvEcalCells);
00504 numPrbCellsEcal_EB->Fill(numPrbEcalCells);
00505 }
00506 if( inEcals[1] ) {
00507 numBadCellsEcal_EE->Fill(numBadEcalCells);
00508 numRcvCellsEcal_EE->Fill(numRcvEcalCells);
00509 numPrbCellsEcal_EE->Fill(numPrbEcalCells);
00510 }
00511
00512
00513 Ntowers_vs_ieta -> Fill(double(ieta),1.);
00514 occupancy_map -> Fill(double(ieta),double(iphi));
00515
00516
00517 if((isub == 0 || isub == 1)
00518 && (fabs(etaT) < etaMax[0] && fabs(etaT) >= etaMin[0] )) {
00519
00520
00521 numBadCellsHcal_HB->Fill(numBadHcalCells);
00522 numRcvCellsHcal_HB->Fill(numRcvHcalCells);
00523 numPrbCellsHcal_HB->Fill(numPrbHcalCells);
00524
00525
00526 if (useAllHistos_){
00527 mapEnergy_HB -> Fill(double(ieta), double(iphi), en);
00528 mapEnergyHcal_HB -> Fill(double(ieta), double(iphi), eH);
00529 mapEnergyEcal_HB -> Fill(double(ieta), double(iphi), eE);
00530 }
00531
00532
00533
00534 sumEnergyHcal_HB += eH;
00535 sumEnergyEcal_HB += eE;
00536 sumEnergyHO_HB += eHO;
00537
00538 numFiredTowers_HB++;
00539
00540
00541 if (useAllHistos_){
00542 meEnergyEcalTower_HB->Fill(eE);
00543 meEnergyHcalTower_HB->Fill(eH);
00544 }
00545
00546
00547
00548 metx_HB += mom.x();
00549 mety_HB += mom.y();
00550 sEt_HB += etT;
00551
00552
00553 emTiming_HB->Fill(em_tm);
00554 hadTiming_HB->Fill(had_tm);
00555
00556 emEnergyTiming_Low_HB->Fill(eE, em_tm);
00557 emEnergyTiming_HB->Fill(eE, em_tm);
00558 emEnergyTiming_High_HB->Fill(eE, em_tm);
00559 emEnergyTiming_profile_Low_HB->Fill(eE, em_tm);
00560 emEnergyTiming_profile_HB->Fill(eE, em_tm);
00561 emEnergyTiming_profile_High_HB->Fill(eE, em_tm);
00562
00563 hadEnergyTiming_Low_HB->Fill(eH, had_tm);
00564 hadEnergyTiming_HB->Fill(eH, had_tm);
00565 hadEnergyTiming_High_HB->Fill(eH, had_tm);
00566 hadEnergyTiming_profile_Low_HB->Fill(eH, had_tm);
00567 hadEnergyTiming_profile_HB->Fill(eH, had_tm);
00568 hadEnergyTiming_profile_High_HB->Fill(eH, had_tm);
00569 }
00570
00571 if((isub == 0 || isub == 2)
00572 && (fabs(etaT) < etaMax[1] && fabs(etaT) >= etaMin[1] )) {
00573
00574
00575 numBadCellsHcal_HE->Fill(numBadHcalCells);
00576 numRcvCellsHcal_HE->Fill(numRcvHcalCells);
00577 numPrbCellsHcal_HE->Fill(numPrbHcalCells);
00578
00579
00580 if (useAllHistos_){
00581 mapEnergy_HE -> Fill(double(ieta), double(iphi), en);
00582 mapEnergyHcal_HE -> Fill(double(ieta), double(iphi), eH);
00583 mapEnergyEcal_HE -> Fill(double(ieta), double(iphi), eE);
00584 }
00585
00586
00587
00588 sumEnergyHcal_HE += eH;
00589 sumEnergyEcal_HE += eE;
00590 sumEnergyHO_HE += eHO;
00591
00592 numFiredTowers_HE++;
00593
00594
00595 if (useAllHistos_){
00596 meEnergyEcalTower_HE->Fill(eE);
00597 meEnergyHcalTower_HE->Fill(eH);
00598 }
00599
00600
00601 metx_HE += mom.x();
00602 mety_HE += mom.y();
00603 sEt_HE += etT;
00604
00605
00606 emTiming_HE->Fill(em_tm);
00607 hadTiming_HE->Fill(had_tm);
00608
00609 emEnergyTiming_Low_HE->Fill(eE, em_tm);
00610 emEnergyTiming_HE->Fill(eE, em_tm);
00611 emEnergyTiming_profile_Low_HE->Fill(eE, em_tm);
00612 emEnergyTiming_profile_HE->Fill(eE, em_tm);
00613
00614 hadEnergyTiming_Low_HE->Fill(eH, had_tm);
00615 hadEnergyTiming_HE->Fill(eH, had_tm);
00616 hadEnergyTiming_profile_Low_HE->Fill(eH, had_tm);
00617 hadEnergyTiming_profile_HE->Fill(eH, had_tm);
00618 }
00619
00620 if((isub == 0 || isub == 3)
00621 && (fabs(etaT) < etaMax[2] && fabs(etaT) >= etaMin[2] )) {
00622
00623
00624 numBadCellsHcal_HF->Fill(numBadHcalCells);
00625 numRcvCellsHcal_HF->Fill(numRcvHcalCells);
00626 numPrbCellsHcal_HF->Fill(numPrbHcalCells);
00627
00628
00629 if (useAllHistos_){
00630 mapEnergy_HF -> Fill(double(ieta), double(iphi), en);
00631 mapEnergyHcal_HF -> Fill(double(ieta), double(iphi), eH);
00632 mapEnergyEcal_HF -> Fill(double(ieta), double(iphi), eE);
00633 }
00634
00635
00636
00637 sumEnergyHcal_HF += eH;
00638 sumEnergyEcal_HF += eE;
00639 sumEnergyHO_HF += eHO;
00640
00641 numFiredTowers_HF++;
00642
00643
00644 if (useAllHistos_){
00645 meEnergyEcalTower_HF->Fill(eE);
00646 meEnergyHcalTower_HF->Fill(eH);
00647 }
00648
00649
00650 metx_HF += mom.x();
00651 mety_HF += mom.y();
00652 sEt_HF += etT;
00653
00654
00655 emTiming_HF->Fill(em_tm);
00656 hadTiming_HF->Fill(had_tm);
00657 emEnergyTiming_HF->Fill(eE, em_tm);
00658 emEnergyTiming_profile_HF->Fill(eE, em_tm);
00659
00660 hadEnergyTiming_Low_HF->Fill(eH, had_tm);
00661 hadEnergyTiming_HF->Fill(eH, had_tm);
00662 hadEnergyTiming_profile_Low_HF->Fill(eH, had_tm);
00663 hadEnergyTiming_profile_HF->Fill(eH, had_tm);
00664 }
00665
00666
00667
00668 }
00669
00670
00671
00672 if(isub == 0 || isub == 1) {
00673 met = sqrt(metx_HB*metx_HB + mety_HB*mety_HB);
00674 Vector metv(metx_HB,mety_HB,metz_HB);
00675 phimet = metv.phi();
00676
00677
00678 meEnergyHcal_HB-> Fill(sumEnergyHcal_HB);
00679 meEnergyEcal_HB-> Fill(sumEnergyEcal_HB);
00680 meNumFiredTowers_HB-> Fill(numFiredTowers_HB);
00681 MET_HB -> Fill (met);
00682 SET_HB -> Fill (sEt_HB);
00683
00684 if (useAllHistos_){
00685 meEnergyHcalvsEcal_HB->Fill(sumEnergyEcal_HB, sumEnergyHcal_HB);
00686 meEnergyHO_HB-> Fill(sumEnergyHO_HB);
00687 meTotEnergy_HB-> Fill(sumEnergyHcal_HB+sumEnergyEcal_HB
00688 +sumEnergyHO_HB);
00689 phiMET_HB -> Fill (phimet);
00690 }
00691 }
00692
00693
00694 if(isub == 0 || isub == 2) {
00695 met = sqrt(metx_HE*metx_HE + mety_HE*mety_HE);
00696 Vector metv(metx_HE,mety_HE,metz_HE);
00697 phimet = metv.phi();
00698
00699
00700 meEnergyHcal_HE-> Fill(sumEnergyHcal_HE);
00701 meEnergyEcal_HE-> Fill(sumEnergyEcal_HE);
00702 meNumFiredTowers_HE-> Fill(numFiredTowers_HE);
00703 MET_HE -> Fill (met);
00704 SET_HE -> Fill (sEt_HE);
00705
00706 if (useAllHistos_){
00707 meEnergyHcalvsEcal_HE->Fill(sumEnergyEcal_HE, sumEnergyHcal_HE);
00708 meEnergyHO_HE-> Fill(sumEnergyHO_HE);
00709 meTotEnergy_HE-> Fill(sumEnergyHcal_HE+sumEnergyEcal_HE
00710 +sumEnergyHO_HE);
00711 phiMET_HE -> Fill (phimet);
00712 }
00713 }
00714
00715 if(isub == 0 || isub == 3) {
00716 met = sqrt(metx_HF*metx_HF + mety_HF*mety_HF);
00717 Vector metv(metx_HF,mety_HF,metz_HF);
00718 phimet = metv.phi();
00719
00720
00721 meEnergyHcal_HF-> Fill(sumEnergyHcal_HF);
00722 meEnergyEcal_HF-> Fill(sumEnergyEcal_HF);
00723 meNumFiredTowers_HF-> Fill(numFiredTowers_HF);
00724 MET_HF -> Fill (met);
00725 SET_HF -> Fill (sEt_HF);
00726
00727 if (useAllHistos_){
00728 meEnergyHcalvsEcal_HF->Fill(sumEnergyEcal_HF, sumEnergyHcal_HF);
00729 meEnergyHO_HF-> Fill(sumEnergyHO_HF);
00730 meTotEnergy_HF-> Fill(sumEnergyHcal_HF+sumEnergyEcal_HF
00731 +sumEnergyHO_HF);
00732 phiMET_HF -> Fill (phimet);
00733 }
00734 }
00735
00736 }
00737
00738 double CaloTowersAnalyzer::dR(double eta1, double phi1, double eta2, double phi2) {
00739 double PI = 3.1415926535898;
00740 double deltaphi= phi1 - phi2;
00741 if( phi2 > phi1 ) { deltaphi= phi2 - phi1;}
00742 if(deltaphi > PI) { deltaphi = 2.*PI - deltaphi;}
00743 double deltaeta = eta2 - eta1;
00744 double tmp = sqrt(deltaeta* deltaeta + deltaphi*deltaphi);
00745 return tmp;
00746 }
00747
00748 DEFINE_FWK_MODULE(CaloTowersAnalyzer);
00749