CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

PhotonOfflineClient Class Reference

#include <PhotonOfflineClient.h>

Inheritance diagram for PhotonOfflineClient:
edm::EDAnalyzer

List of all members.

Public Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
virtual void beginJob ()
std::vector< std::vector
< MonitorElement * > > 
book2DHistoVector (std::string histoType, std::string histoName, std::string title, int xbin, double xmin, double xmax, int ybin=1, double ymin=1, double ymax=2)
std::vector< std::vector
< std::vector< MonitorElement * > > > 
book3DHistoVector (std::string histoType, std::string histoName, std::string title, int xbin, double xmin, double xmax, int ybin=1, double ymin=1, double ymax=2)
MonitorElementbookHisto (std::string histoName, std::string title, int bin, double min, double max)
virtual void endJob ()
virtual void endLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &)
virtual void endRun (const edm::Run &, const edm::EventSetup &)
 PhotonOfflineClient (const edm::ParameterSet &pset)
MonitorElementretrieveHisto (std::string dir, std::string name)
virtual void runClient ()
virtual ~PhotonOfflineClient ()

Private Member Functions

void dividePlots (MonitorElement *dividend, MonitorElement *numerator, MonitorElement *denominator)
void dividePlots (MonitorElement *dividend, MonitorElement *numerator, double denominator)

Private Attributes

bool batch_
std::stringstream currentFolder_
double cutStep_
DQMStoredbe_
int etaBin
double etaMax
double etaMin
int etBin
double etMax
double etMin
int histo_index_conversions_
int histo_index_efficiency_
int histo_index_invMass_
int histo_index_photons_
std::string inputFileName_
int numberOfSteps_
std::string outputFileName_
std::vector< std::vector
< MonitorElement * > > 
p_badChannelsFractionVsEt_
std::vector< std::vector
< MonitorElement * > > 
p_badChannelsFractionVsEta_
std::vector< std::vector
< MonitorElement * > > 
p_badChannelsFractionVsPhi_
std::vector< std::vector
< MonitorElement * > > 
p_convFractionVsEt_
std::vector< std::vector
< MonitorElement * > > 
p_convFractionVsEta_
MonitorElementp_convFractionVsEtaLoose_
MonitorElementp_convFractionVsEtaTight_
MonitorElementp_convFractionVsEtLoose_
MonitorElementp_convFractionVsEtTight_
std::vector< std::vector
< std::vector< MonitorElement * > > > 
p_convFractionVsPhi_
MonitorElementp_efficiencyVsEtaHLT_
MonitorElementp_efficiencyVsEtaLoose_
MonitorElementp_efficiencyVsEtaTight_
MonitorElementp_efficiencyVsEtHLT_
MonitorElementp_efficiencyVsEtLoose_
MonitorElementp_efficiencyVsEtTight_
MonitorElementp_vertexReconstructionEfficiencyVsEta_
edm::ParameterSet parameters_
std::vector< std::string > parts_
int phiBin
double phiMax
double phiMin
bool standAlone_
std::vector< std::string > types_
int verbosity_

Detailed Description

$Id: PhotonOfflineClient

Date:
2011/04/08 15:55:00

authors: Nancy Marinelli, U. of Notre Dame, US Jamie Antonelli, U. of Notre Dame, US

Definition at line 59 of file PhotonOfflineClient.h.


Constructor & Destructor Documentation

PhotonOfflineClient::PhotonOfflineClient ( const edm::ParameterSet pset) [explicit]

Definition at line 26 of file PhotonOfflineClient.cc.

References dbe_, jptDQMConfig_cff::etaMax, jptDQMConfig_cff::etaMin, jptDQMConfig_cff::etMax, reco::tau::qcuts::etMin(), edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), cmsCodeRules::cppFunctionSkipper::operator, jptDQMConfig_cff::phiMax, jptDQMConfig_cff::phiMin, and DQMStore::setVerbose().

{

  dbe_ = 0;
  dbe_ = edm::Service<DQMStore>().operator->();
  dbe_->setVerbose(0);
  parameters_ = pset;

  cutStep_       = pset.getParameter<double>("cutStep");
  numberOfSteps_ = pset.getParameter<int>("numberOfSteps");

  etMin  = pset.getParameter<double>("etMin");
  etMax  = pset.getParameter<double>("etMax");
  etBin  = pset.getParameter<int>("etBin");
  etaMin = pset.getParameter<double>("etaMin");
  etaMax = pset.getParameter<double>("etaMax");
  etaBin = pset.getParameter<int>("etaBin");
  phiMin = pset.getParameter<double>("phiMin");
  phiMax = pset.getParameter<double>("phiMax");
  phiBin = pset.getParameter<int>("phiBin");

  standAlone_ = pset.getParameter<bool>("standAlone");
  batch_ = pset.getParameter<bool>("batch");

  outputFileName_ = pset.getParameter<string>("OutputFileName");
  inputFileName_  = pset.getUntrackedParameter<string>("InputFileName");

  histo_index_photons_ = 0;
  histo_index_conversions_ = 0;
  histo_index_efficiency_ = 0;
  histo_index_invMass_ = 0;

  types_.push_back("All");
  types_.push_back("GoodCandidate");
  types_.push_back("Background");

  parts_.push_back("AllEcal");
  parts_.push_back("Barrel");
  parts_.push_back("Endcaps");

}
PhotonOfflineClient::~PhotonOfflineClient ( ) [virtual]

Definition at line 68 of file PhotonOfflineClient.cc.

{}

Member Function Documentation

void PhotonOfflineClient::analyze ( const edm::Event e,
const edm::EventSetup esup 
) [virtual]

Implements edm::EDAnalyzer.

Definition at line 72 of file PhotonOfflineClient.cc.

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

Reimplemented from edm::EDAnalyzer.

Definition at line 70 of file PhotonOfflineClient.cc.

{}
vector< vector< MonitorElement * > > PhotonOfflineClient::book2DHistoVector ( std::string  histoType,
std::string  histoName,
std::string  title,
int  xbin,
double  xmin,
double  xmax,
int  ybin = 1,
double  ymin = 1,
double  ymax = 2 
)

Definition at line 1091 of file PhotonAnalyzer.cc.

References DQMStore::book1D(), DQMStore::book2D(), DQMStore::bookProfile(), gather_cfg::cout, align_tpl::cut, dbe_, DQMStore::pwd(), DQMStore::setCurrentFolder(), and indexGen::title.

{
  int histo_index = 0;

  vector<MonitorElement*> temp1DVector;
//   vector<vector<MonitorElement*> > temp2DVector;

  //determining which folder we're in
  bool conversionPlot = false;
  if(dbe_->pwd().find( "Conversions" ) != string::npos) conversionPlot = true;
  bool TwoDPlot = false;
  if(histoName.find( "2D" ) != string::npos) TwoDPlot = true;

  if(conversionPlot){
    histo_index_conversions_++;
    histo_index = histo_index_conversions_;
  }
  else{
    histo_index_photons_++;
    histo_index = histo_index_photons_;
  }

  stringstream histo_number_stream;
  histo_number_stream << "h_";
  if(histo_index<10)   histo_number_stream << "0";
  histo_number_stream << histo_index << "_";


  for(int cut = 0; cut != numberOfSteps_; ++cut){ //looping over Et cut values

    for(uint type=0;type!=types_.size();++type){  //looping over isolation type

      currentFolder_.str("");
      currentFolder_ << "Egamma/PhotonAnalyzer/" << types_[type] << "Photons/Et above " << (cut+1)*cutStep_ << " GeV";
      if(conversionPlot) currentFolder_ << "/Conversions";

      dbe_->setCurrentFolder(currentFolder_.str());

      string kind;
      if(conversionPlot) kind = " Conversions: ";
      else kind = " Photons: ";

      if(histoType=="1D")           temp1DVector.push_back(dbe_->book1D(      histo_number_stream.str()+histoName,types_[type]+kind+title,xbin,xmin,xmax));
      else if(histoType=="2D"){
        if((TwoDPlot && type==0) || !TwoDPlot){//only book the 2D plots in the "AllPhotons" folder
                                    temp1DVector.push_back(dbe_->book2D(      histo_number_stream.str()+histoName,types_[type]+kind+title,xbin,xmin,xmax,ybin,ymin,ymax));
        }
      }
      else if(histoType=="Profile") temp1DVector.push_back(dbe_->bookProfile( histo_number_stream.str()+histoName,types_[type]+kind+title,xbin,xmin,xmax,ybin,ymin,ymax,""));
      else cout << "bad histoType\n";
    }

    temp2DVector.push_back(temp1DVector);
    temp1DVector.clear();
  }

//   return temp2DVector;

}
vector< vector< vector< MonitorElement * > > > PhotonOfflineClient::book3DHistoVector ( std::string  histoType,
std::string  histoName,
std::string  title,
int  xbin,
double  xmin,
double  xmax,
int  ybin = 1,
double  ymin = 1,
double  ymax = 2 
)

Definition at line 1155 of file PhotonAnalyzer.cc.

References DQMStore::book1D(), DQMStore::book2D(), DQMStore::bookProfile(), gather_cfg::cout, align_tpl::cut, dbe_, DQMStore::pwd(), DQMStore::setCurrentFolder(), and indexGen::title.

{
  int histo_index = 0;

  vector<MonitorElement*> temp1DVector;
  vector<vector<MonitorElement*> > temp2DVector;
//   vector<vector<vector<MonitorElement*> > > temp3DVector;


  //determining which folder we're in
  bool conversionPlot = false;
  if(dbe_->pwd().find( "Conversions" ) != string::npos) conversionPlot = true;


  if(conversionPlot){
    histo_index_conversions_++;
    histo_index = histo_index_conversions_;
  }
  else{
    histo_index_photons_++;
    histo_index = histo_index_photons_;
  }

  stringstream histo_number_stream;
  histo_number_stream << "h_";
  if(histo_index<10)   histo_number_stream << "0";
  histo_number_stream << histo_index << "_";


  for(int cut = 0; cut != numberOfSteps_; ++cut){     //looping over Et cut values

    for(uint type=0;type!=types_.size();++type){      //looping over isolation type

      for(uint part=0;part!=parts_.size();++part){    //looping over different parts of the ecal

        currentFolder_.str("");
        currentFolder_ << "Egamma/PhotonAnalyzer/" << types_[type] << "Photons/Et above " << (cut+1)*cutStep_ << " GeV";
        if(conversionPlot) currentFolder_ << "/Conversions";

        dbe_->setCurrentFolder(currentFolder_.str());

        string kind;
        if(conversionPlot) kind = " Conversions: ";
        else kind = " Photons: ";

        if(histoType=="1D")           temp1DVector.push_back(dbe_->book1D(      histo_number_stream.str()+histoName+parts_[part],types_[type]+kind+parts_[part]+": "+title,xbin,xmin,xmax));
        else if(histoType=="2D")      temp1DVector.push_back(dbe_->book2D(      histo_number_stream.str()+histoName+parts_[part],types_[type]+kind+parts_[part]+": "+title,xbin,xmin,xmax,ybin,ymin,ymax));
        else if(histoType=="Profile") temp1DVector.push_back(dbe_->bookProfile( histo_number_stream.str()+histoName+parts_[part],types_[type]+kind+parts_[part]+": "+title,xbin,xmin,xmax,ybin,ymin,ymax,""));
        else cout << "bad histoType\n";


      }

      temp2DVector.push_back(temp1DVector);
      temp1DVector.clear();
    }

    temp3DVector.push_back(temp2DVector);
    temp2DVector.clear();
  }

  //  return temp3DVector;
}
MonitorElement* PhotonOfflineClient::bookHisto ( std::string  histoName,
std::string  title,
int  bin,
double  min,
double  max 
)
void PhotonOfflineClient::dividePlots ( MonitorElement dividend,
MonitorElement numerator,
MonitorElement denominator 
) [private]

Definition at line 329 of file PhotonOfflineClient.cc.

References MonitorElement::getBinContent(), MonitorElement::getEntries(), MonitorElement::getNbinsX(), j, MonitorElement::setBinContent(), MonitorElement::setBinError(), MonitorElement::setEntries(), mathSSE::sqrt(), and relativeConstraints::value.

                                                                                                                      {
  double value,err;

  if(denominator->getEntries()==0) return;

  for (int j=1; j<=numerator->getNbinsX(); j++){
    if (denominator->getBinContent(j)!=0){
      value = ((double) numerator->getBinContent(j))/((double) denominator->getBinContent(j));
      err = sqrt( value*(1-value) / ((double) denominator->getBinContent(j)) );
      dividend->setBinContent(j, value);
      dividend->setBinError(j,err);
    }
    else {
      dividend->setBinContent(j, 0);
      dividend->setBinError(j,0);
    }
    dividend->setEntries(numerator->getEntries());
  }
}
void PhotonOfflineClient::dividePlots ( MonitorElement dividend,
MonitorElement numerator,
double  denominator 
) [private]

Definition at line 350 of file PhotonOfflineClient.cc.

References MonitorElement::getBinContent(), MonitorElement::getNbinsX(), j, MonitorElement::setBinContent(), MonitorElement::setBinError(), mathSSE::sqrt(), and relativeConstraints::value.

                                                                                                             {
  double value,err;

  for (int j=1; j<=numerator->getNbinsX(); j++){
    if (denominator!=0){
      value = ((double) numerator->getBinContent(j))/denominator;
      err = sqrt( value*(1-value) / denominator);
      dividend->setBinContent(j, value);
      dividend->setBinError(j,err);
    }
    else {
      dividend->setBinContent(j, 0);
    }
  }

}
void PhotonOfflineClient::endJob ( void  ) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 79 of file PhotonOfflineClient.cc.

void PhotonOfflineClient::endLuminosityBlock ( const edm::LuminosityBlock ,
const edm::EventSetup setup 
) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 74 of file PhotonOfflineClient.cc.

{}
void PhotonOfflineClient::endRun ( const edm::Run run,
const edm::EventSetup setup 
) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 83 of file PhotonOfflineClient.cc.

{
  if(!standAlone_) runClient();
}
MonitorElement * PhotonOfflineClient::retrieveHisto ( std::string  dir,
std::string  name 
)

Definition at line 518 of file PhotonOfflineClient.cc.

References dbe_, DQMStore::getContents(), and getHLTprescales::index.

                                                                         {
  //cout << "dir = " << dir << endl;
  //cout << "name = " << name << endl;
  vector<MonitorElement*> histoVector;
  uint indexOfRelevantHistogram=0;
  string fullMEName = "";
  histoVector = dbe_->getContents(dir);
  for(uint index=0;index!=histoVector.size();index++){
    string MEName = histoVector[index]->getName();
    if(MEName.find( name ) != string::npos){
      indexOfRelevantHistogram = index;
      break;
    }
  }
  return histoVector[indexOfRelevantHistogram];
}
void PhotonOfflineClient::runClient ( ) [virtual]

Definition at line 91 of file PhotonOfflineClient.cc.

References align_tpl::cut, dbe_, RecoTauValidation_cfi::denominator, DQMStore::dirExists(), jptDQMConfig_cff::etaMax, jptDQMConfig_cff::etaMin, jptDQMConfig_cff::etMax, reco::tau::qcuts::etMin(), DQMStore::get(), MonitorElement::getIntValue(), DQMStore::open(), jptDQMConfig_cff::phiMax, jptDQMConfig_cff::phiMin, DQMStore::removeElement(), DQMStore::save(), and DQMStore::setCurrentFolder().

{
  if(!dbe_) return;

  if(batch_)  dbe_->open(inputFileName_);

  if(!dbe_->dirExists("Egamma/PhotonAnalyzer")){
    //cout << "egamma directory doesn't exist..." << std::endl;
    return;
  }

  //find out how many histograms are in the various folders
  histo_index_photons_     = dbe_->get("Egamma/PhotonAnalyzer/numberOfHistogramsInPhotonsFolder")->getIntValue();
  histo_index_conversions_ = dbe_->get("Egamma/PhotonAnalyzer/numberOfHistogramsInConversionsFolder")->getIntValue();
  histo_index_efficiency_  = dbe_->get("Egamma/PhotonAnalyzer/numberOfHistogramsInEfficiencyFolder")->getIntValue();
  histo_index_invMass_     = dbe_->get("Egamma/PhotonAnalyzer/numberOfHistogramsInInvMassFolder")->getIntValue();

  dbe_->setCurrentFolder("Egamma/PhotonAnalyzer/");
  dbe_->removeElement("numberOfHistogramsInPhotonsFolder");
  dbe_->removeElement("numberOfHistogramsInConversionsFolder");
  dbe_->removeElement("numberOfHistogramsInEfficiencyFolder");
  dbe_->removeElement("numberOfHistogramsInInvMassFolder");


  string AllPath    = "Egamma/PhotonAnalyzer/AllPhotons/";
  string IsoPath    = "Egamma/PhotonAnalyzer/GoodCandidatePhotons/";
  string NonisoPath = "Egamma/PhotonAnalyzer/BackgroundPhotons/";
  string EffPath    = "Egamma/PhotonAnalyzer/Efficiencies/";


  //booking efficiency histograms
  dbe_->setCurrentFolder(EffPath);

  p_efficiencyVsEtaLoose_ = bookHisto("EfficiencyVsEtaLoose","Fraction of Photons passing Loose Isolation vs #eta;#eta",etaBin,etaMin, etaMax);
  p_efficiencyVsEtLoose_  = bookHisto("EfficiencyVsEtLoose", "Fraction of Photons passing Loose Isolation vs E_{T};E_{T} (GeV)",etBin,etMin,etMax);
  p_efficiencyVsEtaTight_ = bookHisto("EfficiencyVsEtaTight","Fraction of Photons passing Tight Isolation vs #eta;#eta",etaBin,etaMin, etaMax);
  p_efficiencyVsEtTight_  = bookHisto("EfficiencyVsEtTight", "Fraction of Photons passing Tight Isolation vs E_{T};E_{T} (GeV)",etBin,etMin,etMax);


  p_efficiencyVsEtaHLT_ = bookHisto("EfficiencyVsEtaHLT","Fraction of Photons firing HLT vs #eta;#eta",etaBin,etaMin, etaMax);
  p_efficiencyVsEtHLT_  = bookHisto("EfficiencyVsEtHLT", "Fraction of Photons firing HLT vs E_{T};E_{T} (GeV)",etBin,etMin,etMax);


  p_convFractionVsEtaLoose_ = bookHisto("ConvFractionVsEtaLoose","Fraction of Loosely Isolated Photons which are matched to two tracks vs #eta;#eta",etaBin,etaMin, etaMax);
  p_convFractionVsEtLoose_  = bookHisto("ConvFractionVsEtLoose", "Fraction of Loosely Isolated Photons which are matched to two tracks vs E_{T};E_{T} (GeV)",etBin,etMin,etMax);
  p_convFractionVsEtaTight_ = bookHisto("ConvFractionVsEtaTight","Fraction of Tightly Isolated Photons which are matched to two tracks vs #eta;#eta",etaBin,etaMin, etaMax);
  p_convFractionVsEtTight_  = bookHisto("ConvFractionVsEtTight", "Fraction of Tightly Isolated Photons which are matched to two tracks vs E_{T};E_{T} (GeV)",etBin,etMin,etMax);

  p_vertexReconstructionEfficiencyVsEta_ = bookHisto("VertexReconstructionEfficiencyVsEta","Fraction of Converted Photons which have a valid vertex vs #eta;#eta",etaBin,etaMin, etaMax);


  //booking conversion fraction histograms
  dbe_->setCurrentFolder(AllPath+"Et above 20 GeV/Conversions");
  p_convFractionVsEt_  = book2DHistoVector("1D","convFractionVsEt", "Fraction of Converted Photons vs E_{T};E_{T} (GeV)",etBin,etMin,etMax);
  p_convFractionVsPhi_ = book3DHistoVector("1D","convFractionVsPhi","Fraction of Converted Photons vs #phi;#phi",phiBin,phiMin,phiMax);
  p_convFractionVsEta_ = book2DHistoVector("1D","convFractionVsEta","Fraction of Converted Photons vs #eta;#eta",etaBin,etaMin,etaMax);


  //booking bad channel fraction histograms
  dbe_->setCurrentFolder(AllPath+"Et above 20 GeV/");
  p_badChannelsFractionVsPhi_ = book2DHistoVector("1D","badChannelsFractionVsPhi","Fraction of Photons which have at least one bad channel vs #phi;#phi",phiBin,phiMin,phiMax);
  p_badChannelsFractionVsEta_ = book2DHistoVector("1D","badChannelsFractionVsEta","Fraction of Photons which have at least one bad channel vs #eta;#eta",etaBin,etaMin, etaMax);
  p_badChannelsFractionVsEt_  = book2DHistoVector("1D","badChannelsFractionVsEt", "Fraction of Photons which have at least one bad channel vs E_{T};E_{T} (GeV)",etBin,etMin,etMax);



  //making efficiency plots

  MonitorElement * dividend;
  MonitorElement * numerator;
  MonitorElement * denominator;

  currentFolder_.str("");
  currentFolder_ << AllPath << "Et above 20 GeV/";

  //HLT efficiency plots
  dividend    = retrieveHisto(EffPath,"EfficiencyVsEtaHLT");
  numerator   = retrieveHisto(EffPath,"phoEtaPostHLT");
  denominator = retrieveHisto(EffPath,"phoEtaPreHLT");
  dividePlots(dividend,numerator,denominator);

  dividend    = retrieveHisto(EffPath,"EfficiencyVsEtHLT");
  numerator   = retrieveHisto(EffPath,"phoEtPostHLT");
  denominator = retrieveHisto(EffPath,"phoEtPreHLT");
  dividePlots(dividend,numerator,denominator);


  //efficiencies vs Eta
  denominator = retrieveHisto(currentFolder_.str(),"phoEta");

  dividend    = retrieveHisto(EffPath,"EfficiencyVsEtaLoose");
  numerator   = retrieveHisto(EffPath,"phoEtaLoose");
  dividePlots(dividend,numerator,denominator);

  dividend    = retrieveHisto(EffPath,"EfficiencyVsEtaTight");
  numerator   = retrieveHisto(EffPath,"phoEtaTight");
  dividePlots(dividend,numerator,denominator);


  //efficiencies vs Et
  denominator = retrieveHisto(currentFolder_.str(),"phoEtAllEcal");

  dividend    = retrieveHisto(EffPath,"EfficiencyVsEtLoose");
  numerator   = retrieveHisto(EffPath,"phoEtLoose");
  dividePlots(dividend,numerator,denominator);

  dividend    = retrieveHisto(EffPath,"EfficiencyVsEtTight");
  numerator   = retrieveHisto(EffPath,"phoEtTight");
  dividePlots(dividend,numerator,denominator);


  //conversion fractions vs Eta
  dividend    = retrieveHisto(EffPath,"ConvFractionVsEtaLoose");
  numerator   = retrieveHisto(EffPath,"convEtaLoose");
  denominator = retrieveHisto(EffPath,"phoEtaLoose");
  dividePlots(dividend,numerator,denominator);

  dividend    = retrieveHisto(EffPath,"ConvFractionVsEtaTight");
  numerator   = retrieveHisto(EffPath,"convEtaTight");
  denominator = retrieveHisto(EffPath,"phoEtaTight");
  dividePlots(dividend,numerator,denominator);


  //conversion fractions vs Et
  dividend    = retrieveHisto(EffPath,"ConvFractionVsEtLoose");
  numerator   = retrieveHisto(EffPath,"convEtLoose");
  denominator = retrieveHisto(EffPath,"phoEtLoose");
  dividePlots(dividend,numerator,denominator);

  dividend    = retrieveHisto(EffPath,"ConvFractionVsEtTight");
  numerator   = retrieveHisto(EffPath,"convEtTight");
  denominator = retrieveHisto(EffPath,"phoEtTight");
  dividePlots(dividend,numerator,denominator);


  //conversion vertex recontruction efficiency
  dividend    = retrieveHisto(EffPath,"VertexReconstructionEfficiencyVsEta");
  numerator   = retrieveHisto(currentFolder_.str()+"Conversions/","phoConvEta");
  denominator = retrieveHisto(EffPath,"phoEtaVertex");
  dividePlots(dividend,numerator,denominator);


  dbe_->setCurrentFolder(EffPath);


  dbe_->removeElement("phoEtaPreHLT");
  dbe_->removeElement("phoEtPreHLT");
  dbe_->removeElement("phoEtaPostHLT");
  dbe_->removeElement("phoEtPostHLT");
  dbe_->removeElement("phoEtaLoose");
  dbe_->removeElement("phoEtaTight");
  dbe_->removeElement("phoEtLoose");
  dbe_->removeElement("phoEtTight");
  dbe_->removeElement("phoEtaVertex");
  dbe_->removeElement("convEtaLoose");
  dbe_->removeElement("convEtaTight");
  dbe_->removeElement("convEtLoose");
  dbe_->removeElement("convEtTight");



  for(uint type=0;type!=types_.size();++type){

    for (int cut = 0; cut !=numberOfSteps_; ++cut) {

      currentFolder_.str("");
      currentFolder_ << "Egamma/PhotonAnalyzer/" << types_[type] << "Photons/Et above " << (cut+1)*cutStep_ << " GeV/";

      //making bad channel histograms

      //vs Et
      dividend    = retrieveHisto(currentFolder_.str(),"badChannelsFractionVsEt");
      numerator   = retrieveHisto(currentFolder_.str(),"phoEtBadChannels");
      denominator = retrieveHisto(currentFolder_.str(),"phoEtAllEcal");
      dividePlots(dividend,numerator,denominator);

      //vs eta
      dividend    = retrieveHisto(currentFolder_.str(),"badChannelsFractionVsEta");
      numerator   = retrieveHisto(currentFolder_.str(),"phoEtaBadChannels");
      denominator = retrieveHisto(currentFolder_.str(),"phoEta");
      dividePlots(dividend,numerator,denominator);

      //vs phi
      dividend    = retrieveHisto(currentFolder_.str(),"badChannelsFractionVsPhi");
      numerator   = retrieveHisto(currentFolder_.str(),"phoPhiBadChannels");
      denominator = retrieveHisto(currentFolder_.str(),"phoPhiAllEcal");
      dividePlots(dividend,numerator,denominator);

      //making conversion fraction histograms

      //vs Et
      dividend    = retrieveHisto(currentFolder_.str()+"Conversions/","convFractionVsEt");
      numerator   = retrieveHisto(currentFolder_.str()+"Conversions/","phoConvEtAllEcal");
      denominator = retrieveHisto(currentFolder_.str(),"phoEtAllEcal");
      dividePlots(dividend,numerator,denominator);

      //vs eta
      dividend    = retrieveHisto(currentFolder_.str()+"Conversions/","convFractionVsEta");
      numerator   = retrieveHisto(currentFolder_.str()+"Conversions/","phoConvEtaForEfficiency");
      denominator = retrieveHisto(currentFolder_.str(),"phoEta");
      dividePlots(dividend,numerator,denominator);

      //vs phi
      dividend    = retrieveHisto(currentFolder_.str()+"Conversions/","convFractionVsPhiAllEcal");
      numerator   = retrieveHisto(currentFolder_.str()+"Conversions/","phoConvPhiForEfficiencyAllEcal");
      denominator = retrieveHisto(currentFolder_.str(),"phoPhiAllEcal");
      dividePlots(dividend,numerator,denominator);
      dividend    = retrieveHisto(currentFolder_.str()+"Conversions/","convFractionVsPhiBarrel");
      numerator   = retrieveHisto(currentFolder_.str()+"Conversions/","phoConvPhiForEfficiencyBarrel");
      denominator = retrieveHisto(currentFolder_.str(),"phoPhiBarrel");
      dividePlots(dividend,numerator,denominator);
      dividend    = retrieveHisto(currentFolder_.str()+"Conversions/","convFractionVsPhiEndcaps");
      numerator   = retrieveHisto(currentFolder_.str()+"Conversions/","phoConvPhiForEfficiencyEndcaps");
      denominator = retrieveHisto(currentFolder_.str(),"phoPhiEndcaps");
      dividePlots(dividend,numerator,denominator);


      dbe_->setCurrentFolder(currentFolder_.str()+"Conversions/");
      dbe_->removeElement("phoConvEtaForEfficiency");
      dbe_->removeElement("phoConvPhiForEfficiencyAllEcal");
      dbe_->removeElement("phoConvPhiForEfficiencyBarrel");
      dbe_->removeElement("phoConvPhiForEfficiencyEndcaps");

    }


  }


  if(standAlone_) dbe_->save(outputFileName_);
  else if(batch_) dbe_->save(inputFileName_);


}

Member Data Documentation

Definition at line 137 of file PhotonOfflineClient.h.

std::stringstream PhotonOfflineClient::currentFolder_ [private]

Definition at line 142 of file PhotonOfflineClient.h.

Definition at line 123 of file PhotonOfflineClient.h.

Definition at line 118 of file PhotonOfflineClient.h.

Definition at line 131 of file PhotonOfflineClient.h.

double PhotonOfflineClient::etaMax [private]

Definition at line 130 of file PhotonOfflineClient.h.

double PhotonOfflineClient::etaMin [private]

Definition at line 129 of file PhotonOfflineClient.h.

Definition at line 128 of file PhotonOfflineClient.h.

double PhotonOfflineClient::etMax [private]

Definition at line 127 of file PhotonOfflineClient.h.

double PhotonOfflineClient::etMin [private]

Definition at line 126 of file PhotonOfflineClient.h.

Definition at line 145 of file PhotonOfflineClient.h.

Definition at line 146 of file PhotonOfflineClient.h.

Definition at line 147 of file PhotonOfflineClient.h.

Definition at line 144 of file PhotonOfflineClient.h.

std::string PhotonOfflineClient::inputFileName_ [private]

Definition at line 140 of file PhotonOfflineClient.h.

Definition at line 124 of file PhotonOfflineClient.h.

std::string PhotonOfflineClient::outputFileName_ [private]

Definition at line 139 of file PhotonOfflineClient.h.

std::vector<std::vector<MonitorElement*> > PhotonOfflineClient::p_badChannelsFractionVsEt_ [private]

Definition at line 109 of file PhotonOfflineClient.h.

Definition at line 107 of file PhotonOfflineClient.h.

Definition at line 108 of file PhotonOfflineClient.h.

std::vector<std::vector<MonitorElement*> > PhotonOfflineClient::p_convFractionVsEt_ [private]

Definition at line 105 of file PhotonOfflineClient.h.

std::vector<std::vector<MonitorElement*> > PhotonOfflineClient::p_convFractionVsEta_ [private]

Definition at line 103 of file PhotonOfflineClient.h.

Definition at line 98 of file PhotonOfflineClient.h.

Definition at line 100 of file PhotonOfflineClient.h.

Definition at line 99 of file PhotonOfflineClient.h.

Definition at line 101 of file PhotonOfflineClient.h.

std::vector<std::vector<std::vector<MonitorElement*> > > PhotonOfflineClient::p_convFractionVsPhi_ [private]

Definition at line 104 of file PhotonOfflineClient.h.

Definition at line 95 of file PhotonOfflineClient.h.

Definition at line 91 of file PhotonOfflineClient.h.

Definition at line 93 of file PhotonOfflineClient.h.

Definition at line 96 of file PhotonOfflineClient.h.

Definition at line 92 of file PhotonOfflineClient.h.

Definition at line 94 of file PhotonOfflineClient.h.

Definition at line 111 of file PhotonOfflineClient.h.

Definition at line 121 of file PhotonOfflineClient.h.

std::vector<std::string> PhotonOfflineClient::parts_ [private]

Definition at line 150 of file PhotonOfflineClient.h.

Definition at line 134 of file PhotonOfflineClient.h.

double PhotonOfflineClient::phiMax [private]

Definition at line 133 of file PhotonOfflineClient.h.

double PhotonOfflineClient::phiMin [private]

Definition at line 132 of file PhotonOfflineClient.h.

Definition at line 136 of file PhotonOfflineClient.h.

std::vector<std::string> PhotonOfflineClient::types_ [private]

Definition at line 149 of file PhotonOfflineClient.h.

Definition at line 119 of file PhotonOfflineClient.h.