CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/DQMOffline/Trigger/src/BTagHLTOfflineClient.cc

Go to the documentation of this file.
00001 #include "DQMOffline/Trigger/interface/BTagHLTOfflineClient.h"
00002 
00003 #include "FWCore/Framework/interface/Run.h"
00004 #include "FWCore/Framework/interface/Event.h"
00005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00006 #include "FWCore/ServiceRegistry/interface/Service.h"
00007 
00008 #include "DQMServices/Core/interface/DQMStore.h"
00009 #include "DQMServices/Core/interface/MonitorElement.h"
00010 
00011 BTagHLTOfflineClient::BTagHLTOfflineClient(const edm::ParameterSet& iConfig):conf_(iConfig)
00012 {
00013   dbe_ = edm::Service<DQMStore>().operator->();
00014   if (!dbe_) {
00015     edm::LogError("BTagHLTOfflineClient") << "unable to get DQMStore service, upshot is no client histograms will be made";
00016   }
00017   if(iConfig.getUntrackedParameter<bool>("DQMStore", false)) {
00018     if(dbe_) dbe_->setVerbose(0);
00019   }
00020   
00021   debug_ = false;
00022   verbose_ = false;
00023   
00024   processname_ = iConfig.getParameter<std::string>("processname");
00025 
00026   hltTag_ = iConfig.getParameter<std::string>("hltTag");
00027   if (debug_) std::cout << hltTag_ << std::endl;
00028   
00029   dirName_=iConfig.getParameter<std::string>("DQMDirName");
00030   if(dbe_) dbe_->setCurrentFolder(dirName_);
00031   
00032 }
00033 
00034 
00035 BTagHLTOfflineClient::~BTagHLTOfflineClient()
00036 { 
00037   
00038 }
00039 
00040 void BTagHLTOfflineClient::beginJob()
00041 {
00042 
00043 }
00044 
00045 void BTagHLTOfflineClient::endJob() 
00046 {
00047 
00048 }
00049 
00050 void BTagHLTOfflineClient::beginRun(const edm::Run& run, const edm::EventSetup& c)
00051 {
00052   
00053 }
00054 
00055 
00056 void BTagHLTOfflineClient::endRun(const edm::Run& run, const edm::EventSetup& c)
00057 {
00058   runClient_();
00059 }
00060 
00061 //dummy analysis function
00062 void BTagHLTOfflineClient::analyze(const edm::Event& iEvent,const edm::EventSetup& iSetup)
00063 {
00064   
00065 }
00066 
00067 void BTagHLTOfflineClient::endLuminosityBlock(const edm::LuminosityBlock& lumiSeg,const edm::EventSetup& c)
00068 { 
00069   runClient_();
00070 }
00071 
00072 void BTagHLTOfflineClient::runClient_()
00073 {
00074   if(!dbe_) return; //we dont have the DQMStore so we cant do anything
00075   dbe_->setCurrentFolder(dirName_);
00076   
00077   LogDebug("BTagHLTOfflineClient") << "runClient" << std::endl;
00078   if (debug_) std::cout << "runClient" << std::endl; 
00079   
00080   std::vector<MonitorElement*> hltMEs;
00081   
00082   // Look at all folders, go to the subfolder which includes the string "Eff"
00083   std::vector<std::string> fullPathHLTFolders = dbe_->getSubdirs();
00084   for(unsigned int i=0;i<fullPathHLTFolders.size();i++) {
00085     
00086     // Move on only if the folder name contains "Eff" Or "Trigger Summary"
00087     if (debug_) std::cout << fullPathHLTFolders[i] << std::endl;
00088     if ((fullPathHLTFolders[i].find("Eff")!=std::string::npos)) {
00089       dbe_->setCurrentFolder(fullPathHLTFolders[i]);
00090     } else {
00091       continue;
00092     }
00093 
00094     // Look at all subfolders, go to the subfolder which includes the string "Eff"
00095     std::vector<std::string> fullSubPathHLTFolders = dbe_->getSubdirs();
00096     for(unsigned int j=0;j<fullSubPathHLTFolders.size();j++) {
00097       
00098       if (debug_) std::cout << fullSubPathHLTFolders[j] << std::endl;      
00099       dbe_->setCurrentFolder(fullSubPathHLTFolders[j]);
00100       
00101       // Look at all MonitorElements in this folder
00102       hltMEs = dbe_->getContents(fullSubPathHLTFolders[j]);
00103       LogDebug("BTagHLTOfflineClient")<< "Number of MEs for this HLT path = " << hltMEs.size() << std::endl;
00104       
00105       for(unsigned int k=0;k<hltMEs.size();k++) {
00106         if (debug_) std::cout << hltMEs[k]->getName() << std::endl;
00107 
00108         //-----
00109         if ((hltMEs[k]->getName().find("ME_Numerator")!=std::string::npos) && hltMEs[k]->getName().find("ME_Numerator")==0){
00110 
00111           std::string name = hltMEs[k]->getName();
00112           name.erase(0,12); // Removed "ME_Numerator"
00113           if (debug_) std::cout <<"==name=="<< name << std::endl;
00114           
00115           for(unsigned int l=0;l<hltMEs.size();l++) {
00116             if (hltMEs[l]->getName() == "ME_Denominator"+name){
00117               // found denominator too
00118               if(name.find("EtaPhi") !=std::string::npos) 
00119                 {
00120                   MonitorElement* eff ;   
00121                   TH2F* tNumerator   = hltMEs[k]->getTH2F();
00122                   TH2F* tDenominator = hltMEs[l]->getTH2F();
00123                   
00124                   std::string title = "Eff_"+hltMEs[k]->getTitle();
00125                   
00126                   TH2F *teff = (TH2F*) tNumerator->Clone(title.c_str());
00127                   teff->Divide(tNumerator,tDenominator,1,1);
00128                   eff= dbe_->book2D("ME_Eff_"+name,teff);
00129                   delete teff;                  
00130                 }
00131               else{
00132                 MonitorElement* eff ;
00133                 TH1F* tNumerator   = hltMEs[k]->getTH1F();
00134                 TH1F* tDenominator = hltMEs[l]->getTH1F();
00135                 
00136                 std::string title = "Eff_"+hltMEs[k]->getTitle();
00137                 
00138                 TH1F *teff = (TH1F*) tNumerator->Clone(title.c_str());
00139                 teff->Divide(tNumerator,tDenominator,1,1);
00140                 eff= dbe_->book1D("ME_Eff_"+name,teff);
00141                 delete teff;
00142               }
00143             } // Denominator
00144           }   // Loop-l
00145         }     // Numerator
00146         
00147         
00148       }       // Loop-k
00149     }         // fullSubPath
00150   }           // fullPath
00151 }
00152