File indexing completed on 2024-05-20 22:40:16
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/Math/interface/GeantUnits.h"
0026 #include "DataFormats/ForwardDetId/interface/ETLDetId.h"
0027
0028 #include "SimDataFormats/CrossingFrame/interface/CrossingFrame.h"
0029 #include "SimDataFormats/CrossingFrame/interface/MixCollection.h"
0030 #include "SimDataFormats/TrackingHit/interface/PSimHit.h"
0031
0032 #include "SimFastTiming/FastTimingCommon/interface/MTDDigitizerTypes.h"
0033 #include "Geometry/MTDGeometryBuilder/interface/MTDGeomUtil.h"
0034
0035 #include "Geometry/Records/interface/MTDDigiGeometryRecord.h"
0036 #include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h"
0037 #include "Geometry/MTDNumberingBuilder/interface/MTDTopology.h"
0038 #include "Geometry/MTDCommonData/interface/MTDTopologyMode.h"
0039
0040 #include "MTDHit.h"
0041
0042 class EtlSimHitsValidation : public DQMEDAnalyzer {
0043 public:
0044 explicit EtlSimHitsValidation(const edm::ParameterSet&);
0045 ~EtlSimHitsValidation() override;
0046
0047 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0048
0049 private:
0050 void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
0051
0052 void analyze(const edm::Event&, const edm::EventSetup&) override;
0053
0054
0055
0056 const std::string folder_;
0057 const float hitMinEnergy2Dis_;
0058
0059 edm::EDGetTokenT<CrossingFrame<PSimHit>> etlSimHitsToken_;
0060
0061 edm::ESGetToken<MTDGeometry, MTDDigiGeometryRecord> mtdgeoToken_;
0062 edm::ESGetToken<MTDTopology, MTDTopologyRcd> mtdtopoToken_;
0063
0064
0065
0066 MonitorElement* meNhits_[4];
0067 MonitorElement* meNtrkPerCell_[4];
0068
0069 MonitorElement* meHitEnergy_[4];
0070 MonitorElement* meHitTime_[4];
0071
0072 MonitorElement* meHitXlocal_[4];
0073 MonitorElement* meHitYlocal_[4];
0074 MonitorElement* meHitZlocal_[4];
0075
0076 MonitorElement* meOccupancy_[4];
0077
0078 MonitorElement* meHitX_[4];
0079 MonitorElement* meHitY_[4];
0080 MonitorElement* meHitZ_[4];
0081 MonitorElement* meHitPhi_[4];
0082 MonitorElement* meHitEta_[4];
0083
0084 MonitorElement* meHitTvsE_[4];
0085 MonitorElement* meHitEvsPhi_[4];
0086 MonitorElement* meHitEvsEta_[4];
0087 MonitorElement* meHitTvsPhi_[4];
0088 MonitorElement* meHitTvsEta_[4];
0089 };
0090
0091
0092 EtlSimHitsValidation::EtlSimHitsValidation(const edm::ParameterSet& iConfig)
0093 : folder_(iConfig.getParameter<std::string>("folder")),
0094 hitMinEnergy2Dis_(iConfig.getParameter<double>("hitMinimumEnergy2Dis")) {
0095 etlSimHitsToken_ = consumes<CrossingFrame<PSimHit>>(iConfig.getParameter<edm::InputTag>("inputTag"));
0096 mtdgeoToken_ = esConsumes<MTDGeometry, MTDDigiGeometryRecord>();
0097 mtdtopoToken_ = esConsumes<MTDTopology, MTDTopologyRcd>();
0098 }
0099
0100 EtlSimHitsValidation::~EtlSimHitsValidation() {}
0101
0102
0103 void EtlSimHitsValidation::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0104 using namespace edm;
0105 using namespace geant_units::operators;
0106
0107 using namespace mtd;
0108 using namespace std;
0109
0110 auto geometryHandle = iSetup.getTransientHandle(mtdgeoToken_);
0111 const MTDGeometry* geom = geometryHandle.product();
0112
0113 MTDGeomUtil geomUtil;
0114 geomUtil.setGeometry(geom);
0115
0116 auto etlSimHitsHandle = makeValid(iEvent.getHandle(etlSimHitsToken_));
0117 MixCollection<PSimHit> etlSimHits(etlSimHitsHandle.product());
0118
0119 std::unordered_map<mtd_digitizer::MTDCellId, MTDHit> m_etlHits[4];
0120 std::unordered_map<mtd_digitizer::MTDCellId, std::set<int>> m_etlTrkPerCell[4];
0121
0122
0123
0124 int idet = 999;
0125
0126 size_t index(0);
0127
0128 for (auto const& simHit : etlSimHits) {
0129 index++;
0130 LogDebug("EtlSimHitsValidation") << "SimHit # " << index << " detId " << simHit.detUnitId() << " ene "
0131 << simHit.energyLoss() << " tof " << simHit.tof() << " tId " << simHit.trackId();
0132
0133
0134 if (simHit.tof() < 0 || simHit.tof() > 25.)
0135 continue;
0136
0137 ETLDetId id = simHit.detUnitId();
0138 if ((id.zside() == -1) && (id.nDisc() == 1)) {
0139 idet = 0;
0140 } else if ((id.zside() == -1) && (id.nDisc() == 2)) {
0141 idet = 1;
0142 } else if ((id.zside() == 1) && (id.nDisc() == 1)) {
0143 idet = 2;
0144 } else if ((id.zside() == 1) && (id.nDisc() == 2)) {
0145 idet = 3;
0146 } else {
0147 edm::LogWarning("EtlSimHitsValidation") << "Unknown ETL DetId configuration: " << id;
0148 continue;
0149 }
0150
0151 const auto& position = simHit.localPosition();
0152
0153 LocalPoint simscaled(convertMmToCm(position.x()), convertMmToCm(position.y()), convertMmToCm(position.z()));
0154 std::pair<uint8_t, uint8_t> pixel = geomUtil.pixelInModule(id, simscaled);
0155
0156 mtd_digitizer::MTDCellId pixelId(id.rawId(), pixel.first, pixel.second);
0157 m_etlTrkPerCell[idet][pixelId].insert(simHit.trackId());
0158 auto simHitIt = m_etlHits[idet].emplace(pixelId, MTDHit()).first;
0159
0160
0161 (simHitIt->second).energy += convertUnitsTo(0.001_MeV, simHit.energyLoss());
0162
0163
0164 if ((simHitIt->second).time == 0 || simHit.tof() < (simHitIt->second).time) {
0165 (simHitIt->second).time = simHit.tof();
0166
0167 auto hit_pos = simHit.localPosition();
0168 (simHitIt->second).x = hit_pos.x();
0169 (simHitIt->second).y = hit_pos.y();
0170 (simHitIt->second).z = hit_pos.z();
0171 }
0172 LogDebug("EtlSimHitsValidation") << "Registered in idet " << idet;
0173
0174 }
0175
0176
0177
0178
0179
0180 for (int idet = 0; idet < 4; ++idet) {
0181 meNhits_[idet]->Fill(m_etlHits[idet].size());
0182 LogDebug("EtlSimHitsValidation") << "idet " << idet << " #hits " << m_etlHits[idet].size();
0183
0184 for (auto const& hit : m_etlTrkPerCell[idet]) {
0185 meNtrkPerCell_[idet]->Fill((hit.second).size());
0186 }
0187
0188 for (auto const& hit : m_etlHits[idet]) {
0189 double weight = 1.0;
0190 if ((hit.second).energy < hitMinEnergy2Dis_)
0191 continue;
0192
0193 ETLDetId detId;
0194 detId = hit.first.detid_;
0195 DetId geoId = detId.geographicalId();
0196 const MTDGeomDet* thedet = geom->idToDet(geoId);
0197 if (thedet == nullptr)
0198 throw cms::Exception("EtlSimHitsValidation") << "GeographicalID: " << std::hex << geoId.rawId() << " ("
0199 << detId.rawId() << ") is invalid!" << std::dec << std::endl;
0200
0201 Local3DPoint local_point(
0202 convertMmToCm((hit.second).x), convertMmToCm((hit.second).y), convertMmToCm((hit.second).z));
0203 const auto& global_point = thedet->toGlobal(local_point);
0204
0205 if (detId.discSide() == 1) {
0206 weight = -weight;
0207 }
0208
0209
0210
0211 meHitEnergy_[idet]->Fill((hit.second).energy);
0212 meHitTime_[idet]->Fill((hit.second).time);
0213 meHitXlocal_[idet]->Fill((hit.second).x);
0214 meHitYlocal_[idet]->Fill((hit.second).y);
0215 meHitZlocal_[idet]->Fill((hit.second).z);
0216 meOccupancy_[idet]->Fill(global_point.x(), global_point.y(), weight);
0217 meHitX_[idet]->Fill(global_point.x());
0218 meHitY_[idet]->Fill(global_point.y());
0219 meHitZ_[idet]->Fill(global_point.z());
0220 meHitPhi_[idet]->Fill(global_point.phi());
0221 meHitEta_[idet]->Fill(global_point.eta());
0222 meHitTvsE_[idet]->Fill((hit.second).energy, (hit.second).time);
0223 meHitEvsPhi_[idet]->Fill(global_point.phi(), (hit.second).energy);
0224 meHitEvsEta_[idet]->Fill(global_point.eta(), (hit.second).energy);
0225 meHitTvsPhi_[idet]->Fill(global_point.phi(), (hit.second).time);
0226 meHitTvsEta_[idet]->Fill(global_point.eta(), (hit.second).time);
0227
0228 }
0229
0230 }
0231 }
0232
0233
0234 void EtlSimHitsValidation::bookHistograms(DQMStore::IBooker& ibook,
0235 edm::Run const& run,
0236 edm::EventSetup const& iSetup) {
0237 ibook.setCurrentFolder(folder_);
0238
0239
0240
0241 meNhits_[0] = ibook.book1D("EtlNhitsZnegD1",
0242 "Number of ETL cells with SIM hits (-Z, Single(topo1D)/First(topo2D) disk);N_{ETL cells}",
0243 100,
0244 0.,
0245 5000.);
0246 meNhits_[1] = ibook.book1D(
0247 "EtlNhitsZnegD2", "Number of ETL cells with SIM hits (-Z, Second disk);N_{ETL cells}", 100, 0., 5000.);
0248 meNhits_[2] = ibook.book1D("EtlNhitsZposD1",
0249 "Number of ETL cells with SIM hits (+Z, Single(topo1D)/First(topo2D) disk);N_{ETL cells}",
0250 100,
0251 0.,
0252 5000.);
0253 meNhits_[3] = ibook.book1D(
0254 "EtlNhitsZposD2", "Number of ETL cells with SIM hits (+Z, Second Disk);N_{ETL cells}", 100, 0., 5000.);
0255 meNtrkPerCell_[0] = ibook.book1D("EtlNtrkPerCellZnegD1",
0256 "Number of tracks per ETL sensor (-Z, Single(topo1D)/First(topo2D) disk);N_{trk}",
0257 10,
0258 0.,
0259 10.);
0260 meNtrkPerCell_[1] =
0261 ibook.book1D("EtlNtrkPerCellZnegD2", "Number of tracks per ETL sensor (-Z, Second disk);N_{trk}", 10, 0., 10.);
0262 meNtrkPerCell_[2] = ibook.book1D("EtlNtrkPerCellZposD1",
0263 "Number of tracks per ETL sensor (+Z, Single(topo1D)/First(topo2D) disk);N_{trk}",
0264 10,
0265 0.,
0266 10.);
0267 meNtrkPerCell_[3] =
0268 ibook.book1D("EtlNtrkPerCellZposD2", "Number of tracks per ETL sensor (+Z, Second disk);N_{trk}", 10, 0., 10.);
0269 meHitEnergy_[0] = ibook.book1D(
0270 "EtlHitEnergyZnegD1", "ETL SIM hits energy (-Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV]", 100, 0., 1.5);
0271 meHitEnergy_[1] =
0272 ibook.book1D("EtlHitEnergyZnegD2", "ETL SIM hits energy (-Z, Second disk);E_{SIM} [MeV]", 100, 0., 1.5);
0273 meHitEnergy_[2] = ibook.book1D(
0274 "EtlHitEnergyZposD1", "ETL SIM hits energy (+Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV]", 100, 0., 1.5);
0275 meHitEnergy_[3] =
0276 ibook.book1D("EtlHitEnergyZposD2", "ETL SIM hits energy (+Z, Second disk);E_{SIM} [MeV]", 100, 0., 1.5);
0277 meHitTime_[0] = ibook.book1D(
0278 "EtlHitTimeZnegD1", "ETL SIM hits ToA (-Z, Single(topo1D)/First(topo2D) disk);ToA_{SIM} [ns]", 100, 0., 25.);
0279 meHitTime_[1] = ibook.book1D("EtlHitTimeZnegD2", "ETL SIM hits ToA (-Z, Second disk);ToA_{SIM} [ns]", 100, 0., 25.);
0280 meHitTime_[2] = ibook.book1D(
0281 "EtlHitTimeZposD1", "ETL SIM hits ToA (+Z, Single(topo1D)/First(topo2D) disk);ToA_{SIM} [ns]", 100, 0., 25.);
0282 meHitTime_[3] = ibook.book1D("EtlHitTimeZposD2", "ETL SIM hits ToA (+Z, Second disk);ToA_{SIM} [ns]", 100, 0., 25.);
0283
0284 meHitXlocal_[0] = ibook.book1D("EtlHitXlocalZnegD1",
0285 "ETL SIM local X (-Z, Single(topo1D)/First(topo2D) disk);X_{SIM}^{LOC} [mm]",
0286 100,
0287 -25.,
0288 25.);
0289 meHitXlocal_[1] =
0290 ibook.book1D("EtlHitXlocalZnegD2", "ETL SIM local X (-Z, Second disk);X_{SIM}^{LOC} [mm]", 100, -25., 25.);
0291 meHitXlocal_[2] = ibook.book1D("EtlHitXlocalZposD1",
0292 "ETL SIM local X (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM}^{LOC} [mm]",
0293 100,
0294 -25.,
0295 25.);
0296 meHitXlocal_[3] =
0297 ibook.book1D("EtlHitXlocalZposD2", "ETL SIM local X (+Z, Second disk);X_{SIM}^{LOC} [mm]", 100, -25., 25.);
0298
0299 meHitYlocal_[0] = ibook.book1D("EtlHitYlocalZnegD1",
0300 "ETL SIM local Y (-Z, Single(topo1D)/First(topo2D) disk);Y_{SIM}^{LOC} [mm]",
0301 100,
0302 -48.,
0303 48.);
0304 meHitYlocal_[1] =
0305 ibook.book1D("EtlHitYlocalZnegD2", "ETL SIM local Y (-Z, Second Disk);Y_{SIM}^{LOC} [mm]", 100, -48., 48.);
0306 meHitYlocal_[2] = ibook.book1D("EtlHitYlocalZposD1",
0307 "ETL SIM local Y (+Z, Single(topo1D)/First(topo2D) disk);Y_{SIM}^{LOC} [mm]",
0308 100,
0309 -48.,
0310 48.);
0311 meHitYlocal_[3] =
0312 ibook.book1D("EtlHitYlocalZposD2", "ETL SIM local Y (+Z, Second disk);Y_{SIM}^{LOC} [mm]", 100, -48., 48.);
0313 meHitZlocal_[0] = ibook.book1D("EtlHitZlocalZnegD1",
0314 "ETL SIM local Z (-Z, Single(topo1D)/First(topo2D) disk);Z_{SIM}^{LOC} [mm]",
0315 80,
0316 -0.16,
0317 0.16);
0318 meHitZlocal_[1] =
0319 ibook.book1D("EtlHitZlocalZnegD2", "ETL SIM local Z (-Z, Second disk);Z_{SIM}^{LOC} [mm]", 80, -0.16, 0.16);
0320 meHitZlocal_[2] = ibook.book1D("EtlHitZlocalZposD1",
0321 "ETL SIM local Z (+Z, Single(topo1D)/First(topo2D) disk);Z_{SIM}^{LOC} [mm]",
0322 80,
0323 -0.16,
0324 0.16);
0325 meHitZlocal_[3] =
0326 ibook.book1D("EtlHitZlocalZposD2", "ETL SIM local Z (+Z, Second disk);Z_{SIM}^{LOC} [mm]", 80, -0.16, 0.16);
0327
0328 meOccupancy_[0] =
0329 ibook.book2D("EtlOccupancyZnegD1",
0330 "ETL SIM hits occupancy (-Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm];Y_{SIM} [cm]",
0331 135,
0332 -135.,
0333 135.,
0334 135,
0335 -135.,
0336 135.);
0337 meOccupancy_[1] = ibook.book2D("EtlOccupancyZnegD2",
0338 "ETL SIM hits occupancy (-Z, Second disk);X_{SIM} [cm];Y_{SIM} [cm]",
0339 135,
0340 -135.,
0341 135.,
0342 135,
0343 -135.,
0344 135.);
0345 meOccupancy_[2] =
0346 ibook.book2D("EtlOccupancyZposD1",
0347 "ETL SIM hits occupancy (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm];Y_{SIM} [cm]",
0348 135,
0349 -135.,
0350 135.,
0351 135,
0352 -135.,
0353 135.);
0354 meOccupancy_[3] = ibook.book2D("EtlOccupancyZposD2",
0355 "ETL SIM hits occupancy (+Z, Second disk);X_{SIM} [cm];Y_{SIM} [cm]",
0356 135,
0357 -135.,
0358 135.,
0359 135,
0360 -135.,
0361 135.);
0362
0363 meHitX_[0] = ibook.book1D(
0364 "EtlHitXZnegD1", "ETL SIM hits X (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm]", 100, -130., 130.);
0365 meHitX_[1] = ibook.book1D("EtlHitXZnegD2", "ETL SIM hits X (-Z, Second disk);X_{SIM} [cm]", 100, -130., 130.);
0366 meHitX_[2] = ibook.book1D(
0367 "EtlHitXZposD1", "ETL SIM hits X (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm]", 100, -130., 130.);
0368 meHitX_[3] = ibook.book1D("EtlHitXZposD2", "ETL SIM hits X (+Z, Second disk);X_{SIM} [cm]", 100, -130., 130.);
0369 meHitY_[0] = ibook.book1D(
0370 "EtlHitYZnegD1", "ETL SIM hits Y (-Z, Single(topo1D)/First(topo2D) disk);Y_{SIM} [cm]", 100, -130., 130.);
0371 meHitY_[1] = ibook.book1D("EtlHitYZnegD2", "ETL SIM hits Y (-Z, Second disk);Y_{SIM} [cm]", 100, -130., 130.);
0372 meHitY_[2] = ibook.book1D(
0373 "EtlHitYZposD1", "ETL SIM hits Y (+Z, Single(topo1D)/First(topo2D) disk);Y_{SIM} [cm]", 100, -130., 130.);
0374 meHitY_[3] = ibook.book1D("EtlHitYZposD2", "ETL SIM hits Y (+Z, Second disk);Y_{SIM} [cm]", 100, -130., 130.);
0375 meHitZ_[0] = ibook.book1D(
0376 "EtlHitZZnegD1", "ETL SIM hits Z (-Z, Single(topo1D)/First(topo2D) disk);Z_{SIM} [cm]", 100, -302., -298.);
0377 meHitZ_[1] = ibook.book1D("EtlHitZZnegD2", "ETL SIM hits Z (-Z, Second disk);Z_{SIM} [cm]", 100, -304., -300.);
0378 meHitZ_[2] = ibook.book1D(
0379 "EtlHitZZposD1", "ETL SIM hits Z (+Z, Single(topo1D)/First(topo2D) disk);Z_{SIM} [cm]", 100, 298., 302.);
0380 meHitZ_[3] = ibook.book1D("EtlHitZZposD2", "ETL SIM hits Z (+Z, Second disk);Z_{SIM} [cm]", 100, 300., 304.);
0381
0382 meHitPhi_[0] = ibook.book1D(
0383 "EtlHitPhiZnegD1", "ETL SIM hits #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
0384 meHitPhi_[1] =
0385 ibook.book1D("EtlHitPhiZnegD2", "ETL SIM hits #phi (-Z, Second disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
0386 meHitPhi_[2] = ibook.book1D(
0387 "EtlHitPhiZposD1", "ETL SIM hits #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
0388 meHitPhi_[3] =
0389 ibook.book1D("EtlHitPhiZposD2", "ETL SIM hits #phi (+Z, Second disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
0390 meHitEta_[0] = ibook.book1D(
0391 "EtlHitEtaZnegD1", "ETL SIM hits #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM}", 100, -3.2, -1.56);
0392 meHitEta_[1] = ibook.book1D("EtlHitEtaZnegD2", "ETL SIM hits #eta (-Z, Second disk);#eta_{SIM}", 100, -3.2, -1.56);
0393 meHitEta_[2] = ibook.book1D(
0394 "EtlHitEtaZposD1", "ETL SIM hits #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM}", 100, 1.56, 3.2);
0395 meHitEta_[3] = ibook.book1D("EtlHitEtaZposD2", "ETL SIM hits #eta (+Z, Second disk);#eta_{SIM}", 100, 1.56, 3.2);
0396
0397 meHitTvsE_[0] =
0398 ibook.bookProfile("EtlHitTvsEZnegD1",
0399 "ETL SIM time vs energy (-Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV];T_{SIM} [ns]",
0400 50,
0401 0.,
0402 2.,
0403 0.,
0404 100.);
0405 meHitTvsE_[1] = ibook.bookProfile(
0406 "EtlHitTvsEZnegD2", "ETL SIM time vs energy (-Z, Second disk);E_{SIM} [MeV];T_{SIM} [ns]", 50, 0., 2., 0., 100.);
0407 meHitTvsE_[2] =
0408 ibook.bookProfile("EtlHitTvsEZposD1",
0409 "ETL SIM time vs energy (+Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV];T_{SIM} [ns]",
0410 50,
0411 0.,
0412 2.,
0413 0.,
0414 100.);
0415 meHitTvsE_[3] = ibook.bookProfile(
0416 "EtlHitTvsEZposD2", "ETL SIM time vs energy (+Z, Second disk);E_{SIM} [MeV];T_{SIM} [ns]", 50, 0., 2., 0., 100.);
0417 meHitEvsPhi_[0] =
0418 ibook.bookProfile("EtlHitEvsPhiZnegD1",
0419 "ETL SIM energy vs #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
0420 50,
0421 -3.15,
0422 3.15,
0423 0.,
0424 100.);
0425 meHitEvsPhi_[1] = ibook.bookProfile("EtlHitEvsPhiZnegD2",
0426 "ETL SIM energy vs #phi (-Z, Second disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
0427 50,
0428 -3.15,
0429 3.15,
0430 0.,
0431 100.);
0432 meHitEvsPhi_[2] =
0433 ibook.bookProfile("EtlHitEvsPhiZposD1",
0434 "ETL SIM energy vs #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
0435 50,
0436 -3.15,
0437 3.15,
0438 0.,
0439 100.);
0440 meHitEvsPhi_[3] = ibook.bookProfile("EtlHitEvsPhiZposD2",
0441 "ETL SIM energy vs #phi (+Z, Second disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
0442 50,
0443 -3.15,
0444 3.15,
0445 0.,
0446 100.);
0447 meHitEvsEta_[0] =
0448 ibook.bookProfile("EtlHitEvsEtaZnegD1",
0449 "ETL SIM energy vs #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};E_{SIM} [MeV]",
0450 50,
0451 -3.2,
0452 -1.56,
0453 0.,
0454 100.);
0455 meHitEvsEta_[1] = ibook.bookProfile("EtlHitEvsEtaZnegD2",
0456 "ETL SIM energy vs #eta (-Z, Second disk);#eta_{SIM};E_{SIM} [MeV]",
0457 50,
0458 -3.2,
0459 -1.56,
0460 0.,
0461 100.);
0462 meHitEvsEta_[2] =
0463 ibook.bookProfile("EtlHitEvsEtaZposD1",
0464 "ETL SIM energy vs #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};E_{SIM} [MeV]",
0465 50,
0466 1.56,
0467 3.2,
0468 0.,
0469 100.);
0470 meHitEvsEta_[3] = ibook.bookProfile("EtlHitEvsEtaZposD2",
0471 "ETL SIM energy vs #eta (+Z, Second disk);#eta_{SIM};E_{SIM} [MeV]",
0472 50,
0473 1.56,
0474 3.2,
0475 0.,
0476 100.);
0477 meHitTvsPhi_[0] =
0478 ibook.bookProfile("EtlHitTvsPhiZnegD1",
0479 "ETL SIM time vs #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];T_{SIM} [ns]",
0480 50,
0481 -3.15,
0482 3.15,
0483 0.,
0484 100.);
0485 meHitTvsPhi_[1] = ibook.bookProfile("EtlHitTvsPhiZnegD2",
0486 "ETL SIM time vs #phi (-Z, Second disk);#phi_{SIM} [rad];T_{SIM} [ns]",
0487 50,
0488 -3.15,
0489 3.15,
0490 0.,
0491 100.);
0492 meHitTvsPhi_[2] =
0493 ibook.bookProfile("EtlHitTvsPhiZposD1",
0494 "ETL SIM time vs #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];T_{SIM} [ns]",
0495 50,
0496 -3.15,
0497 3.15,
0498 0.,
0499 100.);
0500 meHitTvsPhi_[3] = ibook.bookProfile("EtlHitTvsPhiZposD2",
0501 "ETL SIM time vs #phi (+Z, Second disk);#phi_{SIM} [rad];T_{SIM} [ns]",
0502 50,
0503 -3.15,
0504 3.15,
0505 0.,
0506 100.);
0507 meHitTvsEta_[0] =
0508 ibook.bookProfile("EtlHitTvsEtaZnegD1",
0509 "ETL SIM time vs #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};T_{SIM} [ns]",
0510 50,
0511 -3.2,
0512 -1.56,
0513 0.,
0514 100.);
0515 meHitTvsEta_[1] = ibook.bookProfile(
0516 "EtlHitTvsEtaZnegD2", "ETL SIM time vs #eta (-Z, Second disk);#eta_{SIM};T_{SIM} [ns]", 50, -3.2, -1.56, 0., 100.);
0517 meHitTvsEta_[2] =
0518 ibook.bookProfile("EtlHitTvsEtaZposD1",
0519 "ETL SIM time vs #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};T_{SIM} [ns]",
0520 50,
0521 1.56,
0522 3.2,
0523 0.,
0524 100.);
0525 meHitTvsEta_[3] = ibook.bookProfile(
0526 "EtlHitTvsEtaZposD2", "ETL SIM time vs #eta (+Z, Second disk);#eta_{SIM};T_{SIM} [ns]", 50, 1.56, 3.2, 0., 100.);
0527 }
0528
0529
0530 void EtlSimHitsValidation::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0531 edm::ParameterSetDescription desc;
0532
0533 desc.add<std::string>("folder", "MTD/ETL/SimHits");
0534 desc.add<edm::InputTag>("inputTag", edm::InputTag("mix", "g4SimHitsFastTimerHitsEndcap"));
0535 desc.add<double>("hitMinimumEnergy2Dis", 0.001);
0536
0537 descriptions.add("etlSimHitsValid", desc);
0538 }
0539
0540 DEFINE_FWK_MODULE(EtlSimHitsValidation);