CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/Calibration/EcalCalibAlgos/src/miscalibExample.cc

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // Package:    miscalibExample
00004 // Class:      miscalibExample
00005 // 
00013 //
00014 // Original Author:  Lorenzo AGOSTINO
00015 //         Created:  Tue Jul 18 12:17:01 CEST 2006
00016 // $Id: miscalibExample.cc,v 1.8 2010/01/14 22:21:39 wmtan Exp $
00017 //
00018 //
00019 
00020 
00021 // system include files
00022 
00023 // user include files
00024 #include "Calibration/EcalCalibAlgos/interface/miscalibExample.h"
00025 
00026 
00027 //
00028 
00029 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
00030 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
00031 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00032 
00033 
00034 #include <iostream>
00035 #include <stdexcept>
00036 #include <vector>
00037 
00038 
00039 
00040 // class declaration
00041 //
00042 /*
00043 class miscalibExample : public edm::EDAnalyzer {
00044    public:
00045       explicit miscalibExample(const edm::ParameterSet&);
00046       ~miscalibExample();
00047 
00048       virtual void analyze(const edm::Event&, const edm::EventSetup&);
00049       virtual void beginJob();
00050       virtual void endJob();
00051    private:
00052 
00053 
00054       // ----------member data ---------------------------
00055       std::string rootfile_;
00056       std::string correctedHybridSuperClusterProducer_;
00057       std::string correctedHybridSuperClusterCollection_;
00058       std::string BarrelHitsCollection_;
00059       std::string ecalHitsProducer_ ;
00060       int read_events;
00061 
00062       TH1F* scEnergy;
00063 };
00064 
00065 */
00066 miscalibExample::miscalibExample(const edm::ParameterSet& iConfig)
00067 {
00068 
00069    rootfile_                  = iConfig.getUntrackedParameter<std::string>("rootfile","ecalSimpleTBanalysis.root");
00070    correctedHybridSuperClusterProducer_ = iConfig.getParameter<std::string>("correctedHybridSuperClusterProducer");
00071    correctedHybridSuperClusterCollection_ = iConfig.getParameter<std::string>("correctedHybridSuperClusterCollection");
00072 
00073 }
00074 
00075 
00076 miscalibExample::~miscalibExample()
00077 {
00078  
00079 
00080 }
00081 
00082 //========================================================================
00083 void
00084 miscalibExample::beginJob() {
00085 //========================================================================
00086 
00087   // Book histograms 
00088   scEnergy = new TH1F("scEnergy","SuperCluster energy", 100, 20., 80.);
00089   read_events=0;
00090  
00091  }
00092 
00093 //========================================================================
00094 void
00095 miscalibExample::endJob() {
00096 //========================================================================
00097 
00098    std::cout << "************* STATISTICS **************" << std::endl;
00099    std::cout << "Read Events: " << read_events << std::endl;
00100 
00101 
00103 
00104   TFile f(rootfile_.c_str(),"RECREATE");
00105 
00106   scEnergy->Write(); 
00107   f.Close();
00108  
00109 }
00110 
00111 
00112 
00113 //=================================================================================
00114 void
00115 miscalibExample::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00116 {
00117 //=================================================================================
00118    using namespace edm;
00119    using namespace std;
00120 
00121    read_events++;
00122 
00123  // Get hybrid super clusters after energy correction
00124  
00125   Handle<reco::SuperClusterCollection> pCorrectedHybridSuperClusters;
00126   iEvent.getByLabel(correctedHybridSuperClusterProducer_, correctedHybridSuperClusterCollection_, pCorrectedHybridSuperClusters);
00127   if (!pCorrectedHybridSuperClusters.isValid()) {
00128     LogError("EgammaSimpleAnalyzer") << "Error! can't get collection with label " << correctedHybridSuperClusterCollection_.c_str() ;
00129   }
00130   const reco::SuperClusterCollection* correctedHybridSuperClusters = pCorrectedHybridSuperClusters.product();
00131 
00132 
00133   reco::SuperClusterCollection::const_iterator superClusterIt;
00134   for(superClusterIt=correctedHybridSuperClusters->begin(); superClusterIt!=correctedHybridSuperClusters->end(); superClusterIt++ )
00135   {
00136 
00137   scEnergy->Fill(superClusterIt->energy());
00138 
00139   }
00140 
00141 }
00142 
00143 //define this as a plug-in
00144 //DEFINE_FWK_MODULE(miscalibExample);