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