CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
BtlLocalRecoValidation Class Reference

#include <Validation/MtdValidation/plugins/BtlLocalRecoValidation.cc>

Inheritance diagram for BtlLocalRecoValidation:
DQMEDAnalyzer edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >

Public Member Functions

 BtlLocalRecoValidation (const edm::ParameterSet &)
 
 ~BtlLocalRecoValidation () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
void beginStream (edm::StreamID id) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
void endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static void globalEndJob (DQMEDAnalyzerGlobalCache const *)
 
static void globalEndLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup, LuminosityBlockContext const *context)
 
static void globalEndRunProduce (edm::Run &run, edm::EventSetup const &setup, RunContext const *context)
 
static std::unique_ptr< DQMEDAnalyzerGlobalCacheinitializeGlobalCache (edm::ParameterSet const &)
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
bool isSameCluster (const FTLCluster &, const FTLCluster &)
 

Private Attributes

edm::EDGetTokenT< FTLClusterCollectionbtlRecCluToken_
 
edm::EDGetTokenT< FTLRecHitCollectionbtlRecHitsToken_
 
edm::EDGetTokenT< CrossingFrame< PSimHit > > btlSimHitsToken_
 
edm::EDGetTokenT< FTLUncalibratedRecHitCollectionbtlUncalibRecHitsToken_
 
const edm::ESGetToken< MTDClusterParameterEstimator, MTDCPERecordcpeToken_
 
const std::string folder_
 
const double hitMinAmplitude_
 
const double hitMinEnergy_
 
MonitorElementmeCluCentralLocalYRes_
 
MonitorElementmeCluCentralLocalYResZGlobMinus_
 
MonitorElementmeCluCentralLocalYResZGlobPlus_
 
MonitorElementmeCluEnergy_
 
MonitorElementmeCluEnergyRes_
 
MonitorElementmeCluEnergyvsEta_
 
MonitorElementmeCluEta_
 
MonitorElementmeCluForwardLocalYRes_
 
MonitorElementmeCluForwardMinusLocalYRes_
 
MonitorElementmeCluForwardPlusLocalYRes_
 
MonitorElementmeCluHits_
 
MonitorElementmeCluHitsvsEta_
 
MonitorElementmeCluLocalXPull_
 
MonitorElementmeCluLocalXRes_
 
MonitorElementmeCluLocalYPullZGlobMinus_
 
MonitorElementmeCluLocalYPullZGlobPlus_
 
MonitorElementmeCluLocalYResZGlobMinus_
 
MonitorElementmeCluLocalYResZGlobPlus_
 
MonitorElementmeCluMultiCrystalLocalYRes_
 
MonitorElementmeCluMultiCrystalLocalYResZGlobMinus_
 
MonitorElementmeCluMultiCrystalLocalYResZGlobPlus_
 
MonitorElementmeCluPhi_
 
MonitorElementmeCluPhiRes_
 
MonitorElementmeCluRhoRes_
 
MonitorElementmeCluSingCrystalLocalYRes_
 
MonitorElementmeCluSingCrystalLocalYResZGlobMinus_
 
MonitorElementmeCluSingCrystalLocalYResZGlobPlus_
 
MonitorElementmeCluTime_
 
MonitorElementmeCluTimeError_
 
MonitorElementmeCluTimeRes_
 
MonitorElementmeCluTPullvsE_
 
MonitorElementmeCluTPullvsEta_
 
MonitorElementmeCluTResvsE_
 
MonitorElementmeCluTResvsEta_
 
MonitorElementmeCluXLocalErr_
 
MonitorElementmeCluYLocalErr_
 
MonitorElementmeCluYXLocal_
 
MonitorElementmeCluYXLocalSim_
 
MonitorElementmeCluZPull_
 
MonitorElementmeCluZRes_
 
MonitorElementmeCluZvsPhi_
 
MonitorElementmeEnergyRelResVsE_
 
MonitorElementmeEnergyRes_
 
MonitorElementmeHitEnergy_
 
MonitorElementmeHitEta_
 
MonitorElementmeHitEvsEta_
 
MonitorElementmeHitEvsPhi_
 
MonitorElementmeHitEvsZ_
 
MonitorElementmeHitLogEnergy_
 
MonitorElementmeHitLongPos_
 
MonitorElementmeHitPhi_
 
MonitorElementmeHitTime_
 
MonitorElementmeHitTimeError_
 
MonitorElementmeHitTvsE_
 
MonitorElementmeHitTvsEta_
 
MonitorElementmeHitTvsPhi_
 
MonitorElementmeHitTvsZ_
 
MonitorElementmeHitXlocal_
 
MonitorElementmeHitYlocal_
 
MonitorElementmeHitZ_
 
MonitorElementmeHitZlocal_
 
MonitorElementmeLocalOccupancy_
 
MonitorElementmeLongPosPull_
 
MonitorElementmeLongPosPullvsE_
 
MonitorElementmeLongPosPullvsEta_
 
MonitorElementmeNclusters_
 
MonitorElementmeNevents_
 
MonitorElementmeNhits_
 
MonitorElementmeOccupancy_
 
MonitorElementmeTimeRes_
 
MonitorElementmeTimeResEta_ [nBinsEta_]
 
MonitorElementmeTimeResEtavsQ_ [nBinsEta_][nBinsEtaQ_]
 
MonitorElementmeTimeResQ_ [nBinsQ_]
 
MonitorElementmeTimeResQvsEta_ [nBinsQ_][nBinsQEta_]
 
MonitorElementmeTimeResVsE_
 
MonitorElementmeTPullvsE_
 
MonitorElementmeTPullvsEta_
 
MonitorElementmeUncEneLVsX_
 
MonitorElementmeUncEneRVsX_
 
MonitorElementmeUncTimeLVsX_
 
MonitorElementmeUncTimeRVsX_
 
MonitorElementmeUnmatchedCluEnergy_
 
const edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecordmtdgeoToken_
 
const edm::ESGetToken< MTDTopology, MTDTopologyRcdmtdtopoToken_
 
edm::EDGetTokenT< MTDTrackingDetSetVectormtdTrackingHitToken_
 
const bool optionalPlots_
 
const bool uncalibRecHitsPlots_
 

Static Private Attributes

static constexpr float binsEtaQ_ [nBinsEtaQ_+1] = {0., 30., 60., 90., 120., 150., 360., 600.}
 
static constexpr float binsQEta_ [nBinsQEta_+1] = {0., 0.65, 1.15, 1.55}
 
static constexpr float binWidthEta_ = 0.05
 
static constexpr float binWidthQ_ = 30.
 
static constexpr int nBinsEta_ = 31
 
static constexpr int nBinsEtaQ_ = 7
 
static constexpr int nBinsQ_ = 20
 
static constexpr int nBinsQEta_ = 3
 

Additional Inherited Members

- Public Types inherited from DQMEDAnalyzer
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 
- Protected Member Functions inherited from DQMEDAnalyzer
uint64_t meId () const
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 
unsigned int streamId_
 

Detailed Description

Description: BTL RECO hits and clusters validation

Implementation: [Notes on implementation]

Definition at line 50 of file BtlLocalRecoValidation.cc.

Constructor & Destructor Documentation

◆ BtlLocalRecoValidation()

BtlLocalRecoValidation::BtlLocalRecoValidation ( const edm::ParameterSet iConfig)
explicit

Definition at line 211 of file BtlLocalRecoValidation.cc.

References btlRecCluToken_, btlRecHitsToken_, btlSimHitsToken_, btlUncalibRecHitsToken_, edm::ParameterSet::getParameter(), and mtdTrackingHitToken_.

212  : folder_(iConfig.getParameter<std::string>("folder")),
213  hitMinEnergy_(iConfig.getParameter<double>("HitMinimumEnergy")),
214  optionalPlots_(iConfig.getParameter<bool>("optionalPlots")),
215  uncalibRecHitsPlots_(iConfig.getParameter<bool>("UncalibRecHitsPlots")),
216  hitMinAmplitude_(iConfig.getParameter<double>("HitMinimumAmplitude")),
217  mtdgeoToken_(esConsumes<MTDGeometry, MTDDigiGeometryRecord>()),
218  mtdtopoToken_(esConsumes<MTDTopology, MTDTopologyRcd>()),
219  cpeToken_(esConsumes<MTDClusterParameterEstimator, MTDCPERecord>(edm::ESInputTag("", "MTDCPEBase"))) {
220  btlRecHitsToken_ = consumes<FTLRecHitCollection>(iConfig.getParameter<edm::InputTag>("recHitsTag"));
222  consumes<FTLUncalibratedRecHitCollection>(iConfig.getParameter<edm::InputTag>("uncalibRecHitsTag"));
223  btlSimHitsToken_ = consumes<CrossingFrame<PSimHit> >(iConfig.getParameter<edm::InputTag>("simHitsTag"));
224  btlRecCluToken_ = consumes<FTLClusterCollection>(iConfig.getParameter<edm::InputTag>("recCluTag"));
225  mtdTrackingHitToken_ = consumes<MTDTrackingDetSetVector>(iConfig.getParameter<edm::InputTag>("trkHitTag"));
226 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::ESGetToken< MTDTopology, MTDTopologyRcd > mtdtopoToken_
const edm::ESGetToken< MTDClusterParameterEstimator, MTDCPERecord > cpeToken_
edm::EDGetTokenT< MTDTrackingDetSetVector > mtdTrackingHitToken_
edm::EDGetTokenT< FTLClusterCollection > btlRecCluToken_
edm::EDGetTokenT< FTLUncalibratedRecHitCollection > btlUncalibRecHitsToken_
const edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
edm::EDGetTokenT< FTLRecHitCollection > btlRecHitsToken_
edm::EDGetTokenT< CrossingFrame< PSimHit > > btlSimHitsToken_

◆ ~BtlLocalRecoValidation()

BtlLocalRecoValidation::~BtlLocalRecoValidation ( )
override

Definition at line 228 of file BtlLocalRecoValidation.cc.

228 {}

Member Function Documentation

◆ analyze()

void BtlLocalRecoValidation::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 231 of file BtlLocalRecoValidation.cc.

References funct::abs(), binsEtaQ_, binsQEta_, binWidthEta_, binWidthQ_, btlRecCluToken_, btlRecHitsToken_, btlSimHitsToken_, btlUncalibRecHitsToken_, AlCaHLTBitMon_QueryRunRegistry::comp, angle_units::operators::convertMmToCm(), geant_units::operators::convertUnitsTo(), cpeToken_, MTDTopologyMode::crysLayoutFromTopoMode(), TauDecayModes::dec, hcalRecHitTable_cff::detId, hcalRecHitTable_cff::energy, muonRecoAnalyzer_cfi::etaBin, Exception, dqm::impl::MonitorElement::Fill(), relativeConstraints::geom, edm::EventSetup::getData(), MTDTopology::getMTDTopologyMode(), edm::EventSetup::getTransientHandle(), hitMinAmplitude_, hitMinEnergy_, hfClusterShapes_cfi::hits, iEvent, createfilelist::int, isSameCluster(), LogDebug, edm::makeValid(), meCluCentralLocalYRes_, meCluCentralLocalYResZGlobMinus_, meCluCentralLocalYResZGlobPlus_, meCluEnergy_, meCluEnergyRes_, meCluEnergyvsEta_, meCluEta_, meCluForwardLocalYRes_, meCluForwardMinusLocalYRes_, meCluForwardPlusLocalYRes_, meCluHits_, meCluHitsvsEta_, meCluLocalXPull_, meCluLocalXRes_, meCluLocalYPullZGlobMinus_, meCluLocalYPullZGlobPlus_, meCluLocalYResZGlobMinus_, meCluLocalYResZGlobPlus_, meCluMultiCrystalLocalYRes_, meCluMultiCrystalLocalYResZGlobMinus_, meCluMultiCrystalLocalYResZGlobPlus_, meCluPhi_, meCluPhiRes_, meCluRhoRes_, meCluSingCrystalLocalYRes_, meCluSingCrystalLocalYResZGlobMinus_, meCluSingCrystalLocalYResZGlobPlus_, meCluTime_, meCluTimeError_, meCluTimeRes_, meCluTPullvsE_, meCluTPullvsEta_, meCluTResvsE_, meCluTResvsEta_, meCluXLocalErr_, meCluYLocalErr_, meCluYXLocal_, meCluYXLocalSim_, meCluZPull_, meCluZRes_, meCluZvsPhi_, meEnergyRelResVsE_, meEnergyRes_, meHitEnergy_, meHitEta_, meHitEvsEta_, meHitEvsPhi_, meHitEvsZ_, meHitLogEnergy_, meHitLongPos_, meHitPhi_, meHitTime_, meHitTimeError_, meHitTvsE_, meHitTvsEta_, meHitTvsPhi_, meHitTvsZ_, meHitXlocal_, meHitYlocal_, meHitZ_, meHitZlocal_, meLocalOccupancy_, meLongPosPull_, meLongPosPullvsE_, meLongPosPullvsEta_, meNclusters_, meNevents_, meNhits_, meOccupancy_, meTimeRes_, meTimeResEta_, meTimeResEtavsQ_, meTimeResQ_, meTimeResQvsEta_, meTimeResVsE_, meTPullvsE_, meTPullvsEta_, meUncEneLVsX_, meUncEneRVsX_, meUncTimeLVsX_, meUncTimeRVsX_, meUnmatchedCluEnergy_, mtdgeoToken_, MTDDetId::mtdRR(), MTDDetId::mtdSide(), mtdtopoToken_, mtdTrackingHitToken_, nBinsEta_, nBinsEtaQ_, nBinsQ_, nBinsQEta_, nHits, RectangularMTDTopology::nrows(), optionalPlots_, RectangularMTDTopology::pixelToModuleLocalPoint(), ApeEstimator_cff::qBin, nano_mu_digi_cff::rawId, DetId::rawId(), rpcPointValidation_cfi::recHit, rpcPointValidation_cfi::simHit, ProxyMTDTopology::specificTopology(), mathSSE::sqrt(), hcalRecHitTable_cff::time, GeomDet::toGlobal(), GeomDet::topology(), mkLumiAveragedPlots::tuple, uncalibRecHitsPlots_, x, PV3DBase< T, PVType, FrameType >::x(), hit::x, y, PV3DBase< T, PVType, FrameType >::y(), hit::y, z, and PV3DBase< T, PVType, FrameType >::z().

231  {
232  using namespace edm;
233  using namespace std;
234  using namespace geant_units::operators;
235 
236  auto geometryHandle = iSetup.getTransientHandle(mtdgeoToken_);
237  const MTDGeometry* geom = geometryHandle.product();
238 
239  auto topologyHandle = iSetup.getTransientHandle(mtdtopoToken_);
240  const MTDTopology* topology = topologyHandle.product();
241 
242  auto const& cpe = iSetup.getData(cpeToken_);
243 
244  auto btlRecHitsHandle = makeValid(iEvent.getHandle(btlRecHitsToken_));
245  auto btlSimHitsHandle = makeValid(iEvent.getHandle(btlSimHitsToken_));
246  auto btlRecCluHandle = makeValid(iEvent.getHandle(btlRecCluToken_));
247  auto mtdTrkHitHandle = makeValid(iEvent.getHandle(mtdTrackingHitToken_));
248  MixCollection<PSimHit> btlSimHits(btlSimHitsHandle.product());
249 
250 #ifdef EDM_ML_DEBUG
251  for (const auto& hits : *mtdTrkHitHandle) {
252  if (MTDDetId(hits.id()).mtdSubDetector() == MTDDetId::MTDType::BTL) {
253  LogDebug("BtlLocalRecoValidation") << "MTD cluster DetId " << hits.id() << " # cluster " << hits.size();
254  for (const auto& hit : hits) {
255  LogDebug("BtlLocalRecoValidation")
256  << "MTD_TRH: " << hit.localPosition().x() << "," << hit.localPosition().y() << " : "
257  << hit.localPositionError().xx() << "," << hit.localPositionError().yy() << " : " << hit.time() << " : "
258  << hit.timeError();
259  }
260  }
261  }
262 #endif
263 
264  // --- Loop over the BTL SIM hits
265  std::unordered_map<uint32_t, MTDHit> m_btlSimHits;
266  for (auto const& simHit : btlSimHits) {
267  // --- Use only hits compatible with the in-time bunch-crossing
268  if (simHit.tof() < 0 || simHit.tof() > 25.)
269  continue;
270 
271  DetId id = simHit.detUnitId();
272 
273  auto simHitIt = m_btlSimHits.emplace(id.rawId(), MTDHit()).first;
274 
275  // --- Accumulate the energy (in MeV) of SIM hits in the same detector cell
276  (simHitIt->second).energy += convertUnitsTo(0.001_MeV, simHit.energyLoss());
277 
278  // --- Get the time of the first SIM hit in the cell
279  if ((simHitIt->second).time == 0 || simHit.tof() < (simHitIt->second).time) {
280  (simHitIt->second).time = simHit.tof();
281 
282  auto hit_pos = simHit.localPosition();
283  (simHitIt->second).x = hit_pos.x();
284  (simHitIt->second).y = hit_pos.y();
285  (simHitIt->second).z = hit_pos.z();
286  }
287 
288  } // simHit loop
289 
290  // --- Loop over the BTL RECO hits
291  unsigned int n_reco_btl = 0;
292  for (const auto& recHit : *btlRecHitsHandle) {
293  BTLDetId detId = recHit.id();
294  DetId geoId = detId.geographicalId(MTDTopologyMode::crysLayoutFromTopoMode(topology->getMTDTopologyMode()));
295  const MTDGeomDet* thedet = geom->idToDet(geoId);
296  if (thedet == nullptr)
297  throw cms::Exception("BtlLocalRecoValidation") << "GeographicalID: " << std::hex << geoId.rawId() << " ("
298  << detId.rawId() << ") is invalid!" << std::dec << std::endl;
299  const ProxyMTDTopology& topoproxy = static_cast<const ProxyMTDTopology&>(thedet->topology());
300  const RectangularMTDTopology& topo = static_cast<const RectangularMTDTopology&>(topoproxy.specificTopology());
301 
302  Local3DPoint local_point(0., 0., 0.);
303  local_point = topo.pixelToModuleLocalPoint(local_point, detId.row(topo.nrows()), detId.column(topo.nrows()));
304  const auto& global_point = thedet->toGlobal(local_point);
305 
306  meHitEnergy_->Fill(recHit.energy());
307  meHitLogEnergy_->Fill(log10(recHit.energy()));
308  meHitTime_->Fill(recHit.time());
309  meHitTimeError_->Fill(recHit.timeError());
310  meHitLongPos_->Fill(recHit.position());
311 
312  meOccupancy_->Fill(global_point.z(), global_point.phi());
313 
314  if (optionalPlots_) {
315  meLocalOccupancy_->Fill(local_point.x() + recHit.position(), local_point.y());
316  }
317  meHitXlocal_->Fill(local_point.x());
318  meHitYlocal_->Fill(local_point.y());
319  meHitZlocal_->Fill(local_point.z());
320  meHitZ_->Fill(global_point.z());
321  meHitPhi_->Fill(global_point.phi());
322  meHitEta_->Fill(global_point.eta());
323 
324  meHitTvsE_->Fill(recHit.energy(), recHit.time());
325  meHitEvsPhi_->Fill(global_point.phi(), recHit.energy());
326  meHitEvsEta_->Fill(global_point.eta(), recHit.energy());
327  meHitEvsZ_->Fill(global_point.z(), recHit.energy());
328  meHitTvsPhi_->Fill(global_point.phi(), recHit.time());
329  meHitTvsEta_->Fill(global_point.eta(), recHit.time());
330  meHitTvsZ_->Fill(global_point.z(), recHit.time());
331 
332  // Resolution histograms
333  if (m_btlSimHits.count(detId.rawId()) == 1 && m_btlSimHits[detId.rawId()].energy > hitMinEnergy_) {
334  float longpos_res = recHit.position() - convertMmToCm(m_btlSimHits[detId.rawId()].x);
335  float time_res = recHit.time() - m_btlSimHits[detId.rawId()].time;
336  float energy_res = recHit.energy() - m_btlSimHits[detId.rawId()].energy;
337 
338  Local3DPoint local_point_sim(convertMmToCm(m_btlSimHits[detId.rawId()].x),
339  convertMmToCm(m_btlSimHits[detId.rawId()].y),
340  convertMmToCm(m_btlSimHits[detId.rawId()].z));
341  local_point_sim =
342  topo.pixelToModuleLocalPoint(local_point_sim, detId.row(topo.nrows()), detId.column(topo.nrows()));
343  const auto& global_point_sim = thedet->toGlobal(local_point_sim);
344 
345  meTimeRes_->Fill(time_res);
346  meTimeResVsE_->Fill(recHit.energy(), time_res);
347  meEnergyRes_->Fill(energy_res);
348  meEnergyRelResVsE_->Fill(recHit.energy(), energy_res / recHit.energy());
349 
350  meLongPosPull_->Fill(longpos_res / recHit.positionError());
351  meLongPosPullvsEta_->Fill(std::abs(global_point_sim.eta()), longpos_res / recHit.positionError());
352  meLongPosPullvsE_->Fill(m_btlSimHits[detId.rawId()].energy, longpos_res / recHit.positionError());
353 
354  meTPullvsEta_->Fill(std::abs(global_point_sim.eta()), time_res / recHit.timeError());
355  meTPullvsE_->Fill(m_btlSimHits[detId.rawId()].energy, time_res / recHit.timeError());
356  }
357 
358  n_reco_btl++;
359 
360  } // recHit loop
361 
362  if (n_reco_btl > 0)
363  meNhits_->Fill(log10(n_reco_btl));
364 
365  // --- Loop over the BTL RECO clusters ---
366  unsigned int n_clus_btl(0);
367  for (const auto& DetSetClu : *btlRecCluHandle) {
368  for (const auto& cluster : DetSetClu) {
369  if (cluster.energy() < hitMinEnergy_)
370  continue;
371  BTLDetId cluId = cluster.id();
372  DetId detIdObject(cluId);
373  const auto& genericDet = geom->idToDetUnit(detIdObject);
374  if (genericDet == nullptr) {
375  throw cms::Exception("BtlLocalRecoValidation")
376  << "GeographicalID: " << std::hex << cluId << " is invalid!" << std::dec << std::endl;
377  }
378  n_clus_btl++;
379 
380  const ProxyMTDTopology& topoproxy = static_cast<const ProxyMTDTopology&>(genericDet->topology());
381  const RectangularMTDTopology& topo = static_cast<const RectangularMTDTopology&>(topoproxy.specificTopology());
382 
383  MTDClusterParameterEstimator::ReturnType tuple = cpe.getParameters(cluster, *genericDet);
384 
385  // --- Cluster position in the module reference frame
386  LocalPoint local_point(std::get<0>(tuple));
387  const auto& global_point = genericDet->toGlobal(local_point);
388 
389  meCluEnergy_->Fill(cluster.energy());
390  meCluTime_->Fill(cluster.time());
391  meCluTimeError_->Fill(cluster.timeError());
392  meCluPhi_->Fill(global_point.phi());
393  meCluEta_->Fill(global_point.eta());
394  meCluZvsPhi_->Fill(global_point.z(), global_point.phi());
395  meCluHits_->Fill(cluster.size());
396 
397  // --- Get the SIM hits associated to the cluster and calculate
398  // the cluster SIM energy, time and position
399 
400  double cluEneSIM = 0.;
401  double cluTimeSIM = 0.;
402  double cluLocXSIM = 0.;
403  double cluLocYSIM = 0.;
404  double cluLocZSIM = 0.;
405 
406  for (int ihit = 0; ihit < cluster.size(); ++ihit) {
407  int hit_row = cluster.minHitRow() + cluster.hitOffset()[ihit * 2];
408  int hit_col = cluster.minHitCol() + cluster.hitOffset()[ihit * 2 + 1];
409 
410  // Match the RECO hit to the corresponding SIM hit
411  for (const auto& recHit : *btlRecHitsHandle) {
412  BTLDetId hitId(recHit.id().rawId());
413 
414  if (m_btlSimHits.count(hitId.rawId()) == 0)
415  continue;
416 
417  // Check the hit position
418  if (hitId.mtdSide() != cluId.mtdSide() || hitId.mtdRR() != cluId.mtdRR() || recHit.row() != hit_row ||
419  recHit.column() != hit_col)
420  continue;
421 
422  // Check the hit energy and time
423  if (recHit.energy() != cluster.hitENERGY()[ihit] || recHit.time() != cluster.hitTIME()[ihit])
424  continue;
425 
426  // SIM hit's position in the module reference frame
427  Local3DPoint local_point_sim(convertMmToCm(m_btlSimHits[recHit.id().rawId()].x),
428  convertMmToCm(m_btlSimHits[recHit.id().rawId()].y),
429  convertMmToCm(m_btlSimHits[recHit.id().rawId()].z));
430  local_point_sim =
431  topo.pixelToModuleLocalPoint(local_point_sim, hitId.row(topo.nrows()), hitId.column(topo.nrows()));
432 
433  // Calculate the SIM cluster's position in the module reference frame
434  cluLocXSIM += local_point_sim.x() * m_btlSimHits[recHit.id().rawId()].energy;
435  cluLocYSIM += local_point_sim.y() * m_btlSimHits[recHit.id().rawId()].energy;
436  cluLocZSIM += local_point_sim.z() * m_btlSimHits[recHit.id().rawId()].energy;
437 
438  // Calculate the SIM cluster energy and time
439  cluEneSIM += m_btlSimHits[recHit.id().rawId()].energy;
440  cluTimeSIM += m_btlSimHits[recHit.id().rawId()].time * m_btlSimHits[recHit.id().rawId()].energy;
441 
442  break;
443 
444  } // recHit loop
445 
446  } // ihit loop
447 
448  // Find the MTDTrackingRecHit corresponding to the cluster
449  const MTDTrackingRecHit* comp(nullptr);
450  bool matchClu = false;
451  const auto& trkHits = (*mtdTrkHitHandle)[detIdObject];
452  for (const auto& trkHit : trkHits) {
453  if (isSameCluster(trkHit.mtdCluster(), cluster)) {
454  comp = trkHit.clone();
455  matchClu = true;
456  break;
457  }
458  }
459  if (!matchClu) {
460  edm::LogWarning("BtlLocalRecoValidation")
461  << "No valid TrackingRecHit corresponding to cluster, detId = " << detIdObject.rawId();
462  }
463 
464  // --- Fill the cluster resolution histograms
465  if (cluTimeSIM > 0. && cluEneSIM > 0.) {
466  cluTimeSIM /= cluEneSIM;
467 
468  Local3DPoint cluLocalPosSIM(cluLocXSIM / cluEneSIM, cluLocYSIM / cluEneSIM, cluLocZSIM / cluEneSIM);
469  const auto& cluGlobalPosSIM = genericDet->toGlobal(cluLocalPosSIM);
470 
471  float time_res = cluster.time() - cluTimeSIM;
472  float energy_res = cluster.energy() - cluEneSIM;
473  meCluTimeRes_->Fill(time_res);
474  meCluEnergyRes_->Fill(energy_res);
475 
476  float rho_res = global_point.perp() - cluGlobalPosSIM.perp();
477  float phi_res = global_point.phi() - cluGlobalPosSIM.phi();
478 
479  meCluRhoRes_->Fill(rho_res);
480  meCluPhiRes_->Fill(phi_res);
481 
482  float xlocal_res = local_point.x() - cluLocalPosSIM.x();
483  float ylocal_res = local_point.y() - cluLocalPosSIM.y();
484 
485  float z_res = global_point.z() - cluGlobalPosSIM.z();
486 
487  meCluZRes_->Fill(z_res);
488 
489  if (matchClu && comp != nullptr) {
490  meCluLocalXRes_->Fill(xlocal_res);
491 
492  if (global_point.z() > 0) {
493  meCluLocalYResZGlobPlus_->Fill(ylocal_res);
494  meCluLocalYPullZGlobPlus_->Fill(ylocal_res / std::sqrt(comp->localPositionError().yy()));
495  } else {
496  meCluLocalYResZGlobMinus_->Fill(ylocal_res);
497  meCluLocalYPullZGlobMinus_->Fill(ylocal_res / std::sqrt(comp->localPositionError().yy()));
498  }
499  if (optionalPlots_) {
500  if (cluster.size() == 1) { // single-crystal clusters
501  meCluSingCrystalLocalYRes_->Fill(ylocal_res);
502  if (global_point.z() > 0) {
504  } else {
506  }
507  } // end of single-crystal clusters
508  else {
509  if (cluster.size() > 1) { // multi-crystal clusters
510  meCluMultiCrystalLocalYRes_->Fill(ylocal_res);
511  if (global_point.z() > 0) {
513  } else {
515  }
516  }
517  } // end of multi-crystal clusters
518 
519  if (abs(global_point.eta()) < 0.3) {
520  meCluCentralLocalYRes_->Fill(ylocal_res);
521  if (global_point.z() > 0) {
523  } else {
525  }
526 
527  } else {
528  if (abs(global_point.eta()) > 1) {
529  meCluForwardLocalYRes_->Fill(ylocal_res);
530  if (global_point.z() > 0) {
531  meCluForwardPlusLocalYRes_->Fill(ylocal_res);
532  } else {
533  meCluForwardMinusLocalYRes_->Fill(ylocal_res);
534  }
535  }
536  }
537 
538  meCluYXLocal_->Fill(local_point.x(), local_point.y());
539  meCluYXLocalSim_->Fill(cluLocalPosSIM.x(), cluLocalPosSIM.y());
540 
541  } //end of optional plots
542 
543  meCluLocalXPull_->Fill(xlocal_res / std::sqrt(comp->localPositionError().xx()));
544  meCluZPull_->Fill(z_res / std::sqrt(comp->globalPositionError().czz()));
545  meCluXLocalErr_->Fill(std::sqrt(comp->localPositionError().xx()));
546  meCluYLocalErr_->Fill(std::sqrt(comp->localPositionError().yy()));
547  }
548 
549  meCluEnergyvsEta_->Fill(std::abs(cluGlobalPosSIM.eta()), cluster.energy());
550  meCluHitsvsEta_->Fill(std::abs(cluGlobalPosSIM.eta()), cluster.size());
551 
552  meCluTResvsEta_->Fill(std::abs(cluGlobalPosSIM.eta()), time_res);
553  meCluTResvsE_->Fill(cluEneSIM, time_res);
554 
555  meCluTPullvsEta_->Fill(std::abs(cluGlobalPosSIM.eta()), time_res / cluster.timeError());
556  meCluTPullvsE_->Fill(cluEneSIM, time_res / cluster.timeError());
557 
558  } // if ( cluTimeSIM > 0. && cluEneSIM > 0. )
559  else {
560  meUnmatchedCluEnergy_->Fill(std::log10(cluster.energy()));
561  }
562 
563  } // cluster loop
564 
565  } // DetSetClu loop
566 
567  if (n_clus_btl > 0)
568  meNclusters_->Fill(log10(n_clus_btl));
569 
570  // --- This is to count the number of processed events, needed in the harvesting step
571  meNevents_->Fill(0.5);
572 
573  // --- Loop over the BTL Uncalibrated RECO hits
574  auto btlUncalibRecHitsHandle = makeValid(iEvent.getHandle(btlUncalibRecHitsToken_));
575 
576  for (const auto& uRecHit : *btlUncalibRecHitsHandle) {
577  BTLDetId detId = uRecHit.id();
578 
579  // --- Skip UncalibratedRecHits not matched to SimHits
580  if (m_btlSimHits.count(detId.rawId()) != 1)
581  continue;
582 
583  // --- Combine the information from the left and right BTL cell sides
584 
585  float nHits = 0.;
586  float hit_amplitude = 0.;
587  float hit_time = 0.;
588 
589  // left side:
590  if (uRecHit.amplitude().first > 0.) {
591  hit_amplitude += uRecHit.amplitude().first;
592  hit_time += uRecHit.time().first;
593  nHits += 1.;
594  }
595  // right side:
596  if (uRecHit.amplitude().second > 0.) {
597  hit_amplitude += uRecHit.amplitude().second;
598  hit_time += uRecHit.time().second;
599  nHits += 1.;
600  }
601 
602  hit_amplitude /= nHits;
603  hit_time /= nHits;
604 
605  // --- Fill the histograms
606 
607  if (hit_amplitude < hitMinAmplitude_)
608  continue;
609 
610  meUncEneRVsX_->Fill(uRecHit.position(), uRecHit.amplitude().first - hit_amplitude);
611  meUncEneLVsX_->Fill(uRecHit.position(), uRecHit.amplitude().second - hit_amplitude);
612 
613  meUncTimeRVsX_->Fill(uRecHit.position(), uRecHit.time().first - hit_time);
614  meUncTimeLVsX_->Fill(uRecHit.position(), uRecHit.time().second - hit_time);
615 
616  if (uncalibRecHitsPlots_) {
617  DetId geoId = detId.geographicalId(MTDTopologyMode::crysLayoutFromTopoMode(topology->getMTDTopologyMode()));
618  const MTDGeomDet* thedet = geom->idToDet(geoId);
619  if (thedet == nullptr)
620  throw cms::Exception("BtlLocalRecoValidation") << "GeographicalID: " << std::hex << geoId.rawId() << " ("
621  << detId.rawId() << ") is invalid!" << std::dec << std::endl;
622  const ProxyMTDTopology& topoproxy = static_cast<const ProxyMTDTopology&>(thedet->topology());
623  const RectangularMTDTopology& topo = static_cast<const RectangularMTDTopology&>(topoproxy.specificTopology());
624 
625  Local3DPoint local_point(0., 0., 0.);
626  local_point = topo.pixelToModuleLocalPoint(local_point, detId.row(topo.nrows()), detId.column(topo.nrows()));
627  const auto& global_point = thedet->toGlobal(local_point);
628 
629  float time_res = hit_time - m_btlSimHits[detId.rawId()].time;
630 
631  // amplitude histograms
632 
633  int qBin = (int)(hit_amplitude / binWidthQ_);
634  if (qBin > nBinsQ_ - 1)
635  qBin = nBinsQ_ - 1;
636 
637  meTimeResQ_[qBin]->Fill(time_res);
638 
639  int etaBin = 0;
640  for (int ibin = 1; ibin < nBinsQEta_; ++ibin)
641  if (fabs(global_point.eta()) >= binsQEta_[ibin] && fabs(global_point.eta()) < binsQEta_[ibin + 1])
642  etaBin = ibin;
643 
644  meTimeResQvsEta_[qBin][etaBin]->Fill(time_res);
645 
646  // eta histograms
647 
648  etaBin = (int)(fabs(global_point.eta()) / binWidthEta_);
649  if (etaBin > nBinsEta_ - 1)
650  etaBin = nBinsEta_ - 1;
651 
652  meTimeResEta_[etaBin]->Fill(time_res);
653 
654  qBin = 0;
655  for (int ibin = 1; ibin < nBinsEtaQ_; ++ibin)
656  if (hit_amplitude >= binsEtaQ_[ibin] && hit_amplitude < binsEtaQ_[ibin + 1])
657  qBin = ibin;
658 
659  meTimeResEtavsQ_[etaBin][qBin]->Fill(time_res);
660  }
661  } // uRecHit loop}
662 }
MonitorElement * meCluForwardMinusLocalYRes_
int getMTDTopologyMode() const
Definition: MTDTopology.h:27
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
const edm::ESGetToken< MTDTopology, MTDTopologyRcd > mtdtopoToken_
MonitorElement * meCluSingCrystalLocalYResZGlobMinus_
virtual const Topology & topology() const
Definition: GeomDet.cc:67
virtual const PixelTopology & specificTopology() const
MonitorElement * meCluLocalYResZGlobMinus_
MonitorElement * meCluSingCrystalLocalYRes_
const edm::ESGetToken< MTDClusterParameterEstimator, MTDCPERecord > cpeToken_
MonitorElement * meCluCentralLocalYResZGlobPlus_
MonitorElement * meCluForwardLocalYRes_
int mtdSide() const
Definition: MTDDetId.h:59
Definition: MTDHit.h:4
static constexpr float binWidthQ_
MonitorElement * meCluCentralLocalYResZGlobMinus_
MonitorElement * meCluMultiCrystalLocalYRes_
MonitorElement * meUnmatchedCluEnergy_
static constexpr int nBinsEtaQ_
LocalPoint pixelToModuleLocalPoint(const LocalPoint &plp, int row, int col) const
edm::EDGetTokenT< MTDTrackingDetSetVector > mtdTrackingHitToken_
MonitorElement * meCluMultiCrystalLocalYResZGlobMinus_
MonitorElement * meLongPosPullvsEta_
Detector identifier base class for the MIP Timing Layer.
Definition: MTDDetId.h:21
MonitorElement * meCluForwardPlusLocalYRes_
constexpr NumType convertUnitsTo(double desiredUnits, NumType val)
Definition: GeantUnits.h:73
bool isSameCluster(const FTLCluster &, const FTLCluster &)
void Fill(long long x)
T x() const
Definition: PV3DBase.h:59
int iEvent
Definition: GenABIO.cc:224
MonitorElement * meCluLocalYResZGlobPlus_
static constexpr float binWidthEta_
T sqrt(T t)
Definition: SSEVec.h:19
MonitorElement * meCluSingCrystalLocalYResZGlobPlus_
edm::EDGetTokenT< FTLClusterCollection > btlRecCluToken_
static constexpr float binsQEta_[nBinsQEta_+1]
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int mtdRR() const
Definition: MTDDetId.h:64
static constexpr int nBinsQEta_
int nrows() const override
MonitorElement * meLocalOccupancy_
MonitorElement * meTimeResEta_[nBinsEta_]
MonitorElement * meCluCentralLocalYRes_
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
edm::EDGetTokenT< FTLUncalibratedRecHitCollection > btlUncalibRecHitsToken_
const edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
Definition: DetId.h:17
constexpr NumType convertMmToCm(NumType millimeters)
Definition: angle_units.h:44
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
edm::EDGetTokenT< FTLRecHitCollection > btlRecHitsToken_
A 2D TrackerRecHit with time and time error information.
static constexpr int nBinsQ_
MonitorElement * meCluLocalYPullZGlobMinus_
MonitorElement * meTimeResQvsEta_[nBinsQ_][nBinsQEta_]
static constexpr float binsEtaQ_[nBinsEtaQ_+1]
MonitorElement * meCluLocalYPullZGlobPlus_
HLT enums.
MonitorElement * meTimeResEtavsQ_[nBinsEta_][nBinsEtaQ_]
Detector identifier class for the Barrel Timing Layer. The crystal count must start from 0...
Definition: BTLDetId.h:19
MonitorElement * meCluMultiCrystalLocalYResZGlobPlus_
ESTransientHandle< T > getTransientHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:141
static constexpr int nBinsEta_
BTLDetId::CrysLayout crysLayoutFromTopoMode(const int &topoMode)
Log< level::Warning, false > LogWarning
auto makeValid(const U &iOtherHandleType) noexcept(false)
Definition: ValidHandle.h:52
TupleMultiplicity< TrackerTraits > const *__restrict__ uint32_t nHits
edm::EDGetTokenT< CrossingFrame< PSimHit > > btlSimHitsToken_
MonitorElement * meTimeResQ_[nBinsQ_]
std::tuple< LocalPoint, LocalError, TimeValue, TimeValueError > ReturnType
#define LogDebug(id)

◆ bookHistograms()

void BtlLocalRecoValidation::bookHistograms ( DQMStore::IBooker ibook,
edm::Run const &  run,
edm::EventSetup const &  iSetup 
)
overrideprivatevirtual

Implements DQMEDAnalyzer.

Definition at line 665 of file BtlLocalRecoValidation.cc.

References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), dqm::implementation::IBooker::bookProfile(), folder_, meCluCentralLocalYRes_, meCluCentralLocalYResZGlobMinus_, meCluCentralLocalYResZGlobPlus_, meCluEnergy_, meCluEnergyRes_, meCluEnergyvsEta_, meCluEta_, meCluForwardLocalYRes_, meCluForwardMinusLocalYRes_, meCluForwardPlusLocalYRes_, meCluHits_, meCluHitsvsEta_, meCluLocalXPull_, meCluLocalXRes_, meCluLocalYPullZGlobMinus_, meCluLocalYPullZGlobPlus_, meCluLocalYResZGlobMinus_, meCluLocalYResZGlobPlus_, meCluMultiCrystalLocalYRes_, meCluMultiCrystalLocalYResZGlobMinus_, meCluMultiCrystalLocalYResZGlobPlus_, meCluPhi_, meCluPhiRes_, meCluRhoRes_, meCluSingCrystalLocalYRes_, meCluSingCrystalLocalYResZGlobMinus_, meCluSingCrystalLocalYResZGlobPlus_, meCluTime_, meCluTimeError_, meCluTimeRes_, meCluTPullvsE_, meCluTPullvsEta_, meCluTResvsE_, meCluTResvsEta_, meCluXLocalErr_, meCluYLocalErr_, meCluYXLocal_, meCluYXLocalSim_, meCluZPull_, meCluZRes_, meCluZvsPhi_, meEnergyRelResVsE_, meEnergyRes_, meHitEnergy_, meHitEta_, meHitEvsEta_, meHitEvsPhi_, meHitEvsZ_, meHitLogEnergy_, meHitLongPos_, meHitPhi_, meHitTime_, meHitTimeError_, meHitTvsE_, meHitTvsEta_, meHitTvsPhi_, meHitTvsZ_, meHitXlocal_, meHitYlocal_, meHitZ_, meHitZlocal_, meLocalOccupancy_, meLongPosPull_, meLongPosPullvsE_, meLongPosPullvsEta_, meNclusters_, meNevents_, meNhits_, meOccupancy_, meTimeRes_, meTimeResEta_, meTimeResEtavsQ_, meTimeResQ_, meTimeResQvsEta_, meTimeResVsE_, meTPullvsE_, meTPullvsEta_, meUncEneLVsX_, meUncEneRVsX_, meUncTimeLVsX_, meUncTimeRVsX_, meUnmatchedCluEnergy_, nBinsEta_, nBinsEtaQ_, nBinsQ_, nBinsQEta_, optionalPlots_, dqm::implementation::NavigatorBase::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, and uncalibRecHitsPlots_.

667  {
668  ibook.setCurrentFolder(folder_);
669 
670  // --- histograms booking
671 
672  meNevents_ = ibook.book1D("BtlNevents", "Number of events", 1, 0., 1.);
673 
674  meNhits_ = ibook.book1D("BtlNhits", "Number of BTL RECO hits;log_{10}(N_{RECO})", 100, 0., 5.25);
675 
676  meHitEnergy_ = ibook.book1D("BtlHitEnergy", "BTL RECO hits energy;E_{RECO} [MeV]", 100, 0., 20.);
677  meHitLogEnergy_ = ibook.book1D("BtlHitLogEnergy", "BTL RECO hits energy;log_{10}(E_{RECO} [MeV])", 16, -0.1, 1.5);
678  meHitTime_ = ibook.book1D("BtlHitTime", "BTL RECO hits ToA;ToA_{RECO} [ns]", 100, 0., 25.);
679  meHitTimeError_ = ibook.book1D("BtlHitTimeError", "BTL RECO hits ToA error;#sigma^{ToA}_{RECO} [ns]", 50, 0., 0.1);
680  meOccupancy_ = ibook.book2D(
681  "BtlOccupancy", "BTL RECO hits occupancy;Z_{RECO} [cm]; #phi_{RECO} [rad]", 65, -260., 260., 126, -3.2, 3.2);
682  if (optionalPlots_) {
683  meLocalOccupancy_ = ibook.book2D(
684  "BtlLocalOccupancy", "BTL RECO hits local occupancy;X_{RECO} [cm]; Y_{RECO} [cm]", 100, 10., 10., 60, -3., 3.);
685  }
686  meHitXlocal_ = ibook.book1D("BtlHitXlocal", "BTL RECO local X;X_{RECO}^{LOC} [cm]", 100, -10., 10.);
687  meHitYlocal_ = ibook.book1D("BtlHitYlocal", "BTL RECO local Y;Y_{RECO}^{LOC} [cm]", 60, -3, 3);
688  meHitZlocal_ = ibook.book1D("BtlHitZlocal", "BTL RECO local z;z_{RECO}^{LOC} [cm]", 8, -0.4, 0.4);
689  meHitZ_ = ibook.book1D("BtlHitZ", "BTL RECO hits Z;Z_{RECO} [cm]", 100, -260., 260.);
690  meHitPhi_ = ibook.book1D("BtlHitPhi", "BTL RECO hits #phi;#phi_{RECO} [rad]", 126, -3.2, 3.2);
691  meHitEta_ = ibook.book1D("BtlHitEta", "BTL RECO hits #eta;#eta_{RECO}", 100, -1.55, 1.55);
692  meHitTvsE_ =
693  ibook.bookProfile("BtlHitTvsE", "BTL RECO ToA vs energy;E_{RECO} [MeV];ToA_{RECO} [ns]", 50, 0., 20., 0., 100.);
694  meHitEvsPhi_ = ibook.bookProfile(
695  "BtlHitEvsPhi", "BTL RECO energy vs #phi;#phi_{RECO} [rad];E_{RECO} [MeV]", 50, -3.2, 3.2, 0., 100.);
696  meHitEvsEta_ = ibook.bookProfile(
697  "BtlHitEvsEta", "BTL RECO energy vs #eta;#eta_{RECO};E_{RECO} [MeV]", 50, -1.55, 1.55, 0., 100.);
698  meHitEvsZ_ =
699  ibook.bookProfile("BtlHitEvsZ", "BTL RECO energy vs Z;Z_{RECO} [cm];E_{RECO} [MeV]", 50, -260., 260., 0., 100.);
700  meHitTvsPhi_ = ibook.bookProfile(
701  "BtlHitTvsPhi", "BTL RECO ToA vs #phi;#phi_{RECO} [rad];ToA_{RECO} [ns]", 50, -3.2, 3.2, 0., 100.);
702  meHitTvsEta_ =
703  ibook.bookProfile("BtlHitTvsEta", "BTL RECO ToA vs #eta;#eta_{RECO};ToA_{RECO} [ns]", 50, -1.6, 1.6, 0., 100.);
704  meHitTvsZ_ =
705  ibook.bookProfile("BtlHitTvsZ", "BTL RECO ToA vs Z;Z_{RECO} [cm];ToA_{RECO} [ns]", 50, -260., 260., 0., 100.);
706  meHitLongPos_ = ibook.book1D("BtlLongPos", "BTL RECO hits longitudinal position;long. pos._{RECO}", 50, -5, 5);
707  meTimeRes_ = ibook.book1D("BtlTimeRes", "BTL time resolution;T_{RECO}-T_{SIM}", 100, -0.5, 0.5);
708  meTimeResVsE_ = ibook.bookProfile(
709  "BtlTimeResvsE", "BTL time resolution vs hit energy;E_{RECO} [MeV];T_{RECO}-T_{SIM}", 50, 0., 20., -0.5, 0.5, "S");
710  meEnergyRes_ = ibook.book1D("BtlEnergyRes", "BTL energy resolution;E_{RECO}-E_{SIM}", 100, -0.5, 0.5);
711  meEnergyRelResVsE_ = ibook.bookProfile("BtlEnergyRelResvsE",
712  "BTL relative energy resolution vs hit energy;E_{RECO} [MeV];E_{RECO}-E_{SIM}",
713  50,
714  0.,
715  20.,
716  -0.15,
717  0.15,
718  "S");
719  meLongPosPull_ = ibook.book1D("BtlLongPosPull",
720  "BTL longitudinal position pull;X^{loc}_{RECO}-X^{loc}_{SIM}/#sigma_{xloc_{RECO}}",
721  100,
722  -5.,
723  5.);
725  "BtlLongposPullvsE",
726  "BTL longitudinal position pull vs E;E_{SIM} [MeV];X^{loc}_{RECO}-X^{loc}_{SIM}/#sigma_{xloc_{RECO}}",
727  20,
728  0.,
729  20.,
730  -5.,
731  5.,
732  "S");
734  "BtlLongposPullvsEta",
735  "BTL longitudinal position pull vs #eta;|#eta_{RECO}|;X^{loc}_{RECO}-X^{loc}_{SIM}/#sigma_{xloc_{RECO}}",
736  32,
737  0,
738  1.55,
739  -5.,
740  5.,
741  "S");
742  meTPullvsE_ = ibook.bookProfile(
743  "BtlTPullvsE", "BTL time pull vs E;E_{SIM} [MeV];(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}", 20, 0., 20., -5., 5., "S");
744  meTPullvsEta_ = ibook.bookProfile("BtlTPullvsEta",
745  "BTL time pull vs #eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
746  30,
747  0,
748  1.55,
749  -5.,
750  5.,
751  "S");
752 
753  meNclusters_ = ibook.book1D("BtlNclusters", "Number of BTL RECO clusters;log_{10}(N_{RECO})", 100, 0., 5.25);
754  meCluTime_ = ibook.book1D("BtlCluTime", "BTL cluster time ToA;ToA [ns]", 250, 0, 25);
755  meCluTimeError_ = ibook.book1D("BtlCluTimeError", "BTL cluster time error;#sigma_{t} [ns]", 100, 0, 0.1);
756  meCluEnergy_ = ibook.book1D("BtlCluEnergy", "BTL cluster energy;E_{RECO} [MeV]", 100, 0, 20);
757  meCluPhi_ = ibook.book1D("BtlCluPhi", "BTL cluster #phi;#phi_{RECO} [rad]", 144, -3.2, 3.2);
758  meCluEta_ = ibook.book1D("BtlCluEta", "BTL cluster #eta;#eta_{RECO}", 100, -1.55, 1.55);
759  meCluHits_ = ibook.book1D("BtlCluHitNumber", "BTL hits per cluster; Cluster size", 10, 0, 10);
760  meCluZvsPhi_ = ibook.book2D(
761  "BtlOccupancy", "BTL cluster Z vs #phi;Z_{RECO} [cm]; #phi_{RECO} [rad]", 144, -260., 260., 50, -3.2, 3.2);
763  "BtlCluEnergyVsEta", "BTL cluster energy vs #eta; |#eta_{RECO}|; E_{RECO} [cm]", 30, 0., 1.55, 0., 20., "S");
765  "BtlCluHitsVsEta", "BTL hits per cluster vs #eta; |#eta_{RECO}|;Cluster size", 30, 0., 1.55, 0., 10., "S");
766 
767  meCluTimeRes_ = ibook.book1D("BtlCluTimeRes", "BTL cluster time resolution;T_{RECO}-T_{SIM} [ns]", 100, -0.5, 0.5);
769  ibook.book1D("BtlCluEnergyRes", "BTL cluster energy resolution;E_{RECO}-E_{SIM} [MeV]", 100, -0.5, 0.5);
770  meCluTResvsE_ = ibook.bookProfile("BtlCluTResvsE",
771  "BTL cluster time resolution vs E;E_{SIM} [MeV];(T_{RECO}-T_{SIM}) [ns]",
772  20,
773  0.,
774  20.,
775  -0.5,
776  0.5,
777  "S");
778  meCluTResvsEta_ = ibook.bookProfile("BtlCluTResvsEta",
779  "BTL cluster time resolution vs #eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM}) [ns]",
780  30,
781  0,
782  1.55,
783  -0.5,
784  0.5,
785  "S");
786  meCluTPullvsE_ = ibook.bookProfile("BtlCluTPullvsE",
787  "BTL cluster time pull vs E;E_{SIM} [MeV];(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
788  20,
789  0.,
790  20.,
791  -5.,
792  5.,
793  "S");
795  ibook.bookProfile("BtlCluTPullvsEta",
796  "BTL cluster time pull vs #eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
797  30,
798  0,
799  1.55,
800  -5.,
801  5.,
802  "S");
803  meCluRhoRes_ =
804  ibook.book1D("BtlCluRhoRes", "BTL cluster #rho resolution;#rho_{RECO}-#rho_{SIM} [cm]", 100, -0.5, 0.5);
805  meCluPhiRes_ =
806  ibook.book1D("BtlCluPhiRes", "BTL cluster #phi resolution;#phi_{RECO}-#phi_{SIM} [rad]", 100, -0.03, 0.03);
807  meCluZRes_ = ibook.book1D("BtlCluZRes", "BTL cluster Z resolution;Z_{RECO}-Z_{SIM} [cm]", 100, -0.2, 0.2);
809  ibook.book1D("BtlCluLocalXRes", "BTL cluster local X resolution;X_{RECO}-X_{SIM} [cm]", 100, -3.1, 3.1);
811  "BtlCluLocalYResZGlobPlus", "BTL cluster local Y resolution (glob Z > 0);Y_{RECO}-Y_{SIM} [cm]", 100, -0.2, 0.2);
813  "BtlCluLocalYResZGlobMinus", "BTL cluster local Y resolution (glob Z < 0);Y_{RECO}-Y_{SIM} [cm]", 100, -0.2, 0.2);
814  if (optionalPlots_) {
816  ibook.book1D("BtlCluSingCrystalLocalYRes",
817  "BTL cluster local Y resolution (single Crystal clusters);Y_{RECO}-Y_{SIM} [cm]",
818  100,
819  -0.2,
820  0.2);
822  ibook.book1D("BtlCluSingCrystalLocalYResZGlobPlus",
823  "BTL cluster local Y resolution (single Crystal clusters, Z glob > 0);Y_{RECO}-Y_{SIM} [cm]",
824  100,
825  -0.2,
826  0.2);
828  ibook.book1D("BtlCluSingCrystalLocalYResZGlobMinus",
829  "BTL cluster local Y resolution (single Crystal clusters, Z glob < 0);Y_{RECO}-Y_{SIM} [cm]",
830  100,
831  -0.2,
832  0.2);
834  ibook.book1D("BtlCluMultiCrystalLocalYRes",
835  "BTL cluster local Y resolution (Multi-Crystal clusters);Y_{RECO}-Y_{SIM} [cm]",
836  100,
837  -0.2,
838  0.2);
840  ibook.book1D("BtlCluMultiCrystalLocalYResZGlobPlus",
841  "BTL cluster local Y resolution (Multi-Crystal clusters, Z glob > 0);Y_{RECO}-Y_{SIM} [cm]",
842  100,
843  -0.2,
844  0.2);
846  ibook.book1D("BtlCluMultiCrystalLocalYResZGlobMinus",
847  "BTL cluster local Y resolution (Multi-Crystal clusters, Z glob < 0);Y_{RECO}-Y_{SIM} [cm]",
848  100,
849  -0.2,
850  0.2);
851  meCluCentralLocalYRes_ = ibook.book1D("BtlCluCentralLocalYRes",
852  "BTL cluster local Y resolution (central region);Y_{RECO}-Y_{SIM} [cm]",
853  100,
854  -0.2,
855  0.2);
857  ibook.book1D("BtlCluCentralLocalYResZGlobPlus",
858  "BTL cluster local Y resolution (central region, Z glob > 0);Y_{RECO}-Y_{SIM} [cm]",
859  100,
860  -0.2,
861  0.2);
863  ibook.book1D("BtlCluCentralLocalYResZGlobMinus",
864  "BTL cluster local Y resolution (central region, Z glob < 0);Y_{RECO}-Y_{SIM} [cm]",
865  100,
866  -0.2,
867  0.2);
868  meCluForwardLocalYRes_ = ibook.book1D("BtlCluForwardLocalYRes",
869  "BTL cluster local Y resolution (forward region);Y_{RECO}-Y_{SIM} [cm]",
870  100,
871  -0.2,
872  0.2);
874  ibook.book1D("BtlCluForwardPlusLocalYRes",
875  "BTL cluster local Y resolution (forward region, Z glob > 0);Y_{RECO}-Y_{SIM} [cm]",
876  100,
877  -0.2,
878  0.2);
880  ibook.book1D("BtlCluForwardMinusLocalYRes",
881  "BTL cluster local Y resolution (forward region, Z glob < 0);Y_{RECO}-Y_{SIM} [cm]",
882  100,
883  -0.2,
884  0.2);
885  }
887  "BtlCluLocalYPullZGlobPlus", "BTL cluster local Y pull (glob Z > 0);Y_{RECO}-Y_{SIM}/sigmaY_[RECO]", 100, -5., 5.);
888  meCluLocalYPullZGlobMinus_ = ibook.book1D("BtlCluLocalYPullZGlobMinus",
889  "BTL cluster local Y pull (glob Z < 0);Y_{RECO}-Y_{SIM}/sigmaY_[RECO]",
890  100,
891  -5.,
892  5.);
893 
895  ibook.book1D("BtlCluLocalXPull", "BTL cluster local X pull;X_{RECO}-X_{SIM}/sigmaX_[RECO]", 100, -5., 5.);
896 
897  meCluZPull_ = ibook.book1D("BtlCluZPull", "BTL cluster Z pull;Z_{RECO}-Z_{SIM}/sigmaZ_[RECO]", 100, -5., 5.);
898  meCluXLocalErr_ = ibook.book1D("BtlCluXLocalErr", "BTL cluster X local error;sigmaX_{RECO,loc} [cm]", 20, 0., 2.);
899  meCluYLocalErr_ = ibook.book1D("BtlCluYLocalErr", "BTL cluster Y local error;sigmaY_{RECO,loc} [cm]", 20, 0., 0.4);
900  if (optionalPlots_) {
901  meCluYXLocal_ = ibook.book2D("BtlCluYXLocal",
902  "BTL cluster local Y vs X;X^{local}_{RECO} [cm];Y^{local}_{RECO} [cm]",
903  200,
904  -9.5,
905  9.5,
906  200,
907  -2.8,
908  2.8);
909  meCluYXLocalSim_ = ibook.book2D("BtlCluYXLocalSim",
910  "BTL cluster local Y vs X;X^{local}_{SIM} [cm];Y^{local}_{SIM} [cm]",
911  200,
912  -9.5,
913  9.5,
914  200,
915  -2.8,
916  2.8);
917  }
919  ibook.book1D("BtlUnmatchedCluEnergy", "BTL unmatched cluster log10(energy);log10(E_{RECO} [MeV])", 5, -3, 2);
920 
921  // --- UncalibratedRecHits histograms
922 
923  meUncEneLVsX_ = ibook.bookProfile("BTLUncEneLVsX",
924  "BTL uncalibrated hit amplitude left - average vs X;X [cm];Delta(Q_{left}) [pC]",
925  20,
926  -5.,
927  5.,
928  -640.,
929  640.,
930  "S");
931  meUncEneRVsX_ = ibook.bookProfile("BTLUncEneRVsX",
932  "BTL uncalibrated hit amplitude right - average vs X;X [cm];Delta(Q_{right}) [pC]",
933  20,
934  -5.,
935  5.,
936  -640.,
937  640.,
938  "S");
939 
940  meUncTimeLVsX_ = ibook.bookProfile("BTLUncTimeLVsX",
941  "BTL uncalibrated hit time left - average vs X;X [cm];Delta(T_{left}) [MeV]",
942  20,
943  -5.,
944  5.,
945  -25.,
946  25.,
947  "S");
948  meUncTimeRVsX_ = ibook.bookProfile("BTLUncTimeRVsX",
949  "BTL uncalibrated hit time right - average vs X;X [cm];Delta(T_{right}) [MeV]",
950  20,
951  -5.,
952  5.,
953  -25.,
954  25.,
955  "S");
956 
957  if (uncalibRecHitsPlots_) {
958  for (unsigned int ihistoQ = 0; ihistoQ < nBinsQ_; ++ihistoQ) {
959  std::string hname = Form("TimeResQ_%d", ihistoQ);
960  std::string htitle = Form("BTL time resolution (Q bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoQ);
961  meTimeResQ_[ihistoQ] = ibook.book1D(hname, htitle, 200, -0.3, 0.7);
962 
963  for (unsigned int ihistoEta = 0; ihistoEta < nBinsQEta_; ++ihistoEta) {
964  hname = Form("TimeResQvsEta_%d_%d", ihistoQ, ihistoEta);
965  htitle = Form("BTL time resolution (Q bin = %d, |#eta| bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoQ, ihistoEta);
966  meTimeResQvsEta_[ihistoQ][ihistoEta] = ibook.book1D(hname, htitle, 200, -0.3, 0.7);
967 
968  } // ihistoEta loop
969 
970  } // ihistoQ loop
971 
972  for (unsigned int ihistoEta = 0; ihistoEta < nBinsEta_; ++ihistoEta) {
973  std::string hname = Form("TimeResEta_%d", ihistoEta);
974  std::string htitle = Form("BTL time resolution (|#eta| bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoEta);
975  meTimeResEta_[ihistoEta] = ibook.book1D(hname, htitle, 200, -0.3, 0.7);
976 
977  for (unsigned int ihistoQ = 0; ihistoQ < nBinsEtaQ_; ++ihistoQ) {
978  hname = Form("TimeResEtavsQ_%d_%d", ihistoEta, ihistoQ);
979  htitle = Form("BTL time resolution (|#eta| bin = %d, Q bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoEta, ihistoQ);
980  meTimeResEtavsQ_[ihistoEta][ihistoQ] = ibook.book1D(hname, htitle, 200, -0.3, 0.7);
981 
982  } // ihistoQ loop
983 
984  } // ihistoEta loop
985  }
986 }
MonitorElement * meCluForwardMinusLocalYRes_
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
MonitorElement * meCluSingCrystalLocalYResZGlobMinus_
MonitorElement * meCluLocalYResZGlobMinus_
MonitorElement * meCluSingCrystalLocalYRes_
MonitorElement * meCluCentralLocalYResZGlobPlus_
MonitorElement * meCluForwardLocalYRes_
MonitorElement * meCluCentralLocalYResZGlobMinus_
MonitorElement * meCluMultiCrystalLocalYRes_
MonitorElement * meUnmatchedCluEnergy_
static constexpr int nBinsEtaQ_
MonitorElement * meCluMultiCrystalLocalYResZGlobMinus_
MonitorElement * meLongPosPullvsEta_
MonitorElement * meCluForwardPlusLocalYRes_
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())
Definition: DQMStore.h:399
MonitorElement * meCluLocalYResZGlobPlus_
MonitorElement * meCluSingCrystalLocalYResZGlobPlus_
static constexpr int nBinsQEta_
MonitorElement * meLocalOccupancy_
MonitorElement * meTimeResEta_[nBinsEta_]
MonitorElement * meCluCentralLocalYRes_
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:212
static constexpr int nBinsQ_
MonitorElement * meCluLocalYPullZGlobMinus_
MonitorElement * meTimeResQvsEta_[nBinsQ_][nBinsQEta_]
MonitorElement * meCluLocalYPullZGlobPlus_
MonitorElement * meTimeResEtavsQ_[nBinsEta_][nBinsEtaQ_]
MonitorElement * meCluMultiCrystalLocalYResZGlobPlus_
static constexpr int nBinsEta_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MonitorElement * meTimeResQ_[nBinsQ_]

◆ fillDescriptions()

void BtlLocalRecoValidation::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 989 of file BtlLocalRecoValidation.cc.

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, ProducerED_cfi::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

989  {
991 
992  desc.add<std::string>("folder", "MTD/BTL/LocalReco");
993  desc.add<edm::InputTag>("recHitsTag", edm::InputTag("mtdRecHits", "FTLBarrel"));
994  desc.add<edm::InputTag>("uncalibRecHitsTag", edm::InputTag("mtdUncalibratedRecHits", "FTLBarrel"));
995  desc.add<edm::InputTag>("simHitsTag", edm::InputTag("mix", "g4SimHitsFastTimerHitsBarrel"));
996  desc.add<edm::InputTag>("recCluTag", edm::InputTag("mtdClusters", "FTLBarrel"));
997  desc.add<edm::InputTag>("trkHitTag", edm::InputTag("mtdTrackingRecHits"));
998  desc.add<double>("HitMinimumEnergy", 1.); // [MeV]
999  desc.add<bool>("optionalPlots", false);
1000  desc.add<bool>("UncalibRecHitsPlots", false);
1001  desc.add<double>("HitMinimumAmplitude", 30.); // [pC]
1002 
1003  descriptions.add("btlLocalRecoValid", desc);
1004 }
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ isSameCluster()

bool BtlLocalRecoValidation::isSameCluster ( const FTLCluster clu1,
const FTLCluster clu2 
)
private

Definition at line 205 of file BtlLocalRecoValidation.cc.

References FTLCluster::id(), FTLCluster::size(), FTLCluster::time(), FTLCluster::x(), and FTLCluster::y().

Referenced by analyze().

205  {
206  return clu1.id() == clu2.id() && clu1.size() == clu2.size() && clu1.x() == clu2.x() && clu1.y() == clu2.y() &&
207  clu1.time() == clu2.time();
208 }
float x() const
Definition: FTLCluster.h:120
int size() const
Definition: FTLCluster.h:153
float y() const
Definition: FTLCluster.h:125
const DetId & id() const
Definition: FTLCluster.h:190
float time() const
Definition: FTLCluster.h:142

Member Data Documentation

◆ binsEtaQ_

constexpr float BtlLocalRecoValidation::binsEtaQ_[nBinsEtaQ_+1] = {0., 30., 60., 90., 120., 150., 360., 600.}
staticprivate

Definition at line 199 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

◆ binsQEta_

constexpr float BtlLocalRecoValidation::binsQEta_[nBinsQEta_+1] = {0., 0.65, 1.15, 1.55}
staticprivate

Definition at line 191 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

◆ binWidthEta_

constexpr float BtlLocalRecoValidation::binWidthEta_ = 0.05
staticprivate

Definition at line 197 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

◆ binWidthQ_

constexpr float BtlLocalRecoValidation::binWidthQ_ = 30.
staticprivate

Definition at line 189 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

◆ btlRecCluToken_

edm::EDGetTokenT<FTLClusterCollection> BtlLocalRecoValidation::btlRecCluToken_
private

Definition at line 75 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and BtlLocalRecoValidation().

◆ btlRecHitsToken_

edm::EDGetTokenT<FTLRecHitCollection> BtlLocalRecoValidation::btlRecHitsToken_
private

Definition at line 72 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and BtlLocalRecoValidation().

◆ btlSimHitsToken_

edm::EDGetTokenT<CrossingFrame<PSimHit> > BtlLocalRecoValidation::btlSimHitsToken_
private

Definition at line 74 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and BtlLocalRecoValidation().

◆ btlUncalibRecHitsToken_

edm::EDGetTokenT<FTLUncalibratedRecHitCollection> BtlLocalRecoValidation::btlUncalibRecHitsToken_
private

Definition at line 73 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and BtlLocalRecoValidation().

◆ cpeToken_

const edm::ESGetToken<MTDClusterParameterEstimator, MTDCPERecord> BtlLocalRecoValidation::cpeToken_
private

Definition at line 80 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

◆ folder_

const std::string BtlLocalRecoValidation::folder_
private

Definition at line 66 of file BtlLocalRecoValidation.cc.

Referenced by bookHistograms().

◆ hitMinAmplitude_

const double BtlLocalRecoValidation::hitMinAmplitude_
private

Definition at line 70 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

◆ hitMinEnergy_

const double BtlLocalRecoValidation::hitMinEnergy_
private

Definition at line 67 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

◆ meCluCentralLocalYRes_

MonitorElement* BtlLocalRecoValidation::meCluCentralLocalYRes_
private

Definition at line 165 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluCentralLocalYResZGlobMinus_

MonitorElement* BtlLocalRecoValidation::meCluCentralLocalYResZGlobMinus_
private

Definition at line 167 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluCentralLocalYResZGlobPlus_

MonitorElement* BtlLocalRecoValidation::meCluCentralLocalYResZGlobPlus_
private

Definition at line 166 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluEnergy_

MonitorElement* BtlLocalRecoValidation::meCluEnergy_
private

Definition at line 130 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluEnergyRes_

MonitorElement* BtlLocalRecoValidation::meCluEnergyRes_
private

Definition at line 139 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluEnergyvsEta_

MonitorElement* BtlLocalRecoValidation::meCluEnergyvsEta_
private

Definition at line 135 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluEta_

MonitorElement* BtlLocalRecoValidation::meCluEta_
private

Definition at line 132 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluForwardLocalYRes_

MonitorElement* BtlLocalRecoValidation::meCluForwardLocalYRes_
private

Definition at line 169 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluForwardMinusLocalYRes_

MonitorElement* BtlLocalRecoValidation::meCluForwardMinusLocalYRes_
private

Definition at line 171 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluForwardPlusLocalYRes_

MonitorElement* BtlLocalRecoValidation::meCluForwardPlusLocalYRes_
private

Definition at line 170 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluHits_

MonitorElement* BtlLocalRecoValidation::meCluHits_
private

Definition at line 133 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluHitsvsEta_

MonitorElement* BtlLocalRecoValidation::meCluHitsvsEta_
private

Definition at line 136 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluLocalXPull_

MonitorElement* BtlLocalRecoValidation::meCluLocalXPull_
private

Definition at line 152 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluLocalXRes_

MonitorElement* BtlLocalRecoValidation::meCluLocalXRes_
private

Definition at line 146 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluLocalYPullZGlobMinus_

MonitorElement* BtlLocalRecoValidation::meCluLocalYPullZGlobMinus_
private

Definition at line 155 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluLocalYPullZGlobPlus_

MonitorElement* BtlLocalRecoValidation::meCluLocalYPullZGlobPlus_
private

Definition at line 154 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluLocalYResZGlobMinus_

MonitorElement* BtlLocalRecoValidation::meCluLocalYResZGlobMinus_
private

Definition at line 149 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluLocalYResZGlobPlus_

MonitorElement* BtlLocalRecoValidation::meCluLocalYResZGlobPlus_
private

Definition at line 148 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluMultiCrystalLocalYRes_

MonitorElement* BtlLocalRecoValidation::meCluMultiCrystalLocalYRes_
private

Definition at line 161 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluMultiCrystalLocalYResZGlobMinus_

MonitorElement* BtlLocalRecoValidation::meCluMultiCrystalLocalYResZGlobMinus_
private

Definition at line 163 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluMultiCrystalLocalYResZGlobPlus_

MonitorElement* BtlLocalRecoValidation::meCluMultiCrystalLocalYResZGlobPlus_
private

Definition at line 162 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluPhi_

MonitorElement* BtlLocalRecoValidation::meCluPhi_
private

Definition at line 131 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluPhiRes_

MonitorElement* BtlLocalRecoValidation::meCluPhiRes_
private

Definition at line 145 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluRhoRes_

MonitorElement* BtlLocalRecoValidation::meCluRhoRes_
private

Definition at line 144 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluSingCrystalLocalYRes_

MonitorElement* BtlLocalRecoValidation::meCluSingCrystalLocalYRes_
private

Definition at line 157 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluSingCrystalLocalYResZGlobMinus_

MonitorElement* BtlLocalRecoValidation::meCluSingCrystalLocalYResZGlobMinus_
private

Definition at line 159 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluSingCrystalLocalYResZGlobPlus_

MonitorElement* BtlLocalRecoValidation::meCluSingCrystalLocalYResZGlobPlus_
private

Definition at line 158 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluTime_

MonitorElement* BtlLocalRecoValidation::meCluTime_
private

Definition at line 128 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluTimeError_

MonitorElement* BtlLocalRecoValidation::meCluTimeError_
private

Definition at line 129 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluTimeRes_

MonitorElement* BtlLocalRecoValidation::meCluTimeRes_
private

Definition at line 138 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluTPullvsE_

MonitorElement* BtlLocalRecoValidation::meCluTPullvsE_
private

Definition at line 142 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluTPullvsEta_

MonitorElement* BtlLocalRecoValidation::meCluTPullvsEta_
private

Definition at line 143 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluTResvsE_

MonitorElement* BtlLocalRecoValidation::meCluTResvsE_
private

Definition at line 140 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluTResvsEta_

MonitorElement* BtlLocalRecoValidation::meCluTResvsEta_
private

Definition at line 141 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluXLocalErr_

MonitorElement* BtlLocalRecoValidation::meCluXLocalErr_
private

Definition at line 176 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluYLocalErr_

MonitorElement* BtlLocalRecoValidation::meCluYLocalErr_
private

Definition at line 177 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluYXLocal_

MonitorElement* BtlLocalRecoValidation::meCluYXLocal_
private

Definition at line 174 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluYXLocalSim_

MonitorElement* BtlLocalRecoValidation::meCluYXLocalSim_
private

Definition at line 175 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluZPull_

MonitorElement* BtlLocalRecoValidation::meCluZPull_
private

Definition at line 173 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluZRes_

MonitorElement* BtlLocalRecoValidation::meCluZRes_
private

Definition at line 151 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluZvsPhi_

MonitorElement* BtlLocalRecoValidation::meCluZvsPhi_
private

Definition at line 134 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meEnergyRelResVsE_

MonitorElement* BtlLocalRecoValidation::meEnergyRelResVsE_
private

Definition at line 117 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meEnergyRes_

MonitorElement* BtlLocalRecoValidation::meEnergyRes_
private

Definition at line 116 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitEnergy_

MonitorElement* BtlLocalRecoValidation::meHitEnergy_
private

Definition at line 88 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitEta_

MonitorElement* BtlLocalRecoValidation::meHitEta_
private

Definition at line 103 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitEvsEta_

MonitorElement* BtlLocalRecoValidation::meHitEvsEta_
private

Definition at line 107 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitEvsPhi_

MonitorElement* BtlLocalRecoValidation::meHitEvsPhi_
private

Definition at line 106 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitEvsZ_

MonitorElement* BtlLocalRecoValidation::meHitEvsZ_
private

Definition at line 108 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitLogEnergy_

MonitorElement* BtlLocalRecoValidation::meHitLogEnergy_
private

Definition at line 89 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitLongPos_

MonitorElement* BtlLocalRecoValidation::meHitLongPos_
private

Definition at line 112 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitPhi_

MonitorElement* BtlLocalRecoValidation::meHitPhi_
private

Definition at line 102 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTime_

MonitorElement* BtlLocalRecoValidation::meHitTime_
private

Definition at line 90 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTimeError_

MonitorElement* BtlLocalRecoValidation::meHitTimeError_
private

Definition at line 91 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTvsE_

MonitorElement* BtlLocalRecoValidation::meHitTvsE_
private

Definition at line 105 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTvsEta_

MonitorElement* BtlLocalRecoValidation::meHitTvsEta_
private

Definition at line 110 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTvsPhi_

MonitorElement* BtlLocalRecoValidation::meHitTvsPhi_
private

Definition at line 109 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTvsZ_

MonitorElement* BtlLocalRecoValidation::meHitTvsZ_
private

Definition at line 111 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitXlocal_

MonitorElement* BtlLocalRecoValidation::meHitXlocal_
private

Definition at line 97 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitYlocal_

MonitorElement* BtlLocalRecoValidation::meHitYlocal_
private

Definition at line 98 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitZ_

MonitorElement* BtlLocalRecoValidation::meHitZ_
private

Definition at line 101 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitZlocal_

MonitorElement* BtlLocalRecoValidation::meHitZlocal_
private

Definition at line 99 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meLocalOccupancy_

MonitorElement* BtlLocalRecoValidation::meLocalOccupancy_
private

Definition at line 96 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meLongPosPull_

MonitorElement* BtlLocalRecoValidation::meLongPosPull_
private

Definition at line 119 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meLongPosPullvsE_

MonitorElement* BtlLocalRecoValidation::meLongPosPullvsE_
private

Definition at line 120 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meLongPosPullvsEta_

MonitorElement* BtlLocalRecoValidation::meLongPosPullvsEta_
private

Definition at line 121 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meNclusters_

MonitorElement* BtlLocalRecoValidation::meNclusters_
private

Definition at line 126 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meNevents_

MonitorElement* BtlLocalRecoValidation::meNevents_
private

Definition at line 84 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meNhits_

MonitorElement* BtlLocalRecoValidation::meNhits_
private

Definition at line 86 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meOccupancy_

MonitorElement* BtlLocalRecoValidation::meOccupancy_
private

Definition at line 93 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meTimeRes_

MonitorElement* BtlLocalRecoValidation::meTimeRes_
private

Definition at line 114 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meTimeResEta_

MonitorElement* BtlLocalRecoValidation::meTimeResEta_[nBinsEta_]
private

Definition at line 201 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meTimeResEtavsQ_

MonitorElement* BtlLocalRecoValidation::meTimeResEtavsQ_[nBinsEta_][nBinsEtaQ_]
private

Definition at line 202 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meTimeResQ_

MonitorElement* BtlLocalRecoValidation::meTimeResQ_[nBinsQ_]
private

Definition at line 193 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meTimeResQvsEta_

MonitorElement* BtlLocalRecoValidation::meTimeResQvsEta_[nBinsQ_][nBinsQEta_]
private

Definition at line 194 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meTimeResVsE_

MonitorElement* BtlLocalRecoValidation::meTimeResVsE_
private

Definition at line 115 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meTPullvsE_

MonitorElement* BtlLocalRecoValidation::meTPullvsE_
private

Definition at line 123 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meTPullvsEta_

MonitorElement* BtlLocalRecoValidation::meTPullvsEta_
private

Definition at line 124 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meUncEneLVsX_

MonitorElement* BtlLocalRecoValidation::meUncEneLVsX_
private

Definition at line 183 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meUncEneRVsX_

MonitorElement* BtlLocalRecoValidation::meUncEneRVsX_
private

Definition at line 184 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meUncTimeLVsX_

MonitorElement* BtlLocalRecoValidation::meUncTimeLVsX_
private

Definition at line 185 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meUncTimeRVsX_

MonitorElement* BtlLocalRecoValidation::meUncTimeRVsX_
private

Definition at line 186 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meUnmatchedCluEnergy_

MonitorElement* BtlLocalRecoValidation::meUnmatchedCluEnergy_
private

Definition at line 179 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ mtdgeoToken_

const edm::ESGetToken<MTDGeometry, MTDDigiGeometryRecord> BtlLocalRecoValidation::mtdgeoToken_
private

Definition at line 78 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

◆ mtdtopoToken_

const edm::ESGetToken<MTDTopology, MTDTopologyRcd> BtlLocalRecoValidation::mtdtopoToken_
private

Definition at line 79 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

◆ mtdTrackingHitToken_

edm::EDGetTokenT<MTDTrackingDetSetVector> BtlLocalRecoValidation::mtdTrackingHitToken_
private

Definition at line 76 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and BtlLocalRecoValidation().

◆ nBinsEta_

constexpr int BtlLocalRecoValidation::nBinsEta_ = 31
staticprivate

Definition at line 196 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ nBinsEtaQ_

constexpr int BtlLocalRecoValidation::nBinsEtaQ_ = 7
staticprivate

Definition at line 198 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ nBinsQ_

constexpr int BtlLocalRecoValidation::nBinsQ_ = 20
staticprivate

Definition at line 188 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ nBinsQEta_

constexpr int BtlLocalRecoValidation::nBinsQEta_ = 3
staticprivate

Definition at line 190 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ optionalPlots_

const bool BtlLocalRecoValidation::optionalPlots_
private

Definition at line 68 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ uncalibRecHitsPlots_

const bool BtlLocalRecoValidation::uncalibRecHitsPlots_
private

Definition at line 69 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().