File indexing completed on 2024-04-06 12:32:07
0001
0002
0003
0004
0005
0006
0007
0008 #include "DQMServices/Core/interface/DQMStore.h"
0009 #include <DataFormats/EcalDetId/interface/EEDetId.h>
0010 #include <Validation/EcalRecHits/interface/EcalEndcapRecHitsValidation.h>
0011
0012 using namespace cms;
0013 using namespace edm;
0014 using namespace std;
0015
0016 EcalEndcapRecHitsValidation::EcalEndcapRecHitsValidation(const ParameterSet &ps) : ecalPeds(esConsumes()) {
0017
0018 EEdigiCollection_token_ = consumes<EEDigiCollection>(ps.getParameter<edm::InputTag>("EEdigiCollection"));
0019 EEuncalibrechitCollection_token_ =
0020 consumes<EEUncalibratedRecHitCollection>(ps.getParameter<edm::InputTag>("EEuncalibrechitCollection"));
0021
0022
0023
0024 verbose_ = ps.getUntrackedParameter<bool>("verbose", false);
0025
0026
0027 meEEUncalibRecHitsOccupancyPlus_ = nullptr;
0028 meEEUncalibRecHitsOccupancyMinus_ = nullptr;
0029 meEEUncalibRecHitsAmplitude_ = nullptr;
0030 meEEUncalibRecHitsPedestal_ = nullptr;
0031 meEEUncalibRecHitsJitter_ = nullptr;
0032 meEEUncalibRecHitsChi2_ = nullptr;
0033 meEEUncalibRecHitMaxSampleRatio_ = nullptr;
0034 meEEUncalibRecHitsOccupancyPlusGt60adc_ = nullptr;
0035 meEEUncalibRecHitsOccupancyMinusGt60adc_ = nullptr;
0036 meEEUncalibRecHitsAmplitudeGt60adc_ = nullptr;
0037 meEEUncalibRecHitsPedestalGt60adc_ = nullptr;
0038 meEEUncalibRecHitsJitterGt60adc_ = nullptr;
0039 meEEUncalibRecHitsChi2Gt60adc_ = nullptr;
0040 meEEUncalibRecHitMaxSampleRatioGt60adc_ = nullptr;
0041 meEEUncalibRecHitsAmpFullMap_ = nullptr;
0042 meEEUncalibRecHitsPedFullMap_ = nullptr;
0043 }
0044
0045 EcalEndcapRecHitsValidation::~EcalEndcapRecHitsValidation() {}
0046
0047 void EcalEndcapRecHitsValidation::bookHistograms(DQMStore::IBooker &ibooker,
0048 edm::Run const &,
0049 edm::EventSetup const &) {
0050 Char_t histo[200];
0051
0052 ibooker.setCurrentFolder("EcalRecHitsV/EcalEndcapRecHitsTask");
0053
0054 sprintf(histo, "EE+ Occupancy");
0055 meEEUncalibRecHitsOccupancyPlus_ = ibooker.book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
0056
0057 sprintf(histo, "EE- Occupancy");
0058 meEEUncalibRecHitsOccupancyMinus_ = ibooker.book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
0059
0060 sprintf(histo, "EE Amplitude");
0061 meEEUncalibRecHitsAmplitude_ = ibooker.book1D(histo, histo, 201, -20., 4000.);
0062
0063 sprintf(histo, "EE Pedestal");
0064 meEEUncalibRecHitsPedestal_ = ibooker.book1D(histo, histo, 50, 190., 210.);
0065
0066 sprintf(histo, "EE Jitter");
0067 meEEUncalibRecHitsJitter_ = ibooker.book1D(histo, histo, 100, 0., 100.);
0068
0069 sprintf(histo, "EE Chi2");
0070 meEEUncalibRecHitsChi2_ = ibooker.book1D(histo, histo, 100, 18000., 22000.);
0071
0072 sprintf(histo, "EE RecHit Max Sample Ratio");
0073 meEEUncalibRecHitMaxSampleRatio_ = ibooker.book1D(histo, histo, 120, 0.90, 1.05);
0074
0075 sprintf(histo, "EE+ Occupancy gt 60 adc counts");
0076 meEEUncalibRecHitsOccupancyPlusGt60adc_ = ibooker.book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
0077
0078 sprintf(histo, "EE- Occupancy gt 60 adc counts");
0079 meEEUncalibRecHitsOccupancyMinusGt60adc_ = ibooker.book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
0080
0081 sprintf(histo, "EE Amplitude gt 60 adc counts");
0082 meEEUncalibRecHitsAmplitudeGt60adc_ = ibooker.book1D(histo, histo, 200, 0., 4000.);
0083
0084 sprintf(histo, "EE Pedestal gt 60 adc counts");
0085 meEEUncalibRecHitsPedestalGt60adc_ = ibooker.book1D(histo, histo, 50, 190., 210.);
0086
0087 sprintf(histo, "EE Jitter gt 60 adc counts");
0088 meEEUncalibRecHitsJitterGt60adc_ = ibooker.book1D(histo, histo, 100, 0., 100.);
0089
0090 sprintf(histo, "EE Chi2 gt 60 adc counts");
0091 meEEUncalibRecHitsChi2Gt60adc_ = ibooker.book1D(histo, histo, 100, 18000., 22000.);
0092
0093 sprintf(histo, "EE RecHit Max Sample Ratio gt 60 adc counts");
0094 meEEUncalibRecHitMaxSampleRatioGt60adc_ = ibooker.book1D(histo, histo, 120, 0.90, 1.05);
0095
0096 sprintf(histo, "EE Amplitude Full Map");
0097 meEEUncalibRecHitsAmpFullMap_ = ibooker.bookProfile2D(histo, histo, 100, 0., 100., 100, 0., 100., 200, 0., 4000.);
0098
0099 sprintf(histo, "EE Pedestal Full Map");
0100 meEEUncalibRecHitsPedFullMap_ = ibooker.bookProfile2D(histo, histo, 100, 0., 100., 100, 0., 100., 50, 194., 201.);
0101 }
0102
0103 void EcalEndcapRecHitsValidation::analyze(const Event &e, const EventSetup &c) {
0104 const EEUncalibratedRecHitCollection *EEUncalibRecHit = nullptr;
0105 Handle<EEUncalibratedRecHitCollection> EcalUncalibRecHitEE;
0106 e.getByToken(EEuncalibrechitCollection_token_, EcalUncalibRecHitEE);
0107 if (EcalUncalibRecHitEE.isValid()) {
0108 EEUncalibRecHit = EcalUncalibRecHitEE.product();
0109 } else {
0110 return;
0111 }
0112
0113 bool skipDigis = false;
0114 const EEDigiCollection *EEDigi = nullptr;
0115 Handle<EEDigiCollection> EcalDigiEE;
0116 e.getByToken(EEdigiCollection_token_, EcalDigiEE);
0117 if (EcalDigiEE.isValid()) {
0118 EEDigi = EcalDigiEE.product();
0119 } else {
0120 skipDigis = true;
0121 }
0122
0123
0124
0125 for (EcalUncalibratedRecHitCollection::const_iterator uncalibRecHit = EEUncalibRecHit->begin();
0126 uncalibRecHit != EEUncalibRecHit->end();
0127 ++uncalibRecHit) {
0128 EEDetId EEid = EEDetId(uncalibRecHit->id());
0129
0130 int mySide = EEid.zside();
0131
0132
0133 if (mySide > 0) {
0134 if (meEEUncalibRecHitsOccupancyPlus_)
0135 meEEUncalibRecHitsOccupancyPlus_->Fill(EEid.ix(), EEid.iy());
0136 }
0137 if (mySide < 0) {
0138 if (meEEUncalibRecHitsOccupancyMinus_)
0139 meEEUncalibRecHitsOccupancyMinus_->Fill(EEid.ix(), EEid.iy());
0140 }
0141 if (meEEUncalibRecHitsAmplitude_)
0142 meEEUncalibRecHitsAmplitude_->Fill(uncalibRecHit->amplitude());
0143 if (meEEUncalibRecHitsPedestal_)
0144 meEEUncalibRecHitsPedestal_->Fill(uncalibRecHit->pedestal());
0145 if (meEEUncalibRecHitsJitter_)
0146 meEEUncalibRecHitsJitter_->Fill(uncalibRecHit->jitter());
0147 if (meEEUncalibRecHitsChi2_)
0148 meEEUncalibRecHitsChi2_->Fill(uncalibRecHit->chi2());
0149 if (meEEUncalibRecHitsAmpFullMap_)
0150 meEEUncalibRecHitsAmpFullMap_->Fill(EEid.ix(), EEid.iy(), uncalibRecHit->amplitude());
0151 if (meEEUncalibRecHitsPedFullMap_)
0152 meEEUncalibRecHitsPedFullMap_->Fill(EEid.ix(), EEid.iy(), uncalibRecHit->pedestal());
0153
0154
0155 if (uncalibRecHit->amplitude() > 60) {
0156 if (mySide > 0) {
0157 if (meEEUncalibRecHitsOccupancyPlusGt60adc_)
0158 meEEUncalibRecHitsOccupancyPlusGt60adc_->Fill(EEid.ix(), EEid.iy());
0159 }
0160 if (mySide < 0) {
0161 if (meEEUncalibRecHitsOccupancyMinusGt60adc_)
0162 meEEUncalibRecHitsOccupancyMinusGt60adc_->Fill(EEid.ix(), EEid.iy());
0163 }
0164 if (meEEUncalibRecHitsAmplitudeGt60adc_)
0165 meEEUncalibRecHitsAmplitudeGt60adc_->Fill(uncalibRecHit->amplitude());
0166 if (meEEUncalibRecHitsPedestalGt60adc_)
0167 meEEUncalibRecHitsPedestalGt60adc_->Fill(uncalibRecHit->pedestal());
0168 if (meEEUncalibRecHitsJitterGt60adc_)
0169 meEEUncalibRecHitsJitterGt60adc_->Fill(uncalibRecHit->jitter());
0170 if (meEEUncalibRecHitsChi2Gt60adc_)
0171 meEEUncalibRecHitsChi2Gt60adc_->Fill(uncalibRecHit->chi2());
0172 }
0173
0174 if (!skipDigis) {
0175
0176 EEDigiCollection::const_iterator myDigi = EEDigi->find(EEid);
0177
0178 double eMax = 0.;
0179 if (myDigi != EEDigi->end()) {
0180 for (unsigned int sample = 0; sample < myDigi->size(); ++sample) {
0181 EcalMGPASample thisSample = (*myDigi)[sample];
0182 double analogSample = thisSample.adc();
0183 if (eMax < analogSample) {
0184 eMax = analogSample;
0185
0186 }
0187 }
0188 } else
0189 continue;
0190
0191
0192 const EcalPedestals *myped = &c.getData(ecalPeds);
0193 EcalPedestalsMap::const_iterator it = myped->getMap().find(EEid);
0194 if (it != myped->getMap().end()) {
0195 if (eMax > (*it).mean_x1 + 5 * (*it).rms_x1 && eMax != 0) {
0196
0197 if (meEEUncalibRecHitMaxSampleRatio_) {
0198 meEEUncalibRecHitMaxSampleRatio_->Fill((uncalibRecHit->amplitude() + uncalibRecHit->pedestal()) / eMax);
0199 }
0200
0201 if (meEEUncalibRecHitMaxSampleRatioGt60adc_ && (uncalibRecHit->amplitude() > 60)) {
0202 meEEUncalibRecHitMaxSampleRatioGt60adc_->Fill((uncalibRecHit->amplitude() + uncalibRecHit->pedestal()) /
0203 eMax);
0204 }
0205
0206 LogDebug("EcalRecHitsTaskInfo")
0207 << "endcap, eMax = " << eMax << " Amplitude = " << uncalibRecHit->amplitude() + uncalibRecHit->pedestal();
0208 } else
0209 continue;
0210 } else
0211 continue;
0212 }
0213 }
0214 }