File indexing completed on 2024-12-12 23:19:34
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include <string>
0015
0016 #include "FWCore/Framework/interface/Frameworkfwd.h"
0017 #include "FWCore/Framework/interface/Event.h"
0018 #include "FWCore/Framework/interface/MakerMacros.h"
0019 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0020
0021 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0022 #include "DQMServices/Core/interface/DQMStore.h"
0023
0024 #include "DataFormats/Common/interface/ValidHandle.h"
0025 #include "DataFormats/ForwardDetId/interface/ETLDetId.h"
0026 #include "DataFormats/FTLDigi/interface/FTLDigiCollections.h"
0027
0028 #include "Geometry/Records/interface/MTDDigiGeometryRecord.h"
0029 #include "Geometry/Records/interface/MTDTopologyRcd.h"
0030 #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h"
0031 #include "Geometry/CommonTopologies/interface/PixelTopology.h"
0032 #include "Geometry/MTDGeometryBuilder/interface/MTDTopology.h"
0033 #include "Geometry/MTDCommonData/interface/MTDTopologyMode.h"
0034
0035 class EtlDigiHitsValidation : public DQMEDAnalyzer {
0036 public:
0037 explicit EtlDigiHitsValidation(const edm::ParameterSet&);
0038 ~EtlDigiHitsValidation() override;
0039
0040 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0041
0042 private:
0043 void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
0044
0045 void analyze(const edm::Event&, const edm::EventSetup&) override;
0046
0047
0048
0049 const std::string folder_;
0050 const bool optionalPlots_;
0051
0052 edm::EDGetTokenT<ETLDigiCollection> etlDigiHitsToken_;
0053
0054 edm::ESGetToken<MTDGeometry, MTDDigiGeometryRecord> mtdgeoToken_;
0055 edm::ESGetToken<MTDTopology, MTDTopologyRcd> mtdtopoToken_;
0056
0057
0058
0059 MonitorElement* meNhits_[4];
0060 MonitorElement* meNhitsPerLGAD_[4];
0061
0062 MonitorElement* meHitCharge_[4];
0063 MonitorElement* meHitTime_[4];
0064 MonitorElement* meHitToT_[4];
0065
0066 MonitorElement* meOccupancy_[4];
0067
0068 MonitorElement* meLocalOccupancy_[2];
0069 MonitorElement* meHitXlocal_[2];
0070 MonitorElement* meHitYlocal_[2];
0071
0072 MonitorElement* meHitX_[4];
0073 MonitorElement* meHitY_[4];
0074 MonitorElement* meHitZ_[4];
0075 MonitorElement* meHitPhi_[4];
0076 MonitorElement* meHitEta_[4];
0077
0078 MonitorElement* meHitTvsQ_[4];
0079 MonitorElement* meHitToTvsQ_[4];
0080 MonitorElement* meHitQvsPhi_[4];
0081 MonitorElement* meHitQvsEta_[4];
0082 MonitorElement* meHitTvsPhi_[4];
0083 MonitorElement* meHitTvsEta_[4];
0084
0085 std::array<std::unordered_map<uint32_t, uint32_t>, 4> ndigiPerLGAD_;
0086 };
0087
0088
0089 EtlDigiHitsValidation::EtlDigiHitsValidation(const edm::ParameterSet& iConfig)
0090 : folder_(iConfig.getParameter<std::string>("folder")),
0091 optionalPlots_(iConfig.getParameter<bool>("optionalPlots")) {
0092 etlDigiHitsToken_ = consumes<ETLDigiCollection>(iConfig.getParameter<edm::InputTag>("inputTag"));
0093 mtdgeoToken_ = esConsumes<MTDGeometry, MTDDigiGeometryRecord>();
0094 mtdtopoToken_ = esConsumes<MTDTopology, MTDTopologyRcd>();
0095 }
0096
0097 EtlDigiHitsValidation::~EtlDigiHitsValidation() {}
0098
0099
0100 void EtlDigiHitsValidation::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0101 using namespace edm;
0102
0103 auto geometryHandle = iSetup.getTransientHandle(mtdgeoToken_);
0104 const MTDGeometry* geom = geometryHandle.product();
0105
0106 auto etlDigiHitsHandle = makeValid(iEvent.getHandle(etlDigiHitsToken_));
0107
0108
0109
0110 unsigned int n_digi_etl[4] = {0, 0, 0, 0};
0111 for (size_t i = 0; i < 4; i++) {
0112 ndigiPerLGAD_[i].clear();
0113 }
0114
0115 size_t index(0);
0116
0117 for (const auto& dataFrame : *etlDigiHitsHandle) {
0118
0119 int isample = 2;
0120 double weight = 1.0;
0121 const auto& sample = dataFrame.sample(isample);
0122 ETLDetId detId = dataFrame.id();
0123 DetId geoId = detId.geographicalId();
0124
0125 const MTDGeomDet* thedet = geom->idToDet(geoId);
0126 if (thedet == nullptr)
0127 throw cms::Exception("EtlDigiHitsValidation") << "GeographicalID: " << std::hex << geoId.rawId() << " ("
0128 << detId.rawId() << ") is invalid!" << std::dec << std::endl;
0129 const PixelTopology& topo = static_cast<const PixelTopology&>(thedet->topology());
0130
0131 Local3DPoint local_point(topo.localX(sample.row()), topo.localY(sample.column()), 0.);
0132 const auto& global_point = thedet->toGlobal(local_point);
0133
0134
0135
0136 int idet = 999;
0137 if (detId.discSide() == 1) {
0138 weight = -weight;
0139 }
0140 if ((detId.zside() == -1) && (detId.nDisc() == 1)) {
0141 idet = 0;
0142 } else if ((detId.zside() == -1) && (detId.nDisc() == 2)) {
0143 idet = 1;
0144 } else if ((detId.zside() == 1) && (detId.nDisc() == 1)) {
0145 idet = 2;
0146 } else if ((detId.zside() == 1) && (detId.nDisc() == 2)) {
0147 idet = 3;
0148 } else {
0149 edm::LogWarning("EtlDigiHitsValidation") << "Unknown ETL DetId configuration: " << detId;
0150 continue;
0151 }
0152
0153 index++;
0154 LogDebug("EtlDigiHitsValidation") << "Digi # " << index << " DetId " << detId.rawId() << " idet " << idet;
0155
0156 meHitCharge_[idet]->Fill(sample.data());
0157 meHitTime_[idet]->Fill(sample.toa());
0158 meHitToT_[idet]->Fill(sample.tot());
0159 meOccupancy_[idet]->Fill(global_point.x(), global_point.y(), weight);
0160
0161 if (optionalPlots_) {
0162 if ((idet == 0) || (idet == 1)) {
0163 meLocalOccupancy_[0]->Fill(local_point.x(), local_point.y());
0164 meHitXlocal_[0]->Fill(local_point.x());
0165 meHitYlocal_[0]->Fill(local_point.y());
0166
0167 } else if ((idet == 2) || (idet == 3)) {
0168 meLocalOccupancy_[1]->Fill(local_point.x(), local_point.y());
0169 meHitXlocal_[1]->Fill(local_point.x());
0170 meHitYlocal_[1]->Fill(local_point.y());
0171 }
0172 }
0173
0174 meHitX_[idet]->Fill(global_point.x());
0175 meHitY_[idet]->Fill(global_point.y());
0176 meHitZ_[idet]->Fill(global_point.z());
0177 meHitPhi_[idet]->Fill(global_point.phi());
0178 meHitEta_[idet]->Fill(global_point.eta());
0179
0180 meHitTvsQ_[idet]->Fill(sample.data(), sample.toa());
0181 meHitToTvsQ_[idet]->Fill(sample.data(), sample.tot());
0182 meHitQvsPhi_[idet]->Fill(global_point.phi(), sample.data());
0183 meHitQvsEta_[idet]->Fill(global_point.eta(), sample.data());
0184 meHitTvsPhi_[idet]->Fill(global_point.phi(), sample.toa());
0185 meHitTvsEta_[idet]->Fill(global_point.eta(), sample.toa());
0186
0187 n_digi_etl[idet]++;
0188 size_t ncount(0);
0189 ndigiPerLGAD_[idet].emplace(detId.rawId(), ncount);
0190 ndigiPerLGAD_[idet].at(detId.rawId())++;
0191
0192 }
0193
0194 for (int i = 0; i < 4; i++) {
0195 meNhits_[i]->Fill(log10(n_digi_etl[i]));
0196 for (const auto& thisNdigi : ndigiPerLGAD_[i]) {
0197 meNhitsPerLGAD_[i]->Fill(thisNdigi.second);
0198 }
0199 }
0200 }
0201
0202
0203 void EtlDigiHitsValidation::bookHistograms(DQMStore::IBooker& ibook,
0204 edm::Run const& run,
0205 edm::EventSetup const& iSetup) {
0206 ibook.setCurrentFolder(folder_);
0207
0208
0209
0210 meNhits_[0] = ibook.book1D("EtlNhitsZnegD1",
0211 "Number of ETL DIGI hits (-Z, Single(topo1D)/First(topo2D) disk);log_{10}(N_{DIGI})",
0212 100,
0213 0.,
0214 5.25);
0215 meNhits_[1] =
0216 ibook.book1D("EtlNhitsZnegD2", "Number of ETL DIGI hits (-Z, Second disk);log_{10}(N_{DIGI})", 100, 0., 5.25);
0217 meNhits_[2] = ibook.book1D("EtlNhitsZposD1",
0218 "Number of ETL DIGI hits (+Z, Single(topo1D)/First(topo2D) disk);log_{10}(N_{DIGI})",
0219 100,
0220 0.,
0221 5.25);
0222 meNhits_[3] =
0223 ibook.book1D("EtlNhitsZposD2", "Number of ETL DIGI hits (+Z, Second disk);log_{10}(N_{DIGI})", 100, 0., 5.25);
0224
0225 meNhitsPerLGAD_[0] = ibook.book1D("EtlNhitsPerLGADZnegD1",
0226 "Number of ETL DIGI hits (-Z, Single(topo1D)/First(topo2D) disk) per LGAD;N_{DIGI}",
0227 50,
0228 0.,
0229 50.);
0230 meNhitsPerLGAD_[1] =
0231 ibook.book1D("EtlNhitsPerLGADZnegD2", "Number of ETL DIGI hits (-Z, Second disk) per LGAD;N_{DIGI}", 50, 0., 50.);
0232 meNhitsPerLGAD_[2] = ibook.book1D("EtlNhitsPerLGADZposD1",
0233 "Number of ETL DIGI hits (+Z, Single(topo1D)/First(topo2D) disk) per LGAD;N_{DIGI}",
0234 50,
0235 0.,
0236 50.);
0237 meNhitsPerLGAD_[3] =
0238 ibook.book1D("EtlNhitsPerLGADZposD2", "Number of ETL DIGI hits (+Z, Second disk) per LGAD;N_{DIGI}", 50, 0., 50.);
0239
0240 meHitCharge_[0] = ibook.book1D("EtlHitChargeZnegD1",
0241 "ETL DIGI hits charge (-Z, Single(topo1D)/First(topo2D) disk);Q_{DIGI} [ADC counts]",
0242 100,
0243 0.,
0244 256.);
0245 meHitCharge_[1] =
0246 ibook.book1D("EtlHitChargeZnegD2", "ETL DIGI hits charge (-Z, Second disk);Q_{DIGI} [ADC counts]", 100, 0., 256.);
0247 meHitCharge_[2] = ibook.book1D("EtlHitChargeZposD1",
0248 "ETL DIGI hits charge (+Z, Single(topo1D)/First(topo2D) disk);Q_{DIGI} [ADC counts]",
0249 100,
0250 0.,
0251 256.);
0252 meHitCharge_[3] =
0253 ibook.book1D("EtlHitChargeZposD2", "ETL DIGI hits charge (+Z, Second disk);Q_{DIGI} [ADC counts]", 100, 0., 256.);
0254
0255 meHitTime_[0] = ibook.book1D("EtlHitTimeZnegD1",
0256 "ETL DIGI hits ToA (-Z, Single(topo1D)/First(topo2D) disk);ToA_{DIGI} [TDC counts]",
0257 100,
0258 0.,
0259 2000.);
0260 meHitTime_[1] =
0261 ibook.book1D("EtlHitTimeZnegD2", "ETL DIGI hits ToA (-Z, Second disk);ToA_{DIGI} [TDC counts]", 100, 0., 2000.);
0262 meHitTime_[2] = ibook.book1D("EtlHitTimeZposD1",
0263 "ETL DIGI hits ToA (+Z, Single(topo1D)/First(topo2D) disk);ToA_{DIGI} [TDC counts]",
0264 100,
0265 0.,
0266 2000.);
0267 meHitTime_[3] =
0268 ibook.book1D("EtlHitTimeZposD2", "ETL DIGI hits ToA (+Z, Second disk);ToA_{DIGI} [TDC counts]", 100, 0., 2000.);
0269
0270 meHitToT_[0] = ibook.book1D("EtlHitToTZnegD1",
0271 "ETL DIGI hits ToT (-Z, Single(topo1D)/First(topo2D) disk);ToT_{DIGI} [TDC counts]",
0272 100,
0273 0.,
0274 500.);
0275 meHitToT_[1] =
0276 ibook.book1D("EtlHitToTZnegD2", "ETL DIGI hits ToT (-Z, Second disk);ToT_{DIGI} [TDC counts]", 100, 0., 500.);
0277 meHitToT_[2] = ibook.book1D("EtlHitToTZposD1",
0278 "ETL DIGI hits ToT (+Z, Single(topo1D)/First(topo2D) disk);ToT_{DIGI} [TDC counts]",
0279 100,
0280 0.,
0281 500.);
0282 meHitToT_[3] =
0283 ibook.book1D("EtlHitToTZposD2", "ETL DIGI hits ToT (+Z, Second disk);ToT_{DIGI} [TDC counts]", 100, 0., 500.);
0284
0285 meOccupancy_[0] =
0286 ibook.book2D("EtlOccupancyZnegD1",
0287 "ETL DIGI hits occupancy (-Z, Single(topo1D)/First(topo2D) disk);X_{DIGI} [cm];Y_{DIGI} [cm]",
0288 135,
0289 -135.,
0290 135.,
0291 135,
0292 -135.,
0293 135.);
0294 meOccupancy_[1] = ibook.book2D("EtlOccupancyZnegD2",
0295 "ETL DIGI hits occupancy (-Z, Second disk);X_{DIGI} [cm];Y_{DIGI} [cm]",
0296 135,
0297 -135.,
0298 135.,
0299 135,
0300 -135.,
0301 135.);
0302 meOccupancy_[2] =
0303 ibook.book2D("EtlOccupancyZposD1",
0304 "ETL DIGI hits occupancy (+Z, Single(topo1D)/First(topo2D) disk);X_{DIGI} [cm];Y_{DIGI} [cm]",
0305 135,
0306 -135.,
0307 135.,
0308 135,
0309 -135.,
0310 135.);
0311 meOccupancy_[3] = ibook.book2D("EtlOccupancyZposD2",
0312 "ETL DIGI hits occupancy (+Z, Second disk);X_{DIGI} [cm];Y_{DIGI} [cm]",
0313 135,
0314 -135.,
0315 135.,
0316 135,
0317 -135.,
0318 135.);
0319 if (optionalPlots_) {
0320 meLocalOccupancy_[0] = ibook.book2D("EtlLocalOccupancyZneg",
0321 "ETL DIGI hits local occupancy (-Z);X_{DIGI} [cm];Y_{DIGI} [cm]",
0322 100,
0323 -2.2,
0324 2.2,
0325 50,
0326 -1.1,
0327 1.1);
0328 meLocalOccupancy_[1] = ibook.book2D("EtlLocalOccupancyZpos",
0329 "ETL DIGI hits local occupancy (+Z);X_{DIGI} [cm];Y_{DIGI} [cm]",
0330 100,
0331 -2.2,
0332 2.2,
0333 50,
0334 -1.1,
0335 1.1);
0336 meHitXlocal_[0] = ibook.book1D("EtlHitXlocalZneg", "ETL DIGI local X (-Z);X_{DIGI}^{LOC} [cm]", 100, -2.2, 2.2);
0337 meHitXlocal_[1] = ibook.book1D("EtlHitXlocalZpos", "ETL DIGI local X (+Z);X_{DIGI}^{LOC} [cm]", 100, -2.2, 2.2);
0338 meHitYlocal_[0] = ibook.book1D("EtlHitYlocalZneg", "ETL DIGI local Y (-Z);Y_{DIGI}^{LOC} [cm]", 50, -1.1, 1.1);
0339 meHitYlocal_[1] = ibook.book1D("EtlHitYlocalZpos", "ETL DIGI local Y (-Z);Y_{DIGI}^{LOC} [cm]", 50, -1.1, 1.1);
0340 }
0341 meHitX_[0] = ibook.book1D(
0342 "EtlHitXZnegD1", "ETL DIGI hits X (-Z, Single(topo1D)/First(topo2D) disk);X_{DIGI} [cm]", 100, -130., 130.);
0343 meHitX_[1] = ibook.book1D("EtlHitXZnegD2", "ETL DIGI hits X (-Z, Second disk);X_{DIGI} [cm]", 100, -130., 130.);
0344 meHitX_[2] = ibook.book1D(
0345 "EtlHitXZposD1", "ETL DIGI hits X (+Z, Single(topo1D)/First(topo2D) disk);X_{DIGI} [cm]", 100, -130., 130.);
0346 meHitX_[3] = ibook.book1D("EtlHitXZposD2", "ETL DIGI hits X (+Z, Second disk);X_{DIGI} [cm]", 100, -130., 130.);
0347 meHitY_[0] = ibook.book1D(
0348 "EtlHitYZnegD1", "ETL DIGI hits Y (-Z, Single(topo1D)/First(topo2D) disk);Y_{DIGI} [cm]", 100, -130., 130.);
0349 meHitY_[1] = ibook.book1D("EtlHitYZnegD2", "ETL DIGI hits Y (-Z, Second disk);Y_{DIGI} [cm]", 100, -130., 130.);
0350 meHitY_[2] = ibook.book1D(
0351 "EtlHitYZposD1", "ETL DIGI hits Y (+Z, Single(topo1D)/First(topo2D) disk);Y_{DIGI} [cm]", 100, -130., 130.);
0352 meHitY_[3] = ibook.book1D("EtlHitYZposD2", "ETL DIGI hits Y (+Z, Second disk);Y_{DIGI} [cm]", 100, -130., 130.);
0353 meHitZ_[0] = ibook.book1D(
0354 "EtlHitZZnegD1", "ETL DIGI hits Z (-Z, Single(topo1D)/First(topo2D) disk);Z_{DIGI} [cm]", 100, -302., -298.);
0355 meHitZ_[1] = ibook.book1D("EtlHitZZnegD2", "ETL DIGI hits Z (-Z, Second disk);Z_{DIGI} [cm]", 100, -304., -300.);
0356 meHitZ_[2] = ibook.book1D(
0357 "EtlHitZZposD1", "ETL DIGI hits Z (+Z, Single(topo1D)/First(topo2D) disk);Z_{DIGI} [cm]", 100, 298., 302.);
0358 meHitZ_[3] = ibook.book1D("EtlHitZZposD2", "ETL DIGI hits Z (+Z, Second disk);Z_{DIGI} [cm]", 100, 300., 304.);
0359
0360 meHitPhi_[0] = ibook.book1D("EtlHitPhiZnegD1",
0361 "ETL DIGI hits #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad]",
0362 100,
0363 -3.15,
0364 3.15);
0365 meHitPhi_[1] =
0366 ibook.book1D("EtlHitPhiZnegD2", "ETL DIGI hits #phi (-Z, Second disk);#phi_{DIGI} [rad]", 100, -3.15, 3.15);
0367 meHitPhi_[2] = ibook.book1D("EtlHitPhiZposD1",
0368 "ETL DIGI hits #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad]",
0369 100,
0370 -3.15,
0371 3.15);
0372 meHitPhi_[3] =
0373 ibook.book1D("EtlHitPhiZposD2", "ETL DIGI hits #phi (+Z, Second disk);#phi_{DIGI} [rad]", 100, -3.15, 3.15);
0374 meHitEta_[0] = ibook.book1D(
0375 "EtlHitEtaZnegD1", "ETL DIGI hits #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI}", 100, -3.2, -1.56);
0376 meHitEta_[1] = ibook.book1D("EtlHitEtaZnegD2", "ETL DIGI hits #eta (-Z, Second disk);#eta_{DIGI}", 100, -3.2, -1.56);
0377 meHitEta_[2] = ibook.book1D(
0378 "EtlHitEtaZposD1", "ETL DIGI hits #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI}", 100, 1.56, 3.2);
0379 meHitEta_[3] = ibook.book1D("EtlHitEtaZposD2", "ETL DIGI hits #eta (+Z, Second disk);#eta_{DIGI}", 100, 1.56, 3.2);
0380 meHitTvsQ_[0] = ibook.bookProfile(
0381 "EtlHitTvsQZnegD1",
0382 "ETL DIGI ToA vs charge (-Z, Single(topo1D)/First(topo2D) disk);Q_{DIGI} [ADC counts];ToA_{DIGI} [TDC counts]",
0383 50,
0384 0.,
0385 256.,
0386 0.,
0387 1024.);
0388 meHitTvsQ_[1] =
0389 ibook.bookProfile("EtlHitTvsQZnegD2",
0390 "ETL DIGI ToA vs charge (-Z, Second Disk);Q_{DIGI} [ADC counts];ToA_{DIGI} [TDC counts]",
0391 50,
0392 0.,
0393 256.,
0394 0.,
0395 1024.);
0396 meHitTvsQ_[2] = ibook.bookProfile(
0397 "EtlHitTvsQZposD1",
0398 "ETL DIGI ToA vs charge (+Z, Single(topo1D)/First(topo2D) disk);Q_{DIGI} [ADC counts];ToA_{DIGI} [TDC counts]",
0399 50,
0400 0.,
0401 256.,
0402 0.,
0403 1024.);
0404 meHitTvsQ_[3] =
0405 ibook.bookProfile("EtlHitTvsQZposD2",
0406 "ETL DIGI ToA vs charge (+Z, Second disk);Q_{DIGI} [ADC counts];ToA_{DIGI} [TDC counts]",
0407 50,
0408 0.,
0409 256.,
0410 0.,
0411 1024.);
0412 meHitToTvsQ_[0] = ibook.bookProfile(
0413 "EtlHitToTvsQZnegD1",
0414 "ETL DIGI ToT vs charge (-Z, Single(topo1D)/First(topo2D) disk);Q_{DIGI} [ADC counts];ToT_{DIGI} [TDC counts]",
0415 50,
0416 0.,
0417 256.,
0418 0.,
0419 1024.);
0420 meHitToTvsQ_[1] =
0421 ibook.bookProfile("EtlHitToTvsQZnegD2",
0422 "ETL DIGI ToT vs charge (-Z, Second Disk);Q_{DIGI} [ADC counts];ToT_{DIGI} [TDC counts]",
0423 50,
0424 0.,
0425 256.,
0426 0.,
0427 1024.);
0428 meHitToTvsQ_[2] = ibook.bookProfile(
0429 "EtlHitToTvsQZposD1",
0430 "ETL DIGI ToT vs charge (+Z, Single(topo1D)/First(topo2D) disk);Q_{DIGI} [ADC counts];ToT_{DIGI} [TDC counts]",
0431 50,
0432 0.,
0433 256.,
0434 0.,
0435 1024.);
0436 meHitToTvsQ_[3] =
0437 ibook.bookProfile("EtlHitToTvsQZposD2",
0438 "ETL DIGI ToT vs charge (+Z, Second disk);Q_{DIGI} [ADC counts];ToT_{DIGI} [TDC counts]",
0439 50,
0440 0.,
0441 256.,
0442 0.,
0443 1024.);
0444 meHitQvsPhi_[0] = ibook.bookProfile(
0445 "EtlHitQvsPhiZnegD1",
0446 "ETL DIGI charge vs #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad];Q_{DIGI} [ADC counts]",
0447 50,
0448 -3.15,
0449 3.15,
0450 0.,
0451 1024.);
0452 meHitQvsPhi_[1] =
0453 ibook.bookProfile("EtlHitQvsPhiZnegD2",
0454 "ETL DIGI charge vs #phi (-Z, Second disk);#phi_{DIGI} [rad];Q_{DIGI} [ADC counts]",
0455 50,
0456 -3.15,
0457 3.15,
0458 0.,
0459 1024.);
0460 meHitQvsPhi_[2] = ibook.bookProfile(
0461 "EtlHitQvsPhiZposD1",
0462 "ETL DIGI charge vs #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad];Q_{DIGI} [ADC counts]",
0463 50,
0464 -3.15,
0465 3.15,
0466 0.,
0467 1024.);
0468 meHitQvsPhi_[3] =
0469 ibook.bookProfile("EtlHitQvsPhiZposD2",
0470 "ETL DIGI charge vs #phi (+Z, Second disk);#phi_{DIGI} [rad];Q_{DIGI} [ADC counts]",
0471 50,
0472 -3.15,
0473 3.15,
0474 0.,
0475 1024.);
0476 meHitQvsEta_[0] = ibook.bookProfile(
0477 "EtlHitQvsEtaZnegD1",
0478 "ETL DIGI charge vs #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI};Q_{DIGI} [ADC counts]",
0479 50,
0480 -3.2,
0481 -1.56,
0482 0.,
0483 1024.);
0484 meHitQvsEta_[1] = ibook.bookProfile("EtlHitQvsEtaZnegD2",
0485 "ETL DIGI charge vs #eta (-Z, Second disk);#eta_{DIGI};Q_{DIGI} [ADC counts]",
0486 50,
0487 -3.2,
0488 -1.56,
0489 0.,
0490 1024.);
0491 meHitQvsEta_[2] = ibook.bookProfile(
0492 "EtlHitQvsEtaZposD1",
0493 "ETL DIGI charge vs #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI};Q_{DIGI} [ADC counts]",
0494 50,
0495 1.56,
0496 3.2,
0497 0.,
0498 1024.);
0499 meHitQvsEta_[3] = ibook.bookProfile("EtlHitQvsEtaZposD2",
0500 "ETL DIGI charge vs #eta (+Z, Second disk);#eta_{DIGI};Q_{DIGI} [ADC counts]",
0501 50,
0502 1.56,
0503 3.2,
0504 0.,
0505 1024.);
0506 meHitTvsPhi_[0] = ibook.bookProfile(
0507 "EtlHitTvsPhiZnegD1",
0508 "ETL DIGI ToA vs #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad];ToA_{DIGI} [TDC counts]",
0509 50,
0510 -3.15,
0511 3.15,
0512 0.,
0513 1024.);
0514 meHitTvsPhi_[1] =
0515 ibook.bookProfile("EtlHitTvsPhiZnegD2",
0516 "ETL DIGI ToA vs #phi (-Z, Second disk);#phi_{DIGI} [rad];ToA_{DIGI} [TDC counts]",
0517 50,
0518 -3.15,
0519 3.15,
0520 0.,
0521 1024.);
0522 meHitTvsPhi_[2] = ibook.bookProfile(
0523 "EtlHitTvsPhiZposD1",
0524 "ETL DIGI ToA vs #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad];ToA_{DIGI} [TDC counts]",
0525 50,
0526 -3.15,
0527 3.15,
0528 0.,
0529 1024.);
0530 meHitTvsPhi_[3] =
0531 ibook.bookProfile("EtlHitTvsPhiZposD2",
0532 "ETL DIGI ToA vs #phi (+Z, Second disk);#phi_{DIGI} [rad];ToA_{DIGI} [TDC counts]",
0533 50,
0534 -3.15,
0535 3.15,
0536 0.,
0537 1024.);
0538 meHitTvsEta_[0] = ibook.bookProfile(
0539 "EtlHitTvsEtaZnegD1",
0540 "ETL DIGI ToA vs #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI};ToA_{DIGI} [TDC counts]",
0541 50,
0542 -3.2,
0543 -1.56,
0544 0.,
0545 1024.);
0546 meHitTvsEta_[1] = ibook.bookProfile("EtlHitTvsEtaZnegD2",
0547 "ETL DIGI ToA vs #eta (-Z, Second disk);#eta_{DIGI};ToA_{DIGI} [TDC counts]",
0548 50,
0549 -3.2,
0550 -1.56,
0551 0.,
0552 1024.);
0553 meHitTvsEta_[2] = ibook.bookProfile(
0554 "EtlHitTvsEtaZposD1",
0555 "ETL DIGI ToA vs #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI};ToA_{DIGI} [TDC counts]",
0556 50,
0557 1.56,
0558 3.2,
0559 0.,
0560 1024.);
0561 meHitTvsEta_[3] = ibook.bookProfile("EtlHitTvsEtaZposD2",
0562 "ETL DIGI ToA vs #eta (+Z, Second disk);#eta_{DIGI};ToA_{DIGI} [TDC counts]",
0563 50,
0564 1.56,
0565 3.2,
0566 0.,
0567 1024.);
0568 }
0569
0570
0571 void EtlDigiHitsValidation::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0572 edm::ParameterSetDescription desc;
0573
0574 desc.add<std::string>("folder", "MTD/ETL/DigiHits");
0575 desc.add<edm::InputTag>("inputTag", edm::InputTag("mix", "FTLEndcap"));
0576 desc.add<bool>("optionalPlots", false);
0577
0578 descriptions.add("etlDigiHitsDefaultValid", desc);
0579 }
0580
0581 DEFINE_FWK_MODULE(EtlDigiHitsValidation);