File indexing completed on 2023-03-17 10:55:19
0001 #include <string>
0002
0003 #include "DQM/L1TMonitor/interface/L1TdeCSCTPGShower.h"
0004 #include "DataFormats/MuonDetId/interface/CSCTriggerNumbering.h"
0005
0006 L1TdeCSCTPGShower::L1TdeCSCTPGShower(const edm::ParameterSet& ps)
0007 : dataALCTShower_token_(consumes<CSCShowerDigiCollection>(ps.getParameter<edm::InputTag>("dataALCTShower"))),
0008 emulALCTShower_token_(consumes<CSCShowerDigiCollection>(ps.getParameter<edm::InputTag>("emulALCTShower"))),
0009 dataCLCTShower_token_(consumes<CSCShowerDigiCollection>(ps.getParameter<edm::InputTag>("dataCLCTShower"))),
0010 emulCLCTShower_token_(consumes<CSCShowerDigiCollection>(ps.getParameter<edm::InputTag>("emulCLCTShower"))),
0011 dataLCTShower_token_(consumes<CSCShowerDigiCollection>(ps.getParameter<edm::InputTag>("dataLCTShower"))),
0012 emulLCTShower_token_(consumes<CSCShowerDigiCollection>(ps.getParameter<edm::InputTag>("emulLCTShower"))),
0013 monitorDir_(ps.getUntrackedParameter<std::string>("monitorDir")) {}
0014
0015 L1TdeCSCTPGShower::~L1TdeCSCTPGShower() {}
0016
0017 void L1TdeCSCTPGShower::bookHistograms(DQMStore::IBooker& iBooker, const edm::Run&, const edm::EventSetup&) {
0018 iBooker.setCurrentFolder(monitorDir_);
0019
0020
0021 lctShowerDataNomSummary_denom_ =
0022 iBooker.book2D("lct_cscshower_data_nom_summary_denom", "Data LCT Nominal Shower All", 36, 1, 37, 18, 0, 18);
0023 lctShowerDataNomSummary_num_ = iBooker.book2D(
0024 "lct_cscshower_data_nom_summary_num", "Data LCT Nominal Shower Emul Matched", 36, 1, 37, 18, 0, 18);
0025 alctShowerDataNomSummary_denom_ =
0026 iBooker.book2D("alct_cscshower_data_nom_summary_denom", "Data ALCT Nominal Shower All", 36, 1, 37, 18, 0, 18);
0027 alctShowerDataNomSummary_num_ = iBooker.book2D(
0028 "alct_cscshower_data_nom_summary_num", "Data ALCT Nominal Shower Emul Matched", 36, 1, 37, 18, 0, 18);
0029 clctShowerDataNomSummary_denom_ =
0030 iBooker.book2D("clct_cscshower_data_nom_summary_denom", "Data CLCT Nominal Shower All", 36, 1, 37, 18, 0, 18);
0031 clctShowerDataNomSummary_num_ = iBooker.book2D(
0032 "clct_cscshower_data_nom_summary_num", "Data CLCT Nominal Shower Emul Matched", 36, 1, 37, 18, 0, 18);
0033
0034 lctShowerEmulNomSummary_denom_ =
0035 iBooker.book2D("lct_cscshower_emul_nom_summary_denom", "Emul LCT Nominal Shower All", 36, 1, 37, 18, 0, 18);
0036 lctShowerEmulNomSummary_num_ = iBooker.book2D(
0037 "lct_cscshower_emul_nom_summary_num", "Emul LCT Nominal Shower Not Matched to Data", 36, 1, 37, 18, 0, 18);
0038 alctShowerEmulNomSummary_denom_ =
0039 iBooker.book2D("alct_cscshower_emul_nom_summary_denom", "Emul ALCT Nominal Shower All", 36, 1, 37, 18, 0, 18);
0040 alctShowerEmulNomSummary_num_ = iBooker.book2D(
0041 "alct_cscshower_emul_nom_summary_num", "Emul ALCT Nominal Shower Not Matched to Data", 36, 1, 37, 18, 0, 18);
0042 clctShowerEmulNomSummary_denom_ =
0043 iBooker.book2D("clct_cscshower_emul_nom_summary_denom", "Emul CLCT Nominal Shower All", 36, 1, 37, 18, 0, 18);
0044 clctShowerEmulNomSummary_num_ = iBooker.book2D(
0045 "clct_cscshower_emul_nom_summary_num", "Emul CLCT Nominal Shower Not Matched to Data", 36, 1, 37, 18, 0, 18);
0046
0047 lctShowerDataTightSummary_denom_ =
0048 iBooker.book2D("lct_cscshower_data_tight_summary_denom", "Data LCT Tight Shower All", 36, 1, 37, 18, 0, 18);
0049 lctShowerDataTightSummary_num_ = iBooker.book2D(
0050 "lct_cscshower_data_tight_summary_num", "Data LCT Tight Shower Emul Matched", 36, 1, 37, 18, 0, 18);
0051 alctShowerDataTightSummary_denom_ =
0052 iBooker.book2D("alct_cscshower_data_tight_summary_denom", "Data ALCT Tight Shower All", 36, 1, 37, 18, 0, 18);
0053 alctShowerDataTightSummary_num_ = iBooker.book2D(
0054 "alct_cscshower_data_tight_summary_num", "Data ALCT Tight Shower Emul Matched", 36, 1, 37, 18, 0, 18);
0055 clctShowerDataTightSummary_denom_ =
0056 iBooker.book2D("clct_cscshower_data_tight_summary_denom", "Data CLCT Tight Shower All", 36, 1, 37, 18, 0, 18);
0057 clctShowerDataTightSummary_num_ = iBooker.book2D(
0058 "clct_cscshower_data_tight_summary_num", "Data CLCT Tight Shower Emul Matched", 36, 1, 37, 18, 0, 18);
0059
0060 lctShowerEmulTightSummary_denom_ =
0061 iBooker.book2D("lct_cscshower_emul_tight_summary_denom", "Emul LCT Tight Shower All", 36, 1, 37, 18, 0, 18);
0062 lctShowerEmulTightSummary_num_ = iBooker.book2D(
0063 "lct_cscshower_emul_tight_summary_num", "Emul LCT Tight Shower Not Matched to Data", 36, 1, 37, 18, 0, 18);
0064 alctShowerEmulTightSummary_denom_ =
0065 iBooker.book2D("alct_cscshower_emul_tight_summary_denom", "Emul ALCT Tight Shower All", 36, 1, 37, 18, 0, 18);
0066 alctShowerEmulTightSummary_num_ = iBooker.book2D(
0067 "alct_cscshower_emul_tight_summary_num", "Emul ALCT Tight Shower Not Matched to Data", 36, 1, 37, 18, 0, 18);
0068 clctShowerEmulTightSummary_denom_ =
0069 iBooker.book2D("clct_cscshower_emul_tight_summary_denom", "Emul CLCT Tight Shower All", 36, 1, 37, 18, 0, 18);
0070 clctShowerEmulTightSummary_num_ = iBooker.book2D(
0071 "clct_cscshower_emul_tight_summary_num", "Emul CLCT Tight Shower Not Matched to Data", 36, 1, 37, 18, 0, 18);
0072
0073
0074 lctShowerDataNomSummary_denom_->setAxisTitle("Chamber", 1);
0075 lctShowerDataNomSummary_num_->setAxisTitle("Chamber", 1);
0076 alctShowerDataNomSummary_denom_->setAxisTitle("Chamber", 1);
0077 alctShowerDataNomSummary_num_->setAxisTitle("Chamber", 1);
0078 clctShowerDataNomSummary_denom_->setAxisTitle("Chamber", 1);
0079 clctShowerDataNomSummary_num_->setAxisTitle("Chamber", 1);
0080
0081 lctShowerEmulNomSummary_denom_->setAxisTitle("Chamber", 1);
0082 lctShowerEmulNomSummary_num_->setAxisTitle("Chamber", 1);
0083 alctShowerEmulNomSummary_denom_->setAxisTitle("Chamber", 1);
0084 alctShowerEmulNomSummary_num_->setAxisTitle("Chamber", 1);
0085 clctShowerEmulNomSummary_denom_->setAxisTitle("Chamber", 1);
0086 clctShowerEmulNomSummary_num_->setAxisTitle("Chamber", 1);
0087
0088 lctShowerDataTightSummary_denom_->setAxisTitle("Chamber", 1);
0089 lctShowerDataTightSummary_num_->setAxisTitle("Chamber", 1);
0090 alctShowerDataTightSummary_denom_->setAxisTitle("Chamber", 1);
0091 alctShowerDataTightSummary_num_->setAxisTitle("Chamber", 1);
0092 clctShowerDataTightSummary_denom_->setAxisTitle("Chamber", 1);
0093 clctShowerDataTightSummary_num_->setAxisTitle("Chamber", 1);
0094
0095 lctShowerEmulTightSummary_denom_->setAxisTitle("Chamber", 1);
0096 lctShowerEmulTightSummary_num_->setAxisTitle("Chamber", 1);
0097 alctShowerEmulTightSummary_denom_->setAxisTitle("Chamber", 1);
0098 alctShowerEmulTightSummary_num_->setAxisTitle("Chamber", 1);
0099 clctShowerEmulTightSummary_denom_->setAxisTitle("Chamber", 1);
0100 clctShowerEmulTightSummary_num_->setAxisTitle("Chamber", 1);
0101
0102
0103 lctShowerDataNomSummary_denom_->setOption("colz");
0104 lctShowerDataNomSummary_num_->setOption("colz");
0105 alctShowerDataNomSummary_denom_->setOption("colz");
0106 alctShowerDataNomSummary_num_->setOption("colz");
0107 clctShowerDataNomSummary_denom_->setOption("colz");
0108 clctShowerDataNomSummary_num_->setOption("colz");
0109
0110 lctShowerEmulNomSummary_denom_->setOption("colz");
0111 lctShowerEmulNomSummary_num_->setOption("colz");
0112 alctShowerEmulNomSummary_denom_->setOption("colz");
0113 alctShowerEmulNomSummary_num_->setOption("colz");
0114 clctShowerEmulNomSummary_denom_->setOption("colz");
0115 clctShowerEmulNomSummary_num_->setOption("colz");
0116
0117 lctShowerDataTightSummary_denom_->setOption("colz");
0118 lctShowerDataTightSummary_num_->setOption("colz");
0119 alctShowerDataTightSummary_denom_->setOption("colz");
0120 alctShowerDataTightSummary_num_->setOption("colz");
0121 clctShowerDataTightSummary_denom_->setOption("colz");
0122 clctShowerDataTightSummary_num_->setOption("colz");
0123
0124 lctShowerEmulTightSummary_denom_->setOption("colz");
0125 lctShowerEmulTightSummary_num_->setOption("colz");
0126 alctShowerEmulTightSummary_denom_->setOption("colz");
0127 alctShowerEmulTightSummary_num_->setOption("colz");
0128 clctShowerEmulTightSummary_denom_->setOption("colz");
0129 clctShowerEmulTightSummary_num_->setOption("colz");
0130
0131 const std::array<std::string, 9> suffix_label{{"4/2", "4/1", "3/2", "3/1", " 2/2", "2/1", "1/3", "1/2", "1/1"}};
0132
0133
0134 for (int ybin = 1; ybin <= 9; ++ybin) {
0135 lctShowerDataNomSummary_denom_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0136 lctShowerDataNomSummary_num_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0137 alctShowerDataNomSummary_denom_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0138 alctShowerDataNomSummary_num_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0139 clctShowerDataNomSummary_denom_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0140 clctShowerDataNomSummary_num_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0141
0142 lctShowerEmulNomSummary_denom_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0143 lctShowerEmulNomSummary_num_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0144 alctShowerEmulNomSummary_denom_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0145 alctShowerEmulNomSummary_num_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0146 clctShowerEmulNomSummary_denom_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0147 clctShowerEmulNomSummary_num_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0148
0149 lctShowerDataNomSummary_denom_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0150 lctShowerDataNomSummary_num_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0151 alctShowerDataNomSummary_denom_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0152 alctShowerDataNomSummary_num_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0153 clctShowerDataNomSummary_denom_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0154 clctShowerDataNomSummary_num_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0155
0156 lctShowerEmulNomSummary_denom_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0157 lctShowerEmulNomSummary_num_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0158 alctShowerEmulNomSummary_denom_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0159 alctShowerEmulNomSummary_num_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0160 clctShowerEmulNomSummary_denom_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0161 clctShowerEmulNomSummary_num_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0162
0163 lctShowerDataTightSummary_denom_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0164 lctShowerDataTightSummary_num_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0165 alctShowerDataTightSummary_denom_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0166 alctShowerDataTightSummary_num_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0167 clctShowerDataTightSummary_denom_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0168 clctShowerDataTightSummary_num_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0169
0170 lctShowerEmulTightSummary_denom_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0171 lctShowerEmulTightSummary_num_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0172 alctShowerEmulTightSummary_denom_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0173 alctShowerEmulTightSummary_num_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0174 clctShowerEmulTightSummary_denom_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0175 clctShowerEmulTightSummary_num_->setBinLabel(ybin, "ME-" + suffix_label[ybin - 1], 2);
0176
0177 lctShowerDataTightSummary_denom_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0178 lctShowerDataTightSummary_num_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0179 alctShowerDataTightSummary_denom_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0180 alctShowerDataTightSummary_num_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0181 clctShowerDataTightSummary_denom_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0182 clctShowerDataTightSummary_num_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0183
0184 lctShowerEmulTightSummary_denom_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0185 lctShowerEmulTightSummary_num_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0186 alctShowerEmulTightSummary_denom_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0187 alctShowerEmulTightSummary_num_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0188 clctShowerEmulTightSummary_denom_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0189 clctShowerEmulTightSummary_num_->setBinLabel(19 - ybin, "ME+" + suffix_label[ybin - 1], 2);
0190 }
0191 }
0192
0193 void L1TdeCSCTPGShower::analyze(const edm::Event& e, const edm::EventSetup& c) {
0194
0195 edm::Handle<CSCShowerDigiCollection> dataALCTshs;
0196 edm::Handle<CSCShowerDigiCollection> emulALCTshs;
0197 edm::Handle<CSCShowerDigiCollection> dataCLCTshs;
0198 edm::Handle<CSCShowerDigiCollection> emulCLCTshs;
0199 edm::Handle<CSCShowerDigiCollection> dataLCTshs;
0200 edm::Handle<CSCShowerDigiCollection> emulLCTshs;
0201
0202 e.getByToken(dataALCTShower_token_, dataALCTshs);
0203 e.getByToken(emulALCTShower_token_, emulALCTshs);
0204 e.getByToken(dataCLCTShower_token_, dataCLCTshs);
0205 e.getByToken(emulCLCTShower_token_, emulCLCTshs);
0206 e.getByToken(dataLCTShower_token_, dataLCTshs);
0207 e.getByToken(emulLCTShower_token_, emulLCTshs);
0208
0209 const std::map<std::pair<int, int>, int> histIndexCSC = {{{1, 1}, 8},
0210 {{1, 2}, 7},
0211 {{1, 3}, 6},
0212 {{2, 1}, 5},
0213 {{2, 2}, 4},
0214 {{3, 1}, 3},
0215 {{3, 2}, 2},
0216 {{4, 1}, 1},
0217 {{4, 2}, 0}};
0218
0219 const int min_endcap = CSCDetId::minEndcapId();
0220 const int max_endcap = CSCDetId::maxEndcapId();
0221 const int min_station = CSCDetId::minStationId();
0222 const int max_station = CSCDetId::maxStationId();
0223 const int min_sector = CSCTriggerNumbering::minTriggerSectorId();
0224 const int max_sector = CSCTriggerNumbering::maxTriggerSectorId();
0225 const int min_subsector = CSCTriggerNumbering::minTriggerSubSectorId();
0226 const int max_subsector = CSCTriggerNumbering::maxTriggerSubSectorId();
0227 const int min_chamber = CSCTriggerNumbering::minTriggerCscId();
0228 const int max_chamber = CSCTriggerNumbering::maxTriggerCscId();
0229
0230 for (int endc = min_endcap; endc <= max_endcap; endc++) {
0231
0232 for (int stat = min_station; stat <= max_station; stat++) {
0233 int numsubs = ((stat == 1) ? max_subsector : 1);
0234
0235 for (int sect = min_sector; sect <= max_sector; sect++) {
0236 for (int subs = min_subsector; subs <= numsubs; subs++) {
0237
0238 for (int cham = min_chamber; cham <= max_chamber; cham++) {
0239
0240 int ring = CSCTriggerNumbering::ringFromTriggerLabels(stat, cham);
0241
0242
0243 int chid = CSCTriggerNumbering::chamberFromTriggerLabels(sect, subs, stat, cham);
0244
0245
0246 CSCDetId detid(endc, stat, ring, chid, 0);
0247
0248 int chamber = detid.chamber();
0249
0250 int sr = histIndexCSC.at({stat, ring});
0251 if (endc == 1)
0252 sr = 17 - sr;
0253 bool chamber20 = (sr == 1 or sr == 3 or sr == 5 or sr == 12 or sr == 14 or sr == 16);
0254
0255
0256 auto range_dataALCT = dataALCTshs->get(detid);
0257 auto range_emulALCT = emulALCTshs->get(detid);
0258
0259 for (auto dalct = range_dataALCT.first; dalct != range_dataALCT.second; dalct++) {
0260 if (dalct->isValid() and dalct->isNominalInTime()) {
0261 if (dalct->isTightInTime()) {
0262 if (chamber20) {
0263 alctShowerDataTightSummary_denom_->Fill(chamber * 2 - 1, sr, 0.5);
0264 alctShowerDataTightSummary_denom_->Fill(chamber * 2, sr, 0.5);
0265 } else
0266 alctShowerDataTightSummary_denom_->Fill(chamber, sr);
0267 }
0268 if (chamber20) {
0269 alctShowerDataNomSummary_denom_->Fill(chamber * 2 - 1, sr, 0.5);
0270 alctShowerDataNomSummary_denom_->Fill(chamber * 2, sr, 0.5);
0271 } else
0272 alctShowerDataNomSummary_denom_->Fill(chamber, sr);
0273
0274 for (auto ealct = range_emulALCT.first; ealct != range_emulALCT.second; ealct++) {
0275 if (ealct->isValid() and areSameShowers(*dalct, *ealct)) {
0276 if (dalct->isTightInTime()) {
0277 if (chamber20) {
0278 alctShowerDataTightSummary_num_->Fill(chamber * 2 - 1, sr, 0.5);
0279 alctShowerDataTightSummary_num_->Fill(chamber * 2, sr, 0.5);
0280 } else
0281 alctShowerDataTightSummary_num_->Fill(chamber, sr);
0282 }
0283 if (chamber20) {
0284 alctShowerDataNomSummary_num_->Fill(chamber * 2 - 1, sr, 0.5);
0285 alctShowerDataNomSummary_num_->Fill(chamber * 2, sr, 0.5);
0286 } else
0287 alctShowerDataNomSummary_num_->Fill(chamber, sr);
0288 }
0289 }
0290 }
0291 }
0292
0293 for (auto ealct = range_emulALCT.first; ealct != range_emulALCT.second; ealct++) {
0294 bool isMatched = false;
0295 if (ealct->isValid() and ealct->isNominalInTime()) {
0296 if (ealct->isTightInTime()) {
0297 if (chamber20) {
0298 alctShowerEmulTightSummary_denom_->Fill(chamber * 2 - 1, sr, 0.5);
0299 alctShowerEmulTightSummary_denom_->Fill(chamber * 2, sr, 0.5);
0300 } else
0301 alctShowerEmulTightSummary_denom_->Fill(chamber, sr);
0302 }
0303 if (chamber20) {
0304 alctShowerEmulNomSummary_denom_->Fill(chamber * 2 - 1, sr, 0.5);
0305 alctShowerEmulNomSummary_denom_->Fill(chamber * 2, sr, 0.5);
0306 } else
0307 alctShowerEmulNomSummary_denom_->Fill(chamber, sr);
0308
0309 for (auto dalct = range_dataALCT.first; dalct != range_dataALCT.second; dalct++) {
0310 if (areSameShowers(*dalct, *ealct))
0311 isMatched = true;
0312 }
0313
0314
0315 if (!isMatched) {
0316 if (ealct->isTightInTime()) {
0317 if (chamber20) {
0318 alctShowerEmulTightSummary_num_->Fill(chamber * 2 - 1, sr, 0.5);
0319 alctShowerEmulTightSummary_num_->Fill(chamber * 2, sr, 0.5);
0320 } else
0321 alctShowerEmulTightSummary_num_->Fill(chamber, sr);
0322 }
0323 if (chamber20) {
0324 alctShowerEmulNomSummary_num_->Fill(chamber * 2 - 1, sr, 0.5);
0325 alctShowerEmulNomSummary_num_->Fill(chamber * 2, sr, 0.5);
0326 } else
0327 alctShowerEmulNomSummary_num_->Fill(chamber, sr);
0328 }
0329 }
0330 }
0331
0332
0333 auto range_dataCLCT = dataCLCTshs->get(detid);
0334 auto range_emulCLCT = emulCLCTshs->get(detid);
0335
0336 for (auto dclct = range_dataCLCT.first; dclct != range_dataCLCT.second; dclct++) {
0337 if (dclct->isValid() and dclct->isNominalInTime()) {
0338 if (dclct->isTightInTime()) {
0339 if (chamber20) {
0340 clctShowerDataTightSummary_denom_->Fill(chamber * 2 - 1, sr, 0.5);
0341 clctShowerDataTightSummary_denom_->Fill(chamber * 2, sr, 0.5);
0342 } else
0343 clctShowerDataTightSummary_denom_->Fill(chamber, sr);
0344 }
0345 if (chamber20) {
0346 clctShowerDataNomSummary_denom_->Fill(chamber * 2 - 1, sr, 0.5);
0347 clctShowerDataNomSummary_denom_->Fill(chamber * 2, sr, 0.5);
0348 } else
0349 clctShowerDataNomSummary_denom_->Fill(chamber, sr);
0350
0351 for (auto eclct = range_emulCLCT.first; eclct != range_emulCLCT.second; eclct++) {
0352 if (eclct->isValid() and areSameShowers(*dclct, *eclct)) {
0353 if (dclct->isTightInTime()) {
0354 if (chamber20) {
0355 clctShowerDataTightSummary_num_->Fill(chamber * 2 - 1, sr, 0.5);
0356 clctShowerDataTightSummary_num_->Fill(chamber * 2, sr, 0.5);
0357 } else
0358 clctShowerDataTightSummary_num_->Fill(chamber, sr);
0359 }
0360 if (chamber20) {
0361 clctShowerDataNomSummary_num_->Fill(chamber * 2 - 1, sr, 0.5);
0362 clctShowerDataNomSummary_num_->Fill(chamber * 2, sr, 0.5);
0363 } else
0364 clctShowerDataNomSummary_num_->Fill(chamber, sr);
0365 }
0366 }
0367 }
0368 }
0369
0370 for (auto eclct = range_emulCLCT.first; eclct != range_emulCLCT.second; eclct++) {
0371 bool isMatched = false;
0372 if (eclct->isValid() and eclct->isNominalInTime()) {
0373 if (eclct->isTightInTime()) {
0374 if (chamber20) {
0375 clctShowerEmulTightSummary_denom_->Fill(chamber * 2 - 1, sr, 0.5);
0376 clctShowerEmulTightSummary_denom_->Fill(chamber * 2, sr, 0.5);
0377 } else
0378 clctShowerEmulTightSummary_denom_->Fill(chamber, sr);
0379 }
0380 if (chamber20) {
0381 clctShowerEmulNomSummary_denom_->Fill(chamber * 2 - 1, sr, 0.5);
0382 clctShowerEmulNomSummary_denom_->Fill(chamber * 2, sr, 0.5);
0383 } else
0384 clctShowerEmulNomSummary_denom_->Fill(chamber, sr);
0385
0386 for (auto dclct = range_dataCLCT.first; dclct != range_dataCLCT.second; dclct++) {
0387 if (areSameShowers(*dclct, *eclct))
0388 isMatched = true;
0389 }
0390
0391
0392 if (!isMatched) {
0393 if (eclct->isTightInTime()) {
0394 if (chamber20) {
0395 clctShowerEmulTightSummary_num_->Fill(chamber * 2 - 1, sr, 0.5);
0396 clctShowerEmulTightSummary_num_->Fill(chamber * 2, sr, 0.5);
0397 } else
0398 clctShowerEmulTightSummary_num_->Fill(chamber, sr);
0399 }
0400 if (chamber20) {
0401 clctShowerEmulNomSummary_num_->Fill(chamber * 2 - 1, sr, 0.5);
0402 clctShowerEmulNomSummary_num_->Fill(chamber * 2, sr, 0.5);
0403 } else
0404 clctShowerEmulNomSummary_num_->Fill(chamber, sr);
0405 }
0406 }
0407 }
0408
0409
0410 auto range_dataLCT = dataLCTshs->get(detid);
0411 auto range_emulLCT = emulLCTshs->get(detid);
0412
0413 for (auto dlct = range_dataLCT.first; dlct != range_dataLCT.second; dlct++) {
0414 if (dlct->isValid() and dlct->isNominalInTime()) {
0415 if (dlct->isTightInTime()) {
0416 if (chamber20) {
0417 lctShowerDataTightSummary_denom_->Fill(chamber * 2 - 1, sr, 0.5);
0418 lctShowerDataTightSummary_denom_->Fill(chamber * 2, sr, 0.5);
0419 } else
0420 lctShowerDataTightSummary_denom_->Fill(chamber, sr);
0421 }
0422 if (chamber20) {
0423 lctShowerDataNomSummary_denom_->Fill(chamber * 2 - 1, sr, 0.5);
0424 lctShowerDataNomSummary_denom_->Fill(chamber * 2, sr, 0.5);
0425 } else
0426 lctShowerDataNomSummary_denom_->Fill(chamber, sr);
0427
0428 for (auto elct = range_emulLCT.first; elct != range_emulLCT.second; elct++) {
0429 if (elct->isValid() and areSameShowers(*dlct, *elct)) {
0430 if (dlct->isTightInTime()) {
0431 if (chamber20) {
0432 lctShowerDataTightSummary_num_->Fill(chamber * 2 - 1, sr, 0.5);
0433 lctShowerDataTightSummary_num_->Fill(chamber * 2, sr, 0.5);
0434 } else
0435 lctShowerDataTightSummary_num_->Fill(chamber, sr);
0436 }
0437 if (chamber20) {
0438 lctShowerDataNomSummary_num_->Fill(chamber * 2 - 1, sr, 0.5);
0439 lctShowerDataNomSummary_num_->Fill(chamber * 2, sr, 0.5);
0440 } else
0441 lctShowerDataNomSummary_num_->Fill(chamber, sr);
0442 }
0443 }
0444 }
0445 }
0446
0447 for (auto elct = range_emulLCT.first; elct != range_emulLCT.second; elct++) {
0448 bool isMatched = false;
0449 if (elct->isValid() and elct->isNominalInTime()) {
0450 if (elct->isTightInTime()) {
0451 if (chamber20) {
0452 lctShowerEmulTightSummary_denom_->Fill(chamber * 2 - 1, sr, 0.5);
0453 lctShowerEmulTightSummary_denom_->Fill(chamber * 2, sr, 0.5);
0454 } else
0455 lctShowerEmulTightSummary_denom_->Fill(chamber, sr);
0456 }
0457 if (chamber20) {
0458 lctShowerEmulNomSummary_denom_->Fill(chamber * 2 - 1, sr, 0.5);
0459 lctShowerEmulNomSummary_denom_->Fill(chamber * 2, sr, 0.5);
0460 } else
0461 lctShowerEmulNomSummary_denom_->Fill(chamber, sr);
0462
0463 for (auto dlct = range_dataLCT.first; dlct != range_dataLCT.second; dlct++) {
0464 if (areSameShowers(*dlct, *elct))
0465 isMatched = true;
0466 }
0467
0468
0469 if (!isMatched) {
0470 if (elct->isTightInTime()) {
0471 if (chamber20) {
0472 lctShowerEmulTightSummary_num_->Fill(chamber * 2 - 1, sr, 0.5);
0473 lctShowerEmulTightSummary_num_->Fill(chamber * 2, sr, 0.5);
0474 } else
0475 lctShowerEmulTightSummary_num_->Fill(chamber, sr);
0476 }
0477 if (chamber20) {
0478 lctShowerEmulNomSummary_num_->Fill(chamber * 2 - 1, sr, 0.5);
0479 lctShowerEmulNomSummary_num_->Fill(chamber * 2, sr, 0.5);
0480 } else
0481 lctShowerEmulNomSummary_num_->Fill(chamber, sr);
0482 }
0483 }
0484 }
0485 }
0486 }
0487 }
0488 }
0489 }
0490 }
0491
0492 bool L1TdeCSCTPGShower::areSameShowers(const CSCShowerDigi& lhs, const CSCShowerDigi& rhs) const {
0493 bool returnValue = false;
0494 if (lhs.isValid() == rhs.isValid() && lhs.getCSCID() == rhs.getCSCID() && lhs.bitsInTime() == rhs.bitsInTime() &&
0495 lhs.bitsOutOfTime() == rhs.bitsOutOfTime()) {
0496 returnValue = true;
0497 }
0498 return returnValue;
0499 }