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_
 
MonitorElementmeUnmatchedRecHit_
 
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 212 of file BtlLocalRecoValidation.cc.

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

213  : folder_(iConfig.getParameter<std::string>("folder")),
214  hitMinEnergy_(iConfig.getParameter<double>("HitMinimumEnergy")),
215  optionalPlots_(iConfig.getParameter<bool>("optionalPlots")),
216  uncalibRecHitsPlots_(iConfig.getParameter<bool>("UncalibRecHitsPlots")),
217  hitMinAmplitude_(iConfig.getParameter<double>("HitMinimumAmplitude")),
218  mtdgeoToken_(esConsumes<MTDGeometry, MTDDigiGeometryRecord>()),
219  mtdtopoToken_(esConsumes<MTDTopology, MTDTopologyRcd>()),
220  cpeToken_(esConsumes<MTDClusterParameterEstimator, MTDCPERecord>(edm::ESInputTag("", "MTDCPEBase"))) {
221  btlRecHitsToken_ = consumes<FTLRecHitCollection>(iConfig.getParameter<edm::InputTag>("recHitsTag"));
223  consumes<FTLUncalibratedRecHitCollection>(iConfig.getParameter<edm::InputTag>("uncalibRecHitsTag"));
224  btlSimHitsToken_ = consumes<CrossingFrame<PSimHit> >(iConfig.getParameter<edm::InputTag>("simHitsTag"));
225  btlRecCluToken_ = consumes<FTLClusterCollection>(iConfig.getParameter<edm::InputTag>("recCluTag"));
226  mtdTrackingHitToken_ = consumes<MTDTrackingDetSetVector>(iConfig.getParameter<edm::InputTag>("trkHitTag"));
227 }
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 229 of file BtlLocalRecoValidation.cc.

229 {}

Member Function Documentation

◆ analyze()

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

Reimplemented from DQMEDAnalyzer.

Definition at line 232 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_, meUnmatchedRecHit_, 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().

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

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

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

1007  {
1009 
1010  desc.add<std::string>("folder", "MTD/BTL/LocalReco");
1011  desc.add<edm::InputTag>("recHitsTag", edm::InputTag("mtdRecHits", "FTLBarrel"));
1012  desc.add<edm::InputTag>("uncalibRecHitsTag", edm::InputTag("mtdUncalibratedRecHits", "FTLBarrel"));
1013  desc.add<edm::InputTag>("simHitsTag", edm::InputTag("mix", "g4SimHitsFastTimerHitsBarrel"));
1014  desc.add<edm::InputTag>("recCluTag", edm::InputTag("mtdClusters", "FTLBarrel"));
1015  desc.add<edm::InputTag>("trkHitTag", edm::InputTag("mtdTrackingRecHits"));
1016  desc.add<double>("HitMinimumEnergy", 1.); // [MeV]
1017  desc.add<bool>("optionalPlots", false);
1018  desc.add<bool>("UncalibRecHitsPlots", false);
1019  desc.add<double>("HitMinimumAmplitude", 30.); // [pC]
1020 
1021  descriptions.add("btlLocalRecoValid", desc);
1022 }
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ isSameCluster()

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

Definition at line 206 of file BtlLocalRecoValidation.cc.

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

Referenced by analyze().

206  {
207  return clu1.id() == clu2.id() && clu1.size() == clu2.size() && clu1.x() == clu2.x() && clu1.y() == clu2.y() &&
208  clu1.time() == clu2.time();
209 }
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 200 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 192 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

◆ binWidthEta_

constexpr float BtlLocalRecoValidation::binWidthEta_ = 0.05
staticprivate

Definition at line 198 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

◆ binWidthQ_

constexpr float BtlLocalRecoValidation::binWidthQ_ = 30.
staticprivate

Definition at line 190 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 166 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluCentralLocalYResZGlobMinus_

MonitorElement* BtlLocalRecoValidation::meCluCentralLocalYResZGlobMinus_
private

Definition at line 168 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluCentralLocalYResZGlobPlus_

MonitorElement* BtlLocalRecoValidation::meCluCentralLocalYResZGlobPlus_
private

Definition at line 167 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluEnergy_

MonitorElement* BtlLocalRecoValidation::meCluEnergy_
private

Definition at line 131 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluEnergyRes_

MonitorElement* BtlLocalRecoValidation::meCluEnergyRes_
private

Definition at line 140 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluEnergyvsEta_

MonitorElement* BtlLocalRecoValidation::meCluEnergyvsEta_
private

Definition at line 136 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluEta_

MonitorElement* BtlLocalRecoValidation::meCluEta_
private

Definition at line 133 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluForwardLocalYRes_

MonitorElement* BtlLocalRecoValidation::meCluForwardLocalYRes_
private

Definition at line 170 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluForwardMinusLocalYRes_

MonitorElement* BtlLocalRecoValidation::meCluForwardMinusLocalYRes_
private

Definition at line 172 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluForwardPlusLocalYRes_

MonitorElement* BtlLocalRecoValidation::meCluForwardPlusLocalYRes_
private

Definition at line 171 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluHits_

MonitorElement* BtlLocalRecoValidation::meCluHits_
private

Definition at line 134 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluHitsvsEta_

MonitorElement* BtlLocalRecoValidation::meCluHitsvsEta_
private

Definition at line 137 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluLocalXPull_

MonitorElement* BtlLocalRecoValidation::meCluLocalXPull_
private

Definition at line 153 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluLocalXRes_

MonitorElement* BtlLocalRecoValidation::meCluLocalXRes_
private

Definition at line 147 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluLocalYPullZGlobMinus_

MonitorElement* BtlLocalRecoValidation::meCluLocalYPullZGlobMinus_
private

Definition at line 156 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluLocalYPullZGlobPlus_

MonitorElement* BtlLocalRecoValidation::meCluLocalYPullZGlobPlus_
private

Definition at line 155 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluLocalYResZGlobMinus_

MonitorElement* BtlLocalRecoValidation::meCluLocalYResZGlobMinus_
private

Definition at line 150 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluLocalYResZGlobPlus_

MonitorElement* BtlLocalRecoValidation::meCluLocalYResZGlobPlus_
private

Definition at line 149 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluMultiCrystalLocalYRes_

MonitorElement* BtlLocalRecoValidation::meCluMultiCrystalLocalYRes_
private

Definition at line 162 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluMultiCrystalLocalYResZGlobMinus_

MonitorElement* BtlLocalRecoValidation::meCluMultiCrystalLocalYResZGlobMinus_
private

Definition at line 164 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluMultiCrystalLocalYResZGlobPlus_

MonitorElement* BtlLocalRecoValidation::meCluMultiCrystalLocalYResZGlobPlus_
private

Definition at line 163 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluPhi_

MonitorElement* BtlLocalRecoValidation::meCluPhi_
private

Definition at line 132 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluPhiRes_

MonitorElement* BtlLocalRecoValidation::meCluPhiRes_
private

Definition at line 146 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluRhoRes_

MonitorElement* BtlLocalRecoValidation::meCluRhoRes_
private

Definition at line 145 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluSingCrystalLocalYRes_

MonitorElement* BtlLocalRecoValidation::meCluSingCrystalLocalYRes_
private

Definition at line 158 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluSingCrystalLocalYResZGlobMinus_

MonitorElement* BtlLocalRecoValidation::meCluSingCrystalLocalYResZGlobMinus_
private

Definition at line 160 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluSingCrystalLocalYResZGlobPlus_

MonitorElement* BtlLocalRecoValidation::meCluSingCrystalLocalYResZGlobPlus_
private

Definition at line 159 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluTime_

MonitorElement* BtlLocalRecoValidation::meCluTime_
private

Definition at line 129 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluTimeError_

MonitorElement* BtlLocalRecoValidation::meCluTimeError_
private

Definition at line 130 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluTimeRes_

MonitorElement* BtlLocalRecoValidation::meCluTimeRes_
private

Definition at line 139 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluTPullvsE_

MonitorElement* BtlLocalRecoValidation::meCluTPullvsE_
private

Definition at line 143 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluTPullvsEta_

MonitorElement* BtlLocalRecoValidation::meCluTPullvsEta_
private

Definition at line 144 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluTResvsE_

MonitorElement* BtlLocalRecoValidation::meCluTResvsE_
private

Definition at line 141 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluTResvsEta_

MonitorElement* BtlLocalRecoValidation::meCluTResvsEta_
private

Definition at line 142 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluXLocalErr_

MonitorElement* BtlLocalRecoValidation::meCluXLocalErr_
private

Definition at line 177 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluYLocalErr_

MonitorElement* BtlLocalRecoValidation::meCluYLocalErr_
private

Definition at line 178 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluYXLocal_

MonitorElement* BtlLocalRecoValidation::meCluYXLocal_
private

Definition at line 175 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluYXLocalSim_

MonitorElement* BtlLocalRecoValidation::meCluYXLocalSim_
private

Definition at line 176 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluZPull_

MonitorElement* BtlLocalRecoValidation::meCluZPull_
private

Definition at line 174 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluZRes_

MonitorElement* BtlLocalRecoValidation::meCluZRes_
private

Definition at line 152 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meCluZvsPhi_

MonitorElement* BtlLocalRecoValidation::meCluZvsPhi_
private

Definition at line 135 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 127 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 202 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meTimeResEtavsQ_

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

Definition at line 203 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meTimeResQ_

MonitorElement* BtlLocalRecoValidation::meTimeResQ_[nBinsQ_]
private

Definition at line 194 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meTimeResQvsEta_

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

Definition at line 195 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 184 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meUncEneRVsX_

MonitorElement* BtlLocalRecoValidation::meUncEneRVsX_
private

Definition at line 185 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meUncTimeLVsX_

MonitorElement* BtlLocalRecoValidation::meUncTimeLVsX_
private

Definition at line 186 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meUncTimeRVsX_

MonitorElement* BtlLocalRecoValidation::meUncTimeRVsX_
private

Definition at line 187 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meUnmatchedCluEnergy_

MonitorElement* BtlLocalRecoValidation::meUnmatchedCluEnergy_
private

Definition at line 180 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meUnmatchedRecHit_

MonitorElement* BtlLocalRecoValidation::meUnmatchedRecHit_
private

Definition at line 125 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 197 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ nBinsEtaQ_

constexpr int BtlLocalRecoValidation::nBinsEtaQ_ = 7
staticprivate

Definition at line 199 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ nBinsQ_

constexpr int BtlLocalRecoValidation::nBinsQ_ = 20
staticprivate

Definition at line 189 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ nBinsQEta_

constexpr int BtlLocalRecoValidation::nBinsQEta_ = 3
staticprivate

Definition at line 191 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().