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