File indexing completed on 2024-04-06 12:32:31
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #include "FWCore/Utilities/interface/EDMException.h"
0011 #include "Validation/HcalRecHits/interface/NoiseRates.h"
0012
0013
0014
0015
0016
0017 NoiseRates::NoiseRates(const edm::ParameterSet &iConfig)
0018 : outputFile_(iConfig.getUntrackedParameter<std::string>("outputFile", "myfile.root")),
0019 rbxCollName_(iConfig.getUntrackedParameter<edm::InputTag>("rbxCollName")),
0020 minRBXEnergy_(iConfig.getUntrackedParameter<double>("minRBXEnergy")),
0021 minHitEnergy_(iConfig.getUntrackedParameter<double>("minHitEnergy")),
0022 useAllHistos_(iConfig.getUntrackedParameter<bool>("useAllHistos", false)),
0023 tok_rbx_(consumes<reco::HcalNoiseRBXCollection>(rbxCollName_)),
0024 noisetoken_(consumes<HcalNoiseSummary>(iConfig.getParameter<edm::InputTag>("noiselabel"))) {
0025
0026
0027
0028 }
0029
0030
0031
0032
0033
0034 void NoiseRates::bookHistograms(DQMStore::IBooker &ib, edm::Run const &run, edm::EventSetup const &es) {
0035 ib.setCurrentFolder("NoiseRatesV/NoiseRatesTask");
0036
0037
0038 Char_t histo[100];
0039
0040
0041 if (useAllHistos_) {
0042 sprintf(histo, "hLumiBlockCount");
0043 hLumiBlockCount_ = ib.book1D(histo, histo, 1, -0.5, 0.5);
0044 }
0045
0046 sprintf(histo, "hRBXEnergy");
0047 hRBXEnergy_ = ib.book1D(histo, histo, 300, 0, 3000);
0048
0049 sprintf(histo, "hRBXEnergyType1");
0050 hRBXEnergyType1_ = ib.book1D(histo, histo, 300, 0, 3000);
0051
0052 sprintf(histo, "hRBXEnergyType2");
0053 hRBXEnergyType2_ = ib.book1D(histo, histo, 300, 0, 3000);
0054
0055 sprintf(histo, "hRBXEnergyType3");
0056 hRBXEnergyType3_ = ib.book1D(histo, histo, 300, 0, 3000);
0057
0058 sprintf(histo, "hRBXNHits");
0059 hRBXNHits_ = ib.book1D(histo, histo, 73, -0.5, 72.5);
0060
0061
0062
0063 sprintf(histo, "nNNumChannels");
0064 nNNumChannels_ = ib.book1D(histo, histo, 100, 0, 100);
0065 sprintf(histo, "nNSumE");
0066 nNSumE_ = ib.book1D(histo, histo, 100, 0, 5000);
0067 sprintf(histo, "nNSumEt");
0068 nNSumEt_ = ib.book1D(histo, histo, 100, 0, 2000);
0069
0070 sprintf(histo, "sNNumChannels");
0071 sNNumChannels_ = ib.book1D(histo, histo, 100, 0, 100);
0072 sprintf(histo, "sNSumE");
0073 sNSumE_ = ib.book1D(histo, histo, 100, 0, 5000);
0074 sprintf(histo, "sNSumEt");
0075 sNSumEt_ = ib.book1D(histo, histo, 100, 0, 2000);
0076
0077 sprintf(histo, "iNNumChannels");
0078 iNNumChannels_ = ib.book1D(histo, histo, 100, 0, 100);
0079 sprintf(histo, "iNSumE");
0080 iNSumE_ = ib.book1D(histo, histo, 100, 0, 5000);
0081 sprintf(histo, "iNSumEt");
0082 iNSumEt_ = ib.book1D(histo, histo, 100, 0, 2000);
0083
0084 sprintf(histo, "hNoise_maxZeros");
0085 hNoise_maxZeros_ = ib.book1D(histo, histo, 80, 0, 80);
0086 sprintf(histo, "hNoise_maxHPDHits");
0087 hNoise_maxHPDHits_ = ib.book1D(histo, histo, 20, 0, 20);
0088 sprintf(histo, "hNoise_maxHPDNoOtherHits");
0089 hNoise_maxHPDNoOtherHits_ = ib.book1D(histo, histo, 20, 0, 20);
0090 }
0091
0092
0093 void NoiseRates::analyze(const edm::Event &iEvent, const edm::EventSetup &evSetup) {
0094
0095 int lumiSection = iEvent.luminosityBlock();
0096 lumiCountMap_[lumiSection]++;
0097
0098
0099 const edm::Handle<reco::HcalNoiseRBXCollection> &handle = iEvent.getHandle(tok_rbx_);
0100 if (!handle.isValid()) {
0101 throw edm::Exception(edm::errors::ProductNotFound)
0102 << " could not find HcalNoiseRBXCollection named " << rbxCollName_ << ".\n";
0103 return;
0104 }
0105
0106
0107 const edm::Handle<HcalNoiseSummary> &summary_h = iEvent.getHandle(noisetoken_);
0108 if (!summary_h.isValid()) {
0109 throw edm::Exception(edm::errors::ProductNotFound) << " could not find HcalNoiseSummary.\n";
0110 return;
0111 }
0112 const HcalNoiseSummary summary = *summary_h;
0113
0114
0115 nNNumChannels_->Fill(summary.numNegativeNoiseChannels());
0116 nNSumE_->Fill(summary.NegativeNoiseSumE());
0117 nNSumEt_->Fill(summary.NegativeNoiseSumEt());
0118
0119 sNNumChannels_->Fill(summary.numSpikeNoiseChannels());
0120 sNSumE_->Fill(summary.spikeNoiseSumE());
0121 sNSumEt_->Fill(summary.spikeNoiseSumEt());
0122
0123 iNNumChannels_->Fill(summary.numIsolatedNoiseChannels());
0124 iNSumE_->Fill(summary.isolatedNoiseSumE());
0125 iNSumEt_->Fill(summary.isolatedNoiseSumEt());
0126
0127 hNoise_maxZeros_->Fill(summary.maxZeros());
0128 hNoise_maxHPDHits_->Fill(summary.maxHPDHits());
0129 hNoise_maxHPDNoOtherHits_->Fill(summary.maxHPDNoOtherHits());
0130
0131
0132 for (reco::HcalNoiseRBXCollection::const_iterator it = handle->begin(); it != handle->end(); ++it) {
0133 const reco::HcalNoiseRBX &rbx = (*it);
0134
0135 double energy = rbx.recHitEnergy(minHitEnergy_);
0136
0137 int nhits = rbx.numRecHits(minHitEnergy_);
0138
0139 if (energy < minRBXEnergy_)
0140 continue;
0141
0142 hRBXEnergy_->Fill(energy);
0143
0144 if (nhits <= 9)
0145 hRBXEnergyType1_->Fill(energy);
0146 else if (nhits <= 18)
0147 hRBXEnergyType2_->Fill(energy);
0148 else
0149 hRBXEnergyType3_->Fill(energy);
0150
0151 hRBXNHits_->Fill(nhits);
0152
0153 }
0154 }
0155
0156
0157 DEFINE_FWK_MODULE(NoiseRates);