![]() |
![]() |
00001 00002 #include "Validation/RecoEgamma/interface/ElectronValidator.h" 00003 #include "DQMServices/Core/interface/DQMStore.h" 00004 #include "DQMServices/Core/interface/MonitorElement.h" 00005 #include "FWCore/ServiceRegistry/interface/Service.h" 00006 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00007 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00008 #include "TMath.h" 00009 #include "TFile.h" 00010 #include "TH1F.h" 00011 #include "TH1I.h" 00012 #include "TH2F.h" 00013 #include "TProfile.h" 00014 #include "TTree.h" 00015 #include <iostream> 00016 00017 ElectronValidator::ElectronValidator( const edm::ParameterSet& conf ) 00018 {} 00019 00020 ElectronValidator::~ElectronValidator() 00021 {} 00022 00023 void ElectronValidator::prepareStore() 00024 { 00025 store_ = edm::Service<DQMStore>().operator->() ; 00026 if (!store_) 00027 { edm::LogError("ElectronValidator::prepareStore")<<"No DQMStore found !" ; } 00028 } 00029 00030 void ElectronValidator::setStoreFolder( const std::string & path ) 00031 { store_->setCurrentFolder(path) ; } 00032 00033 void ElectronValidator::saveStore( const std::string & filename ) 00034 { store_->save(filename) ; } 00035 00036 MonitorElement * ElectronValidator::bookH1 00037 ( const std::string & name, const std::string & title, 00038 int nchX, double lowX, double highX, 00039 const std::string & titleX, const std::string & titleY ) 00040 { 00041 MonitorElement * me = store_->book1D(name,title,nchX,lowX,highX) ; 00042 if (titleX!="") { me->getTH1F()->GetXaxis()->SetTitle(titleX.c_str()) ; } 00043 if (titleY!="") { me->getTH1F()->GetYaxis()->SetTitle(titleY.c_str()) ; } 00044 return me ; 00045 } 00046 00047 MonitorElement * ElectronValidator::bookH1withSumw2 00048 ( const std::string & name, const std::string & title, 00049 int nchX, double lowX, double highX, 00050 const std::string & titleX, const std::string & titleY ) 00051 { 00052 MonitorElement * me = store_->book1D(name,title,nchX,lowX,highX) ; 00053 me->getTH1F()->Sumw2() ; 00054 if (titleX!="") { me->getTH1F()->GetXaxis()->SetTitle(titleX.c_str()) ; } 00055 if (titleY!="") { me->getTH1F()->GetYaxis()->SetTitle(titleY.c_str()) ; } 00056 return me ; 00057 } 00058 00059 MonitorElement * ElectronValidator::bookH2 00060 ( const std::string & name, const std::string & title, 00061 int nchX, double lowX, double highX, 00062 int nchY, double lowY, double highY, 00063 const std::string & titleX, const std::string & titleY ) 00064 { 00065 MonitorElement * me = store_->book2D(name,title,nchX,lowX,highX,nchY,lowY,highY) ; 00066 if (titleX!="") { me->getTH2F()->GetXaxis()->SetTitle(titleX.c_str()) ; } 00067 if (titleY!="") { me->getTH2F()->GetYaxis()->SetTitle(titleY.c_str()) ; } 00068 return me ; 00069 } 00070 00071 MonitorElement * ElectronValidator::bookH2withSumw2 00072 ( const std::string & name, const std::string & title, 00073 int nchX, double lowX, double highX, 00074 int nchY, double lowY, double highY, 00075 const std::string & titleX, const std::string & titleY ) 00076 { 00077 MonitorElement * me = store_->book2D(name,title,nchX,lowX,highX,nchY,lowY,highY) ; 00078 me->getTH2F()->Sumw2() ; 00079 if (titleX!="") { me->getTH2F()->GetXaxis()->SetTitle(titleX.c_str()) ; } 00080 if (titleY!="") { me->getTH2F()->GetYaxis()->SetTitle(titleY.c_str()) ; } 00081 return me ; 00082 } 00083 00084 MonitorElement * ElectronValidator::bookP1 00085 ( const std::string & name, const std::string & title, 00086 int nchX, double lowX, double highX, 00087 double lowY, double highY, 00088 const std::string & titleX, const std::string & titleY ) 00089 { 00090 MonitorElement * me = store_->bookProfile(name,title,nchX,lowX,highX,lowY,highY) ; 00091 if (titleX!="") { me->getTProfile()->GetXaxis()->SetTitle(titleX.c_str()) ; } 00092 if (titleY!="") { me->getTProfile()->GetYaxis()->SetTitle(titleY.c_str()) ; } 00093 return me ; 00094 } 00095 00096 MonitorElement * ElectronValidator::bookH1andDivide 00097 ( const std::string & name, MonitorElement * num, MonitorElement * denom, 00098 const std::string & titleX, const std::string & titleY, 00099 const std::string & title, bool print ) 00100 { 00101 TH1F * h_temp = (TH1F *)num->getTH1F()->Clone(name.c_str()) ; 00102 h_temp->Reset() ; 00103 h_temp->Divide(num->getTH1(),denom->getTH1(),1,1,"b") ; 00104 h_temp->GetXaxis()->SetTitle(titleX.c_str()) ; 00105 h_temp->GetYaxis()->SetTitle(titleY.c_str()) ; 00106 if (title!="") { h_temp->SetTitle(title.c_str()) ; } 00107 if (print) { h_temp->Print() ; } 00108 MonitorElement * me = store_->book1D(name,h_temp) ; 00109 delete h_temp ; 00110 return me ; 00111 } 00112 00113 MonitorElement * ElectronValidator::bookH2andDivide 00114 ( const std::string & name, MonitorElement * num, MonitorElement * denom, 00115 const std::string & titleX, const std::string & titleY, 00116 const std::string & title, bool print ) 00117 { 00118 TH2F * h_temp = (TH2F *)num->getTH2F()->Clone(name.c_str()) ; 00119 h_temp->Reset() ; 00120 h_temp->Divide(num->getTH1(),denom->getTH1(),1,1,"b") ; 00121 h_temp->GetXaxis()->SetTitle(titleX.c_str()) ; 00122 h_temp->GetYaxis()->SetTitle(titleY.c_str()) ; 00123 if (title!="") { h_temp->SetTitle(title.c_str()) ; } 00124 if (print) { h_temp->Print() ; } 00125 MonitorElement * me = store_->book2D(name,h_temp) ; 00126 delete h_temp ; 00127 return me ; 00128 } 00129 00130 MonitorElement * ElectronValidator::profileX 00131 ( const std::string & name, MonitorElement * me2d, 00132 const std::string & title, const std::string & titleX, const std::string & titleY, 00133 Double_t minimum, Double_t maximum ) 00134 { 00135 TProfile * p1_temp = me2d->getTH2F()->ProfileX() ; 00136 if (title!="") { p1_temp->SetTitle(title.c_str()) ; } 00137 if (titleX!="") { p1_temp->GetXaxis()->SetTitle(titleX.c_str()) ; } 00138 if (titleY!="") { p1_temp->GetYaxis()->SetTitle(titleY.c_str()) ; } 00139 if (minimum!=-1111) { p1_temp->SetMinimum(minimum) ; } 00140 if (maximum!=-1111) { p1_temp->SetMaximum(maximum) ; } 00141 MonitorElement * me = store_->bookProfile(name,p1_temp) ; 00142 delete p1_temp ; 00143 return me ; 00144 } 00145 00146 MonitorElement * ElectronValidator::profileY 00147 ( const std::string & name, MonitorElement * me2d, 00148 const std::string & title, const std::string & titleX, const std::string & titleY, 00149 Double_t minimum, Double_t maximum ) 00150 { 00151 TProfile * p1_temp = me2d->getTH2F()->ProfileY() ; 00152 if (title!="") { p1_temp->SetTitle(title.c_str()) ; } 00153 if (titleX!="") { p1_temp->GetXaxis()->SetTitle(titleX.c_str()) ; } 00154 if (titleY!="") { p1_temp->GetYaxis()->SetTitle(titleY.c_str()) ; } 00155 if (minimum!=-1111) { p1_temp->SetMinimum(minimum) ; } 00156 if (maximum!=-1111) { p1_temp->SetMaximum(maximum) ; } 00157 MonitorElement * me = store_->bookProfile(name,p1_temp) ; 00158 delete p1_temp ; 00159 return me ; 00160 } 00161 00162