CMS 3D CMS Logo

CaloTowersValidation.cc

Go to the documentation of this file.
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   // DQM ROOT output
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   // get hold of back-end interface
00032   dbe_ = edm::Service<DQMStore>().operator->();
00033    
00034   // const char * sub = hcalselector_.c_str();
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   // HB   
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   // HE   
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   // HF   
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     //      double phiT = cal->eta();
00228     double en   = cal->energy();
00229 
00230     math::RhoEtaPhiVector mom(cal->et(), cal->eta(), cal->phi());
00231                               //  Vector mom  = cal->momentum(); 
00232   
00233     // cell properties    
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       //      std::cout << " e_ecal = " << eE << std::endl;
00245       
00246       //  simple sums
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       // MET, SET & phimet
00257       //  double  etT = cal->et();
00258       metx_HB += mom.x();   
00259       mety_HB += mom.y();  //etT * sin(phiT);          
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       //      std::cout << " e_ecal = " << eE << std::endl;
00270       
00271       //  simple sums
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       // MET, SET & phimet
00282       //  double  etT = cal->et();
00283       metx_HE += mom.x();   
00284       mety_HE += mom.y();  //etT * sin(phiT);          
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       //      std::cout << " e_ecal = " << eE << std::endl;
00295       
00296       //  simple sums
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       // MET, SET & phimet
00307       //  double  etT = cal->et();
00308       metx_HF += mom.x();   
00309       mety_HF += mom.y();  //etT * sin(phiT);          
00310       sEt_HF  += en;    
00311     }
00312 
00313 
00314 
00315   } // end of Towers cycle 
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 

Generated on Tue Jun 9 17:48:59 2009 for CMSSW by  doxygen 1.5.4