File indexing completed on 2024-09-11 04:33:22
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include "Validation/HcalDigis/interface/ZDCDigiStudy.h"
0021 #include "DataFormats/HcalDetId/interface/HcalZDCDetId.h"
0022
0023 #include "FWCore/Utilities/interface/Exception.h"
0024 #include <CLHEP/Units/SystemOfUnits.h>
0025
0026
0027
0028 ZDCDigiStudy::ZDCDigiStudy(const edm::ParameterSet& ps)
0029 : zdcHits(ps.getUntrackedParameter<std::string>("HitCollection", "ZdcHits")),
0030 outFile_(ps.getUntrackedParameter<std::string>("outputFile", "zdcHitStudy.root")),
0031 verbose_(ps.getUntrackedParameter<bool>("Verbose", false)),
0032 checkHit_(true),
0033 tok_zdc_(consumes<ZDCDigiCollection>(edm::InputTag("simHcalUnsuppressedDigis"))) {
0034 edm::LogVerbatim("ZDCDigiStudy") << " Hits: " << zdcHits << " / " << checkHit_ << " Output: " << outFile_;
0035 }
0036
0037 void ZDCDigiStudy::bookHistograms(DQMStore::IBooker& ib, edm::Run const& run, edm::EventSetup const& es) {
0038 ib.setCurrentFolder("ZDCDigiValidation");
0039
0040 ib.setScope(MonitorElementData::Scope::RUN);
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050 if (checkHit_) {
0051
0052
0053
0054 ib.setCurrentFolder("ZDCDigiValidation/ZDC_Digis/1D_fC");
0055 meZdcfCPHAD = ib.book1D("PHAD_TotalfC", "PZDC_HAD_TotalfC", 1000, -50, 10000);
0056 meZdcfCPHAD->setAxisTitle("Counts", 2);
0057 meZdcfCPHAD->setAxisTitle("fC", 1);
0058
0059 meZdcfCPTOT = ib.book1D("PZDC_TotalfC", "PZDC_TotalfC", 1000, -50, 20000);
0060 meZdcfCPTOT->setAxisTitle("Counts", 2);
0061 meZdcfCPTOT->setAxisTitle("fC", 1);
0062
0063 meZdcfCNHAD = ib.book1D("NHAD_TotalfC", "NZDC_HAD_TotalfC", 1000, -50, 10000);
0064 meZdcfCNHAD->setAxisTitle("Counts", 2);
0065 meZdcfCNHAD->setAxisTitle("fC", 1);
0066
0067 meZdcfCNTOT = ib.book1D("NZDC_TotalfC", "NZDC_TotalfC", 1000, -50, 20000);
0068 meZdcfCNTOT->setAxisTitle("Counts", 2);
0069 meZdcfCNTOT->setAxisTitle("fC", 1);
0070
0071
0072
0073 ib.setCurrentFolder("ZDCDigiValidation/ZDC_Digis/fCvsTS/PZDC");
0074
0075
0076 meZdcPEM1fCvsTS = ib.book1D("PEM1_fCvsTS", "P-EM1_AveragefC_vsTS", 10, 0, 9);
0077 meZdcPEM1fCvsTS->setAxisTitle("fC", 2);
0078 meZdcPEM1fCvsTS->setAxisTitle("TS", 1);
0079
0080
0081 meZdcPEM2fCvsTS = ib.book1D("PEM2_fCvsTS", "P-EM2_AveragefC_vsTS", 10, 0, 9);
0082 meZdcPEM2fCvsTS->setAxisTitle("fC", 2);
0083 meZdcPEM2fCvsTS->setAxisTitle("TS", 1);
0084
0085
0086 meZdcPEM3fCvsTS = ib.book1D("PEM3_fCvsTS", "P-EM3_AveragefC_vsTS", 10, 0, 9);
0087 meZdcPEM3fCvsTS->setAxisTitle("fC", 2);
0088 meZdcPEM3fCvsTS->setAxisTitle("TS", 1);
0089
0090
0091 meZdcPEM4fCvsTS = ib.book1D("PEM4_fCvsTS", "P-EM4_AveragefC_vsTS", 10, 0, 9);
0092 meZdcPEM4fCvsTS->setAxisTitle("fC", 2);
0093 meZdcPEM4fCvsTS->setAxisTitle("TS", 1);
0094
0095
0096 meZdcPEM5fCvsTS = ib.book1D("PEM5_fCvsTS", "P-EM5_AveragefC_vsTS", 10, 0, 9);
0097 meZdcPEM5fCvsTS->setAxisTitle("fC", 2);
0098 meZdcPEM5fCvsTS->setAxisTitle("TS", 1);
0099
0100
0101 meZdcPHAD1fCvsTS = ib.book1D("PHAD1_fCvsTS", "P-HAD1_AveragefC_vsTS", 10, 0, 9);
0102 meZdcPHAD1fCvsTS->setAxisTitle("fC", 2);
0103 meZdcPHAD1fCvsTS->setAxisTitle("TS", 1);
0104
0105
0106 meZdcPHAD2fCvsTS = ib.book1D("PHAD2_fCvsTS", "P-HAD2_AveragefC_vsTS", 10, 0, 9);
0107 meZdcPHAD2fCvsTS->setAxisTitle("fC", 2);
0108 meZdcPHAD2fCvsTS->setAxisTitle("TS", 1);
0109
0110
0111 meZdcPHAD3fCvsTS = ib.book1D("PHAD3_fCvsTS", "P-HAD3_AveragefC_vsTS", 10, 0, 9);
0112 meZdcPHAD3fCvsTS->setAxisTitle("fC", 2);
0113 meZdcPHAD3fCvsTS->setAxisTitle("TS", 1);
0114
0115
0116 meZdcPHAD4fCvsTS = ib.book1D("PHAD4_fCvsTS", "P-HAD4_AveragefC_vsTS", 10, 0, 9);
0117 meZdcPHAD4fCvsTS->setAxisTitle("fC", 2);
0118 meZdcPHAD4fCvsTS->setAxisTitle("TS", 1);
0119
0120 ib.setCurrentFolder("ZDCDigiValidation/ZDC_Digis/fCvsTS/NZDC");
0121
0122
0123 meZdcNEM1fCvsTS = ib.book1D("NEM1_fCvsTS", "N-EM1_AveragefC_vsTS", 10, 0, 9);
0124 meZdcNEM1fCvsTS->setAxisTitle("fC", 2);
0125 meZdcNEM1fCvsTS->setAxisTitle("TS", 1);
0126
0127
0128 meZdcNEM2fCvsTS = ib.book1D("NEM2_fCvsTS", "N-EM2_AveragefC_vsTS", 10, 0, 9);
0129 meZdcNEM2fCvsTS->setAxisTitle("fC", 2);
0130 meZdcNEM2fCvsTS->setAxisTitle("TS", 1);
0131
0132
0133 meZdcNEM3fCvsTS = ib.book1D("NEM3_fCvsTS", "N-EM3_AveragefC_vsTS", 10, 0, 9);
0134 meZdcNEM3fCvsTS->setAxisTitle("fC", 2);
0135 meZdcNEM3fCvsTS->setAxisTitle("TS", 1);
0136
0137
0138 meZdcNEM4fCvsTS = ib.book1D("NEM4_fCvsTS", "N-EM4_AveragefC_vsTS", 10, 0, 9);
0139 meZdcNEM4fCvsTS->setAxisTitle("fC", 2);
0140 meZdcNEM4fCvsTS->setAxisTitle("TS", 1);
0141
0142
0143 meZdcNEM5fCvsTS = ib.book1D("NEM5_fCvsTS", "N-EM5_AveragefC_vsTS", 10, 0, 9);
0144 meZdcNEM5fCvsTS->setAxisTitle("fC", 2);
0145 meZdcNEM5fCvsTS->setAxisTitle("TS", 1);
0146
0147
0148 meZdcNHAD1fCvsTS = ib.book1D("NHAD1_fCvsTS", "N-HAD1_AveragefC_vsTS", 10, 0, 9);
0149 meZdcNHAD1fCvsTS->setAxisTitle("fC", 2);
0150 meZdcNHAD1fCvsTS->setAxisTitle("TS", 1);
0151
0152
0153 meZdcNHAD2fCvsTS = ib.book1D("NHAD2_fCvsTS", "N-HAD2_AveragefC_vsTS", 10, 0, 9);
0154 meZdcNHAD2fCvsTS->setAxisTitle("fC", 2);
0155 meZdcNHAD2fCvsTS->setAxisTitle("TS", 1);
0156
0157
0158 meZdcNHAD3fCvsTS = ib.book1D("NHAD3_fCvsTS", "N-HAD3_AveragefC_vsTS", 10, 0, 9);
0159 meZdcNHAD3fCvsTS->setAxisTitle("fC", 2);
0160 meZdcNHAD3fCvsTS->setAxisTitle("TS", 1);
0161
0162
0163 meZdcNHAD4fCvsTS = ib.book1D("NHAD4_fCvsTS", "N-HAD4_AveragefC_vsTS", 10, 0, 9);
0164 meZdcNHAD4fCvsTS->setAxisTitle("fC", 2);
0165 meZdcNHAD4fCvsTS->setAxisTitle("TS", 1);
0166
0167
0168
0169 ib.setCurrentFolder("ZDCDigiValidation/ZDC_Digis/2D_EMvHAD");
0170
0171
0172 meZdcfCPEMvHAD = ib.book2D("PEMvPHAD", "PZDC_EMvHAD", 200, -25, 12000, 200, -25, 15000);
0173 meZdcfCPEMvHAD->setAxisTitle("SumEM_fC", 2);
0174 meZdcfCPEMvHAD->setAxisTitle("SumHAD_fC", 1);
0175 meZdcfCPEMvHAD->setOption("colz");
0176
0177 meZdcfCNEMvHAD = ib.book2D("NEMvNHAD", "NZDC_EMvHAD", 1000, -25, 12000, 1000, -25, 15000);
0178 meZdcfCNEMvHAD->setAxisTitle("SumEM_fC", 2);
0179 meZdcfCNEMvHAD->setAxisTitle("SumHAD_fC", 1);
0180 meZdcfCNEMvHAD->setOption("colz");
0181
0182 }
0183 }
0184
0185
0186
0187
0188
0189
0190 void ZDCDigiStudy::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0191
0192
0193 using namespace edm;
0194 bool gotZDCDigis = true;
0195
0196 Handle<ZDCDigiCollection> zdchandle;
0197 if (!(iEvent.getByToken(tok_zdc_, zdchandle))) {
0198 gotZDCDigis = false;
0199 }
0200 if (!(zdchandle.isValid())) {
0201 gotZDCDigis = false;
0202 }
0203
0204 double totalPHADCharge = 0;
0205 double totalNHADCharge = 0;
0206 double totalPEMCharge = 0;
0207 double totalNEMCharge = 0;
0208 double totalPCharge = 0;
0209 double totalNCharge = 0;
0210
0211
0212 if (gotZDCDigis == true) {
0213 for (ZDCDigiCollection::const_iterator zdc = zdchandle->begin(); zdc != zdchandle->end(); ++zdc) {
0214 const ZDCDataFrame digi = (const ZDCDataFrame)(*zdc);
0215 #ifdef EDM_ML_DEBUG
0216 edm::LogVerbatim("ZDCDigiStudy") << "CHANNEL = " << zdc->id().channel();
0217 #endif
0218
0219
0220 if (digi.id().section() == 2) {
0221 if (digi.id().zside() == 1) {
0222 for (int i = 0; i < digi.size(); ++i)
0223 {
0224 if (digi.id().channel() == 1) {
0225 meZdcPHAD1fCvsTS->Fill(
0226 i, digi.sample(i).nominal_fC());
0227 if (i == 0)
0228 meZdcPHAD1fCvsTS->Fill(-1, 1);
0229 }
0230 if (digi.id().channel() == 2) {
0231 meZdcPHAD2fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0232 if (i == 0)
0233 meZdcPHAD2fCvsTS->Fill(-1, 1);
0234 }
0235 if (digi.id().channel() == 3) {
0236 meZdcPHAD3fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0237 if (i == 0)
0238 meZdcPHAD3fCvsTS->Fill(-1, 1);
0239 }
0240 if (digi.id().channel() == 4) {
0241 meZdcPHAD4fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0242 if (i == 0)
0243 meZdcPHAD4fCvsTS->Fill(-1, 1);
0244 }
0245 if (i == 4 || i == 5 || i == 6)
0246 totalPHADCharge += digi.sample(i).nominal_fC();
0247 }
0248 } else {
0249 for (int i = 0; i < digi.size(); ++i) {
0250 if (digi.id().channel() == 1) {
0251 meZdcNHAD1fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0252 if (i == 0)
0253 meZdcNHAD1fCvsTS->Fill(-1, 1);
0254 }
0255 if (digi.id().channel() == 2) {
0256 meZdcNHAD2fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0257 if (i == 0)
0258 meZdcNHAD2fCvsTS->Fill(-1, 1);
0259 }
0260 if (digi.id().channel() == 3) {
0261 meZdcNHAD3fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0262 if (i == 0)
0263 meZdcNHAD3fCvsTS->Fill(-1, 1);
0264 }
0265 if (digi.id().channel() == 4) {
0266 meZdcNHAD4fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0267 if (i == 0)
0268 meZdcNHAD4fCvsTS->Fill(-1, 1);
0269 }
0270 if (i == 4 || i == 5 || i == 6)
0271 totalNHADCharge += digi.sample(i).nominal_fC();
0272 }
0273 }
0274 }
0275
0276 if (digi.id().section() ==
0277 1) {
0278 if (digi.id().zside() == 1) {
0279 for (int i = 0; i < digi.size(); ++i) {
0280 if (digi.id().channel() == 1) {
0281 meZdcPEM1fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0282 if (i == 0)
0283 meZdcPEM1fCvsTS->Fill(-1, 1);
0284 }
0285 if (digi.id().channel() == 2) {
0286 meZdcPEM2fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0287 if (i == 0)
0288 meZdcPEM2fCvsTS->Fill(-1, 1);
0289 }
0290 if (digi.id().channel() == 3) {
0291 meZdcPEM3fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0292 if (i == 0)
0293 meZdcPEM3fCvsTS->Fill(-1, 1);
0294 }
0295 if (digi.id().channel() == 4) {
0296 meZdcPEM4fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0297 if (i == 0)
0298 meZdcPEM4fCvsTS->Fill(-1, 1);
0299 }
0300 if (digi.id().channel() == 5) {
0301 meZdcPEM5fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0302 if (i == 0)
0303 meZdcPEM5fCvsTS->Fill(-1, 1);
0304 }
0305 if (i == 4 || i == 5 || i == 6)
0306 totalPEMCharge += digi.sample(i).nominal_fC();
0307 }
0308 } else {
0309 for (int i = 0; i < digi.size(); ++i) {
0310 if (digi.id().channel() == 1) {
0311 meZdcNEM1fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0312 if (i == 0)
0313 meZdcNEM1fCvsTS->Fill(-1, 1);
0314 }
0315 if (digi.id().channel() == 2) {
0316 meZdcNEM2fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0317 if (i == 0)
0318 meZdcNEM2fCvsTS->Fill(-1, 1);
0319 }
0320 if (digi.id().channel() == 3) {
0321 meZdcNEM3fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0322 if (i == 0)
0323 meZdcNEM3fCvsTS->Fill(-1, 1);
0324 }
0325 if (digi.id().channel() == 4) {
0326 meZdcNEM4fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0327 if (i == 0)
0328 meZdcNEM4fCvsTS->Fill(-1, 1);
0329 }
0330 if (digi.id().channel() == 5) {
0331 meZdcNEM5fCvsTS->Fill(i, digi.sample(i).nominal_fC());
0332 if (i == 0)
0333 meZdcNEM5fCvsTS->Fill(-1, 1);
0334 }
0335 if (i == 4 || i == 5 || i == 6)
0336 totalNEMCharge += digi.sample(i).nominal_fC();
0337 }
0338 }
0339 }
0340
0341 totalPCharge = totalPHADCharge + (0.1) * totalPEMCharge;
0342 totalNCharge = totalNHADCharge + (0.1) * totalNEMCharge;
0343
0344 #ifdef EDM_ML_DEBUG
0345 edm::LogVerbatim("ZDCDigiStudy") << "CHANNEL = " << digi.id().channel();
0346 for (int i = 0; i < digi.size(); ++i)
0347 edm::LogVerbatim("ZDCDigiStudy") << "SAMPLE = " << i << " ADC = " << digi.sample(i).adc()
0348 << " fC = " << digi.sample(i).nominal_fC();
0349 #endif
0350
0351 }
0352 }
0353
0354
0355
0356 meZdcfCPEMvHAD->Fill(totalPCharge, totalPEMCharge);
0357 meZdcfCNEMvHAD->Fill(totalNCharge, totalNEMCharge);
0358 meZdcfCPHAD->Fill(totalPHADCharge);
0359 meZdcfCNHAD->Fill(totalNHADCharge);
0360 meZdcfCNTOT->Fill(totalNCharge);
0361 meZdcfCPTOT->Fill(totalPCharge);
0362 }
0363
0364
0365
0366 void ZDCDigiStudy::dqmEndRun(const edm::Run& run, const edm::EventSetup& c) {
0367 int nevents =
0368 (meZdcPHAD1fCvsTS->getTH1F())
0369 ->GetBinContent(
0370 0);
0371 (meZdcPHAD1fCvsTS->getTH1F())
0372 ->Scale(
0373 1. /
0374 nevents);
0375
0376 int nevents1 = (meZdcPHAD2fCvsTS->getTH1F())->GetBinContent(0);
0377 (meZdcPHAD2fCvsTS->getTH1F())->Scale(1. / nevents1);
0378
0379 int nevents2 = (meZdcPHAD3fCvsTS->getTH1F())->GetBinContent(0);
0380 (meZdcPHAD3fCvsTS->getTH1F())->Scale(1. / nevents2);
0381
0382 int nevents3 = (meZdcPHAD4fCvsTS->getTH1F())->GetBinContent(0);
0383 (meZdcPHAD4fCvsTS->getTH1F())->Scale(1. / nevents3);
0384
0385 int nevents4 = (meZdcNHAD1fCvsTS->getTH1F())->GetBinContent(0);
0386 (meZdcNHAD1fCvsTS->getTH1F())->Scale(1. / nevents4);
0387
0388 int nevents5 = (meZdcNHAD2fCvsTS->getTH1F())->GetBinContent(0);
0389 (meZdcNHAD2fCvsTS->getTH1F())->Scale(1. / nevents5);
0390
0391 int nevents6 = (meZdcNHAD3fCvsTS->getTH1F())->GetBinContent(0);
0392 (meZdcNHAD3fCvsTS->getTH1F())->Scale(1. / nevents6);
0393
0394 int nevents7 = (meZdcNHAD4fCvsTS->getTH1F())->GetBinContent(0);
0395 (meZdcNHAD4fCvsTS->getTH1F())->Scale(1. / nevents7);
0396
0397 int nevents8 = (meZdcPEM1fCvsTS->getTH1F())->GetBinContent(0);
0398 (meZdcPEM1fCvsTS->getTH1F())->Scale(1. / nevents8);
0399
0400 int nevents9 = (meZdcPEM2fCvsTS->getTH1F())->GetBinContent(0);
0401 (meZdcPEM2fCvsTS->getTH1F())->Scale(1. / nevents9);
0402
0403 int nevents10 = (meZdcPEM3fCvsTS->getTH1F())->GetBinContent(0);
0404 (meZdcPEM3fCvsTS->getTH1F())->Scale(1. / nevents10);
0405
0406 int nevents11 = (meZdcPEM4fCvsTS->getTH1F())->GetBinContent(0);
0407 (meZdcPEM4fCvsTS->getTH1F())->Scale(1. / nevents11);
0408
0409 int nevents12 = (meZdcPEM5fCvsTS->getTH1F())->GetBinContent(0);
0410 (meZdcPEM5fCvsTS->getTH1F())->Scale(1. / nevents12);
0411
0412 int nevents13 = (meZdcNEM1fCvsTS->getTH1F())->GetBinContent(0);
0413 (meZdcNEM1fCvsTS->getTH1F())->Scale(1. / nevents13);
0414
0415 int nevents14 = (meZdcNEM2fCvsTS->getTH1F())->GetBinContent(0);
0416 (meZdcNEM2fCvsTS->getTH1F())->Scale(1. / nevents14);
0417
0418 int nevents15 = (meZdcNEM3fCvsTS->getTH1F())->GetBinContent(0);
0419 (meZdcNEM3fCvsTS->getTH1F())->Scale(1. / nevents15);
0420
0421 int nevents16 = (meZdcNEM4fCvsTS->getTH1F())->GetBinContent(0);
0422 (meZdcNEM4fCvsTS->getTH1F())->Scale(1. / nevents16);
0423
0424 int nevents17 = (meZdcNEM5fCvsTS->getTH1F())->GetBinContent(0);
0425 (meZdcNEM5fCvsTS->getTH1F())->Scale(1. / nevents17);
0426 }
0427
0428
0429 DEFINE_FWK_MODULE(ZDCDigiStudy);