|
|
#include <Validation/MtdValidation/plugins/EtlSimHitsValidation.cc>
Description: ETL SIM hits validation
Implementation: [Notes on implementation]
Definition at line 45 of file EtlSimHitsValidation.cc.
◆ EtlSimHitsValidation()
◆ ~EtlSimHitsValidation()
EtlSimHitsValidation::~EtlSimHitsValidation |
( |
| ) |
|
|
override |
◆ analyze()
Reimplemented from DQMEDAnalyzer.
Definition at line 103 of file EtlSimHitsValidation.cc.
115 bool topo1Dis =
false;
116 bool topo2Dis =
false;
127 std::unordered_map<uint32_t, MTDHit> m_etlHits[4];
128 std::unordered_map<uint32_t, std::set<int> > m_etlTrkPerCell[4];
134 for (
auto const&
simHit : etlSimHits) {
141 if (
id.
zside() == -1) {
143 }
else if (
id.
zside() == 1) {
151 if ((
id.
zside() == -1) && (
id.nDisc() == 1)) {
153 }
else if ((
id.
zside() == -1) && (
id.nDisc() == 2)) {
155 }
else if ((
id.
zside() == 1) && (
id.nDisc() == 1)) {
157 }
else if ((
id.
zside() == 1) && (
id.nDisc() == 2)) {
164 m_etlTrkPerCell[idet][
id.rawId()].insert(
simHit.trackId());
166 auto simHitIt = m_etlHits[idet].emplace(
id.rawId(),
MTDHit()).first;
172 if ((simHitIt->second).time == 0 ||
simHit.tof() < (simHitIt->second).
time) {
175 auto hit_pos =
simHit.entryPoint();
176 (simHitIt->second).
x = hit_pos.x();
177 (simHitIt->second).
y = hit_pos.y();
178 (simHitIt->second).
z = hit_pos.z();
187 for (
int idet = 0; idet < 4; ++idet) {
188 if (((idet == 1) || (idet == 3)) && (topo1Dis ==
true))
192 for (
auto const&
hit : m_etlTrkPerCell[idet]) {
196 for (
auto const&
hit : m_etlHits[idet]) {
207 DetId geoId = detId.geographicalId();
209 if (thedet ==
nullptr)
210 throw cms::Exception(
"EtlSimHitsValidation") <<
"GeographicalID: " << std::hex << geoId.
rawId() <<
" ("
211 << detId.rawId() <<
") is invalid!" <<
std::dec << std::endl;
215 const auto& global_point = thedet->
toGlobal(local_point);
References MTDTopologyMode::barphiflat, geant_units::operators::convertMmToCm(), geant_units::operators::convertUnitsTo(), TauDecayModes::dec, HCALHighEnergyHPDFilter_cfi::energy, etlSimHitsToken_, Exception, dqm::impl::MonitorElement::Fill(), ETLDetId::geographicalId(), relativeConstraints::geom, edm::EventSetup::get(), get, hitMinEnergy1Dis_, hitMinEnergy2Dis_, iEvent, edm::makeValid(), meHitEnergy_, meHitEta_, meHitEvsEta_, meHitEvsPhi_, meHitPhi_, meHitTime_, meHitTvsE_, meHitTvsEta_, meHitTvsPhi_, meHitX_, meHitXlocal_, meHitY_, meHitYlocal_, meHitZ_, meHitZlocal_, meNhits_, meNtrkPerCell_, meOccupancy_, edm::ESHandle< T >::product(), DetId::rawId(), rpcPointValidation_cfi::simHit, findQualityFiles::size, ntuplemaker::time, GeomDet::toGlobal(), ecaldqm::topology(), x, y, z, and ecaldqm::zside().
◆ bookHistograms()
Implements DQMEDAnalyzer.
Definition at line 241 of file EtlSimHitsValidation.cc.
249 "Number of ETL cells with SIM hits (-Z, Single(topo1D)/First(topo2D) disk);N_{ETL cells}",
254 "EtlNhitsZnegD2",
"Number of ETL cells with SIM hits (-Z, Second disk);N_{ETL cells}", 100, 0., 5000.);
256 "Number of ETL cells with SIM hits (+Z, Single(topo1D)/First(topo2D) disk);N_{ETL cells}",
261 "EtlNhitsZposD2",
"Number of ETL cells with SIM hits (+Z, Second Disk);N_{ETL cells}", 100, 0., 5000.);
263 "Number of tracks per ETL sensor (-Z, Single(topo1D)/First(topo2D) disk);N_{trk}",
268 ibook.
book1D(
"EtlNtrkPerCellZnegD2",
"Number of tracks per ETL sensor (-Z, Second disk);N_{trk}", 10, 0., 10.);
270 "Number of tracks per ETL sensor (+Z, Single(topo1D)/First(topo2D) disk);N_{trk}",
275 ibook.
book1D(
"EtlNtrkPerCellZposD2",
"Number of tracks per ETL sensor (+Z, Second disk);N_{trk}", 10, 0., 10.);
278 "EtlHitEnergyZnegD1",
"ETL SIM hits energy (-Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV]", 100, 0., 3.);
280 ibook.
book1D(
"EtlHitEnergyZnegD2",
"ETL SIM hits energy (-Z, Second disk);E_{SIM} [MeV]", 100, 0., 3.);
282 "EtlHitEnergyZposD1",
"ETL SIM hits energy (+Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV]", 100, 0., 3.);
284 ibook.
book1D(
"EtlHitEnergyZposD2",
"ETL SIM hits energy (+Z, Second disk);E_{SIM} [MeV]", 100, 0., 3.);
286 "EtlHitTimeZnegD1",
"ETL SIM hits ToA (-Z, Single(topo1D)/First(topo2D) disk);ToA_{SIM} [ns]", 100, 0., 25.);
287 meHitTime_[1] = ibook.
book1D(
"EtlHitTimeZnegD2",
"ETL SIM hits ToA (-Z, Second disk);ToA_{SIM} [ns]", 100, 0., 25.);
289 "EtlHitTimeZposD1",
"ETL SIM hits ToA (+Z, Single(topo1D)/First(topo2D) disk);ToA_{SIM} [ns]", 100, 0., 25.);
290 meHitTime_[3] = ibook.
book1D(
"EtlHitTimeZposD2",
"ETL SIM hits ToA (+Z, Second disk);ToA_{SIM} [ns]", 100, 0., 25.);
293 "ETL SIM local X (-Z, Single(topo1D)/First(topo2D) disk);X_{SIM}^{LOC} [mm]",
298 ibook.
book1D(
"EtlHitXlocalZnegD2",
"ETL SIM local X (-Z, Second disk);X_{SIM}^{LOC} [mm]", 100, -25., 25.);
300 "ETL SIM local X (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM}^{LOC} [mm]",
305 ibook.
book1D(
"EtlHitXlocalZposD2",
"ETL SIM local X (+Z, Second disk);X_{SIM}^{LOC} [mm]", 100, -25., 25.);
308 "ETL SIM local Y (-Z, Single(topo1D)/First(topo2D) disk);Y_{SIM}^{LOC} [mm]",
313 ibook.
book1D(
"EtlHitYlocalZnegD2",
"ETL SIM local Y (-Z, Second Disk);Y_{SIM}^{LOC} [mm]", 100, -48., 48.);
315 "ETL SIM local Y (+Z, Single(topo1D)/First(topo2D) disk);Y_{SIM}^{LOC} [mm]",
320 ibook.
book1D(
"EtlHitYlocalZposD2",
"ETL SIM local Y (+Z, Second disk);Y_{SIM}^{LOC} [mm]", 100, -48., 48.);
322 "ETL SIM local Z (-Z, Single(topo1D)/First(topo2D) disk);Z_{SIM}^{LOC} [mm]",
327 ibook.
book1D(
"EtlHitZlocalZnegD2",
"ETL SIM local Z (-Z, Second disk);Z_{SIM}^{LOC} [mm]", 80, -0.16, 0.16);
329 "ETL SIM local Z (+Z, Single(topo1D)/First(topo2D) disk);Z_{SIM}^{LOC} [mm]",
334 ibook.
book1D(
"EtlHitZlocalZposD2",
"ETL SIM local Z (+Z, Second disk);Z_{SIM}^{LOC} [mm]", 80, -0.16, 0.16);
337 ibook.
book2D(
"EtlOccupancyZnegD1",
338 "ETL SIM hits occupancy (-Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm];Y_{SIM} [cm]",
346 "ETL SIM hits occupancy (-Z, Second disk);X_{SIM} [cm];Y_{SIM} [cm]",
354 ibook.
book2D(
"EtlOccupancyZposD1",
355 "ETL SIM hits occupancy (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm];Y_{SIM} [cm]",
363 "ETL SIM hits occupancy (+Z, Second disk);X_{SIM} [cm];Y_{SIM} [cm]",
372 "EtlHitXZnegD1",
"ETL SIM hits X (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm]", 100, -130., 130.);
373 meHitX_[1] = ibook.
book1D(
"EtlHitXZnegD2",
"ETL SIM hits X (-Z, Second disk);X_{SIM} [cm]", 100, -130., 130.);
375 "EtlHitXZposD1",
"ETL SIM hits X (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm]", 100, -130., 130.);
376 meHitX_[3] = ibook.
book1D(
"EtlHitXZposD2",
"ETL SIM hits X (+Z, Second disk);X_{SIM} [cm]", 100, -130., 130.);
378 "EtlHitYZnegD1",
"ETL SIM hits Y (-Z, Single(topo1D)/First(topo2D) disk);Y_{SIM} [cm]", 100, -130., 130.);
379 meHitY_[1] = ibook.
book1D(
"EtlHitYZnegD2",
"ETL SIM hits Y (-Z, Second disk);Y_{SIM} [cm]", 100, -130., 130.);
381 "EtlHitYZposD1",
"ETL SIM hits Y (+Z, Single(topo1D)/First(topo2D) disk);Y_{SIM} [cm]", 100, -130., 130.);
382 meHitY_[3] = ibook.
book1D(
"EtlHitYZposD2",
"ETL SIM hits Y (+Z, Second disk);Y_{SIM} [cm]", 100, -130., 130.);
384 "EtlHitZZnegD1",
"ETL SIM hits Z (-Z, Single(topo1D)/First(topo2D) disk);Z_{SIM} [cm]", 100, -304.2, -303.4);
385 meHitZ_[1] = ibook.
book1D(
"EtlHitZZnegD2",
"ETL SIM hits Z (-Z, Second disk);Z_{SIM} [cm]", 100, -304.2, -303.4);
387 "EtlHitZZposD1",
"ETL SIM hits Z (+Z, Single(topo1D)/First(topo2D) disk);Z_{SIM} [cm]", 100, 303.4, 304.2);
388 meHitZ_[3] = ibook.
book1D(
"EtlHitZZposD2",
"ETL SIM hits Z (+Z, Second disk);Z_{SIM} [cm]", 100, 303.4, 304.2);
391 "EtlHitPhiZnegD1",
"ETL SIM hits #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
393 ibook.
book1D(
"EtlHitPhiZnegD2",
"ETL SIM hits #phi (-Z, Second disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
395 "EtlHitPhiZposD1",
"ETL SIM hits #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
397 ibook.
book1D(
"EtlHitPhiZposD2",
"ETL SIM hits #phi (+Z, Second disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
399 "EtlHitEtaZnegD1",
"ETL SIM hits #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM}", 100, -3.2, -1.56);
400 meHitEta_[1] = ibook.
book1D(
"EtlHitEtaZnegD2",
"ETL SIM hits #eta (-Z, Second disk);#eta_{SIM}", 100, -3.2, -1.56);
402 "EtlHitEtaZposD1",
"ETL SIM hits #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM}", 100, 1.56, 3.2);
403 meHitEta_[3] = ibook.
book1D(
"EtlHitEtaZposD2",
"ETL SIM hits #eta (+Z, Second disk);#eta_{SIM}", 100, 1.56, 3.2);
407 "ETL SIM time vs energy (-Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV];T_{SIM} [ns]",
414 "EtlHitTvsEZnegD2",
"ETL SIM time vs energy (-Z, Second disk);E_{SIM} [MeV];T_{SIM} [ns]", 50, 0., 2., 0., 100.);
417 "ETL SIM time vs energy (+Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV];T_{SIM} [ns]",
424 "EtlHitTvsEZposD2",
"ETL SIM time vs energy (+Z, Second disk);E_{SIM} [MeV];T_{SIM} [ns]", 50, 0., 2., 0., 100.);
427 "ETL SIM energy vs #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
434 "ETL SIM energy vs #phi (-Z, Second disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
442 "ETL SIM energy vs #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
449 "ETL SIM energy vs #phi (+Z, Second disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
457 "ETL SIM energy vs #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};E_{SIM} [MeV]",
464 "ETL SIM energy vs #eta (-Z, Second disk);#eta_{SIM};E_{SIM} [MeV]",
472 "ETL SIM energy vs #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};E_{SIM} [MeV]",
479 "ETL SIM energy vs #eta (+Z, Second disk);#eta_{SIM};E_{SIM} [MeV]",
487 "ETL SIM time vs #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];T_{SIM} [ns]",
494 "ETL SIM time vs #phi (-Z, Second disk);#phi_{SIM} [rad];T_{SIM} [ns]",
502 "ETL SIM time vs #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];T_{SIM} [ns]",
509 "ETL SIM time vs #phi (+Z, Second disk);#phi_{SIM} [rad];T_{SIM} [ns]",
517 "ETL SIM time vs #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};T_{SIM} [ns]",
524 "EtlHitTvsEtaZnegD2",
"ETL SIM time vs #eta (-Z, Second disk);#eta_{SIM};T_{SIM} [ns]", 50, -3.2, -1.56, 0., 100.);
527 "ETL SIM time vs #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};T_{SIM} [ns]",
534 "EtlHitTvsEtaZposD2",
"ETL SIM time vs #eta (+Z, Second disk);#eta_{SIM};T_{SIM} [ns]", 50, 1.56, 3.2, 0., 100.);
References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), dqm::implementation::IBooker::bookProfile(), folder_, meHitEnergy_, meHitEta_, meHitEvsEta_, meHitEvsPhi_, meHitPhi_, meHitTime_, meHitTvsE_, meHitTvsEta_, meHitTvsPhi_, meHitX_, meHitXlocal_, meHitY_, meHitYlocal_, meHitZ_, meHitZlocal_, meNhits_, meNtrkPerCell_, meOccupancy_, and dqm::implementation::NavigatorBase::setCurrentFolder().
◆ fillDescriptions()
◆ etlSimHitsToken_
◆ folder_
const std::string EtlSimHitsValidation::folder_ |
|
private |
◆ hitMinEnergy1Dis_
const float EtlSimHitsValidation::hitMinEnergy1Dis_ |
|
private |
◆ hitMinEnergy2Dis_
const float EtlSimHitsValidation::hitMinEnergy2Dis_ |
|
private |
◆ meHitEnergy_
◆ meHitEta_
◆ meHitEvsEta_
◆ meHitEvsPhi_
◆ meHitPhi_
◆ meHitTime_
◆ meHitTvsE_
◆ meHitTvsEta_
◆ meHitTvsPhi_
◆ meHitX_
◆ meHitXlocal_
◆ meHitY_
◆ meHitYlocal_
◆ meHitZ_
◆ meHitZlocal_
◆ meNhits_
◆ meNtrkPerCell_
◆ meOccupancy_
T const * product() const
MonitorElement * meNhits_[4]
edm::EDGetTokenT< CrossingFrame< PSimHit > > etlSimHitsToken_
const std::string folder_
MonitorElement * meHitZlocal_[4]
MonitorElement * meHitX_[4]
MonitorElement * meHitTvsEta_[4]
constexpr NumType convertUnitsTo(long double desiredUnits, NumType val)
MonitorElement * meHitY_[4]
virtual void setCurrentFolder(std::string const &fullpath)
MonitorElement * meHitXlocal_[4]
MonitorElement * meHitEvsEta_[4]
Detector identifier class for the Endcap Timing Layer.
MonitorElement * meHitEvsPhi_[4]
MonitorElement * meHitZ_[4]
MonitorElement * meOccupancy_[4]
void add(std::string const &label, ParameterSetDescription const &psetDescription)
MonitorElement * meHitPhi_[4]
const CaloTopology * topology(nullptr)
MonitorElement * meHitYlocal_[4]
const float hitMinEnergy2Dis_
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
MonitorElement * meHitEta_[4]
MonitorElement * meHitTvsPhi_[4]
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
MonitorElement * meNtrkPerCell_[4]
MonitorElement * meHitTime_[4]
auto makeValid(const U &iOtherHandleType) noexcept(false)
constexpr uint32_t rawId() const
get the raw id
MonitorElement * meHitEnergy_[4]
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
const float hitMinEnergy1Dis_
T getParameter(std::string const &) const
constexpr NumType convertMmToCm(NumType millimeters)
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
MonitorElement * meHitTvsE_[4]