00001 #include "Validation/CaloTowers/interface/CaloTowersValidation.h"
00002 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h"
00003
00004 CaloTowersValidation::CaloTowersValidation(edm::ParameterSet const& conf):
00005 theCaloTowerCollectionLabel(conf.getUntrackedParameter<std::string>("CaloTowerCollectionLabel"))
00006 {
00007
00008 outputFile_ = conf.getUntrackedParameter<std::string>("outputFile", "myfile.root");
00009
00010 hcalselector_ = conf.getUntrackedParameter<std::string>("hcalselector", "all");
00011
00012 etaMin[0] = 0.;
00013 etaMax[0] = 1.4;
00014 etaMin[1] = 1.4;
00015 etaMax[1] = 2.9;
00016 etaMin[2] = 2.9;
00017 etaMax[2] = 5.2;
00018
00019 isub = 0;
00020 if(hcalselector_ == "HB") isub = 1;
00021 if(hcalselector_ == "HE") isub = 2;
00022 if(hcalselector_ == "HF") isub = 3;
00023
00024 if ( outputFile_.size() != 0 ) {
00025 edm::LogInfo("OutputInfo") << " Hcal RecHit Task histograms will be saved to '" << outputFile_.c_str() << "'";
00026 } else {
00027 edm::LogInfo("OutputInfo") << " Hcal RecHit Task histograms will NOT be saved";
00028 }
00029
00030 dbe_ = 0;
00031
00032 dbe_ = edm::Service<DQMStore>().operator->();
00033
00034
00035
00036 Char_t histo[100];
00037
00038 if ( dbe_ ) {
00039 dbe_->setCurrentFolder("CaloTowersV/CaloTowersTask");
00040 }
00041
00042 if( isub == 1 || isub == 0) {
00043 sprintf (histo, "CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HB") ;
00044 meEnergyHcalvsEcal_HB = dbe_->book2D(histo, histo, 500, 0., 500., 500, 0., 500.);
00045
00046 sprintf (histo, "CaloTowersTask_energy_OUTER_HB" ) ;
00047 meEnergyHO_HB = dbe_->book1D(histo, histo, 440, -200, 2000);
00048
00049 sprintf (histo, "CaloTowersTask_energy_HCAL_HB" ) ;
00050 meEnergyHcal_HB = dbe_->book1D(histo, histo, 440, -200, 2000);
00051
00052 sprintf (histo, "CaloTowersTask_energy_ECAL_HB" ) ;
00053 meEnergyEcal_HB = dbe_->book1D(histo, histo, 440, -200, 2000);
00054
00055 sprintf (histo, "CaloTowersTask_number_of_fired_towers_HB" ) ;
00056 meNumFiredTowers_HB = dbe_->book1D(histo, histo, 400, 0, 2000);
00057
00058 sprintf (histo, "CaloTowersTask_energy_of_ECAL_component_of_tower_HB" ) ;
00059 meEnergyEcalTower_HB = dbe_->book1D(histo, histo, 440, -200, 2000);
00060
00061 sprintf (histo, "CaloTowersTask_energy_of_HCAL_component_of_tower_HB" ) ;
00062 meEnergyHcalTower_HB = dbe_->book1D(histo, histo, 440 , -200 , 2000);
00063
00064 sprintf (histo, "CaloTowersTask_energy_HcalPlusEcalPlusHO_HB" ) ;
00065 meTotEnergy_HB = dbe_->book1D(histo, histo,400, 0., 2000.) ;
00066
00067 sprintf (histo, "CaloTowersTask_map_energy_HB" );
00068 mapEnergy_HB = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00069 sprintf (histo, "CaloTowersTask_map_energy_HCAL_HB");
00070 mapEnergyHcal_HB = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00071 sprintf (histo, "CaloTowersTask_map_energy_ECAL_HB" );
00072 mapEnergyEcal_HB = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00073
00074 sprintf (histo, "CaloTowersTask_MET_HB" ) ;
00075 MET_HB = dbe_->book1D(histo, histo, 500, 0. , 1000. ) ;
00076
00077 sprintf (histo, "CaloTowersTask_SET_HB" ) ;
00078 SET_HB = dbe_->book1D(histo, histo, 500, 0. , 5000. ) ;
00079
00080 sprintf (histo, "CaloTowersTask_phi_MET_HB" ) ;
00081 phiMET_HB = dbe_->book1D(histo, histo, 72, -3.1415926535898, 3.1415926535898 ) ;
00082 }
00083
00084 if( isub == 2 || isub == 0) {
00085 sprintf (histo, "CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HE") ;
00086 meEnergyHcalvsEcal_HE = dbe_->book2D(histo, histo, 500, 0., 500., 500, 0., 500.);
00087
00088 sprintf (histo, "CaloTowersTask_energy_OUTER_HE" ) ;
00089 meEnergyHO_HE = dbe_->book1D(histo, histo, 440, -200, 2000);
00090
00091 sprintf (histo, "CaloTowersTask_energy_HCAL_HE" ) ;
00092 meEnergyHcal_HE = dbe_->book1D(histo, histo, 440, -200, 2000);
00093
00094 sprintf (histo, "CaloTowersTask_energy_ECAL_HE" ) ;
00095 meEnergyEcal_HE = dbe_->book1D(histo, histo, 440, -200, 2000);
00096
00097 sprintf (histo, "CaloTowersTask_number_of_fired_towers_HE" ) ;
00098 meNumFiredTowers_HE = dbe_->book1D(histo, histo, 400, 0, 2000);
00099
00100 sprintf (histo, "CaloTowersTask_energy_of_ECAL_component_of_tower_HE" ) ;
00101 meEnergyEcalTower_HE = dbe_->book1D(histo, histo, 440, -200, 2000);
00102
00103 sprintf (histo, "CaloTowersTask_energy_of_HCAL_component_of_tower_HE" ) ;
00104 meEnergyHcalTower_HE = dbe_->book1D(histo, histo, 440 , -200 , 2000);
00105
00106 sprintf (histo, "CaloTowersTask_energy_HcalPlusEcalPlusHO_HE" ) ;
00107 meTotEnergy_HE = dbe_->book1D(histo, histo,400, 0., 2000.) ;
00108
00109 sprintf (histo, "CaloTowersTask_map_energy_HE" );
00110 mapEnergy_HE = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00111 sprintf (histo, "CaloTowersTask_map_energy_HCAL_HE");
00112 mapEnergyHcal_HE = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00113 sprintf (histo, "CaloTowersTask_map_energy_ECAL_HE" );
00114 mapEnergyEcal_HE = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00115
00116 sprintf (histo, "CaloTowersTask_MET_HE" ) ;
00117 MET_HE = dbe_->book1D(histo, histo, 500, 0. , 1000. ) ;
00118
00119 sprintf (histo, "CaloTowersTask_SET_HE" ) ;
00120 SET_HE = dbe_->book1D(histo, histo, 500, 0. , 5000. ) ;
00121
00122 sprintf (histo, "CaloTowersTask_phi_MET_HE" ) ;
00123 phiMET_HE = dbe_->book1D(histo, histo, 72, -3.1415926535898, 3.1415926535898 ) ;
00124 }
00125
00126
00127 if( isub == 3 || isub == 0) {
00128 sprintf (histo, "CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HF") ;
00129 meEnergyHcalvsEcal_HF = dbe_->book2D(histo, histo, 500, 0., 500., 500, 0., 500.);
00130
00131 sprintf (histo, "CaloTowersTask_energy_OUTER_HF" ) ;
00132 meEnergyHO_HF = dbe_->book1D(histo, histo, 440, -200, 2000);
00133
00134 sprintf (histo, "CaloTowersTask_energy_HCAL_HF" ) ;
00135 meEnergyHcal_HF = dbe_->book1D(histo, histo, 440, -200, 2000);
00136
00137 sprintf (histo, "CaloTowersTask_energy_ECAL_HF" ) ;
00138 meEnergyEcal_HF = dbe_->book1D(histo, histo, 440, -200, 2000);
00139
00140 sprintf (histo, "CaloTowersTask_number_of_fired_towers_HF" ) ;
00141 meNumFiredTowers_HF = dbe_->book1D(histo, histo, 400, 0, 2000);
00142
00143 sprintf (histo, "CaloTowersTask_energy_of_ECAL_component_of_tower_HF" ) ;
00144 meEnergyEcalTower_HF = dbe_->book1D(histo, histo, 440, -200, 2000);
00145
00146 sprintf (histo, "CaloTowersTask_energy_of_HCAL_component_of_tower_HF" ) ;
00147 meEnergyHcalTower_HF = dbe_->book1D(histo, histo, 440 , -200 , 2000);
00148
00149 sprintf (histo, "CaloTowersTask_energy_HcalPlusEcalPlusHO_HF" ) ;
00150 meTotEnergy_HF = dbe_->book1D(histo, histo,400, 0., 2000.) ;
00151
00152 sprintf (histo, "CaloTowersTask_map_energy_HF" );
00153 mapEnergy_HF = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00154 sprintf (histo, "CaloTowersTask_map_energy_HCAL_HF");
00155 mapEnergyHcal_HF = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00156 sprintf (histo, "CaloTowersTask_map_energy_ECAL_HF" );
00157 mapEnergyEcal_HF = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
00158
00159 sprintf (histo, "CaloTowersTask_MET_HF" ) ;
00160 MET_HF = dbe_->book1D(histo, histo, 500, 0. , 500. ) ;
00161
00162 sprintf (histo, "CaloTowersTask_SET_HF" ) ;
00163 SET_HF = dbe_->book1D(histo, histo, 500, 0. , 5000. ) ;
00164
00165 sprintf (histo, "CaloTowersTask_phi_MET_HF" ) ;
00166 phiMET_HF = dbe_->book1D(histo, histo, 72, -3.1415926535898, 3.1415926535898 ) ;
00167
00168 }
00169
00170 }
00171
00172
00173 CaloTowersValidation::~CaloTowersValidation() {
00174
00175 if ( outputFile_.size() != 0 && dbe_ ) dbe_->save(outputFile_);
00176
00177 }
00178
00179 void CaloTowersValidation::endJob() { }
00180
00181 void CaloTowersValidation::beginJob(const edm::EventSetup& c){
00182
00183 }
00184 void CaloTowersValidation::analyze(edm::Event const& event, edm::EventSetup const& c) {
00185
00186 edm::Handle<CaloTowerCollection> towers;
00187 event.getByLabel(theCaloTowerCollectionLabel,towers);
00188 CaloTowerCollection::const_iterator cal;
00189
00190 double met;
00191 double phimet;
00192
00193
00194 double sumEnergyHcal_HB = 0.;
00195 double sumEnergyEcal_HB = 0.;
00196 double sumEnergyHO_HB = 0.;
00197 Int_t numFiredTowers_HB = 0;
00198 double metx_HB = 0.;
00199 double mety_HB = 0.;
00200 double metz_HB = 0.;
00201 double sEt_HB = 0.;
00202
00203 double sumEnergyHcal_HE = 0.;
00204 double sumEnergyEcal_HE = 0.;
00205 double sumEnergyHO_HE = 0.;
00206 Int_t numFiredTowers_HE = 0;
00207 double metx_HE = 0.;
00208 double mety_HE = 0.;
00209 double metz_HE = 0.;
00210 double sEt_HE = 0.;
00211
00212 double sumEnergyHcal_HF = 0.;
00213 double sumEnergyEcal_HF = 0.;
00214 double sumEnergyHO_HF = 0.;
00215 Int_t numFiredTowers_HF = 0;
00216 double metx_HF = 0.;
00217 double mety_HF = 0.;
00218 double metz_HF = 0.;
00219 double sEt_HF = 0.;
00220
00221 for ( cal = towers->begin(); cal != towers->end(); ++cal ) {
00222
00223 double eE = cal->emEnergy();
00224 double eH = cal->hadEnergy();
00225 double eHO = cal->outerEnergy();
00226 double etaT = cal->eta();
00227
00228 double en = cal->energy();
00229
00230 math::RhoEtaPhiVector mom(cal->et(), cal->eta(), cal->phi());
00231
00232
00233
00234 CaloTowerDetId idT = cal->id();
00235 int ieta = idT.ieta();
00236 int iphi = idT.iphi();
00237
00238 if((isub == 0 || isub == 1)
00239 && (fabs(etaT) < etaMax[0] && fabs(etaT) >= etaMin[0] )) {
00240 mapEnergy_HB -> Fill(double(ieta), double(iphi), en);
00241 mapEnergyHcal_HB -> Fill(double(ieta), double(iphi), eH);
00242 mapEnergyEcal_HB -> Fill(double(ieta), double(iphi), eE);
00243
00244
00245
00246
00247 sumEnergyHcal_HB += eH;
00248 sumEnergyEcal_HB += eE;
00249 sumEnergyHO_HB += eHO;
00250
00251 numFiredTowers_HB++;
00252
00253 meEnergyEcalTower_HB->Fill(eE);
00254 meEnergyHcalTower_HB->Fill(eH);
00255
00256
00257
00258 metx_HB += mom.x();
00259 mety_HB += mom.y();
00260 sEt_HB += en;
00261 }
00262
00263 if((isub == 0 || isub == 2)
00264 && (fabs(etaT) < etaMax[1] && fabs(etaT) >= etaMin[1] )) {
00265 mapEnergy_HE -> Fill(double(ieta), double(iphi), en);
00266 mapEnergyHcal_HE -> Fill(double(ieta), double(iphi), eH);
00267 mapEnergyEcal_HE -> Fill(double(ieta), double(iphi), eE);
00268
00269
00270
00271
00272 sumEnergyHcal_HE += eH;
00273 sumEnergyEcal_HE += eE;
00274 sumEnergyHO_HE += eHO;
00275
00276 numFiredTowers_HE++;
00277
00278 meEnergyEcalTower_HE->Fill(eE);
00279 meEnergyHcalTower_HE->Fill(eH);
00280
00281
00282
00283 metx_HE += mom.x();
00284 mety_HE += mom.y();
00285 sEt_HE += en;
00286 }
00287
00288 if((isub == 0 || isub == 3)
00289 && (fabs(etaT) < etaMax[2] && fabs(etaT) >= etaMin[2] )) {
00290 mapEnergy_HF -> Fill(double(ieta), double(iphi), en);
00291 mapEnergyHcal_HF -> Fill(double(ieta), double(iphi), eH);
00292 mapEnergyEcal_HF -> Fill(double(ieta), double(iphi), eE);
00293
00294
00295
00296
00297 sumEnergyHcal_HF += eH;
00298 sumEnergyEcal_HF += eE;
00299 sumEnergyHO_HF += eHO;
00300
00301 numFiredTowers_HF++;
00302
00303 meEnergyEcalTower_HF->Fill(eE);
00304 meEnergyHcalTower_HF->Fill(eH);
00305
00306
00307
00308 metx_HF += mom.x();
00309 mety_HF += mom.y();
00310 sEt_HF += en;
00311 }
00312
00313
00314
00315 }
00316
00317
00318 if(isub == 0 || isub == 1) {
00319 met = sqrt(metx_HB*metx_HB + mety_HB*mety_HB);
00320 Vector metv(metx_HB,mety_HB,metz_HB);
00321 phimet = metv.phi();
00322
00323 meEnergyHcalvsEcal_HB->Fill(sumEnergyEcal_HB, sumEnergyHcal_HB);
00324 meEnergyHO_HB-> Fill(sumEnergyHO_HB);
00325 meEnergyHcal_HB-> Fill(sumEnergyHcal_HB);
00326 meEnergyEcal_HB-> Fill(sumEnergyEcal_HB);
00327 meNumFiredTowers_HB-> Fill(numFiredTowers_HB);
00328 meTotEnergy_HB-> Fill(sumEnergyHcal_HB+sumEnergyEcal_HB
00329 +sumEnergyHO_HB);
00330 MET_HB -> Fill (met);
00331 phiMET_HB -> Fill (phimet);
00332 SET_HB -> Fill (sEt_HB);
00333 }
00334
00335
00336 if(isub == 0 || isub == 2) {
00337 met = sqrt(metx_HE*metx_HE + mety_HE*mety_HE);
00338 Vector metv(metx_HE,mety_HE,metz_HE);
00339 phimet = metv.phi();
00340
00341 meEnergyHcalvsEcal_HE->Fill(sumEnergyEcal_HE, sumEnergyHcal_HE);
00342 meEnergyHO_HE-> Fill(sumEnergyHO_HE);
00343 meEnergyHcal_HE-> Fill(sumEnergyHcal_HE);
00344 meEnergyEcal_HE-> Fill(sumEnergyEcal_HE);
00345 meNumFiredTowers_HE-> Fill(numFiredTowers_HE);
00346 meTotEnergy_HE-> Fill(sumEnergyHcal_HE+sumEnergyEcal_HE
00347 +sumEnergyHO_HE);
00348 MET_HE -> Fill (met);
00349 phiMET_HE -> Fill (phimet);
00350 SET_HE -> Fill (sEt_HE);
00351 }
00352
00353 if(isub == 0 || isub == 3) {
00354 met = sqrt(metx_HF*metx_HF + mety_HF*mety_HF);
00355 Vector metv(metx_HF,mety_HF,metz_HF);
00356 phimet = metv.phi();
00357
00358 meEnergyHcalvsEcal_HF->Fill(sumEnergyEcal_HF, sumEnergyHcal_HF);
00359 meEnergyHO_HF-> Fill(sumEnergyHO_HF);
00360 meEnergyHcal_HF-> Fill(sumEnergyHcal_HF);
00361 meEnergyEcal_HF-> Fill(sumEnergyEcal_HF);
00362 meNumFiredTowers_HF-> Fill(numFiredTowers_HF);
00363 meTotEnergy_HF-> Fill(sumEnergyHcal_HF+sumEnergyEcal_HF
00364 +sumEnergyHO_HF);
00365 MET_HF -> Fill (met);
00366 phiMET_HF -> Fill (phimet);
00367 SET_HF -> Fill (sEt_HF);
00368 }
00369
00370 }
00371
00372
00373 #include "FWCore/PluginManager/interface/ModuleDef.h"
00374 #include "FWCore/Framework/interface/MakerMacros.h"
00375 #include "DQMServices/Core/interface/DQMStore.h"
00376
00377 DEFINE_SEAL_MODULE();
00378 DEFINE_ANOTHER_FWK_MODULE(CaloTowersValidation);
00379