00001
00002
00003
00004
00005
00006 #include <Validation/EcalDigis/interface/EcalPreshowerNoiseDistrib.h>
00007 #include "DQMServices/Core/interface/DQMStore.h"
00008 using namespace cms;
00009 using namespace edm;
00010 using namespace std;
00011
00012 EcalPreshowerNoiseDistrib::EcalPreshowerNoiseDistrib(const ParameterSet& ps):
00013 ESdigiCollection_(ps.getParameter<edm::InputTag>("ESdigiCollection"))
00014 {
00015
00016
00017 verbose_ = ps.getUntrackedParameter<bool>("verbose", false);
00018
00019 dbe_ = 0;
00020
00021
00022 dbe_ = Service<DQMStore>().operator->();
00023
00024 if ( dbe_ ) {
00025 if ( verbose_ ) {
00026 dbe_->setVerbose(1);
00027 } else {
00028 dbe_->setVerbose(0);
00029 }
00030 }
00031
00032 if ( dbe_ ) {
00033 if ( verbose_ ) dbe_->showDirStructure();
00034 }
00035
00036
00037 meESDigiMultiplicity_=0;
00038 for (int ii=0; ii<3; ii++ ) { meESDigiADC_[ii] = 0; }
00039
00040 Char_t histo[200];
00041 if ( dbe_ ) {
00042 sprintf (histo, "multiplicity" ) ;
00043 meESDigiMultiplicity_ = dbe_->book1D(histo, histo, 1000, 0., 137728);
00044
00045 for ( int ii = 0; ii < 3 ; ii++ ) {
00046 sprintf (histo, "esRefHistos%02d", ii) ;
00047 meESDigiADC_[ii] = dbe_->book1D(histo, histo, 35, 983.5, 1018.5) ;
00048 }
00049
00050 for ( int ii = 0; ii < 3 ; ii++ ) {
00051 sprintf (histo, "esRefHistosCorr%02d", ii) ;
00052 meESDigiCorr_[ii] = dbe_->book2D(histo, histo, 35, 983.5, 1018.5, 35, 983.5, 1018.5) ;
00053 }
00054
00055 meESDigi3D_ = dbe_->book3D("meESDigi3D_", "meESDigi3D_", 35, 983.5, 1018.5, 35, 983.5, 1018.5, 35, 983.5, 1018.5) ;
00056 }
00057 }
00058
00059 EcalPreshowerNoiseDistrib::~EcalPreshowerNoiseDistrib(){
00060
00061 }
00062
00063 void EcalPreshowerNoiseDistrib::beginJob(const EventSetup& c){
00064
00065 }
00066
00067 void EcalPreshowerNoiseDistrib::endJob(){
00068
00069 }
00070
00071 void EcalPreshowerNoiseDistrib::analyze(const Event& e, const EventSetup& c){
00072
00073 Handle<ESDigiCollection> EcalDigiES;
00074
00075 e.getByLabel( ESdigiCollection_ , EcalDigiES );
00076
00077
00078 if( !EcalDigiES.isValid() ) return;
00079
00080
00081 const ESDigiCollection * preshowerDigi = EcalDigiES.product () ;
00082
00083 std::vector<double> esADCCounts ;
00084 esADCCounts.reserve(ESDataFrame::MAXSAMPLES);
00085
00086 int nDigis = 0;
00087
00088 for (unsigned int digis=0; digis<EcalDigiES->size(); ++digis) {
00089 nDigis++;
00090 ESDataFrame esdf=(*preshowerDigi)[digis];
00091 int nrSamples=esdf.size();
00092 for (int sample = 0 ; sample < nrSamples; ++sample) {
00093 ESSample mySample = esdf[sample];
00094 if (meESDigiADC_[sample]) { meESDigiADC_[sample] ->Fill(mySample.adc()); }
00095 }
00096
00097
00098 if(meESDigiCorr_[0]){ meESDigiCorr_[0]->Fill(esdf[0].adc(),esdf[1].adc()); }
00099 if(meESDigiCorr_[1]){ meESDigiCorr_[1]->Fill(esdf[0].adc(),esdf[2].adc()); }
00100 if(meESDigiCorr_[2]){ meESDigiCorr_[2]->Fill(esdf[1].adc(),esdf[2].adc()); }
00101
00102
00103 if ( meESDigi3D_ ) meESDigi3D_ -> Fill(esdf[0].adc(),esdf[1].adc(),esdf[2].adc());
00104 }
00105
00106 if ( meESDigiMultiplicity_ ) meESDigiMultiplicity_->Fill(nDigis);
00107
00108 }
00109