CMS 3D CMS Logo

Public Member Functions | Private Attributes

JetMETDQMOfflineClient Class Reference

#include <JetMETDQMOfflineClient.h>

Inheritance diagram for JetMETDQMOfflineClient:
edm::EDAnalyzer

List of all members.

Public Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
virtual void beginJob (void)
virtual void beginRun (const edm::Run &run, const edm::EventSetup &c)
virtual void endJob ()
virtual void endLuminosityBlock (const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
virtual void endRun (const edm::Run &run, const edm::EventSetup &c)
 JetMETDQMOfflineClient (const edm::ParameterSet &)
virtual void runClient_ ()
virtual ~JetMETDQMOfflineClient ()

Private Attributes

edm::ParameterSet conf_
DQMStoredbe_
std::string dirName_
std::string dirNameJet_
std::string dirNameMET_
bool verbose_

Detailed Description

Definition at line 48 of file JetMETDQMOfflineClient.h.


Constructor & Destructor Documentation

JetMETDQMOfflineClient::JetMETDQMOfflineClient ( const edm::ParameterSet iConfig) [explicit]

Definition at line 11 of file JetMETDQMOfflineClient.cc.

References conf_, dbe_, dirName_, dirNameJet_, dirNameMET_, edm::ParameterSet::getUntrackedParameter(), cmsCodeRules::cppFunctionSkipper::operator, DQMStore::setCurrentFolder(), DQMStore::setVerbose(), and verbose_.

                                                                            :conf_(iConfig)
{

  dbe_ = edm::Service<DQMStore>().operator->();
  if (!dbe_) {
    edm::LogError("JetMETDQMOfflineClient") 
    << "unable to get DQMStore service, upshot is no client histograms will be made";
  }
  if(iConfig.getUntrackedParameter<bool>("DQMStore", false)) {
    if(dbe_) dbe_->setVerbose(0);
  }
 
  verbose_ = conf_.getUntrackedParameter<int>("Verbose");

  dirName_=iConfig.getUntrackedParameter<std::string>("DQMDirName");
  if(dbe_) dbe_->setCurrentFolder(dirName_);

  dirNameJet_=iConfig.getUntrackedParameter<std::string>("DQMJetDirName");
  dirNameMET_=iConfig.getUntrackedParameter<std::string>("DQMMETDirName");
 
}
JetMETDQMOfflineClient::~JetMETDQMOfflineClient ( ) [virtual]

Definition at line 34 of file JetMETDQMOfflineClient.cc.

{ 
  
}

Member Function Documentation

void JetMETDQMOfflineClient::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
) [virtual]

Implements edm::EDAnalyzer.

Definition at line 62 of file JetMETDQMOfflineClient.cc.

{
  
}
void JetMETDQMOfflineClient::beginJob ( void  ) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 39 of file JetMETDQMOfflineClient.cc.

{
 

}
void JetMETDQMOfflineClient::beginRun ( const edm::Run run,
const edm::EventSetup c 
) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 50 of file JetMETDQMOfflineClient.cc.

{
 
}
void JetMETDQMOfflineClient::endJob ( void  ) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 45 of file JetMETDQMOfflineClient.cc.

{

}
void JetMETDQMOfflineClient::endLuminosityBlock ( const edm::LuminosityBlock lumiSeg,
const edm::EventSetup c 
) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 67 of file JetMETDQMOfflineClient.cc.

{ 

}
void JetMETDQMOfflineClient::endRun ( const edm::Run run,
const edm::EventSetup c 
) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 56 of file JetMETDQMOfflineClient.cc.

References runClient_().

{
  runClient_();
}
void JetMETDQMOfflineClient::runClient_ ( ) [virtual]

Definition at line 72 of file JetMETDQMOfflineClient.cc.

References DQMStore::book1D(), gather_cfg::cout, dbe_, dirName_, dirNameJet_, dirNameMET_, epsilon, DQMStore::get(), DQMStore::getMEs(), MonitorElement::getRootObject(), DQMStore::getSubdirs(), MonitorElement::getTH1F(), i, j, LogDebug, funct::pow(), DQMStore::removeElement(), MonitorElement::setAxisTitle(), DQMStore::setCurrentFolder(), MonitorElement::setTitle(), and verbose_.

Referenced by endRun().

{
  
  if(!dbe_) return; //we dont have the DQMStore so we cant do anything

  LogDebug("JetMETDQMOfflineClient") << "runClient" << std::endl;
  if (verbose_) std::cout << "runClient" << std::endl; 

  std::vector<MonitorElement*> MEs;

  // Total number of lumi sections and time for this run

  TH1F* tlumisec;
  MonitorElement *meLumiSec = dbe_->get("JetMET/lumisec");

  int    totlsec=0;
  double totltime=0;

  if ( meLumiSec->getRootObject() ){

    tlumisec = meLumiSec->getTH1F();    
    for (int i=0; i<500; i++){
      if (tlumisec->GetBinContent(i+1)) totlsec++;
    }

  }
  totltime = totlsec * 90.;

  // MET

  dbe_->setCurrentFolder(dirName_+"/"+dirNameMET_);

  MonitorElement *me;
  TH1F *tMET;
  TH1F *tMETRate;
  MonitorElement *hMETRate;

  //
  // --- Producing MET rate plots
  //

  // Look at all folders (JetMET/MET/CaloMET, JetMET/MET/CaloMETNoHF, etc)
  std::vector<std::string> fullPathDQMFolders = dbe_->getSubdirs();
  for(unsigned int i=0;i<fullPathDQMFolders.size();i++) {

    if (verbose_) std::cout << fullPathDQMFolders[i] << std::endl;      
    dbe_->setCurrentFolder(fullPathDQMFolders[i]);

    // Look at all subfolders (JetMET/MET/CaloMET/{All,Cleaup,BeamHaloIDLoosePass, etc})
    std::vector<std::string> fullPathDQMSubFolders = dbe_->getSubdirs();
    for(unsigned int j=0;j<fullPathDQMSubFolders.size();j++) {

      if (verbose_) std::cout << fullPathDQMSubFolders[j] << std::endl;      
      dbe_->setCurrentFolder(fullPathDQMSubFolders[j]);
      if (verbose_) std::cout << "setCurrentFolder done" << std::endl;      

      // Look at all MonitorElements in this folder
      std::string METMEName="METTask_CaloMET";
      if ( dbe_->get(fullPathDQMSubFolders[j]+"/"+"METTask_MET") )  METMEName="METTask_MET";
      if ( dbe_->get(fullPathDQMSubFolders[j]+"/"+"METTask_PfMET")) METMEName="METTask_PfMET";

      me = dbe_->get(fullPathDQMSubFolders[j]+"/"+METMEName);
      if (verbose_) std::cout << "get done" << std::endl;      
      
      if ( me ) {
        if (verbose_) std::cout << "me true" << std::endl;      
        if ( me->getRootObject() ) {
          if (verbose_) std::cout << "me getRootObject true" << std::endl;      

          MonitorElement *metest = dbe_->get(fullPathDQMSubFolders[j]+"/"+METMEName+"Rate");
          if (metest) dbe_->removeElement(METMEName+"Rate");

          if (verbose_) std::cout << "metest done" << std::endl;      
          
          tMET     = me->getTH1F();
          if (verbose_) std::cout << "getTH1F done" << std::endl;      

          // Integral plot 
          tMETRate = (TH1F*) tMET->Clone((METMEName+"Rate").c_str());
          for (int i = tMETRate->GetNbinsX()-1; i>=0; i--){
            tMETRate->SetBinContent(i+1,tMETRate->GetBinContent(i+2)+tMET->GetBinContent(i+1));
          }
          if (verbose_) std::cout << "making integral plot done" << std::endl;      
      
          // Convert number of events to Rate (Hz)
          if (totltime){
            for (int i=tMETRate->GetNbinsX()-1;i>=0;i--){
              tMETRate->SetBinContent(i+1,tMETRate->GetBinContent(i+1)/double(totltime));
            }
          }
          if (verbose_) std::cout << "making rate plot done" << std::endl;      

          hMETRate      = dbe_->book1D(METMEName+"Rate",tMETRate);
          hMETRate->setTitle(METMEName+" Rate");
          hMETRate->setAxisTitle("MET Threshold [GeV]",1);
          if (verbose_) std::cout << "booking rate plot ME done" << std::endl;      

        } // me->getRootObject()
      } // me
      if (verbose_) std::cout << "end of subfolder loop" << std::endl;
    }   // fullPathDQMSubFolders-loop - All, Cleanup, ...
    if (verbose_) std::cout << "end of folder loop" << std::endl;
  }   // fullPathDQMFolders-loop - CaloMET, CaloMETNoHF, ...

  // Jet
   
  dbe_->setCurrentFolder(dirName_+"/"+dirNameJet_);

  MonitorElement *hPassFraction;

  // Look at all folders (JetMET/Jet/AntiKtJets,JetMET/Jet/CleanedAntiKtJets, etc)
  fullPathDQMFolders.clear();
  fullPathDQMFolders = dbe_->getSubdirs();
  for(unsigned int i=0;i<fullPathDQMFolders.size();i++) {

    if (verbose_) std::cout << fullPathDQMFolders[i] << std::endl;      
    dbe_->setCurrentFolder(fullPathDQMFolders[i]);

    std::vector<std::string> getMEs = dbe_->getMEs();

    std::vector<std::string>::const_iterator cii;
    for(cii=getMEs.begin(); cii!=getMEs.end(); cii++) {
      if ((*cii).find("_binom")!=std::string::npos) continue;
      if ((*cii).find("JIDPassFractionVS")!=std::string::npos){  // Look for MEs with "JIDPassFractionVS"
        me = dbe_->get(fullPathDQMFolders[i]+"/"+(*cii));

        if ( me ) {
        if ( me->getRootObject() ) {
          TProfile *tpro = (TProfile*) me->getRootObject();
          TH1F *tPassFraction = new TH1F(((*cii)+"_binom").c_str(),((*cii)+"_binom").c_str(),
            tpro->GetNbinsX(),tpro->GetBinLowEdge(1),tpro->GetBinLowEdge(tpro->GetNbinsX()+1));
          for (int ibin=0; ibin<tpro->GetNbinsX(); ibin++){
            double nentries = tpro->GetBinEntries(ibin+1);
            double epsilon  = tpro->GetBinContent(ibin+1);
            if (epsilon>1. || epsilon<0.) continue;
            tPassFraction->SetBinContent(ibin+1,epsilon);                        // 
            if(nentries>0) tPassFraction->SetBinError(ibin+1,pow(epsilon*(1.-epsilon)/nentries,0.5));
          }
          hPassFraction      = dbe_->book1D(tPassFraction->GetName(),tPassFraction);
          delete tPassFraction;
        } // me->getRootObject()
        } // me
      } // if find
    }   // cii-loop

  } // i-loop 

}

Member Data Documentation

Definition at line 53 of file JetMETDQMOfflineClient.h.

Referenced by JetMETDQMOfflineClient().

Definition at line 51 of file JetMETDQMOfflineClient.h.

Referenced by JetMETDQMOfflineClient(), and runClient_().

std::string JetMETDQMOfflineClient::dirName_ [private]

Definition at line 57 of file JetMETDQMOfflineClient.h.

Referenced by JetMETDQMOfflineClient(), and runClient_().

std::string JetMETDQMOfflineClient::dirNameJet_ [private]

Definition at line 58 of file JetMETDQMOfflineClient.h.

Referenced by JetMETDQMOfflineClient(), and runClient_().

std::string JetMETDQMOfflineClient::dirNameMET_ [private]

Definition at line 59 of file JetMETDQMOfflineClient.h.

Referenced by JetMETDQMOfflineClient(), and runClient_().

Definition at line 55 of file JetMETDQMOfflineClient.h.

Referenced by JetMETDQMOfflineClient(), and runClient_().