CMS 3D CMS Logo

Classes | Public Member Functions | Private Member Functions | Private Attributes

sistrip::EnsembleCalibrationLA Class Reference

#include <EnsembleCalibrationLA.h>

Inheritance diagram for sistrip::EnsembleCalibrationLA:
edm::EDAnalyzer

List of all members.

Classes

struct  MethodCalibrations

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &)
void endJob ()
 EnsembleCalibrationLA (const edm::ParameterSet &)

Private Member Functions

void write_calibrations () const
void write_ensembles_plots (const Book &) const
void write_ensembles_text (const Book &)
void write_samples_plots (const Book &) const

Private Attributes

std::map< std::string,
MethodCalibrations
calibrations
const double highBin
const std::string inFileLocation
const std::vector< std::string > inputFiles
const double lowBin
const unsigned maxEvents
const unsigned nbins
const std::string Prefix
const unsigned samples
std::vector< int > vMethods

Detailed Description

Definition at line 9 of file EnsembleCalibrationLA.h.


Constructor & Destructor Documentation

sistrip::EnsembleCalibrationLA::EnsembleCalibrationLA ( const edm::ParameterSet conf) [explicit]

Definition at line 12 of file EnsembleCalibrationLA.cc.

                                                                        :
  inputFiles( conf.getParameter<std::vector<std::string> >("InputFiles") ),
  inFileLocation( conf.getParameter<std::string>("InFileLocation")),
  Prefix( conf.getUntrackedParameter<std::string>("Prefix","")),
  maxEvents( conf.getUntrackedParameter<unsigned>("MaxEvents",0)),
  samples( conf.getParameter<unsigned>("Samples")),
  nbins( conf.getParameter<unsigned>("NBins")),
  lowBin( conf.getParameter<double>("LowBin")),
  highBin( conf.getParameter<double>("HighBin")),
  vMethods( conf.getParameter<std::vector<int> >("Methods"))
{}

Member Function Documentation

void sistrip::EnsembleCalibrationLA::analyze ( const edm::Event ,
const edm::EventSetup  
) [inline, virtual]

Implements edm::EDAnalyzer.

Definition at line 14 of file EnsembleCalibrationLA.h.

{}
void sistrip::EnsembleCalibrationLA::endJob ( void  ) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 25 of file EnsembleCalibrationLA.cc.

References mergeVDriftHistosByStation::file, LA_Filler_Fitter::fill(), LA_Filler_Fitter::fit(), highBin, inFileLocation, inputFiles, lowBin, maxEvents, PFRecoTauDiscriminationAgainstElectronMVA_cfi::method, nbins, samples, LA_Filler_Fitter::summarize_ensembles(), vMethods, write_calibrations(), write_ensembles_plots(), write_ensembles_text(), and write_samples_plots().

{
  Book book("la_ensemble");
  TChain*const chain = new TChain("la_ensemble"); 
  BOOST_FOREACH(std::string file, inputFiles) chain->Add((file+inFileLocation).c_str());

  int methods = 0;  BOOST_FOREACH(unsigned method, vMethods) methods|=method;

  LA_Filler_Fitter 
    laff(methods,samples,nbins,lowBin,highBin,maxEvents);
  laff.fill(chain,book);           
  laff.fit(book);                  
  laff.summarize_ensembles(book);  

  write_ensembles_text(book);
  write_ensembles_plots(book);
  write_samples_plots(book);
  write_calibrations();
}
void sistrip::EnsembleCalibrationLA::write_calibrations ( ) const [private]

Definition at line 103 of file EnsembleCalibrationLA.cc.

References calibrations, mergeVDriftHistosByStation::file, i, dbtoconf::out, and Prefix.

Referenced by endJob().

                           {
  fstream file((Prefix+"calibrations.dat").c_str(),std::ios::out);
  std::pair<std::string,MethodCalibrations> cal;
  BOOST_FOREACH(cal,calibrations) {
    file << cal.first << std::endl
         << "\t slopes(";    BOOST_FOREACH(float i, cal.second.slopes) file << i<< ","; file << ")" << std::endl
         << "\t offsets(";   BOOST_FOREACH(float i, cal.second.offsets) file << i<< ","; file << ")" << std::endl
         << "\t pulls(";     BOOST_FOREACH(float i, cal.second.pulls) file << i<< ","; file << ")" << std::endl;
  }
  file.close();
}
void sistrip::EnsembleCalibrationLA::write_ensembles_plots ( const Book book) const [private]

Definition at line 87 of file EnsembleCalibrationLA.cc.

References Book::begin(), Book::end(), mergeVDriftHistosByStation::file, estimatePileup::hist, and Prefix.

Referenced by endJob().

                                              {
  TFile file((Prefix+"sampleFits.root").c_str(),"RECREATE");
  for(Book::const_iterator hist = book.begin(".*(profile|ratio|reconstruction|symm|symmchi2|_w\\d)"); hist!=book.end(); ++hist)
    hist->second->Write();
  file.Close();
}
void sistrip::EnsembleCalibrationLA::write_ensembles_text ( const Book book) [private]

Definition at line 46 of file EnsembleCalibrationLA.cc.

References calibrations, gather_cfg::cout, LA_Filler_Fitter::ensemble_summary(), mergeVDriftHistosByStation::file, diffTreeTool::format(), getHLTprescales::index, label, LA_Filler_Fitter::layer_index(), geometryCSVtoXML::line, LA_Filler_Fitter::offset_slope(), dbtoconf::out, Prefix, LA_Filler_Fitter::pull(), edmLumisInFiles::summary, and sistrip::TIB.

Referenced by endJob().

                                       {
  std::pair<std::string, std::vector<LA_Filler_Fitter::EnsembleSummary> > ensemble;
  BOOST_FOREACH(ensemble, LA_Filler_Fitter::ensemble_summary(book)) {
    fstream file((Prefix+ensemble.first+".dat").c_str(),std::ios::out);
    BOOST_FOREACH(LA_Filler_Fitter::EnsembleSummary summary, ensemble.second)
      file << summary << std::endl;

    const std::pair<std::pair<float,float>,std::pair<float,float> > line = LA_Filler_Fitter::offset_slope(ensemble.second);
    const float pull =  LA_Filler_Fitter::pull(ensemble.second);

    unsigned index = 15;
    std::string label;
    {
      std::cout << ensemble.first << std::endl;
      boost::regex format(".*(T[IO]B)_layer(\\d)([as])_(.*)");
      if(boost::regex_match(ensemble.first,format)) {
        const bool TIB = "TIB" == boost::regex_replace(ensemble.first, format, "\\1");
        const bool stereo = "s" == boost::regex_replace(ensemble.first, format, "\\3");
        const unsigned layer = boost::lexical_cast<unsigned>(boost::regex_replace(ensemble.first, format, "\\2"));
        label = boost::regex_replace(ensemble.first, format, "\\4");
        index = LA_Filler_Fitter::layer_index(TIB,stereo,layer);

        calibrations[label].slopes[index]=line.second.first;
        calibrations[label].offsets[index]=line.first.first;
        calibrations[label].pulls[index]=pull;
      }
    }

    file << std::endl << std::endl
         << "# Best Fit Line: "  
         << line.first.first <<"("<< line.first.second<<")   +   x* "
         << line.second.first<<"("<< line.second.second<<")"           
         << std::endl
         << "# Pull (average sigma of (x_measure-x_truth)/e_measure): " << pull 
         << std::endl
         << "LA_Calibration( METHOD_XXXXX , xxx, " << line.second.first << ", " << line.first.first << ", " << pull << ")," << std::endl;
    file.close();
  } 
}
void sistrip::EnsembleCalibrationLA::write_samples_plots ( const Book book) const [private]

Definition at line 95 of file EnsembleCalibrationLA.cc.

References Book::begin(), Book::end(), mergeVDriftHistosByStation::file, estimatePileup::hist, and Prefix.

Referenced by endJob().

                                            {
  TFile file((Prefix+"ensembleFits.root").c_str(),"RECREATE");
  for(Book::const_iterator hist = book.begin(".*(measure|merr|ensembleReco|pull)"); hist!=book.end(); ++hist)
    hist->second->Write();
  file.Close();
}

Member Data Documentation

Definition at line 39 of file EnsembleCalibrationLA.h.

Referenced by write_calibrations(), and write_ensembles_text().

Definition at line 27 of file EnsembleCalibrationLA.h.

Referenced by endJob().

Definition at line 25 of file EnsembleCalibrationLA.h.

Referenced by endJob().

const std::vector<std::string> sistrip::EnsembleCalibrationLA::inputFiles [private]

Definition at line 24 of file EnsembleCalibrationLA.h.

Referenced by endJob().

Definition at line 27 of file EnsembleCalibrationLA.h.

Referenced by endJob().

Definition at line 26 of file EnsembleCalibrationLA.h.

Referenced by endJob().

const unsigned sistrip::EnsembleCalibrationLA::nbins [private]

Definition at line 26 of file EnsembleCalibrationLA.h.

Referenced by endJob().

const std::string sistrip::EnsembleCalibrationLA::Prefix [private]
const unsigned sistrip::EnsembleCalibrationLA::samples [private]

Definition at line 26 of file EnsembleCalibrationLA.h.

Referenced by endJob().

std::vector<int> sistrip::EnsembleCalibrationLA::vMethods [private]

Definition at line 28 of file EnsembleCalibrationLA.h.

Referenced by endJob().