|
|
Go to the documentation of this file.
116 hitMinEnergy1Dis_(iConfig.getParameter<double>(
"hitMinimumEnergy1Dis")),
117 hitMinEnergy2Dis_(iConfig.getParameter<double>(
"hitMinimumEnergy2Dis")),
118 LocalPosDebug_(iConfig.getParameter<
bool>(
"LocalPositionDebug")) {
122 mtdgeoToken_ = esConsumes<MTDGeometry, MTDDigiGeometryRecord>();
138 const MTDTopology* topology = topologyHandle.product();
140 bool topo1Dis =
false;
141 bool topo2Dis =
false;
155 std::unordered_map<uint32_t, MTDHit> m_etlSimHits[4];
156 for (
auto const&
simHit : etlSimHits) {
165 if ((
id.
zside() == -1) && (
id.nDisc() == 1))
167 else if ((
id.
zside() == -1) && (
id.nDisc() == 2))
169 else if ((
id.
zside() == 1) && (
id.nDisc() == 1))
171 else if ((
id.
zside() == 1) && (
id.nDisc() == 2))
176 auto simHitIt = m_etlSimHits[idet].emplace(
id.rawId(),
MTDHit()).first;
182 if ((simHitIt->second).time == 0 ||
simHit.tof() < (simHitIt->second).
time) {
185 auto hit_pos =
simHit.entryPoint();
186 (simHitIt->second).x_local = hit_pos.x();
187 (simHitIt->second).y_local = hit_pos.y();
188 (simHitIt->second).z_local = hit_pos.z();
194 unsigned int n_reco_etl[4] = {0, 0, 0, 0};
195 for (
const auto&
recHit : *etlRecHitsHandle) {
200 if (thedet ==
nullptr)
201 throw cms::Exception(
"EtlLocalRecoValidation") <<
"GeographicalID: " << std::hex << geoId.
rawId() <<
" ("
202 << detId.
rawId() <<
") is invalid!" <<
std::dec << std::endl;
206 const auto& global_point = thedet->
toGlobal(local_point);
211 if (detId.
zside() == -1) {
213 }
else if (detId.
zside() == 1) {
224 if ((detId.
zside() == -1) && (detId.
nDisc() == 1)) {
226 }
else if ((detId.
zside() == -1) && (detId.
nDisc() == 2)) {
228 }
else if ((detId.
zside() == 1) && (detId.
nDisc() == 1)) {
230 }
else if ((detId.
zside() == 1) && (detId.
nDisc() == 2)) {
246 if ((idet == 0) || (idet == 1)) {
251 if ((idet == 2) || (idet == 3)) {
269 if (m_etlSimHits[idet].
count(detId.
rawId()) == 1) {
272 float time_res =
recHit.time() - m_etlSimHits[idet][detId.
rawId()].time;
273 float energy_res =
recHit.energy() - m_etlSimHits[idet][detId.
rawId()].energy;
292 for (
int i = 0;
i < 4;
i++) {
298 for (
const auto& DetSetClu : *etlRecCluHandle) {
299 for (
const auto& cluster : DetSetClu) {
310 DetId detIdObject(cluId);
311 const auto& genericDet =
geom->idToDetUnit(detIdObject);
312 if (genericDet ==
nullptr) {
314 <<
"GeographicalID: " << std::hex << cluId <<
" is invalid!" <<
std::dec << std::endl;
317 const PixelTopology& topo = static_cast<const PixelTopology&>(genericDet->topology());
320 const auto& global_point = genericDet->toGlobal(local_point);
325 if (cluId.
zside() == -1) {
327 }
else if (cluId.
zside() == 1) {
338 if ((cluId.
zside() == -1) && (cluId.
nDisc() == 1)) {
340 }
else if ((cluId.
zside() == -1) && (cluId.
nDisc() == 2)) {
342 }
else if ((cluId.
zside() == 1) && (cluId.
nDisc() == 1)) {
344 }
else if ((cluId.
zside() == 1) && (cluId.
nDisc() == 2)) {
371 "EtlNhitsZnegD1",
"Number of ETL RECO hits (-Z, Single(topo1D)/First(topo2D) disk);N_{RECO}", 100, 0., 5000.);
372 meNhits_[1] = ibook.
book1D(
"EtlNhitsZnegD2",
"Number of ETL RECO hits (-Z, Second disk);N_{RECO}", 100, 0., 5000.);
374 "EtlNhitsZposD1",
"Number of ETL RECO hits (+Z, Single(topo1D)/First(topo2D) disk);N_{RECO}", 100, 0., 5000.);
375 meNhits_[3] = ibook.
book1D(
"EtlNhitsZposD2",
"Number of ETL RECO hits (+Z, Second disk);N_{RECO}", 100, 0., 5000.);
377 "EtlHitEnergyZnegD1",
"ETL RECO hits energy (-Z, Single(topo1D)/First(topo2D) disk);E_{RECO} [MeV]", 100, 0., 3.);
379 ibook.
book1D(
"EtlHitEnergyZnegD2",
"ETL RECO hits energy (-Z, Second disk);E_{RECO} [MeV]", 100, 0., 3.);
381 "EtlHitEnergyZposD1",
"ETL RECO hits energy (+Z, Single(topo1D)/First(topo2D) disk);E_{RECO} [MeV]", 100, 0., 3.);
383 ibook.
book1D(
"EtlHitEnergyZposD2",
"ETL RECO hits energy (+Z, Second disk);E_{RECO} [MeV]", 100, 0., 3.);
385 "EtlHitTimeZnegD1",
"ETL RECO hits ToA (-Z, Single(topo1D)/First(topo2D) disk);ToA_{RECO} [ns]", 100, 0., 25.);
386 meHitTime_[1] = ibook.
book1D(
"EtlHitTimeZnegD2",
"ETL RECO hits ToA (-Z, Second disk);ToA_{RECO} [ns]", 100, 0., 25.);
388 "EtlHitTimeZposD1",
"ETL RECO hits ToA (+Z, Single(topo1D)/First(topo2D) disk);ToA_{RECO} [ns]", 100, 0., 25.);
389 meHitTime_[3] = ibook.
book1D(
"EtlHitTimeZposD2",
"ETL RECO hits ToA (+Z, Second disk);ToA_{RECO} [ns]", 100, 0., 25.);
391 ibook.
book1D(
"EtlHitTimeErrorZnegD1",
392 "ETL RECO hits ToA error (-Z, Single(topo1D)/First(topo2D) disk);#sigma^{ToA}_{RECO} [ns]",
397 "EtlHitTimeErrorZnegD2",
"ETL RECO hits ToA error(-Z, Second disk);#sigma^{ToA}_{RECO} [ns]", 50, 0., 0.1);
399 ibook.
book1D(
"EtlHitTimeErrorZposD1",
400 "ETL RECO hits ToA error (+Z, Single(topo1D)/First(topo2D) disk);#sigma^{ToA}_{RECO} [ns]",
405 "EtlHitTimeErrorZposD2",
"ETL RECO hits ToA error(+Z, Second disk);#sigma^{ToA}_{RECO} [ns]", 50, 0., 0.1);
408 ibook.
book2D(
"EtlOccupancyZnegD1",
409 "ETL RECO hits occupancy (-Z, Single(topo1D)/First(topo2D) disk);X_{RECO} [cm];Y_{RECO} [cm]",
417 "ETL RECO hits occupancy (-Z, Second disk);X_{RECO} [cm];Y_{RECO} [cm]",
425 ibook.
book2D(
"EtlOccupancyZposD1",
426 "ETL RECO hits occupancy (+Z, Single(topo1D)/First(topo2D) disk);X_{RECO} [cm];Y_{RECO} [cm]",
434 "ETL RECO hits occupancy (+Z, Second disk);X_{RECO} [cm];Y_{RECO} [cm]",
443 "ETL RECO hits local occupancy (-Z);X_{RECO} [cm];Y_{RECO} [cm]",
451 "ETL RECO hits local occupancy (+Z);X_{RECO} [cm];Y_{RECO} [cm]",
458 meHitXlocal_[0] = ibook.
book1D(
"EtlHitXlocalZneg",
"ETL RECO local X (-Z);X_{RECO}^{LOC} [cm]", 100, -2.2, 2.2);
459 meHitXlocal_[1] = ibook.
book1D(
"EtlHitXlocalZpos",
"ETL RECO local X (+Z);X_{RECO}^{LOC} [cm]", 100, -2.2, 2.2);
460 meHitYlocal_[0] = ibook.
book1D(
"EtlHitYlocalZneg",
"ETL RECO local Y (-Z);Y_{RECO}^{LOC} [cm]", 50, -1.1, 1.1);
461 meHitYlocal_[1] = ibook.
book1D(
"EtlHitYlocalZpos",
"ETL RECO local Y (-Z);Y_{RECO}^{LOC} [cm]", 50, -1.1, 1.1);
464 "EtlHitXZnegD1",
"ETL RECO hits X (-Z, Single(topo1D)/First(topo2D) Disk);X_{RECO} [cm]", 100, -130., 130.);
465 meHitX_[1] = ibook.
book1D(
"EtlHitXZnegD2",
"ETL RECO hits X (-Z, Second Disk);X_{RECO} [cm]", 100, -130., 130.);
467 "EtlHitXZposD1",
"ETL RECO hits X (+Z, Single(topo1D)/First(topo2D) Disk);X_{RECO} [cm]", 100, -130., 130.);
468 meHitX_[3] = ibook.
book1D(
"EtlHitXZposD2",
"ETL RECO hits X (+Z, Second Disk);X_{RECO} [cm]", 100, -130., 130.);
470 "EtlHitYZnegD1",
"ETL RECO hits Y (-Z, Single(topo1D)/First(topo2D) Disk);Y_{RECO} [cm]", 100, -130., 130.);
471 meHitY_[1] = ibook.
book1D(
"EtlHitYZnegD2",
"ETL RECO hits Y (-Z, Second Disk);Y_{RECO} [cm]", 100, -130., 130.);
473 "EtlHitYZposD1",
"ETL RECO hits Y (+Z, Single(topo1D)/First(topo2D) Disk);Y_{RECO} [cm]", 100, -130., 130.);
474 meHitY_[3] = ibook.
book1D(
"EtlHitYZposD2",
"ETL RECO hits Y (+Z, Second Disk);Y_{RECO} [cm]", 100, -130., 130.);
476 "EtlHitZZnegD1",
"ETL RECO hits Z (-Z, Single(topo1D)/First(topo2D) Disk);Z_{RECO} [cm]", 100, -302., -298.);
477 meHitZ_[1] = ibook.
book1D(
"EtlHitZZnegD2",
"ETL RECO hits Z (-Z, Second Disk);Z_{RECO} [cm]", 100, -304., -300.);
479 "EtlHitZZposD1",
"ETL RECO hits Z (+Z, Single(topo1D)/First(topo2D) Disk);Z_{RECO} [cm]", 100, 298., 302.);
480 meHitZ_[3] = ibook.
book1D(
"EtlHitZZposD2",
"ETL RECO hits Z (+Z, Second Disk);Z_{RECO} [cm]", 100, 300., 304.);
482 "EtlHitPhiZnegD1",
"ETL RECO hits #phi (-Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad]", 100, -3.2, 3.2);
484 ibook.
book1D(
"EtlHitPhiZnegD2",
"ETL RECO hits #phi (-Z, Second Disk);#phi_{RECO} [rad]", 100, -3.2, 3.2);
486 "EtlHitPhiZposD1",
"ETL RECO hits #phi (+Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad]", 100, -3.2, 3.2);
488 ibook.
book1D(
"EtlHitPhiZposD2",
"ETL RECO hits #phi (+Z, Second Disk);#phi_{RECO} [rad]", 100, -3.2, 3.2);
490 "EtlHitEtaZnegD1",
"ETL RECO hits #eta (-Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO}", 100, -3.2, -1.56);
491 meHitEta_[1] = ibook.
book1D(
"EtlHitEtaZnegD2",
"ETL RECO hits #eta (-Z, Second Disk);#eta_{RECO}", 100, -3.2, -1.56);
493 "EtlHitEtaZposD1",
"ETL RECO hits #eta (+Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO}", 100, 1.56, 3.2);
494 meHitEta_[3] = ibook.
book1D(
"EtlHitEtaZposD2",
"ETL RECO hits #eta (+Z, Second Disk);#eta_{RECO}", 100, 1.56, 3.2);
495 meTimeRes_ = ibook.
book1D(
"EtlTimeRes",
"ETL time resolution;T_{RECO}-T_{SIM}", 100, -0.5, 0.5);
496 meEnergyRes_ = ibook.
book1D(
"EtlEnergyRes",
"ETL energy resolution;E_{RECO}-E_{SIM}", 100, -0.5, 0.5);
499 "ETL RECO time vs energy (-Z, Single(topo1D)/First(topo2D) Disk);E_{RECO} [MeV];ToA_{RECO} [ns]",
506 "ETL RECO time vs energy (-Z, Second Disk);E_{RECO} [MeV];ToA_{RECO} [ns]",
514 "ETL RECO time vs energy (+Z, Single(topo1D)/First(topo2D) Disk);E_{RECO} [MeV];ToA_{RECO} [ns]",
521 "ETL RECO time vs energy (+Z, Second Disk);E_{RECO} [MeV];ToA_{RECO} [ns]",
528 "EtlHitEvsPhiZnegD1",
529 "ETL RECO energy vs #phi (-Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad];E_{RECO} [MeV]",
536 "ETL RECO energy vs #phi (-Z, Second Disk);#phi_{RECO} [rad];E_{RECO} [MeV]",
543 "EtlHitEvsPhiZposD1",
544 "ETL RECO energy vs #phi (+Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad];E_{RECO} [MeV]",
551 "ETL RECO energy vs #phi (+Z, Second Disk);#phi_{RECO} [rad];E_{RECO} [MeV]",
559 "ETL RECO energy vs #eta (-Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO};E_{RECO} [MeV]",
566 "ETL RECO energy vs #eta (-Z, Second Disk);#eta_{RECO};E_{RECO} [MeV]",
574 "ETL RECO energy vs #eta (+Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO};E_{RECO} [MeV]",
581 "ETL RECO energy vs #eta (+Z, Second Disk);#eta_{RECO};E_{RECO} [MeV]",
588 "EtlHitTvsPhiZnegD1",
589 "ETL RECO time vs #phi (-Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad];ToA_{RECO} [ns]",
596 "ETL RECO time vs #phi (-Z, Second Disk);#phi_{RECO} [rad];ToA_{RECO} [ns]",
603 "EtlHitTvsPhiZposD1",
604 "ETL RECO time vs #phi (+Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad];ToA_{RECO} [ns]",
611 "ETL RECO time vs #phi (+Z, Second Disk);#phi_{RECO} [rad];ToA_{RECO} [ns]",
619 "ETL RECO time vs #eta (-Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO};ToA_{RECO} [ns]",
626 "ETL RECO time vs #eta (-Z, Second Disk);#eta_{RECO};ToA_{RECO} [ns]",
634 "ETL RECO time vs #eta (+Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO};ToA_{RECO} [ns]",
641 "ETL RECO time vs #eta (+Z, Second Disk);#eta_{RECO};ToA_{RECO} [ns]",
648 "EtlTPullvsE",
"ETL time pull vs E;E_{SIM} [MeV];T_{RECO}-T_{SIM}/#sigma_{T_{RECO}}", 20, 0., 2., -5., 5.,
"S");
650 "ETL time pull vs #eta;|#eta_{RECO}|;T_{RECO}-T_{SIM}/#sigma_{T_{RECO}}",
658 ibook.
book1D(
"EtlCluTimeZnegD1",
"ETL cluster ToA (-Z, Single(topo1D)/First(topo2D) Disk);ToA [ns]", 250, 0, 25);
659 meCluTime_[1] = ibook.
book1D(
"EtlCluTimeZnegD2",
"ETL cluster ToA (-Z, Second Disk);ToA [ns]", 250, 0, 25);
661 ibook.
book1D(
"EtlCluTimeZposD1",
"ETL cluster ToA (+Z, Single(topo1D)/First(topo2D) Disk);ToA [ns]", 250, 0, 25);
662 meCluTime_[3] = ibook.
book1D(
"EtlCluTimeZposD2",
"ETL cluster ToA (+Z, Second Disk);ToA [ns]", 250, 0, 25);
664 "ETL cluster time error (-Z, Single(topo1D)/First(topo2D) Disk);#sigma_{t} [ns]",
669 ibook.
book1D(
"EtlCluTimeErrorZnegD2",
"ETL cluster time error (-Z, Second Disk);#sigma_{t} [ns]", 100, 0, 0.1);
671 "ETL cluster time error (+Z, Single(topo1D)/First(topo2D) Disk);#sigma_{t} [ns]",
676 ibook.
book1D(
"EtlCluTimeErrorZposD2",
"ETL cluster time error (+Z, Second Disk);#sigma_{t} [ns]", 100, 0, 0.1);
678 "EtlCluEnergyZnegD1",
"ETL cluster energy (-Z, Single(topo1D)/First(topo2D) Disk);E_{RECO} [MeV]", 100, 0, 10);
680 ibook.
book1D(
"EtlCluEnergyZnegD2",
"ETL cluster energy (-Z, Second Disk);E_{RECO} [MeV]", 100, 0, 10);
682 "EtlCluEnergyZposD1",
"ETL cluster energy (+Z, Single(topo1D)/First(topo2D) Disk);E_{RECO} [MeV]", 100, 0, 10);
684 ibook.
book1D(
"EtlCluEnergyZposD2",
"ETL cluster energy (+Z, Second Disk);E_{RECO} [MeV]", 100, 0, 10);
686 "EtlCluPhiZnegD1",
"ETL cluster #phi (-Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad]", 126, -3.2, 3.2);
688 ibook.
book1D(
"EtlCluPhiZnegD2",
"ETL cluster #phi (-Z, Second Disk);#phi_{RECO} [rad]", 126, -3.2, 3.2);
690 "EtlCluPhiZposD1",
"ETL cluster #phi (+Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad]", 126, -3.2, 3.2);
692 ibook.
book1D(
"EtlCluPhiZposD2",
"ETL cluster #phi (+Z, Second Disk);#phi_{RECO} [rad]", 126, -3.2, 3.2);
694 "EtlCluEtaZnegD1",
"ETL cluster #eta (-Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO}", 100, -3.2, -1.4);
695 meCluEta_[1] = ibook.
book1D(
"EtlCluEtaZnegD2",
"ETL cluster #eta (-Z, Second Disk);#eta_{RECO}", 100, -3.2, -1.4);
697 "EtlCluEtaZposD1",
"ETL cluster #eta (+Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO}", 100, 1.4, 3.2);
698 meCluEta_[3] = ibook.
book1D(
"EtlCluEtaZposD2",
"ETL cluster #eta (+Z, Second Disk);#eta_{RECO}", 100, 1.4, 3.2);
700 "EtlCluHitNumberZnegD1",
"ETL hits per cluster (-Z, Single(topo1D)/First(topo2D) Disk);Cluster size", 10, 0, 10);
702 ibook.
book1D(
"EtlCluHitNumberZnegD2",
"ETL hits per cluster (-Z, Second Disk);Cluster size", 10, 0, 10);
704 "EtlCluHitNumberZposD1",
"ETL hits per cluster (+Z, Single(topo1D)/First(topo2D) Disk);Cluster size", 10, 0, 10);
706 ibook.
book1D(
"EtlCluHitNumberZposD2",
"ETL hits per cluster (+Z, Second Disk);Cluster size", 10, 0, 10);
708 ibook.
book2D(
"EtlCluOccupancyZnegD1",
709 "ETL cluster X vs Y (-Z, Single(topo1D)/First(topo2D) Disk);X_{RECO} [cm]; Y_{RECO} [cm]",
717 "ETL cluster X vs Y (-Z, Second Disk);X_{RECO} [cm]; Y_{RECO} [cm]",
725 ibook.
book2D(
"EtlCluOccupancyZposD1",
726 "ETL cluster X vs Y (+Z, Single(topo1D)/First(topo2D) Disk);X_{RECO} [cm]; Y_{RECO} [cm]",
734 "ETL cluster X vs Y (+Z, Second Disk);X_{RECO} [cm]; Y_{RECO} [cm]",
751 desc.add<
double>(
"hitMinimumEnergy1Dis", 1.);
752 desc.add<
double>(
"hitMinimumEnergy2Dis", 0.001);
753 desc.add<
bool>(
"LocalPositionDebug",
false);
755 descriptions.
add(
"etlLocalReco",
desc);
MonitorElement * meTimeRes_
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * meHitTimeError_[4]
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
constexpr NumType convertUnitsTo(long double desiredUnits, NumType val)
virtual void setCurrentFolder(std::string const &fullpath)
MonitorElement * meHitYlocal_[2]
virtual const Topology & topology() const
MonitorElement * meLocalOccupancy_[2]
Detector identifier class for the Endcap Timing Layer.
MonitorElement * meHitY_[4]
void analyze(const edm::Event &, const edm::EventSetup &) override
MonitorElement * meHitEvsPhi_[4]
MonitorElement * meHitTvsPhi_[4]
int getMTDTopologyMode() const
MonitorElement * meHitXlocal_[2]
MonitorElement * meHitEnergy_[4]
const std::string folder_
edm::EDGetTokenT< FTLClusterCollection > etlRecCluToken_
#define DEFINE_FWK_MODULE(type)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
MonitorElement * meCluPhi_[4]
MonitorElement * meEnergyRes_
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 * meHitZ_[4]
ETLDetId geographicalId() const
MonitorElement * meCluEta_[4]
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
edm::EDGetTokenT< CrossingFrame< PSimHit > > etlSimHitsToken_
MonitorElement * meHitTime_[4]
MonitorElement * meHitX_[4]
MonitorElement * meOccupancy_[4]
MonitorElement * meCluTimeError_[4]
MonitorElement * meCluOccupancy_[4]
MonitorElement * meCluTime_[4]
auto makeValid(const U &iOtherHandleType) noexcept(false)
ESTransientHandle< T > getTransientHandle(const ESGetToken< T, R > &iToken) const
MonitorElement * meCluEnergy_[4]
const float hitMinEnergy2Dis_
constexpr uint32_t rawId() const
get the raw id
MonitorElement * meNhits_[4]
~EtlLocalRecoValidation() override
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
MonitorElement * meTPullvsEta_
virtual float localY(float mpY) const =0
MonitorElement * meHitTvsE_[4]
T getParameter(std::string const &) const
edm::ESGetToken< MTDTopology, MTDTopologyRcd > mtdtopoToken_
MonitorElement * meHitTvsEta_[4]
MonitorElement * meHitEvsEta_[4]
virtual float localX(float mpX) const =0
Abs< T >::type abs(const T &t)
const float hitMinEnergy1Dis_
MonitorElement * meHitEta_[4]
EtlLocalRecoValidation(const edm::ParameterSet &)
MonitorElement * meCluHits_[4]
MonitorElement * meHitPhi_[4]
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
const bool LocalPosDebug_
edm::EDGetTokenT< FTLRecHitCollection > etlRecHitsToken_
MonitorElement * meTPullvsE_