143 hitMinEnergy1Dis_(iConfig.getParameter<double>(
"hitMinimumEnergy1Dis")),
144 hitMinEnergy2Dis_(iConfig.getParameter<double>(
"hitMinimumEnergy2Dis")),
145 LocalPosDebug_(iConfig.getParameter<
bool>(
"LocalPositionDebug")),
146 uncalibRecHitsPlots_(iConfig.getParameter<
bool>(
"UncalibRecHitsPlots")),
147 hitMinAmplitude_(iConfig.getParameter<double>(
"HitMinimumAmplitude")) {
155 mtdgeoToken_ = esConsumes<MTDGeometry, MTDDigiGeometryRecord>();
171 const MTDTopology* topology = topologyHandle.product();
173 bool topo1Dis =
false;
174 bool topo2Dis =
false;
188 std::unordered_map<uint32_t, MTDHit> m_etlSimHits[4];
189 for (
auto const&
simHit : etlSimHits) {
198 if ((
id.
zside() == -1) && (
id.nDisc() == 1))
200 else if ((
id.
zside() == -1) && (
id.nDisc() == 2))
202 else if ((
id.
zside() == 1) && (
id.nDisc() == 1))
204 else if ((
id.
zside() == 1) && (
id.nDisc() == 2))
209 auto simHitIt = m_etlSimHits[idet].emplace(
id.rawId(),
MTDHit()).first;
215 if ((simHitIt->second).time == 0 ||
simHit.tof() < (simHitIt->second).
time) {
218 auto hit_pos =
simHit.entryPoint();
219 (simHitIt->second).x_local = hit_pos.x();
220 (simHitIt->second).y_local = hit_pos.y();
221 (simHitIt->second).z_local = hit_pos.z();
227 unsigned int n_reco_etl[4] = {0, 0, 0, 0};
228 for (
const auto&
recHit : *etlRecHitsHandle) {
233 if (thedet ==
nullptr)
234 throw cms::Exception(
"EtlLocalRecoValidation") <<
"GeographicalID: " << std::hex << geoId.
rawId() <<
" ("
235 << detId.
rawId() <<
") is invalid!" <<
std::dec << std::endl;
240 const auto& global_point = thedet->
toGlobal(local_point);
245 if (detId.
zside() == -1) {
247 }
else if (detId.
zside() == 1) {
258 if ((detId.
zside() == -1) && (detId.
nDisc() == 1)) {
260 }
else if ((detId.
zside() == -1) && (detId.
nDisc() == 2)) {
262 }
else if ((detId.
zside() == 1) && (detId.
nDisc() == 1)) {
264 }
else if ((detId.
zside() == 1) && (detId.
nDisc() == 2)) {
280 if ((idet == 0) || (idet == 1)) {
285 if ((idet == 2) || (idet == 3)) {
303 if (m_etlSimHits[idet].
count(detId.
rawId()) == 1) {
306 float time_res =
recHit.time() - m_etlSimHits[idet][detId.
rawId()].time;
307 float energy_res =
recHit.energy() - m_etlSimHits[idet][detId.
rawId()].energy;
326 for (
int i = 0;
i < 4;
i++) {
332 for (
const auto& DetSetClu : *etlRecCluHandle) {
333 for (
const auto& cluster : DetSetClu) {
344 DetId detIdObject(cluId);
345 const auto& genericDet =
geom->idToDetUnit(detIdObject);
346 if (genericDet ==
nullptr) {
348 <<
"GeographicalID: " << std::hex << cluId <<
" is invalid!" <<
std::dec << std::endl;
350 const ProxyMTDTopology& topoproxy = static_cast<const ProxyMTDTopology&>(genericDet->topology());
353 Local3DPoint local_point(topo.localX(cluster.x()), topo.localY(cluster.y()), 0.);
354 const auto& global_point = genericDet->toGlobal(local_point);
359 if (cluId.
zside() == -1) {
361 }
else if (cluId.
zside() == 1) {
372 if ((cluId.
zside() == -1) && (cluId.
nDisc() == 1)) {
374 }
else if ((cluId.
zside() == -1) && (cluId.
nDisc() == 2)) {
376 }
else if ((cluId.
zside() == 1) && (cluId.
nDisc() == 1)) {
378 }
else if ((cluId.
zside() == 1) && (cluId.
nDisc() == 2)) {
396 double cluEneSIM = 0.;
397 double cluTimeSIM = 0.;
398 double cluLocXSIM = 0.;
399 double cluLocYSIM = 0.;
400 double cluLocZSIM = 0.;
402 for (
int ihit = 0; ihit < cluster.size(); ++ihit) {
403 int hit_row = cluster.minHitRow() + cluster.hitOffset()[ihit * 2];
404 int hit_col = cluster.minHitCol() + cluster.hitOffset()[ihit * 2 + 1];
407 for (
const auto&
recHit : *etlRecHitsHandle) {
410 if (m_etlSimHits[idet].
count(hitId.rawId()) == 0)
414 if (hitId.zside() != cluId.
zside() || hitId.mtdRR() != cluId.
mtdRR() || hitId.module() != cluId.
module() ||
419 if (
recHit.energy() != cluster.hitENERGY()[ihit] ||
recHit.time() != cluster.hitTIME()[ihit])
428 cluLocXSIM += local_point_sim.
x() * m_etlSimHits[idet][
recHit.id().rawId()].energy;
429 cluLocYSIM += local_point_sim.
y() * m_etlSimHits[idet][
recHit.id().rawId()].energy;
430 cluLocZSIM += local_point_sim.
z() * m_etlSimHits[idet][
recHit.id().rawId()].energy;
433 cluEneSIM += m_etlSimHits[idet][
recHit.id().rawId()].energy;
434 cluTimeSIM += m_etlSimHits[idet][
recHit.id().rawId()].time * m_etlSimHits[idet][
recHit.id().rawId()].energy;
441 if (cluTimeSIM > 0. && cluEneSIM > 0.) {
442 int iside = (cluId.
zside() == -1 ? 0 : 1);
444 cluTimeSIM /= cluEneSIM;
446 Local3DPoint cluLocalPosSIM(cluLocXSIM / cluEneSIM, cluLocYSIM / cluEneSIM, cluLocZSIM / cluEneSIM);
447 const auto& cluGlobalPosSIM = genericDet->toGlobal(cluLocalPosSIM);
449 float time_res = cluster.time() - cluTimeSIM;
450 float energy_res = cluster.energy() - cluEneSIM;
451 float x_res = global_point.x() - cluGlobalPosSIM.x();
452 float y_res = global_point.y() - cluGlobalPosSIM.y();
453 float z_res = global_point.z() - cluGlobalPosSIM.z();
479 for (
const auto& uRecHit : *etlUncalibRecHitsHandle) {
485 if (m_etlSimHits[idet].
count(detId.
rawId()) != 1)
490 if (thedet ==
nullptr)
491 throw cms::Exception(
"EtlLocalRecoValidation") <<
"GeographicalID: " << std::hex << geoId.
rawId() <<
" ("
492 << detId.
rawId() <<
") is invalid!" <<
std::dec << std::endl;
497 Local3DPoint local_point(topo.localX(uRecHit.row()), topo.localY(uRecHit.column()), 0.);
498 const auto& global_point = thedet->
toGlobal(local_point);
505 float time_res = uRecHit.time().first - m_etlSimHits[idet][detId.
rawId()].time;
507 int iside = (detId.
zside() == -1 ? 0 : 1);
540 "EtlNhitsZnegD1",
"Number of ETL RECO hits (-Z, Single(topo1D)/First(topo2D) disk);N_{RECO}", 100, 0., 5000.);
541 meNhits_[1] = ibook.
book1D(
"EtlNhitsZnegD2",
"Number of ETL RECO hits (-Z, Second disk);N_{RECO}", 100, 0., 5000.);
543 "EtlNhitsZposD1",
"Number of ETL RECO hits (+Z, Single(topo1D)/First(topo2D) disk);N_{RECO}", 100, 0., 5000.);
544 meNhits_[3] = ibook.
book1D(
"EtlNhitsZposD2",
"Number of ETL RECO hits (+Z, Second disk);N_{RECO}", 100, 0., 5000.);
546 "EtlHitEnergyZnegD1",
"ETL RECO hits energy (-Z, Single(topo1D)/First(topo2D) disk);E_{RECO} [MeV]", 100, 0., 3.);
548 ibook.
book1D(
"EtlHitEnergyZnegD2",
"ETL RECO hits energy (-Z, Second disk);E_{RECO} [MeV]", 100, 0., 3.);
550 "EtlHitEnergyZposD1",
"ETL RECO hits energy (+Z, Single(topo1D)/First(topo2D) disk);E_{RECO} [MeV]", 100, 0., 3.);
552 ibook.
book1D(
"EtlHitEnergyZposD2",
"ETL RECO hits energy (+Z, Second disk);E_{RECO} [MeV]", 100, 0., 3.);
554 "EtlHitTimeZnegD1",
"ETL RECO hits ToA (-Z, Single(topo1D)/First(topo2D) disk);ToA_{RECO} [ns]", 100, 0., 25.);
555 meHitTime_[1] = ibook.
book1D(
"EtlHitTimeZnegD2",
"ETL RECO hits ToA (-Z, Second disk);ToA_{RECO} [ns]", 100, 0., 25.);
557 "EtlHitTimeZposD1",
"ETL RECO hits ToA (+Z, Single(topo1D)/First(topo2D) disk);ToA_{RECO} [ns]", 100, 0., 25.);
558 meHitTime_[3] = ibook.
book1D(
"EtlHitTimeZposD2",
"ETL RECO hits ToA (+Z, Second disk);ToA_{RECO} [ns]", 100, 0., 25.);
560 ibook.
book1D(
"EtlHitTimeErrorZnegD1",
561 "ETL RECO hits ToA error (-Z, Single(topo1D)/First(topo2D) disk);#sigma^{ToA}_{RECO} [ns]",
566 "EtlHitTimeErrorZnegD2",
"ETL RECO hits ToA error(-Z, Second disk);#sigma^{ToA}_{RECO} [ns]", 50, 0., 0.1);
568 ibook.
book1D(
"EtlHitTimeErrorZposD1",
569 "ETL RECO hits ToA error (+Z, Single(topo1D)/First(topo2D) disk);#sigma^{ToA}_{RECO} [ns]",
574 "EtlHitTimeErrorZposD2",
"ETL RECO hits ToA error(+Z, Second disk);#sigma^{ToA}_{RECO} [ns]", 50, 0., 0.1);
577 ibook.
book2D(
"EtlOccupancyZnegD1",
578 "ETL RECO hits occupancy (-Z, Single(topo1D)/First(topo2D) disk);X_{RECO} [cm];Y_{RECO} [cm]",
586 "ETL RECO hits occupancy (-Z, Second disk);X_{RECO} [cm];Y_{RECO} [cm]",
594 ibook.
book2D(
"EtlOccupancyZposD1",
595 "ETL RECO hits occupancy (+Z, Single(topo1D)/First(topo2D) disk);X_{RECO} [cm];Y_{RECO} [cm]",
603 "ETL RECO hits occupancy (+Z, Second disk);X_{RECO} [cm];Y_{RECO} [cm]",
612 "ETL RECO hits local occupancy (-Z);X_{RECO} [cm];Y_{RECO} [cm]",
620 "ETL RECO hits local occupancy (+Z);X_{RECO} [cm];Y_{RECO} [cm]",
627 meHitXlocal_[0] = ibook.
book1D(
"EtlHitXlocalZneg",
"ETL RECO local X (-Z);X_{RECO}^{LOC} [cm]", 100, -2.2, 2.2);
628 meHitXlocal_[1] = ibook.
book1D(
"EtlHitXlocalZpos",
"ETL RECO local X (+Z);X_{RECO}^{LOC} [cm]", 100, -2.2, 2.2);
629 meHitYlocal_[0] = ibook.
book1D(
"EtlHitYlocalZneg",
"ETL RECO local Y (-Z);Y_{RECO}^{LOC} [cm]", 50, -1.1, 1.1);
630 meHitYlocal_[1] = ibook.
book1D(
"EtlHitYlocalZpos",
"ETL RECO local Y (-Z);Y_{RECO}^{LOC} [cm]", 50, -1.1, 1.1);
633 "EtlHitXZnegD1",
"ETL RECO hits X (-Z, Single(topo1D)/First(topo2D) Disk);X_{RECO} [cm]", 100, -130., 130.);
634 meHitX_[1] = ibook.
book1D(
"EtlHitXZnegD2",
"ETL RECO hits X (-Z, Second Disk);X_{RECO} [cm]", 100, -130., 130.);
636 "EtlHitXZposD1",
"ETL RECO hits X (+Z, Single(topo1D)/First(topo2D) Disk);X_{RECO} [cm]", 100, -130., 130.);
637 meHitX_[3] = ibook.
book1D(
"EtlHitXZposD2",
"ETL RECO hits X (+Z, Second Disk);X_{RECO} [cm]", 100, -130., 130.);
639 "EtlHitYZnegD1",
"ETL RECO hits Y (-Z, Single(topo1D)/First(topo2D) Disk);Y_{RECO} [cm]", 100, -130., 130.);
640 meHitY_[1] = ibook.
book1D(
"EtlHitYZnegD2",
"ETL RECO hits Y (-Z, Second Disk);Y_{RECO} [cm]", 100, -130., 130.);
642 "EtlHitYZposD1",
"ETL RECO hits Y (+Z, Single(topo1D)/First(topo2D) Disk);Y_{RECO} [cm]", 100, -130., 130.);
643 meHitY_[3] = ibook.
book1D(
"EtlHitYZposD2",
"ETL RECO hits Y (+Z, Second Disk);Y_{RECO} [cm]", 100, -130., 130.);
645 "EtlHitZZnegD1",
"ETL RECO hits Z (-Z, Single(topo1D)/First(topo2D) Disk);Z_{RECO} [cm]", 100, -302., -298.);
646 meHitZ_[1] = ibook.
book1D(
"EtlHitZZnegD2",
"ETL RECO hits Z (-Z, Second Disk);Z_{RECO} [cm]", 100, -304., -300.);
648 "EtlHitZZposD1",
"ETL RECO hits Z (+Z, Single(topo1D)/First(topo2D) Disk);Z_{RECO} [cm]", 100, 298., 302.);
649 meHitZ_[3] = ibook.
book1D(
"EtlHitZZposD2",
"ETL RECO hits Z (+Z, Second Disk);Z_{RECO} [cm]", 100, 300., 304.);
651 "EtlHitPhiZnegD1",
"ETL RECO hits #phi (-Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad]", 100, -3.2, 3.2);
653 ibook.
book1D(
"EtlHitPhiZnegD2",
"ETL RECO hits #phi (-Z, Second Disk);#phi_{RECO} [rad]", 100, -3.2, 3.2);
655 "EtlHitPhiZposD1",
"ETL RECO hits #phi (+Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad]", 100, -3.2, 3.2);
657 ibook.
book1D(
"EtlHitPhiZposD2",
"ETL RECO hits #phi (+Z, Second Disk);#phi_{RECO} [rad]", 100, -3.2, 3.2);
659 "EtlHitEtaZnegD1",
"ETL RECO hits #eta (-Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO}", 100, -3.2, -1.56);
660 meHitEta_[1] = ibook.
book1D(
"EtlHitEtaZnegD2",
"ETL RECO hits #eta (-Z, Second Disk);#eta_{RECO}", 100, -3.2, -1.56);
662 "EtlHitEtaZposD1",
"ETL RECO hits #eta (+Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO}", 100, 1.56, 3.2);
663 meHitEta_[3] = ibook.
book1D(
"EtlHitEtaZposD2",
"ETL RECO hits #eta (+Z, Second Disk);#eta_{RECO}", 100, 1.56, 3.2);
664 meTimeRes_ = ibook.
book1D(
"EtlTimeRes",
"ETL time resolution;T_{RECO}-T_{SIM}", 100, -0.5, 0.5);
665 meEnergyRes_ = ibook.
book1D(
"EtlEnergyRes",
"ETL energy resolution;E_{RECO}-E_{SIM}", 100, -0.5, 0.5);
668 "ETL RECO time vs energy (-Z, Single(topo1D)/First(topo2D) Disk);E_{RECO} [MeV];ToA_{RECO} [ns]",
675 "ETL RECO time vs energy (-Z, Second Disk);E_{RECO} [MeV];ToA_{RECO} [ns]",
683 "ETL RECO time vs energy (+Z, Single(topo1D)/First(topo2D) Disk);E_{RECO} [MeV];ToA_{RECO} [ns]",
690 "ETL RECO time vs energy (+Z, Second Disk);E_{RECO} [MeV];ToA_{RECO} [ns]",
697 "EtlHitEvsPhiZnegD1",
698 "ETL RECO energy vs #phi (-Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad];E_{RECO} [MeV]",
705 "ETL RECO energy vs #phi (-Z, Second Disk);#phi_{RECO} [rad];E_{RECO} [MeV]",
712 "EtlHitEvsPhiZposD1",
713 "ETL RECO energy vs #phi (+Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad];E_{RECO} [MeV]",
720 "ETL RECO energy vs #phi (+Z, Second Disk);#phi_{RECO} [rad];E_{RECO} [MeV]",
728 "ETL RECO energy vs #eta (-Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO};E_{RECO} [MeV]",
735 "ETL RECO energy vs #eta (-Z, Second Disk);#eta_{RECO};E_{RECO} [MeV]",
743 "ETL RECO energy vs #eta (+Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO};E_{RECO} [MeV]",
750 "ETL RECO energy vs #eta (+Z, Second Disk);#eta_{RECO};E_{RECO} [MeV]",
757 "EtlHitTvsPhiZnegD1",
758 "ETL RECO time vs #phi (-Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad];ToA_{RECO} [ns]",
765 "ETL RECO time vs #phi (-Z, Second Disk);#phi_{RECO} [rad];ToA_{RECO} [ns]",
772 "EtlHitTvsPhiZposD1",
773 "ETL RECO time vs #phi (+Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad];ToA_{RECO} [ns]",
780 "ETL RECO time vs #phi (+Z, Second Disk);#phi_{RECO} [rad];ToA_{RECO} [ns]",
788 "ETL RECO time vs #eta (-Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO};ToA_{RECO} [ns]",
795 "ETL RECO time vs #eta (-Z, Second Disk);#eta_{RECO};ToA_{RECO} [ns]",
803 "ETL RECO time vs #eta (+Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO};ToA_{RECO} [ns]",
810 "ETL RECO time vs #eta (+Z, Second Disk);#eta_{RECO};ToA_{RECO} [ns]",
817 "EtlTPullvsE",
"ETL time pull vs E;E_{SIM} [MeV];(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}", 20, 0., 2., -5., 5.,
"S");
819 "ETL time pull vs #eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
827 ibook.
book1D(
"EtlCluTimeZnegD1",
"ETL cluster ToA (-Z, Single(topo1D)/First(topo2D) Disk);ToA [ns]", 250, 0, 25);
828 meCluTime_[1] = ibook.
book1D(
"EtlCluTimeZnegD2",
"ETL cluster ToA (-Z, Second Disk);ToA [ns]", 250, 0, 25);
830 ibook.
book1D(
"EtlCluTimeZposD1",
"ETL cluster ToA (+Z, Single(topo1D)/First(topo2D) Disk);ToA [ns]", 250, 0, 25);
831 meCluTime_[3] = ibook.
book1D(
"EtlCluTimeZposD2",
"ETL cluster ToA (+Z, Second Disk);ToA [ns]", 250, 0, 25);
833 "ETL cluster time error (-Z, Single(topo1D)/First(topo2D) Disk);#sigma_{t} [ns]",
838 ibook.
book1D(
"EtlCluTimeErrorZnegD2",
"ETL cluster time error (-Z, Second Disk);#sigma_{t} [ns]", 100, 0, 0.1);
840 "ETL cluster time error (+Z, Single(topo1D)/First(topo2D) Disk);#sigma_{t} [ns]",
845 ibook.
book1D(
"EtlCluTimeErrorZposD2",
"ETL cluster time error (+Z, Second Disk);#sigma_{t} [ns]", 100, 0, 0.1);
847 "EtlCluEnergyZnegD1",
"ETL cluster energy (-Z, Single(topo1D)/First(topo2D) Disk);E_{RECO} [MeV]", 100, 0, 10);
849 ibook.
book1D(
"EtlCluEnergyZnegD2",
"ETL cluster energy (-Z, Second Disk);E_{RECO} [MeV]", 100, 0, 10);
851 "EtlCluEnergyZposD1",
"ETL cluster energy (+Z, Single(topo1D)/First(topo2D) Disk);E_{RECO} [MeV]", 100, 0, 10);
853 ibook.
book1D(
"EtlCluEnergyZposD2",
"ETL cluster energy (+Z, Second Disk);E_{RECO} [MeV]", 100, 0, 10);
855 "EtlCluPhiZnegD1",
"ETL cluster #phi (-Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad]", 126, -3.2, 3.2);
857 ibook.
book1D(
"EtlCluPhiZnegD2",
"ETL cluster #phi (-Z, Second Disk);#phi_{RECO} [rad]", 126, -3.2, 3.2);
859 "EtlCluPhiZposD1",
"ETL cluster #phi (+Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad]", 126, -3.2, 3.2);
861 ibook.
book1D(
"EtlCluPhiZposD2",
"ETL cluster #phi (+Z, Second Disk);#phi_{RECO} [rad]", 126, -3.2, 3.2);
863 "EtlCluEtaZnegD1",
"ETL cluster #eta (-Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO}", 100, -3.2, -1.4);
864 meCluEta_[1] = ibook.
book1D(
"EtlCluEtaZnegD2",
"ETL cluster #eta (-Z, Second Disk);#eta_{RECO}", 100, -3.2, -1.4);
866 "EtlCluEtaZposD1",
"ETL cluster #eta (+Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO}", 100, 1.4, 3.2);
867 meCluEta_[3] = ibook.
book1D(
"EtlCluEtaZposD2",
"ETL cluster #eta (+Z, Second Disk);#eta_{RECO}", 100, 1.4, 3.2);
869 "EtlCluHitNumberZnegD1",
"ETL hits per cluster (-Z, Single(topo1D)/First(topo2D) Disk);Cluster size", 10, 0, 10);
871 ibook.
book1D(
"EtlCluHitNumberZnegD2",
"ETL hits per cluster (-Z, Second Disk);Cluster size", 10, 0, 10);
873 "EtlCluHitNumberZposD1",
"ETL hits per cluster (+Z, Single(topo1D)/First(topo2D) Disk);Cluster size", 10, 0, 10);
875 ibook.
book1D(
"EtlCluHitNumberZposD2",
"ETL hits per cluster (+Z, Second Disk);Cluster size", 10, 0, 10);
877 ibook.
book2D(
"EtlCluOccupancyZnegD1",
878 "ETL cluster X vs Y (-Z, Single(topo1D)/First(topo2D) Disk);X_{RECO} [cm]; Y_{RECO} [cm]",
886 "ETL cluster X vs Y (-Z, Second Disk);X_{RECO} [cm]; Y_{RECO} [cm]",
894 ibook.
book2D(
"EtlCluOccupancyZposD1",
895 "ETL cluster X vs Y (+Z, Single(topo1D)/First(topo2D) Disk);X_{RECO} [cm]; Y_{RECO} [cm]",
903 "ETL cluster X vs Y (+Z, Second Disk);X_{RECO} [cm]; Y_{RECO} [cm]",
912 ibook.
book1D(
"EtlCluTimeResZneg",
"ETL cluster time resolution (-Z);T_{RECO}-T_{SIM} [ns]", 100, -0.5, 0.5);
914 ibook.
book1D(
"EtlCluTimeResZpos",
"ETL cluster time resolution (+Z);T_{RECO}-T_{SIM} [MeV]", 100, -0.5, 0.5);
916 ibook.
book1D(
"EtlCluEnergyResZneg",
"ETL cluster energy resolution (-Z);E_{RECO}-E_{SIM}", 100, -0.5, 0.5);
918 ibook.
book1D(
"EtlCluEnergyResZpos",
"ETL cluster energy resolution (+Z);E_{RECO}-E_{SIM}", 100, -0.5, 0.5);
922 "ETL cluster time pull vs E (-Z);E_{SIM} [MeV];(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
931 "ETL cluster time pull vs E (+Z);E_{SIM} [MeV];(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
940 "ETL cluster time pull vs #eta (-Z);|#eta_{RECO}|;(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
949 "ETL cluster time pull vs #eta (+Z);|#eta_{RECO}|;(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
956 meCluXRes_[0] = ibook.
book1D(
"EtlCluXResZneg",
"ETL cluster X resolution (-Z);X_{RECO}-X_{SIM} [cm]", 100, -0.1, 0.1);
957 meCluXRes_[1] = ibook.
book1D(
"EtlCluXResZpos",
"ETL cluster X resolution (+Z);X_{RECO}-X_{SIM} [cm]", 100, -0.1, 0.1);
958 meCluYRes_[0] = ibook.
book1D(
"EtlCluYResZneg",
"ETL cluster Y resolution (-Z);Y_{RECO}-Y_{SIM} [cm]", 100, -0.1, 0.1);
959 meCluYRes_[1] = ibook.
book1D(
"EtlCluYResZpos",
"ETL cluster Y resolution (+Z);Y_{RECO}-Y_{SIM} [cm]", 100, -0.1, 0.1);
961 ibook.
book1D(
"EtlCluZResZneg",
"ETL cluster Z resolution (-Z);Z_{RECO}-Z_{SIM} [cm]", 100, -0.003, 0.003);
963 ibook.
book1D(
"EtlCluZResZpos",
"ETL cluster Z resolution (+Z);Z_{RECO}-Z_{SIM} [cm]", 100, -0.003, 0.003);
966 "ETL cluster local Y vs X (-Z);X^{local}_{RECO} [cm];Y^{local}_{RECO} [cm]",
974 "ETL cluster local Y vs X (+Z);X^{local}_{RECO} [cm];Y^{local}_{RECO} [cm]",
982 "ETL cluster local Y vs X (-Z);X^{local}_{SIM} [cm];Y^{local}_{SIM} [cm]",
990 "ETL cluster local Y vs X (+Z);X^{local}_{SIM} [cm];Y^{local}_{SIM} [cm]",
1003 for (
unsigned int iside = 0; iside < 2; ++iside) {
1004 for (
unsigned int ihistoQ = 0; ihistoQ <
nBinsQ_; ++ihistoQ) {
1005 std::string hname = Form(
"TimeResQ_%d_%d", iside, ihistoQ);
1007 Form(
"%s time resolution (Q bin = %d);T_{RECO} - T_{SIM} [ns]", det_name[iside].
data(), ihistoQ);
1012 for (
unsigned int ihistoEta = 0; ihistoEta <
nBinsEta_; ++ihistoEta) {
1013 std::string hname = Form(
"TimeResEta_%d_%d", iside, ihistoEta);
1015 Form(
"%s time resolution (|#eta| bin = %d);T_{RECO} - T_{SIM} [ns]", det_name[iside].
data(), ihistoEta);
1032 desc.add<
double>(
"hitMinimumEnergy1Dis", 1.);
1033 desc.add<
double>(
"hitMinimumEnergy2Dis", 0.001);
1034 desc.add<
bool>(
"LocalPositionDebug",
false);
1035 desc.add<
bool>(
"UncalibRecHitsPlots",
false);
1036 desc.add<
double>(
"HitMinimumAmplitude", 0.33);
1038 descriptions.
add(
"etlLocalReco",
desc);