180 return clu1.
id() == clu2.
id() && clu1.
size() == clu2.
size() && clu1.
x() == clu2.
x() && clu1.
y() == clu2.
y() &&
187 hitMinEnergy_(iConfig.getParameter<double>(
"HitMinimumEnergy")),
188 optionalPlots_(iConfig.getParameter<
bool>(
"optionalPlots")),
189 uncalibRecHitsPlots_(iConfig.getParameter<
bool>(
"UncalibRecHitsPlots")),
190 hitMinAmplitude_(iConfig.getParameter<double>(
"HitMinimumAmplitude")),
215 const MTDTopology* topology = topologyHandle.product();
226 for (
const auto&
hits : *mtdTrkHitHandle) {
227 if (
MTDDetId(
hits.id()).mtdSubDetector() == MTDDetId::MTDType::BTL) {
228 LogDebug(
"BtlLocalRecoValidation") <<
"MTD cluster DetId " <<
hits.id() <<
" # cluster " <<
hits.size();
231 <<
"MTD_TRH: " <<
hit.localPosition().
x() <<
"," <<
hit.localPosition().
y() <<
" : " 232 <<
hit.localPositionError().xx() <<
"," <<
hit.localPositionError().yy() <<
" : " <<
hit.time() <<
" : " 240 std::unordered_map<uint32_t, MTDHit> m_btlSimHits;
241 for (
auto const&
simHit : btlSimHits) {
248 auto simHitIt = m_btlSimHits.emplace(
id.rawId(),
MTDHit()).first;
254 if ((simHitIt->second).time == 0 ||
simHit.tof() < (simHitIt->second).
time) {
257 auto hit_pos =
simHit.localPosition();
258 (simHitIt->second).
x = hit_pos.x();
259 (simHitIt->second).
y = hit_pos.y();
260 (simHitIt->second).
z = hit_pos.z();
266 unsigned int n_reco_btl = 0;
267 for (
const auto&
recHit : *btlRecHitsHandle) {
271 if (thedet ==
nullptr)
272 throw cms::Exception(
"BtlLocalRecoValidation") <<
"GeographicalID: " << std::hex <<
geoId.rawId() <<
" (" 273 << detId.
rawId() <<
") is invalid!" <<
std::dec << std::endl;
279 const auto& global_point = thedet->
toGlobal(local_point);
313 float time_res =
recHit.time() - m_btlSimHits[detId.
rawId()].time;
314 float energy_res =
recHit.energy() - m_btlSimHits[detId.
rawId()].energy;
321 const auto& global_point_sim = thedet->
toGlobal(local_point_sim);
342 unsigned int n_clus_btl(0);
343 for (
const auto& DetSetClu : *btlRecCluHandle) {
344 for (
const auto& cluster : DetSetClu) {
348 DetId detIdObject(cluId);
349 const auto& genericDet =
geom->idToDetUnit(detIdObject);
350 if (genericDet ==
nullptr) {
352 <<
"GeographicalID: " << std::hex << cluId <<
" is invalid!" <<
std::dec << std::endl;
363 const auto& global_point = genericDet->toGlobal(local_point);
376 double cluEneSIM = 0.;
377 double cluTimeSIM = 0.;
378 double cluLocXSIM = 0.;
379 double cluLocYSIM = 0.;
380 double cluLocZSIM = 0.;
382 for (
int ihit = 0; ihit < cluster.size(); ++ihit) {
383 int hit_row = cluster.minHitRow() + cluster.hitOffset()[ihit * 2];
384 int hit_col = cluster.minHitCol() + cluster.hitOffset()[ihit * 2 + 1];
387 for (
const auto&
recHit : *btlRecHitsHandle) {
390 if (m_btlSimHits.count(hitId.rawId()) == 0)
394 if (hitId.mtdSide() != cluId.
mtdSide() || hitId.mtdRR() != cluId.
mtdRR() ||
recHit.row() != hit_row ||
395 recHit.column() != hit_col)
399 if (
recHit.energy() != cluster.hitENERGY()[ihit] ||
recHit.time() != cluster.hitTIME()[ihit])
410 cluLocXSIM += local_point_sim.
x() * m_btlSimHits[
recHit.id().rawId()].energy;
411 cluLocYSIM += local_point_sim.
y() * m_btlSimHits[
recHit.id().rawId()].energy;
412 cluLocZSIM += local_point_sim.
z() * m_btlSimHits[
recHit.id().rawId()].energy;
415 cluEneSIM += m_btlSimHits[
recHit.id().rawId()].energy;
416 cluTimeSIM += m_btlSimHits[
recHit.id().rawId()].time * m_btlSimHits[
recHit.id().rawId()].energy;
426 bool matchClu =
false;
427 const auto& trkHits = (*mtdTrkHitHandle)[detIdObject];
428 for (
const auto& trkHit : trkHits) {
430 comp = trkHit.clone();
437 <<
"No valid TrackingRecHit corresponding to cluster, detId = " << detIdObject.
rawId();
441 if (cluTimeSIM > 0. && cluEneSIM > 0.) {
442 cluTimeSIM /= cluEneSIM;
444 Local3DPoint cluLocalPosSIM(cluLocXSIM / cluEneSIM, cluLocYSIM / cluEneSIM, cluLocZSIM / cluEneSIM);
445 const auto& cluGlobalPosSIM = genericDet->toGlobal(cluLocalPosSIM);
447 float time_res = cluster.time() - cluTimeSIM;
448 float energy_res = cluster.energy() - cluEneSIM;
452 float rho_res = global_point.perp() - cluGlobalPosSIM.perp();
453 float phi_res = global_point.phi() - cluGlobalPosSIM.phi();
458 float xlocal_res = local_point.
x() - cluLocalPosSIM.
x();
459 float ylocal_res = local_point.
y() - cluLocalPosSIM.
y();
460 float z_res = global_point.z() - cluGlobalPosSIM.z();
465 if (matchClu &&
comp !=
nullptr) {
507 for (
const auto& uRecHit : *btlUncalibRecHitsHandle) {
511 if (m_btlSimHits.count(detId.
rawId()) != 1)
516 if (thedet ==
nullptr)
517 throw cms::Exception(
"BtlLocalRecoValidation") <<
"GeographicalID: " << std::hex <<
geoId.rawId() <<
" (" 518 << detId.
rawId() <<
") is invalid!" <<
std::dec << std::endl;
524 const auto& global_point = thedet->
toGlobal(local_point);
529 float hit_amplitude = 0.;
533 if (uRecHit.amplitude().first > 0.) {
534 hit_amplitude += uRecHit.amplitude().first;
535 hit_time += uRecHit.time().first;
539 if (uRecHit.amplitude().second > 0.) {
540 hit_amplitude += uRecHit.amplitude().second;
541 hit_time += uRecHit.time().second;
545 hit_amplitude /=
nHits;
553 float time_res = hit_time - m_btlSimHits[detId.
rawId()].time;
565 if (fabs(global_point.eta()) >=
binsQEta_[ibin] && fabs(global_point.eta()) <
binsQEta_[ibin + 1])
599 meNhits_ = ibook.
book1D(
"BtlNhits",
"Number of BTL RECO hits;log_{10}(N_{RECO})", 100, 0., 5.25);
601 meHitEnergy_ = ibook.
book1D(
"BtlHitEnergy",
"BTL RECO hits energy;E_{RECO} [MeV]", 100, 0., 20.);
602 meHitLogEnergy_ = ibook.
book1D(
"BtlHitLogEnergy",
"BTL RECO hits energy;log_{10}(E_{RECO} [MeV])", 25, -1., 1.5);
603 meHitTime_ = ibook.
book1D(
"BtlHitTime",
"BTL RECO hits ToA;ToA_{RECO} [ns]", 100, 0., 25.);
604 meHitTimeError_ = ibook.
book1D(
"BtlHitTimeError",
"BTL RECO hits ToA error;#sigma^{ToA}_{RECO} [ns]", 50, 0., 0.1);
606 "BtlOccupancy",
"BTL RECO hits occupancy;Z_{RECO} [cm]; #phi_{RECO} [rad]", 65, -260., 260., 126, -3.2, 3.2);
609 "BtlLocalOccupancy",
"BTL RECO hits local occupancy;X_{RECO} [cm]; Y_{RECO} [cm]", 100, 10., 10., 60, -3., 3.);
610 meHitXlocal_ = ibook.
book1D(
"BtlHitXlocal",
"BTL RECO local X;X_{RECO}^{LOC} [cm]", 100, -10., 10.);
611 meHitYlocal_ = ibook.
book1D(
"BtlHitYlocal",
"BTL RECO local Y;Y_{RECO}^{LOC} [cm]", 60, -3, 3);
612 meHitZlocal_ = ibook.
book1D(
"BtlHitZlocal",
"BTL RECO local z;z_{RECO}^{LOC} [cm]", 10, -1, 1);
614 meHitX_ = ibook.
book1D(
"BtlHitX",
"BTL RECO hits X;X_{RECO} [cm]", 60, -120., 120.);
615 meHitY_ = ibook.
book1D(
"BtlHitY",
"BTL RECO hits Y;Y_{RECO} [cm]", 60, -120., 120.);
616 meHitZ_ = ibook.
book1D(
"BtlHitZ",
"BTL RECO hits Z;Z_{RECO} [cm]", 100, -260., 260.);
617 meHitPhi_ = ibook.
book1D(
"BtlHitPhi",
"BTL RECO hits #phi;#phi_{RECO} [rad]", 126, -3.2, 3.2);
618 meHitEta_ = ibook.
book1D(
"BtlHitEta",
"BTL RECO hits #eta;#eta_{RECO}", 100, -1.55, 1.55);
620 ibook.
bookProfile(
"BtlHitTvsE",
"BTL RECO ToA vs energy;E_{RECO} [MeV];ToA_{RECO} [ns]", 50, 0., 20., 0., 100.);
622 "BtlHitEvsPhi",
"BTL RECO energy vs #phi;#phi_{RECO} [rad];E_{RECO} [MeV]", 50, -3.2, 3.2, 0., 100.);
624 "BtlHitEvsEta",
"BTL RECO energy vs #eta;#eta_{RECO};E_{RECO} [MeV]", 50, -1.55, 1.55, 0., 100.);
626 ibook.
bookProfile(
"BtlHitEvsZ",
"BTL RECO energy vs Z;Z_{RECO} [cm];E_{RECO} [MeV]", 50, -260., 260., 0., 100.);
628 "BtlHitTvsPhi",
"BTL RECO ToA vs #phi;#phi_{RECO} [rad];ToA_{RECO} [ns]", 50, -3.2, 3.2, 0., 100.);
630 ibook.
bookProfile(
"BtlHitTvsEta",
"BTL RECO ToA vs #eta;#eta_{RECO};ToA_{RECO} [ns]", 50, -1.6, 1.6, 0., 100.);
632 ibook.
bookProfile(
"BtlHitTvsZ",
"BTL RECO ToA vs Z;Z_{RECO} [cm];ToA_{RECO} [ns]", 50, -260., 260., 0., 100.);
633 meHitLongPos_ = ibook.
book1D(
"BtlLongPos",
"BTL RECO hits longitudinal position;long. pos._{RECO}", 100, -10, 10);
635 ibook.
book1D(
"BtlLongPosErr",
"BTL RECO hits longitudinal position error; long. pos. error_{RECO}", 100, -1, 1);
636 meTimeRes_ = ibook.
book1D(
"BtlTimeRes",
"BTL time resolution;T_{RECO}-T_{SIM}", 100, -0.5, 0.5);
637 meEnergyRes_ = ibook.
book1D(
"BtlEnergyRes",
"BTL energy resolution;E_{RECO}-E_{SIM}", 100, -0.5, 0.5);
639 "BTL longitudinal position pull;X^{loc}_{RECO}-X^{loc}_{SIM}/#sigma_{xloc_{RECO}}",
645 "BTL longitudinal position pull vs E;E_{SIM} [MeV];X^{loc}_{RECO}-X^{loc}_{SIM}/#sigma_{xloc_{RECO}}",
653 "BtlLongposPullvsEta",
654 "BTL longitudinal position pull vs #eta;|#eta_{RECO}|;X^{loc}_{RECO}-X^{loc}_{SIM}/#sigma_{xloc_{RECO}}",
662 "BtlTPullvsE",
"BTL time pull vs E;E_{SIM} [MeV];(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}", 20, 0., 20., -5., 5.,
"S");
664 "BTL time pull vs #eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
672 meNclusters_ = ibook.
book1D(
"BtlNclusters",
"Number of BTL RECO clusters;log_{10}(N_{RECO})", 100, 0., 5.25);
673 meCluTime_ = ibook.
book1D(
"BtlCluTime",
"BTL cluster time ToA;ToA [ns]", 250, 0, 25);
674 meCluTimeError_ = ibook.
book1D(
"BtlCluTimeError",
"BTL cluster time error;#sigma_{t} [ns]", 100, 0, 0.1);
675 meCluEnergy_ = ibook.
book1D(
"BtlCluEnergy",
"BTL cluster energy;E_{RECO} [MeV]", 100, 0, 20);
676 meCluPhi_ = ibook.
book1D(
"BtlCluPhi",
"BTL cluster #phi;#phi_{RECO} [rad]", 144, -3.2, 3.2);
677 meCluEta_ = ibook.
book1D(
"BtlCluEta",
"BTL cluster #eta;#eta_{RECO}", 100, -1.55, 1.55);
678 meCluHits_ = ibook.
book1D(
"BtlCluHitNumber",
"BTL hits per cluster; Cluster size", 10, 0, 10);
680 "BtlOccupancy",
"BTL cluster Z vs #phi;Z_{RECO} [cm]; #phi_{RECO} [rad]", 144, -260., 260., 50, -3.2, 3.2);
682 "BtlCluEnergyVsEta",
"BTL cluster energy vs #eta; |#eta_{RECO}|; E_{RECO} [cm]", 30, 0., 1.55, 0., 20.,
"S");
684 "BtlCluHitsVsEta",
"BTL hits per cluster vs #eta; |#eta_{RECO}|;Cluster size", 30, 0., 1.55, 0., 10.,
"S");
686 meCluTimeRes_ = ibook.
book1D(
"BtlCluTimeRes",
"BTL cluster time resolution;T_{RECO}-T_{SIM} [ns]", 100, -0.5, 0.5);
688 ibook.
book1D(
"BtlCluEnergyRes",
"BTL cluster energy resolution;E_{RECO}-E_{SIM} [MeV]", 100, -0.5, 0.5);
690 "BTL cluster time resolution vs E;E_{SIM} [MeV];(T_{RECO}-T_{SIM}) [ns]",
698 "BTL cluster time resolution vs #eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM}) [ns]",
706 "BTL cluster time pull vs E;E_{SIM} [MeV];(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
715 "BTL cluster time pull vs #eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
723 ibook.
book1D(
"BtlCluRhoRes",
"BTL cluster #rho resolution;#rho_{RECO}-#rho_{SIM} [cm]", 100, -0.5, 0.5);
725 ibook.
book1D(
"BtlCluPhiRes",
"BTL cluster #phi resolution;#phi_{RECO}-#phi_{SIM} [rad]", 100, -0.03, 0.03);
726 meCluZRes_ = ibook.
book1D(
"BtlCluZRes",
"BTL cluster Z resolution;Z_{RECO}-Z_{SIM} [cm]", 100, -0.2, 0.2);
729 ibook.
book1D(
"BtlCluLocalXRes",
"BTL cluster local X resolution;X_{RECO}-X_{SIM} [cm]", 100, -3.1, 3.1);
731 ibook.
book1D(
"BtlCluLocalYRes",
"BTL cluster local Y resolution;Y_{RECO}-Y_{SIM} [cm]", 100, -3.1, 3.1);
733 ibook.
book1D(
"BtlCluLocalXPull",
"BTL cluster local X pull;X_{RECO}-X_{SIM}/sigmaX_[RECO]", 100, -5., 5.);
735 ibook.
book1D(
"BtlCluLocalYPull",
"BTL cluster local Y pull;Y_{RECO}-Y_{SIM}/sigmaY_[RECO]", 100, -5., 5.);
736 meCluZPull_ = ibook.
book1D(
"BtlCluZPull",
"BTL cluster Z pull;Z_{RECO}-Z_{SIM}/sigmaZ_[RECO]", 100, -5., 5.);
738 "BTL cluster local Y vs X;X^{local}_{RECO} [cm];Y^{local}_{RECO} [cm]",
746 "BTL cluster local Y vs X;X^{local}_{SIM} [cm];Y^{local}_{SIM} [cm]",
753 meCluXLocalErr_ = ibook.
book1D(
"BtlCluXLocalErr",
"BTL cluster X local error;sigmaX_{RECO,loc} [cm]", 30, 0., 3.);
754 meCluYLocalErr_ = ibook.
book1D(
"BtlCluYLocalErr",
"BTL cluster Y local error;sigmaY_{RECO,loc} [cm]", 30, 0., 0.9);
757 ibook.
book1D(
"BtlUnmatchedCluEnergy",
"BTL unmatched cluster log10(energy);log10(E_{RECO} [MeV])", 5, -3, 2);
762 for (
unsigned int ihistoQ = 0; ihistoQ <
nBinsQ_; ++ihistoQ) {
764 std::string htitle = Form(
"BTL time resolution (Q bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoQ);
767 for (
unsigned int ihistoEta = 0; ihistoEta <
nBinsQEta_; ++ihistoEta) {
768 hname = Form(
"TimeResQvsEta_%d_%d", ihistoQ, ihistoEta);
769 htitle = Form(
"BTL time resolution (Q bin = %d, |#eta| bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoQ, ihistoEta);
776 for (
unsigned int ihistoEta = 0; ihistoEta <
nBinsEta_; ++ihistoEta) {
777 std::string hname = Form(
"TimeResEta_%d", ihistoEta);
778 std::string htitle = Form(
"BTL time resolution (|#eta| bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoEta);
781 for (
unsigned int ihistoQ = 0; ihistoQ <
nBinsEtaQ_; ++ihistoQ) {
782 hname = Form(
"TimeResEtavsQ_%d_%d", ihistoEta, ihistoQ);
783 htitle = Form(
"BTL time resolution (|#eta| bin = %d, Q bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoEta, ihistoQ);
802 desc.add<
double>(
"HitMinimumEnergy", 1.);
803 desc.add<
bool>(
"optionalPlots",
false);
804 desc.add<
bool>(
"UncalibRecHitsPlots",
false);
805 desc.add<
double>(
"HitMinimumAmplitude", 30.);
807 descriptions.
add(
"btlLocalRecoValid",
desc);
MonitorElement * meHitXlocal_
uint8_t geoId(const VFATFrame &frame)
retrieve the GEO information for this channel
MonitorElement * meCluHitsvsEta_
MonitorElement * meHitLogEnergy_
int getMTDTopologyMode() const
MonitorElement * meHitYlocal_
T getParameter(std::string const &) const
MonitorElement * meCluTPullvsE_
int row(unsigned nrows=kCrystalsPerModuleV2) const
MonitorElement * meHitLongPos_
MonitorElement * meLongPosPull_
virtual void setCurrentFolder(std::string const &fullpath)
MonitorElement * meNhits_
MonitorElement * meHitEnergy_
const edm::ESGetToken< MTDTopology, MTDTopologyRcd > mtdtopoToken_
virtual const Topology & topology() const
MonitorElement * meCluZRes_
virtual const PixelTopology & specificTopology() const
MonitorElement * meCluEnergyvsEta_
const edm::ESGetToken< MTDClusterParameterEstimator, MTDCPERecord > cpeToken_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
MonitorElement * meCluLocalXRes_
MonitorElement * meCluYLocalErr_
const double hitMinEnergy_
MonitorElement * meCluEta_
MonitorElement * meCluZvsPhi_
MonitorElement * meNevents_
MonitorElement * meCluPhi_
const bool optionalPlots_
static constexpr float binWidthQ_
MonitorElement * meCluZPull_
MonitorElement * meTPullvsEta_
MonitorElement * meHitTvsPhi_
MonitorElement * meUnmatchedCluEnergy_
static constexpr int nBinsEtaQ_
LocalPoint pixelToModuleLocalPoint(const LocalPoint &plp, int row, int col) const
edm::EDGetTokenT< MTDTrackingDetSetVector > mtdTrackingHitToken_
MonitorElement * meLongPosPullvsEta_
MonitorElement * meCluTimeRes_
Detector identifier base class for the MIP Timing Layer.
constexpr NumType convertUnitsTo(double desiredUnits, NumType val)
MonitorElement * meCluYXLocal_
bool isSameCluster(const FTLCluster &, const FTLCluster &)
MonitorElement * meTimeRes_
MonitorElement * meHitLongPosErr_
MonitorElement * meCluTime_
MonitorElement * meCluXLocalErr_
MonitorElement * meCluLocalYRes_
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 * meHitTimeError_
MonitorElement * meCluYXLocalSim_
static constexpr float binWidthEta_
~BtlLocalRecoValidation() override
edm::EDGetTokenT< FTLClusterCollection > btlRecCluToken_
static constexpr float binsQEta_[nBinsQEta_+1]
Abs< T >::type abs(const T &t)
MonitorElement * meHitTime_
#define DEFINE_FWK_MODULE(type)
static constexpr int nBinsQEta_
int nrows() const override
bool getData(T &iHolder) const
MonitorElement * meCluLocalYPull_
MonitorElement * meEnergyRes_
const double hitMinAmplitude_
MonitorElement * meHitEta_
MonitorElement * meLocalOccupancy_
MonitorElement * meTimeResEta_[nBinsEta_]
int column(unsigned nrows=kCrystalsPerModuleV2) const
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 * meCluTimeError_
MonitorElement * meHitTvsEta_
const edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
constexpr NumType convertMmToCm(NumType millimeters)
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
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_
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell const int32_t nHits
MonitorElement * meCluPhiRes_
void analyze(const edm::Event &, const edm::EventSetup &) override
static constexpr int nBinsQ_
MonitorElement * meTimeResQvsEta_[nBinsQ_][nBinsQEta_]
MonitorElement * meHitEvsPhi_
static constexpr float binsEtaQ_[nBinsEtaQ_+1]
const std::string folder_
MonitorElement * meTimeResEtavsQ_[nBinsEta_][nBinsEtaQ_]
Detector identifier class for the Barrel Timing Layer. The crystal count must start from 0...
ESTransientHandle< T > getTransientHandle(const ESGetToken< T, R > &iToken) const
static constexpr int nBinsEta_
MonitorElement * meCluTResvsEta_
BTLDetId::CrysLayout crysLayoutFromTopoMode(const int &topoMode)
MonitorElement * meHitEvsEta_
Log< level::Warning, false > LogWarning
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())
MonitorElement * meHitTvsZ_
MonitorElement * meHitTvsE_
edm::EDGetTokenT< CrossingFrame< PSimHit > > btlSimHitsToken_
MonitorElement * meOccupancy_
MonitorElement * meTimeResQ_[nBinsQ_]
MonitorElement * meCluTResvsE_
std::tuple< LocalPoint, LocalError, TimeValue, TimeValueError > ReturnType
MonitorElement * meCluEnergyRes_
BTLDetId geographicalId(CrysLayout lay) const
MonitorElement * meTPullvsE_
MonitorElement * meNclusters_
const bool uncalibRecHitsPlots_
MonitorElement * meHitPhi_