289 return clu1.
id() == clu2.
id() && clu1.
size() == clu2.
size() && clu1.
x() == clu2.
x() && clu1.
y() == clu2.
y() &&
296 hitMinEnergy_(iConfig.getParameter<double>(
"HitMinimumEnergy")),
297 optionalPlots_(iConfig.getParameter<
bool>(
"optionalPlots")),
298 uncalibRecHitsPlots_(iConfig.getParameter<
bool>(
"UncalibRecHitsPlots")),
299 hitMinAmplitude_(iConfig.getParameter<double>(
"HitMinimumAmplitude")),
337 for (
const auto&
hits : *mtdTrkHitHandle) {
338 if (
MTDDetId(
hits.id()).mtdSubDetector() == MTDDetId::MTDType::BTL) {
339 LogDebug(
"BtlLocalRecoValidation") <<
"MTD cluster DetId " <<
hits.id() <<
" # cluster " <<
hits.size();
342 <<
"MTD_TRH: " <<
hit.localPosition().
x() <<
"," <<
hit.localPosition().
y() <<
" : " 343 <<
hit.localPositionError().xx() <<
"," <<
hit.localPositionError().yy() <<
" : " <<
hit.time() <<
" : " 351 std::unordered_map<uint32_t, MTDHit> m_btlSimHits;
352 for (
auto const&
simHit : btlSimHits) {
359 auto simHitIt = m_btlSimHits.emplace(
id.
rawId(),
MTDHit()).first;
365 if ((simHitIt->second).time == 0 ||
simHit.tof() < (simHitIt->second).
time) {
368 auto hit_pos =
simHit.localPosition();
369 (simHitIt->second).
x = hit_pos.x();
370 (simHitIt->second).
y = hit_pos.y();
371 (simHitIt->second).
z = hit_pos.z();
377 unsigned int n_reco_btl = 0;
378 unsigned int n_reco_btl_nosimhit = 0;
379 for (
const auto&
recHit : *btlRecHitsHandle) {
380 LogTrace(
"BtlLocalRecoValidation") <<
"@RH detid " <<
recHit.id().rawId() <<
" r/c/X/dX " <<
recHit.row() <<
" " 382 <<
" E,T,dT " <<
recHit.energy() <<
" " <<
recHit.time() <<
" " 388 if (thedet ==
nullptr)
389 throw cms::Exception(
"BtlLocalRecoValidation") <<
"GeographicalID: " << std::hex << geoId.
rawId() <<
" (" 390 <<
detId.rawId() <<
") is invalid!" <<
std::dec << std::endl;
396 const auto& global_point = thedet->
toGlobal(local_point);
425 LogDebug(
"BtlLocalRecoValidation") <<
"RecoHit DetId= " <<
detId.rawId()
426 <<
" sim hits in id= " << m_btlSimHits.count(
detId.rawId());
429 float time_res =
recHit.time() - m_btlSimHits[
detId.rawId()].time;
430 float energy_res =
recHit.energy() - m_btlSimHits[
detId.rawId()].energy;
437 const auto& global_point_sim = thedet->
toGlobal(local_point_sim);
450 }
else if (m_btlSimHits.count(
detId.rawId()) == 0) {
451 n_reco_btl_nosimhit++;
452 LogDebug(
"BtlLocalRecoValidation") <<
"BTL rec hit with no corresponding sim hit in crystal, DetId= " 453 <<
detId.rawId() <<
" geoId= " << geoId.
rawId() <<
" ene= " <<
recHit.energy()
454 <<
" time= " <<
recHit.time();
461 if (n_reco_btl > 0) {
464 if (n_reco_btl_nosimhit == 0) {
471 unsigned int n_clus_btl(0);
472 for (
const auto& DetSetClu : *btlRecCluHandle) {
473 for (
const auto& cluster : DetSetClu) {
477 DetId detIdObject(cluId);
478 const auto& genericDet =
geom->idToDetUnit(detIdObject);
479 if (genericDet ==
nullptr) {
481 <<
"GeographicalID: " << std::hex << cluId <<
" is invalid!" <<
std::dec << std::endl;
492 const auto& global_point = genericDet->toGlobal(local_point);
505 double cluEneSIM = 0.;
506 double cluTimeSIM = 0.;
507 double cluLocXSIM = 0.;
508 double cluLocYSIM = 0.;
509 double cluLocZSIM = 0.;
512 for (
int ihit = 0; ihit < cluster.size(); ++ihit) {
513 int hit_row = cluster.minHitRow() + cluster.hitOffset()[ihit * 2];
514 int hit_col = cluster.minHitCol() + cluster.hitOffset()[ihit * 2 + 1];
517 for (
const auto&
recHit : *btlRecHitsHandle) {
520 if (m_btlSimHits.count(hitId.rawId()) == 0)
524 if (hitId.mtdSide() != cluId.
mtdSide() || hitId.mtdRR() != cluId.
mtdRR() ||
recHit.row() != hit_row ||
525 recHit.column() != hit_col)
529 if (
recHit.energy() != cluster.hitENERGY()[ihit] ||
recHit.time() != cluster.hitTIME()[ihit])
540 cluLocXSIM += local_point_sim.
x() * m_btlSimHits[
recHit.id().rawId()].energy;
541 cluLocYSIM += local_point_sim.
y() * m_btlSimHits[
recHit.id().rawId()].energy;
542 cluLocZSIM += local_point_sim.
z() * m_btlSimHits[
recHit.id().rawId()].energy;
545 cluEneSIM += m_btlSimHits[
recHit.id().rawId()].energy;
546 cluTimeSIM += m_btlSimHits[
recHit.id().rawId()].time * m_btlSimHits[
recHit.id().rawId()].energy;
557 bool matchClu =
false;
558 const auto& trkHits = (*mtdTrkHitHandle)[detIdObject];
559 for (
const auto& trkHit : trkHits) {
561 comp = trkHit.clone();
568 <<
"No valid TrackingRecHit corresponding to cluster, detId = " << detIdObject.
rawId();
573 if (cluTimeSIM > 0. && cluEneSIM > 0.) {
574 cluTimeSIM /= cluEneSIM;
576 Local3DPoint cluLocalPosSIM(cluLocXSIM / cluEneSIM, cluLocYSIM / cluEneSIM, cluLocZSIM / cluEneSIM);
577 const auto& cluGlobalPosSIM = genericDet->toGlobal(cluLocalPosSIM);
579 float time_res = cluster.time() - cluTimeSIM;
580 float energy_res = cluster.energy() - cluEneSIM;
584 float rho_res = global_point.perp() - cluGlobalPosSIM.perp();
585 float phi_res = global_point.phi() - cluGlobalPosSIM.phi();
590 float xlocal_res = local_point.
x() - cluLocalPosSIM.
x();
591 float ylocal_res = local_point.
y() - cluLocalPosSIM.
y();
593 float z_res = global_point.z() - cluGlobalPosSIM.z();
597 if (matchClu &&
comp !=
nullptr) {
600 if (global_point.z() > 0) {
607 if (cluster.size() == 1) {
609 if (global_point.z() > 0) {
616 if (cluster.size() > 1) {
618 if (global_point.z() > 0) {
626 if (
abs(global_point.eta()) < 0.3) {
628 if (global_point.z() > 0) {
635 if (
abs(global_point.eta()) > 1) {
637 if (global_point.z() > 0) {
671 auto itp = r2sAssociationMap.equal_range(clusterRef);
672 if (itp.first != itp.second) {
673 std::vector<MtdSimLayerClusterRef> simClustersRefs =
675 for (
unsigned int i = 0;
i < simClustersRefs.size();
i++) {
676 auto simClusterRef = simClustersRefs[
i];
678 float simClusEnergy =
convertUnitsTo(0.001_MeV, (*simClusterRef).simLCEnergy());
679 float simClusTime = (*simClusterRef).simLCTime();
680 LocalPoint simClusLocalPos = (*simClusterRef).simLCPos();
681 const auto& simClusGlobalPos = genericDet->toGlobal(simClusLocalPos);
682 unsigned int idOffset = (*simClusterRef).trackIdOffset();
684 float time_res = cluster.time() - simClusTime;
685 float energy_res = cluster.energy() - simClusEnergy;
686 float rho_res = global_point.
perp() - simClusGlobalPos.perp();
687 float phi_res = global_point.phi() - simClusGlobalPos.phi();
688 float z_res = global_point.z() - simClusGlobalPos.z();
689 float xlocal_res = local_point.
x() - simClusLocalPos.
x();
690 float ylocal_res = local_point.
y() - simClusLocalPos.
y();
702 if (matchClu &&
comp !=
nullptr) {
705 if (global_point.z() > 0) {
713 if (cluster.size() == 1) {
715 if (global_point.z() > 0) {
722 if (cluster.size() > 1) {
724 if (global_point.z() > 0) {
732 if (
abs(global_point.eta()) < 0.3) {
734 if (global_point.z() > 0) {
740 if (
abs(global_point.eta()) > 1) {
742 if (global_point.z() > 0) {
769 if (matchClu &&
comp !=
nullptr) {
772 if (global_point.z() > 0) {
782 if (cluster.size() == 1) {
784 if (global_point.z() > 0) {
791 if (cluster.size() > 1) {
793 if (global_point.z() > 0) {
801 if (
abs(global_point.eta()) < 0.3) {
803 if (global_point.z() > 0) {
809 if (
abs(global_point.eta()) > 1) {
811 if (global_point.z() > 0) {
828 time_res / cluster.timeError());
848 for (
const auto& uRecHit : *btlUncalibRecHitsHandle) {
851 LogTrace(
"BtlLocalRecoValidation") <<
"@URH detid " <<
detId.rawId() <<
" A " << uRecHit.amplitude().first <<
" " 852 << uRecHit.amplitude().second <<
" T " << uRecHit.time().first <<
" " 853 << uRecHit.time().second;
856 if (m_btlSimHits.count(
detId.rawId()) != 1)
862 float hit_amplitude = 0.;
866 if (uRecHit.amplitude().first > 0.) {
867 hit_amplitude += uRecHit.amplitude().first;
868 hit_time += uRecHit.time().first;
872 if (uRecHit.amplitude().second > 0.) {
873 hit_amplitude += uRecHit.amplitude().second;
874 hit_time += uRecHit.time().second;
878 hit_amplitude /=
nHits;
881 LogDebug(
"BtlLocalRecoValidation") <<
"#unc " <<
nHits <<
" A/T " << hit_amplitude <<
" " << hit_time;
887 hit_amplitude /=
nHits;
895 meUncEneRVsX_->
Fill(uRecHit.position(), uRecHit.amplitude().first - hit_amplitude);
896 meUncEneLVsX_->
Fill(uRecHit.position(), uRecHit.amplitude().second - hit_amplitude);
904 if (thedet ==
nullptr)
905 throw cms::Exception(
"BtlLocalRecoValidation") <<
"GeographicalID: " << std::hex << geoId.
rawId() <<
" (" 906 <<
detId.rawId() <<
") is invalid!" <<
std::dec << std::endl;
912 const auto& global_point = thedet->
toGlobal(local_point);
914 float time_res = hit_time - m_btlSimHits[
detId.rawId()].time;
926 if (fabs(global_point.eta()) >=
binsQEta_[ibin] && fabs(global_point.eta()) <
binsQEta_[ibin + 1])
960 meNhits_ = ibook.
book1D(
"BtlNhits",
"Number of BTL RECO hits;log_{10}(N_{RECO})", 100, 0., 5.25);
962 meHitEnergy_ = ibook.
book1D(
"BtlHitEnergy",
"BTL RECO hits energy;E_{RECO} [MeV]", 100, 0., 20.);
963 meHitLogEnergy_ = ibook.
book1D(
"BtlHitLogEnergy",
"BTL RECO hits energy;log_{10}(E_{RECO} [MeV])", 16, -0.1, 1.5);
964 meHitTime_ = ibook.
book1D(
"BtlHitTime",
"BTL RECO hits ToA;ToA_{RECO} [ns]", 100, 0., 25.);
965 meHitTimeError_ = ibook.
book1D(
"BtlHitTimeError",
"BTL RECO hits ToA error;#sigma^{ToA}_{RECO} [ns]", 50, 0., 0.1);
967 "BtlOccupancy",
"BTL RECO hits occupancy;Z_{RECO} [cm]; #phi_{RECO} [rad]", 65, -260., 260., 126, -3.2, 3.2);
970 "BtlLocalOccupancy",
"BTL RECO hits local occupancy;X_{RECO} [cm]; Y_{RECO} [cm]", 100, 10., 10., 60, -3., 3.);
972 meHitXlocal_ = ibook.
book1D(
"BtlHitXlocal",
"BTL RECO local X;X_{RECO}^{LOC} [cm]", 100, -10., 10.);
973 meHitYlocal_ = ibook.
book1D(
"BtlHitYlocal",
"BTL RECO local Y;Y_{RECO}^{LOC} [cm]", 60, -3, 3);
974 meHitZlocal_ = ibook.
book1D(
"BtlHitZlocal",
"BTL RECO local z;z_{RECO}^{LOC} [cm]", 8, -0.4, 0.4);
975 meHitZ_ = ibook.
book1D(
"BtlHitZ",
"BTL RECO hits Z;Z_{RECO} [cm]", 100, -260., 260.);
976 meHitPhi_ = ibook.
book1D(
"BtlHitPhi",
"BTL RECO hits #phi;#phi_{RECO} [rad]", 126, -3.2, 3.2);
977 meHitEta_ = ibook.
book1D(
"BtlHitEta",
"BTL RECO hits #eta;#eta_{RECO}", 100, -1.55, 1.55);
979 ibook.
bookProfile(
"BtlHitTvsE",
"BTL RECO ToA vs energy;E_{RECO} [MeV];ToA_{RECO} [ns]", 50, 0., 20., 0., 100.);
981 "BtlHitEvsPhi",
"BTL RECO energy vs #phi;#phi_{RECO} [rad];E_{RECO} [MeV]", 50, -3.2, 3.2, 0., 100.);
983 "BtlHitEvsEta",
"BTL RECO energy vs #eta;#eta_{RECO};E_{RECO} [MeV]", 50, -1.55, 1.55, 0., 100.);
985 ibook.
bookProfile(
"BtlHitEvsZ",
"BTL RECO energy vs Z;Z_{RECO} [cm];E_{RECO} [MeV]", 50, -260., 260., 0., 100.);
987 "BtlHitTvsPhi",
"BTL RECO ToA vs #phi;#phi_{RECO} [rad];ToA_{RECO} [ns]", 50, -3.2, 3.2, 0., 100.);
989 ibook.
bookProfile(
"BtlHitTvsEta",
"BTL RECO ToA vs #eta;#eta_{RECO};ToA_{RECO} [ns]", 50, -1.6, 1.6, 0., 100.);
991 ibook.
bookProfile(
"BtlHitTvsZ",
"BTL RECO ToA vs Z;Z_{RECO} [cm];ToA_{RECO} [ns]", 50, -260., 260., 0., 100.);
992 meHitLongPos_ = ibook.
book1D(
"BtlLongPos",
"BTL RECO hits longitudinal position;long. pos._{RECO}", 50, -5, 5);
993 meTimeRes_ = ibook.
book1D(
"BtlTimeRes",
"BTL time resolution;T_{RECO}-T_{SIM}", 100, -0.5, 0.5);
995 "BtlTimeResvsE",
"BTL time resolution vs hit energy;E_{RECO} [MeV];T_{RECO}-T_{SIM}", 50, 0., 20., -0.5, 0.5,
"S");
996 meEnergyRes_ = ibook.
book1D(
"BtlEnergyRes",
"BTL energy resolution;E_{RECO}-E_{SIM}", 100, -0.5, 0.5);
998 "BTL relative energy resolution vs hit energy;E_{RECO} [MeV];E_{RECO}-E_{SIM}",
1006 "BTL longitudinal position pull;X^{loc}_{RECO}-X^{loc}_{SIM}/#sigma_{xloc_{RECO}}",
1011 "BtlLongposPullvsE",
1012 "BTL longitudinal position pull vs E;E_{SIM} [MeV];X^{loc}_{RECO}-X^{loc}_{SIM}/#sigma_{xloc_{RECO}}",
1020 "BtlLongposPullvsEta",
1021 "BTL longitudinal position pull vs #eta;|#eta_{RECO}|;X^{loc}_{RECO}-X^{loc}_{SIM}/#sigma_{xloc_{RECO}}",
1029 "BtlTPullvsE",
"BTL time pull vs E;E_{SIM} [MeV];(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}", 20, 0., 20., -5., 5.,
"S");
1031 "BTL time pull vs #eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
1040 "UnmatchedRecHit",
"log10(#BTL crystals with rechits but no simhit);log10(#BTL rechits)", 80, -2., 6.);
1042 meNclusters_ = ibook.
book1D(
"BtlNclusters",
"Number of BTL RECO clusters;log_{10}(N_{RECO})", 100, 0., 5.25);
1043 meCluTime_ = ibook.
book1D(
"BtlCluTime",
"BTL cluster time ToA;ToA [ns]", 250, 0, 25);
1044 meCluTimeError_ = ibook.
book1D(
"BtlCluTimeError",
"BTL cluster time error;#sigma_{t} [ns]", 100, 0, 0.1);
1045 meCluEnergy_ = ibook.
book1D(
"BtlCluEnergy",
"BTL cluster energy;E_{RECO} [MeV]", 100, 0, 20);
1046 meCluPhi_ = ibook.
book1D(
"BtlCluPhi",
"BTL cluster #phi;#phi_{RECO} [rad]", 144, -3.2, 3.2);
1047 meCluEta_ = ibook.
book1D(
"BtlCluEta",
"BTL cluster #eta;#eta_{RECO}", 100, -1.55, 1.55);
1048 meCluHits_ = ibook.
book1D(
"BtlCluHitNumber",
"BTL hits per cluster; Cluster size", 10, 0, 10);
1050 "BtlOccupancy",
"BTL cluster Z vs #phi;Z_{RECO} [cm]; #phi_{RECO} [rad]", 144, -260., 260., 50, -3.2, 3.2);
1054 "BtlCluEnergyVsEta",
"BTL cluster energy vs #eta; |#eta_{RECO}|; E_{RECO} [cm]", 30, 0., 1.55, 0., 20.,
"S");
1056 "BtlCluHitsVsEta",
"BTL hits per cluster vs #eta; |#eta_{RECO}|;Cluster size", 30, 0., 1.55, 0., 10.,
"S");
1058 meCluTimeRes_ = ibook.
book1D(
"BtlCluTimeRes",
"BTL cluster time resolution;T_{RECO}-T_{SIM} [ns]", 100, -0.5, 0.5);
1060 ibook.
book1D(
"BtlCluEnergyRes",
"BTL cluster energy resolution;E_{RECO}-E_{SIM} [MeV]", 100, -0.5, 0.5);
1062 "BTL cluster time resolution vs E;E_{SIM} [MeV];(T_{RECO}-T_{SIM}) [ns]",
1070 "BTL cluster time resolution vs #eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM}) [ns]",
1078 "BTL cluster time pull vs E;E_{SIM} [MeV];(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
1087 "BTL cluster time pull vs #eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
1095 ibook.
book1D(
"BtlCluRhoRes",
"BTL cluster #rho resolution;#rho_{RECO}-#rho_{SIM} [cm]", 100, -0.5, 0.5);
1097 ibook.
book1D(
"BtlCluPhiRes",
"BTL cluster #phi resolution;#phi_{RECO}-#phi_{SIM} [rad]", 100, -0.03, 0.03);
1098 meCluZRes_ = ibook.
book1D(
"BtlCluZRes",
"BTL cluster Z resolution;Z_{RECO}-Z_{SIM} [cm]", 100, -0.2, 0.2);
1100 ibook.
book1D(
"BtlCluLocalXRes",
"BTL cluster local X resolution;X_{RECO}-X_{SIM} [cm]", 100, -3.1, 3.1);
1102 "BtlCluLocalYResZGlobPlus",
"BTL cluster local Y resolution (glob Z > 0);Y_{RECO}-Y_{SIM} [cm]", 100, -0.2, 0.2);
1104 "BTL cluster local Y resolution (glob Z < 0);Y_{RECO}-Y_{SIM} [cm]",
1109 ibook.
book1D(
"BtlCluSingCrystalLocalYRes",
1110 "BTL cluster local Y resolution (single Crystal clusters);Y_{RECO}-Y_{SIM} [cm]",
1115 ibook.
book1D(
"BtlCluSingCrystalLocalYResZGlobPlus",
1116 "BTL cluster local Y resolution (single Crystal clusters, Z glob > 0);Y_{RECO}-Y_{SIM} [cm]",
1121 ibook.
book1D(
"BtlCluSingCrystalLocalYResZGlobMinus",
1122 "BTL cluster local Y resolution (single Crystal clusters, Z glob < 0);Y_{RECO}-Y_{SIM} [cm]",
1127 ibook.
book1D(
"BtlCluMultiCrystalLocalYRes",
1128 "BTL cluster local Y resolution (Multi-Crystal clusters);Y_{RECO}-Y_{SIM} [cm]",
1133 ibook.
book1D(
"BtlCluMultiCrystalLocalYResZGlobPlus",
1134 "BTL cluster local Y resolution (Multi-Crystal clusters, Z glob > 0);Y_{RECO}-Y_{SIM} [cm]",
1139 ibook.
book1D(
"BtlCluMultiCrystalLocalYResZGlobMinus",
1140 "BTL cluster local Y resolution (Multi-Crystal clusters, Z glob < 0);Y_{RECO}-Y_{SIM} [cm]",
1145 "BTL cluster local Y resolution (central region);Y_{RECO}-Y_{SIM} [cm]",
1150 ibook.
book1D(
"BtlCluCentralLocalYResZGlobPlus",
1151 "BTL cluster local Y resolution (central region, Z glob > 0);Y_{RECO}-Y_{SIM} [cm]",
1156 ibook.
book1D(
"BtlCluCentralLocalYResZGlobMinus",
1157 "BTL cluster local Y resolution (central region, Z glob < 0);Y_{RECO}-Y_{SIM} [cm]",
1162 "BTL cluster local Y resolution (forward region);Y_{RECO}-Y_{SIM} [cm]",
1167 ibook.
book1D(
"BtlCluForwardPlusLocalYRes",
1168 "BTL cluster local Y resolution (forward region, Z glob > 0);Y_{RECO}-Y_{SIM} [cm]",
1173 ibook.
book1D(
"BtlCluForwardMinusLocalYRes",
1174 "BTL cluster local Y resolution (forward region, Z glob < 0);Y_{RECO}-Y_{SIM} [cm]",
1180 "BTL cluster local Y pull (glob Z > 0);Y_{RECO}-Y_{SIM}/sigmaY_[RECO]",
1185 "BTL cluster local Y pull (glob Z < 0);Y_{RECO}-Y_{SIM}/sigmaY_[RECO]",
1191 ibook.
book1D(
"BtlCluLocalXPull",
"BTL cluster local X pull;X_{RECO}-X_{SIM}/sigmaX_[RECO]", 100, -5., 5.);
1193 meCluZPull_ = ibook.
book1D(
"BtlCluZPull",
"BTL cluster Z pull;Z_{RECO}-Z_{SIM}/sigmaZ_[RECO]", 100, -5., 5.);
1194 meCluXLocalErr_ = ibook.
book1D(
"BtlCluXLocalErr",
"BTL cluster X local error;sigmaX_{RECO,loc} [cm]", 20, 0., 2.);
1195 meCluYLocalErr_ = ibook.
book1D(
"BtlCluYLocalErr",
"BTL cluster Y local error;sigmaY_{RECO,loc} [cm]", 20, 0., 0.4);
1197 "BTL cluster local Y vs X;X^{local}_{RECO} [cm];Y^{local}_{RECO} [cm]",
1205 "BTL cluster local Y vs X;X^{local}_{SIM} [cm];Y^{local}_{SIM} [cm]",
1213 ibook.
book1D(
"BtlUnmatchedCluEnergy",
"BTL unmatched cluster log10(energy);log10(E_{RECO} [MeV])", 5, -3, 2);
1219 ibook.
book1D(
"BtlCluTrackIdOffset",
"BTL cluster category (trackId offset); trackId offset", 4, 0.0, 4.0);
1221 "BTL cluster time resolution (wrt MtdSimLayerClusters);T_{RECO}-T_{SIM} [ns]",
1226 "BTL cluster energy resolution (wrt MtdSimLayerClusters);E_{RECO}-E_{SIM} [MeV]",
1231 "BtlCluTResvsE_simLC",
1232 "BTL cluster time resolution (wrt MtdSimLayerClusters) vs E;E_{SIM} [MeV];(T_{RECO}-T_{SIM}) [ns]",
1240 "BtlCluTResvsEta_simLC",
1241 "BTL cluster time resolution (wrt MtdSimLayerClusters) vs #eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM}) [ns]",
1249 "BtlCluTPullvsE_simLC",
1250 "BTL cluster time pull (wrt MtdSimLayerClusters) vs E;E_{SIM} [MeV];(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
1258 "BtlCluTPullvsEta_simLC",
1259 "BTL cluster time pull (wrt MtdSimLayerClusters) vs #eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
1267 "BTL cluster #rho resolution (wrt MtdSimLayerClusters);#rho_{RECO}-#rho_{SIM} [cm]",
1272 ibook.
book1D(
"BtlCluPhiRes_simLC",
1273 "BTL cluster #phi resolution (wrt MtdSimLayerClusters);#phi_{RECO}-#phi_{SIM} [rad]",
1278 "BtlCluZRes_simLC",
"BTL cluster Z resolution (wrt MtdSimLayerClusters);Z_{RECO}-Z_{SIM} [cm]", 100, -0.2, 0.2);
1280 "BTL cluster local X resolution (wrt MtdSimLayerClusters);X_{RECO}-X_{SIM} [cm]",
1285 ibook.
book1D(
"BtlCluLocalYResZGlobPlus_simLC",
1286 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, glob Z > 0);Y_{RECO}-Y_{SIM} [cm]",
1291 ibook.
book1D(
"BtlCluLocalYResZGlobMinus_simLC",
1292 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, glob Z < 0);Y_{RECO}-Y_{SIM} [cm]",
1298 "BtlCluSingCrystalLocalYRes_simLC",
1299 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, single Crystal clusters);Y_{RECO}-Y_{SIM} [cm]",
1304 ibook.
book1D(
"BtlCluSingCrystalLocalYResZGlobPlus_simLC",
1305 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, single Crystal clusters, Z glob > " 1306 "0);Y_{RECO}-Y_{SIM} [cm]",
1311 ibook.
book1D(
"BtlCluSingCrystalLocalYResZGlobMinus_simLC",
1312 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, single Crystal clusters, Z glob < " 1313 "0);Y_{RECO}-Y_{SIM} [cm]",
1318 "BtlCluMultiCrystalLocalYRes_simLC",
1319 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, Multi-Crystal clusters);Y_{RECO}-Y_{SIM} [cm]",
1324 ibook.
book1D(
"BtlCluMultiCrystalLocalYResZGlobPlus_simLC",
1325 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, Multi-Crystal clusters, Z glob > " 1326 "0);Y_{RECO}-Y_{SIM} [cm]",
1331 ibook.
book1D(
"BtlCluMultiCrystalLocalYResZGlobMinus_simLC",
1332 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, Multi-Crystal clusters, Z glob < " 1333 "0);Y_{RECO}-Y_{SIM} [cm]",
1338 ibook.
book1D(
"BtlCluCentralLocalYRes_simLC",
1339 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, central region);Y_{RECO}-Y_{SIM} [cm]",
1344 "BtlCluCentralLocalYResZGlobPlus_simLC",
1345 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, central region, Z glob > 0);Y_{RECO}-Y_{SIM} [cm]",
1350 "BtlCluCentralLocalYResZGlobMinus_simLC",
1351 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, central region, Z glob < 0);Y_{RECO}-Y_{SIM} [cm]",
1356 ibook.
book1D(
"BtlCluForwardLocalYRes_simLC",
1357 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, forward region);Y_{RECO}-Y_{SIM} [cm]",
1362 "BtlCluForwardPlusLocalYRes_simLC",
1363 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, forward region, Z glob > 0);Y_{RECO}-Y_{SIM} [cm]",
1368 "BtlCluForwardMinusLocalYRes_simLC",
1369 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, forward region, Z glob < 0);Y_{RECO}-Y_{SIM} [cm]",
1375 "BTL cluster local Y pull (glob Z > 0);Y_{RECO}-Y_{SIM}/sigmaY_[RECO]",
1380 ibook.
book1D(
"BtlCluLocalYPullZGlobMinus_simLC",
1381 "BTL cluster local Y pull (wrt MtdSimLayerClusters, glob Z < 0);Y_{RECO}-Y_{SIM}/sigmaY_[RECO]",
1387 ibook.
book1D(
"BtlCluLocalXPull_simLC",
1388 "BTL cluster local X pull (wrt MtdSimLayerClusters);X_{RECO}-X_{SIM}/sigmaX_[RECO]",
1394 "BtlCluZPull_simLC",
"BTL cluster Z pull (wrt MtdSimLayerClusters);Z_{RECO}-Z_{SIM}/sigmaZ_[RECO]", 100, -5., 5.);
1397 ibook.
book2D(
"BtlCluYXLocalSim_simLC",
1398 "BTL cluster local Y vs X (MtdSimLayerClusters);X^{local}_{SIM} [cm];Y^{local}_{SIM} [cm]",
1410 ibook.
book1D(
"BtlCluTimeRes_simLC_fromIndirectHits",
1411 "BTL cluster time resolution (wrt MtdSimLayerClusters, non-direct hits);T_{RECO}-T_{SIM} [ns]",
1416 ibook.
book1D(
"BtlCluEnergyRes_simLC_fromIndirectHits",
1417 "BTL cluster energy resolution (wrt MtdSimLayerClusters, non-direct hits);E_{RECO}-E_{SIM} [MeV]",
1422 ibook.
bookProfile(
"BtlCluTResvsE_simLC_fromIndirectHits",
1423 "BTL cluster time resolution (wrt MtdSimLayerClusters, non-direct hits) vs E;E_{SIM} " 1424 "[MeV];(T_{RECO}-T_{SIM}) [ns]",
1432 ibook.
bookProfile(
"BtlCluTResvsEta_simLC_fromIndirectHits",
1433 "BTL cluster time resolution (wrt MtdSimLayerClusters, non-direct hits) vs " 1434 "#eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM}) [ns]",
1442 ibook.
bookProfile(
"BtlCluTPullvsE_simLC_fromIndirectHits",
1443 "BTL cluster time pull (wrt MtdSimLayerClusters, non-direct hits) vs E;E_{SIM} " 1444 "[MeV];(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
1452 ibook.
bookProfile(
"BtlCluTPullvsEta_simLC_fromIndirectHits",
1453 "BTL cluster time pull (wrt MtdSimLayerClusters, non-direct hits) vs " 1454 "#eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
1462 ibook.
book1D(
"BtlCluRhoRes_simLC_fromIndirectHits",
1463 "BTL cluster #rho resolution (wrt MtdSimLayerClusters, non-direct hits);#rho_{RECO}-#rho_{SIM} [cm]",
1468 "BtlCluPhiRes_simLC_fromIndirectHits",
1469 "BTL cluster #phi resolution (wrt MtdSimLayerClusters, non-direct hits);#phi_{RECO}-#phi_{SIM} [rad]",
1474 ibook.
book1D(
"BtlCluZRes_simLC_fromIndirectHits",
1475 "BTL cluster Z resolution (wrt MtdSimLayerClusters, non-direct hits);Z_{RECO}-Z_{SIM} [cm]",
1480 ibook.
book1D(
"BtlCluLocalXRes_simLC_fromIndirectHits",
1481 "BTL cluster local X resolution (wrt MtdSimLayerClusters, non-direct hits);X_{RECO}-X_{SIM} [cm]",
1486 "BtlCluLocalYResZGlobPlus_simLC_fromIndirectHits",
1487 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, non-direct hits, glob Z > 0);Y_{RECO}-Y_{SIM} [cm]",
1492 "BtlCluLocalYResZGlobMinus_simLC_fromIndirectHits",
1493 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, non-direct hits, glob Z < 0);Y_{RECO}-Y_{SIM} [cm]",
1499 ibook.
book1D(
"BtlCluSingCrystalLocalYRes_simLC_fromIndirectHits",
1500 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, non-direct hits, single Crystal " 1501 "clusters);Y_{RECO}-Y_{SIM} [cm]",
1506 "BtlCluSingCrystalLocalYResZGlobPlus_simLC_fromIndirectHits",
1507 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, non-direct hits, single Crystal clusters, Z glob > " 1508 "0);Y_{RECO}-Y_{SIM} [cm]",
1513 "BtlCluSingCrystalLocalYResZGlobMinus_simLC_fromIndirectHits",
1514 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, non-direct hits, single Crystal clusters, Z glob < " 1515 "0);Y_{RECO}-Y_{SIM} [cm]",
1520 ibook.
book1D(
"BtlCluMultiCrystalLocalYRes_simLC_fromIndirectHits",
1521 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, non-direct hits, Multi-Crystal " 1522 "clusters);Y_{RECO}-Y_{SIM} [cm]",
1527 "BtlCluMultiCrystalLocalYResZGlobPlus_simLC_fromIndirectHits",
1528 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, non-direct hits, Multi-Crystal clusters, Z glob > " 1529 "0);Y_{RECO}-Y_{SIM} [cm]",
1534 "BtlCluMultiCrystalLocalYResZGlobMinus_simLC_fromIndirectHits",
1535 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, non-direct hits, Multi-Crystal clusters, Z glob < " 1536 "0);Y_{RECO}-Y_{SIM} [cm]",
1541 ibook.
book1D(
"BtlCluCentralLocalYRes_simLC_fromIndirectHits",
1542 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, non-direct hits, central " 1543 "region);Y_{RECO}-Y_{SIM} [cm]",
1548 ibook.
book1D(
"BtlCluCentralLocalYResZGlobPlus_simLC_fromIndirectHits",
1549 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, non-direct hits, central region, Z glob " 1550 "> 0);Y_{RECO}-Y_{SIM} [cm]",
1555 ibook.
book1D(
"BtlCluCentralLocalYResZGlobMinus_simLC_fromIndirectHits",
1556 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, non-direct hits, central region, Z glob " 1557 "< 0);Y_{RECO}-Y_{SIM} [cm]",
1562 ibook.
book1D(
"BtlCluForwardLocalYRes_simLC_fromIndirectHits",
1563 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, non-direct hits, forward " 1564 "region);Y_{RECO}-Y_{SIM} [cm]",
1569 ibook.
book1D(
"BtlCluForwardPlusLocalYRes_simLC_fromIndirectHits",
1570 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, non-direct hits, forward region, Z glob " 1571 "> 0);Y_{RECO}-Y_{SIM} [cm]",
1576 ibook.
book1D(
"BtlCluForwardMinusLocalYRes_simLC_fromIndirectHits",
1577 "BTL cluster local Y resolution (wrt MtdSimLayerClusters, non-direct hits, forward region, Z glob " 1578 "< 0);Y_{RECO}-Y_{SIM} [cm]",
1584 ibook.
book1D(
"BtlCluLocalYPullZGlobPlus_simLC_fromIndirectHits",
1585 "BTL cluster local Y pull (glob Z > 0);Y_{RECO}-Y_{SIM}/sigmaY_[RECO]",
1590 "BtlCluLocalYPullZGlobMinus_simLC_fromIndirectHits",
1591 "BTL cluster local Y pull (wrt MtdSimLayerClusters, non-direct hits, glob Z < 0);Y_{RECO}-Y_{SIM}/sigmaY_[RECO]",
1597 ibook.
book1D(
"BtlCluLocalXPull_simLC_fromIndirectHits",
1598 "BTL cluster local X pull (wrt MtdSimLayerClusters, non-direct hits);X_{RECO}-X_{SIM}/sigmaX_[RECO]",
1604 ibook.
book1D(
"BtlCluZPull_simLC_fromIndirectHits",
1605 "BTL cluster Z pull (wrt MtdSimLayerClusters, non-direct hits);Z_{RECO}-Z_{SIM}/sigmaZ_[RECO]",
1611 ibook.
book2D(
"BtlCluYXLocalSim_simLC_fromIndirectHits",
1612 "BTL cluster local Y vs X (MtdSimLayerClusters);X^{local}_{SIM} [cm];Y^{local}_{SIM} [cm]",
1625 "BTL uncalibrated hit amplitude left - average vs X;X [cm];Delta(Q_{left}) [pC]",
1634 "BTL uncalibrated hit amplitude right - average vs X;X [cm];Delta(Q_{right}) [pC]",
1643 "BTL uncalibrated hit time left - average vs X;X [cm];Delta(T_{left}) [MeV]",
1651 "BTL uncalibrated hit time right - average vs X;X [cm];Delta(T_{right}) [MeV]",
1659 for (
unsigned int ihistoQ = 0; ihistoQ <
nBinsQ_; ++ihistoQ) {
1661 std::string htitle = Form(
"BTL time resolution (Q bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoQ);
1664 for (
unsigned int ihistoEta = 0; ihistoEta <
nBinsQEta_; ++ihistoEta) {
1665 hname = Form(
"TimeResQvsEta_%d_%d", ihistoQ, ihistoEta);
1667 Form(
"BTL time resolution (Q bin = %d, |#eta| bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoQ, ihistoEta);
1674 for (
unsigned int ihistoEta = 0; ihistoEta <
nBinsEta_; ++ihistoEta) {
1675 std::string hname = Form(
"TimeResEta_%d", ihistoEta);
1676 std::string htitle = Form(
"BTL time resolution (|#eta| bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoEta);
1679 for (
unsigned int ihistoQ = 0; ihistoQ <
nBinsEtaQ_; ++ihistoQ) {
1680 hname = Form(
"TimeResEtavsQ_%d_%d", ihistoEta, ihistoQ);
1682 Form(
"BTL time resolution (|#eta| bin = %d, Q bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoEta, ihistoQ);
1703 desc.add<
double>(
"HitMinimumEnergy", 1.);
1704 desc.add<
bool>(
"optionalPlots",
false);
1705 desc.add<
bool>(
"UncalibRecHitsPlots",
false);
1706 desc.add<
double>(
"HitMinimumAmplitude", 30.);
1708 descriptions.
add(
"btlLocalRecoValid",
desc);
MonitorElement * meCluLocalYPullZGlobPlus_simLC_fromIndirectHits_
MonitorElement * meHitXlocal_
MonitorElement * meCluHitsvsEta_
MonitorElement * meCluTPullvsE_simLC_fromIndirectHits_
MonitorElement * meCluForwardMinusLocalYRes_
MonitorElement * meHitLogEnergy_
edm::Ref< typename HandleT::element_type, typename HandleT::element_type::value_type::value_type > makeRefTo(const HandleT &iHandle, typename HandleT::element_type::value_type::const_iterator itIter)
MonitorElement * meCluPhiRes_simLC_
MonitorElement * meHitYlocal_
T getParameter(std::string const &) const
MonitorElement * meCluTPullvsE_
MonitorElement * meHitLongPos_
MonitorElement * meCluTPullvsE_simLC_
MonitorElement * meCluZRes_simLC_
MonitorElement * meCluCentralLocalYResZGlobPlus_simLC_fromIndirectHits_
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
MonitorElement * meLongPosPull_
MonitorElement * meCluLocalYResZGlobPlus_simLC_fromIndirectHits_
MonitorElement * meCluLocalXRes_simLC_fromIndirectHits_
virtual void setCurrentFolder(std::string const &fullpath)
MonitorElement * meCluSingCrystalLocalYResZGlobMinus_simLC_fromIndirectHits_
MonitorElement * meNhits_
MonitorElement * meHitEnergy_
const edm::ESGetToken< MTDTopology, MTDTopologyRcd > mtdtopoToken_
MonitorElement * meCluSingCrystalLocalYResZGlobMinus_
MonitorElement * meCluLocalYPullZGlobMinus_simLC_fromIndirectHits_
MonitorElement * meCluTimeRes_simLC_fromIndirectHits_
MonitorElement * meCluSingCrystalLocalYRes_simLC_
MonitorElement * meCluLocalYResZGlobMinus_simLC_fromIndirectHits_
virtual const Topology & topology() const
MonitorElement * meCluZRes_
MonitorElement * meCluForwardPlusLocalYRes_simLC_fromIndirectHits_
virtual const PixelTopology & specificTopology() const
MonitorElement * meCluLocalYResZGlobMinus_
MonitorElement * meCluPhiRes_simLC_fromIndirectHits_
MonitorElement * meCluMultiCrystalLocalYResZGlobMinus_simLC_
MonitorElement * meCluSingCrystalLocalYRes_
MonitorElement * meCluEnergyvsEta_
const edm::ESGetToken< MTDClusterParameterEstimator, MTDCPERecord > cpeToken_
MonitorElement * meCluCentralLocalYResZGlobPlus_
MonitorElement * meCluCentralLocalYRes_simLC_fromIndirectHits_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
MonitorElement * meCluForwardLocalYRes_
MonitorElement * meCluCentralLocalYResZGlobMinus_simLC_fromIndirectHits_
MonitorElement * meCluLocalXPull_simLC_
MonitorElement * meCluLocalXRes_
MonitorElement * meCluYLocalErr_
const double hitMinEnergy_
MonitorElement * meCluSingCrystalLocalYResZGlobMinus_simLC_
MonitorElement * meCluEta_
MonitorElement * meCluForwardLocalYRes_simLC_fromIndirectHits_
MonitorElement * meUncEneLVsX_
MonitorElement * meCluYXLocalSim_simLC_fromIndirectHits_
MonitorElement * meCluZvsPhi_
MonitorElement * meNevents_
MonitorElement * meCluPhi_
MonitorElement * meCluLocalXRes_simLC_
MonitorElement * meEnergyRelResVsE_
const bool optionalPlots_
static constexpr float binWidthQ_
MonitorElement * meCluYXLocalSim_simLC_
MonitorElement * meCluCentralLocalYResZGlobMinus_
MonitorElement * meCluZPull_
MonitorElement * meCluMultiCrystalLocalYRes_
MonitorElement * meCluEnergyRes_simLC_
MonitorElement * meTPullvsEta_
MonitorElement * meHitTvsPhi_
MonitorElement * meUnmatchedCluEnergy_
MonitorElement * meUncTimeLVsX_
static constexpr int nBinsEtaQ_
LocalPoint pixelToModuleLocalPoint(const LocalPoint &plp, int row, int col) const
MonitorElement * meUnmatchedRecHit_
edm::EDGetTokenT< MTDTrackingDetSetVector > mtdTrackingHitToken_
MonitorElement * meCluMultiCrystalLocalYResZGlobMinus_
MonitorElement * meCluZPull_simLC_
MonitorElement * meLongPosPullvsEta_
MonitorElement * meCluTimeRes_
MonitorElement * meCluTResvsEta_simLC_
Detector identifier base class for the MIP Timing Layer.
MonitorElement * meCluForwardPlusLocalYRes_
constexpr NumType convertUnitsTo(double desiredUnits, NumType val)
MonitorElement * meCluYXLocal_
bool isSameCluster(const FTLCluster &, const FTLCluster &)
MonitorElement * meCluSingCrystalLocalYResZGlobPlus_simLC_fromIndirectHits_
MonitorElement * meCluZPull_simLC_fromIndirectHits_
MonitorElement * meTimeRes_
U second(std::pair< T, U > const &p)
MonitorElement * meCluTime_
MonitorElement * meCluXLocalErr_
MonitorElement * meCluTimeRes_simLC_
MonitorElement * meCluCentralLocalYResZGlobMinus_simLC_
MonitorElement * meLongPosPullvsE_
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 * meCluHits_
MonitorElement * meCluLocalYResZGlobPlus_
MonitorElement * meHitTimeError_
MonitorElement * meCluYXLocalSim_
static constexpr float binWidthEta_
MonitorElement * meCluMultiCrystalLocalYResZGlobMinus_simLC_fromIndirectHits_
MonitorElement * meCluSingCrystalLocalYResZGlobPlus_
MonitorElement * meCluCentralLocalYRes_simLC_
MonitorElement * meCluZRes_simLC_fromIndirectHits_
~BtlLocalRecoValidation() override
edm::EDGetTokenT< FTLClusterCollection > btlRecCluToken_
static constexpr float binsQEta_[nBinsQEta_+1]
MonitorElement * meCluMultiCrystalLocalYRes_simLC_fromIndirectHits_
Abs< T >::type abs(const T &t)
MonitorElement * meHitTime_
MonitorElement * meCluMultiCrystalLocalYResZGlobPlus_simLC_fromIndirectHits_
MonitorElement * meCluMultiCrystalLocalYResZGlobPlus_simLC_
#define DEFINE_FWK_MODULE(type)
static constexpr int nBinsQEta_
int nrows() const override
MonitorElement * meEnergyRes_
const double hitMinAmplitude_
MonitorElement * meCluForwardLocalYRes_simLC_
MonitorElement * meHitEta_
MonitorElement * meLocalOccupancy_
MonitorElement * meTimeResEta_[nBinsEta_]
MonitorElement * meCluCentralLocalYRes_
MonitorElement * meCluTResvsE_simLC_
MonitorElement * meCluRhoRes_
BtlLocalRecoValidation(const edm::ParameterSet &)
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
edm::EDGetTokenT< FTLUncalibratedRecHitCollection > btlUncalibRecHitsToken_
MonitorElement * meCluTrackIdOffset_
edm::EDGetTokenT< MtdRecoClusterToSimLayerClusterAssociationMap > r2sAssociationMapToken_
MonitorElement * meCluTimeError_
MonitorElement * meHitTvsEta_
MonitorElement * meCluSingCrystalLocalYResZGlobPlus_simLC_
MonitorElement * meCluTResvsEta_simLC_fromIndirectHits_
MonitorElement * meCluLocalYPullZGlobPlus_simLC_
const edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
MonitorElement * meCluTResvsE_simLC_fromIndirectHits_
MonitorElement * meCluEnergyRes_simLC_fromIndirectHits_
MonitorElement * meCluRhoRes_simLC_
MonitorElement * meCluForwardPlusLocalYRes_simLC_
constexpr NumType convertMmToCm(NumType millimeters)
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * meCluCentralLocalYResZGlobPlus_simLC_
MonitorElement * meHitZlocal_
constexpr uint32_t rawId() const
get the raw id
MonitorElement * meCluTPullvsEta_
edm::EDGetTokenT< FTLRecHitCollection > btlRecHitsToken_
MonitorElement * meCluEnergy_
A 2D TrackerRecHit with time and time error information.
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
MonitorElement * meHitEvsZ_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
MonitorElement * meCluLocalXPull_
MonitorElement * meCluPhiRes_
void analyze(const edm::Event &, const edm::EventSetup &) override
static constexpr int nBinsQ_
MonitorElement * meCluLocalYPullZGlobMinus_
MonitorElement * meTimeResQvsEta_[nBinsQ_][nBinsQEta_]
MonitorElement * meHitEvsPhi_
static constexpr float binsEtaQ_[nBinsEtaQ_+1]
const std::string folder_
MonitorElement * meCluMultiCrystalLocalYRes_simLC_
MonitorElement * meCluLocalYPullZGlobPlus_
MonitorElement * meTimeResEtavsQ_[nBinsEta_][nBinsEtaQ_]
Detector identifier class for the Barrel Timing Layer. The crystal count must start from 0...
MonitorElement * meCluForwardMinusLocalYRes_simLC_
MonitorElement * meUncTimeRVsX_
MonitorElement * meCluMultiCrystalLocalYResZGlobPlus_
ESTransientHandle< T > getTransientHandle(const ESGetToken< T, R > &iToken) const
static constexpr int nBinsEta_
MonitorElement * meCluLocalYResZGlobMinus_simLC_
MonitorElement * meCluTResvsEta_
MonitorElement * meCluRhoRes_simLC_fromIndirectHits_
BTLDetId::CrysLayout crysLayoutFromTopoMode(const int &topoMode)
MonitorElement * meCluSingCrystalLocalYRes_simLC_fromIndirectHits_
MonitorElement * meHitEvsEta_
Log< level::Warning, false > LogWarning
MonitorElement * meCluLocalXPull_simLC_fromIndirectHits_
auto makeValid(const U &iOtherHandleType) noexcept(false)
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
TupleMultiplicity< TrackerTraits > const *__restrict__ uint32_t nHits
MonitorElement * meHitTvsZ_
MonitorElement * meUncEneRVsX_
MonitorElement * meHitTvsE_
edm::EDGetTokenT< CrossingFrame< PSimHit > > btlSimHitsToken_
MonitorElement * meTimeResVsE_
MonitorElement * meOccupancy_
MonitorElement * meTimeResQ_[nBinsQ_]
MonitorElement * meCluTResvsE_
std::tuple< LocalPoint, LocalError, TimeValue, TimeValueError > ReturnType
MonitorElement * meCluEnergyRes_
MonitorElement * meCluTPullvsEta_simLC_fromIndirectHits_
MonitorElement * meCluLocalYResZGlobPlus_simLC_
MonitorElement * meTPullvsE_
MonitorElement * meNclusters_
const bool uncalibRecHitsPlots_
MonitorElement * meCluLocalYPullZGlobMinus_simLC_
MonitorElement * meCluForwardMinusLocalYRes_simLC_fromIndirectHits_
MonitorElement * meCluTPullvsEta_simLC_
MonitorElement * meHitPhi_