CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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
< DQMEDAnalyzerGlobalCache
initializeGlobalCache (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
 

Private Attributes

edm::EDGetTokenT
< FTLClusterCollection
btlRecCluToken_
 
edm::EDGetTokenT
< FTLRecHitCollection
btlRecHitsToken_
 
edm::EDGetTokenT
< CrossingFrame< PSimHit > > 
btlSimHitsToken_
 
edm::EDGetTokenT
< FTLUncalibratedRecHitCollection
btlUncalibRecHitsToken_
 
const std::string folder_
 
const double hitMinAmplitude_
 
const double hitMinEnergy_
 
const bool LocalPosDebug_
 
MonitorElementmeCluEnergy_
 
MonitorElementmeCluEnergyRes_
 
MonitorElementmeCluEta_
 
MonitorElementmeCluHits_
 
MonitorElementmeCluPhi_
 
MonitorElementmeCluPhiRes_
 
MonitorElementmeCluRhoRes_
 
MonitorElementmeCluTime_
 
MonitorElementmeCluTimeError_
 
MonitorElementmeCluTimeRes_
 
MonitorElementmeCluTPullvsE_
 
MonitorElementmeCluTPullvsEta_
 
MonitorElementmeCluXRes_
 
MonitorElementmeCluYRes_
 
MonitorElementmeCluYXLocal_
 
MonitorElementmeCluYXLocalSim_
 
MonitorElementmeCluZRes_
 
MonitorElementmeCluZvsPhi_
 
MonitorElementmeEnergyRes_
 
MonitorElementmeHitEnergy_
 
MonitorElementmeHitEta_
 
MonitorElementmeHitEvsEta_
 
MonitorElementmeHitEvsPhi_
 
MonitorElementmeHitEvsZ_
 
MonitorElementmeHitLongPos_
 
MonitorElementmeHitLongPosErr_
 
MonitorElementmeHitPhi_
 
MonitorElementmeHitTime_
 
MonitorElementmeHitTimeError_
 
MonitorElementmeHitTvsE_
 
MonitorElementmeHitTvsEta_
 
MonitorElementmeHitTvsPhi_
 
MonitorElementmeHitTvsZ_
 
MonitorElementmeHitX_
 
MonitorElementmeHitXlocal_
 
MonitorElementmeHitY_
 
MonitorElementmeHitYlocal_
 
MonitorElementmeHitZ_
 
MonitorElementmeHitZlocal_
 
MonitorElementmeLocalOccupancy_
 
MonitorElementmeLongPosPull_
 
MonitorElementmeLongPosPullvsE_
 
MonitorElementmeLongPosPullvsEta_
 
MonitorElementmeNhits_
 
MonitorElementmeOccupancy_
 
MonitorElementmeTimeRes_
 
MonitorElementmeTimeResEta_ [nBinsEta_]
 
MonitorElementmeTimeResEtavsQ_ [nBinsEta_][nBinsEtaQ_]
 
MonitorElementmeTimeResQ_ [nBinsQ_]
 
MonitorElementmeTimeResQvsEta_ [nBinsQ_][nBinsQEta_]
 
MonitorElementmeTPullvsE_
 
MonitorElementmeTPullvsEta_
 
edm::ESGetToken< MTDGeometry,
MTDDigiGeometryRecord
mtdgeoToken_
 
edm::ESGetToken< MTDTopology,
MTDTopologyRcd
mtdtopoToken_
 
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 52 of file BtlLocalRecoValidation.cc.

Constructor & Destructor Documentation

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

Definition at line 162 of file BtlLocalRecoValidation.cc.

References btlRecCluToken_, btlRecHitsToken_, btlSimHitsToken_, btlUncalibRecHitsToken_, edm::ParameterSet::getParameter(), mtdgeoToken_, mtdtopoToken_, and uncalibRecHitsPlots_.

163  : folder_(iConfig.getParameter<std::string>("folder")),
164  hitMinEnergy_(iConfig.getParameter<double>("HitMinimumEnergy")),
165  LocalPosDebug_(iConfig.getParameter<bool>("LocalPositionDebug")),
166  uncalibRecHitsPlots_(iConfig.getParameter<bool>("UncalibRecHitsPlots")),
167  hitMinAmplitude_(iConfig.getParameter<double>("HitMinimumAmplitude")) {
168  btlRecHitsToken_ = consumes<FTLRecHitCollection>(iConfig.getParameter<edm::InputTag>("recHitsTag"));
171  consumes<FTLUncalibratedRecHitCollection>(iConfig.getParameter<edm::InputTag>("uncalibRecHitsTag"));
172  btlSimHitsToken_ = consumes<CrossingFrame<PSimHit> >(iConfig.getParameter<edm::InputTag>("simHitsTag"));
173  btlRecCluToken_ = consumes<FTLClusterCollection>(iConfig.getParameter<edm::InputTag>("recCluTag"));
174 
175  mtdgeoToken_ = esConsumes<MTDGeometry, MTDDigiGeometryRecord>();
176  mtdtopoToken_ = esConsumes<MTDTopology, MTDTopologyRcd>();
177 }
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
edm::EDGetTokenT< FTLClusterCollection > btlRecCluToken_
edm::ESGetToken< MTDTopology, MTDTopologyRcd > mtdtopoToken_
edm::EDGetTokenT< FTLUncalibratedRecHitCollection > btlUncalibRecHitsToken_
edm::EDGetTokenT< FTLRecHitCollection > btlRecHitsToken_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDGetTokenT< CrossingFrame< PSimHit > > btlSimHitsToken_
BtlLocalRecoValidation::~BtlLocalRecoValidation ( )
override

Definition at line 179 of file BtlLocalRecoValidation.cc.

179 {}

Member Function Documentation

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

Reimplemented from DQMEDAnalyzer.

Definition at line 182 of file BtlLocalRecoValidation.cc.

References funct::abs(), binsEtaQ_, binsQEta_, binWidthEta_, binWidthQ_, btlRecCluToken_, btlRecHitsToken_, btlSimHitsToken_, btlUncalibRecHitsToken_, BTLDetId::column(), geant_units::operators::convertMmToCm(), geant_units::operators::convertUnitsTo(), MTDTopologyMode::crysLayoutFromTopoMode(), TauDecayModes::dec, relval_parameters_module::energy, etaBin(), Exception, dqm::impl::MonitorElement::Fill(), BTLDetId::geographicalId(), relativeConstraints::geom, edm::Event::getHandle(), edm::EventSetup::getTransientHandle(), hitMinAmplitude_, hitMinEnergy_, LocalPosDebug_, RectangularMTDTopology::localX(), RectangularMTDTopology::localY(), edm::makeValid(), meCluEnergy_, meCluEnergyRes_, meCluEta_, meCluHits_, meCluPhi_, meCluPhiRes_, meCluRhoRes_, meCluTime_, meCluTimeError_, meCluTimeRes_, meCluTPullvsE_, meCluTPullvsEta_, meCluXRes_, meCluYRes_, meCluYXLocal_, meCluYXLocalSim_, meCluZRes_, meCluZvsPhi_, meEnergyRes_, meHitEnergy_, meHitEta_, meHitEvsEta_, meHitEvsPhi_, meHitEvsZ_, meHitLongPos_, meHitLongPosErr_, meHitPhi_, meHitTime_, meHitTimeError_, meHitTvsE_, meHitTvsEta_, meHitTvsPhi_, meHitTvsZ_, meHitX_, meHitXlocal_, meHitY_, meHitYlocal_, meHitZ_, meHitZlocal_, meLocalOccupancy_, meLongPosPull_, meLongPosPullvsE_, meLongPosPullvsEta_, meNhits_, meOccupancy_, meTimeRes_, meTimeResEta_, meTimeResEtavsQ_, meTimeResQ_, meTimeResQvsEta_, meTPullvsE_, meTPullvsEta_, mtdgeoToken_, MTDDetId::mtdRR(), MTDDetId::mtdSide(), mtdtopoToken_, nBinsEta_, nBinsEtaQ_, nBinsQ_, nBinsQEta_, nHits, RectangularMTDTopology::nrows(), RectangularMTDTopology::pixelToModuleLocalPoint(), DetId::rawId(), BTLDetId::row(), ProxyMTDTopology::specificTopology(), GeomDet::toGlobal(), GeomDet::topology(), uncalibRecHitsPlots_, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

182  {
183  using namespace edm;
184  using namespace std;
185  using namespace geant_units::operators;
186 
187  auto geometryHandle = iSetup.getTransientHandle(mtdgeoToken_);
188  const MTDGeometry* geom = geometryHandle.product();
189 
190  auto topologyHandle = iSetup.getTransientHandle(mtdtopoToken_);
191  const MTDTopology* topology = topologyHandle.product();
192 
193  auto btlRecHitsHandle = makeValid(iEvent.getHandle(btlRecHitsToken_));
194  auto btlSimHitsHandle = makeValid(iEvent.getHandle(btlSimHitsToken_));
195  auto btlRecCluHandle = makeValid(iEvent.getHandle(btlRecCluToken_));
196  MixCollection<PSimHit> btlSimHits(btlSimHitsHandle.product());
197 
198  // --- Loop over the BTL SIM hits
199  std::unordered_map<uint32_t, MTDHit> m_btlSimHits;
200  for (auto const& simHit : btlSimHits) {
201  // --- Use only hits compatible with the in-time bunch-crossing
202  if (simHit.tof() < 0 || simHit.tof() > 25.)
203  continue;
204 
205  DetId id = simHit.detUnitId();
206 
207  auto simHitIt = m_btlSimHits.emplace(id.rawId(), MTDHit()).first;
208 
209  // --- Accumulate the energy (in MeV) of SIM hits in the same detector cell
210  (simHitIt->second).energy += convertUnitsTo(0.001_MeV, simHit.energyLoss());
211 
212  // --- Get the time of the first SIM hit in the cell
213  if ((simHitIt->second).time == 0 || simHit.tof() < (simHitIt->second).time) {
214  (simHitIt->second).time = simHit.tof();
215 
216  auto hit_pos = simHit.entryPoint();
217  (simHitIt->second).x_local = hit_pos.x();
218  (simHitIt->second).y_local = hit_pos.y();
219  (simHitIt->second).z_local = hit_pos.z();
220  }
221 
222  } // simHit loop
223 
224  // --- Loop over the BTL RECO hits
225  unsigned int n_reco_btl = 0;
226  for (const auto& recHit : *btlRecHitsHandle) {
227  BTLDetId detId = recHit.id();
228  DetId geoId = detId.geographicalId(MTDTopologyMode::crysLayoutFromTopoMode(topology->getMTDTopologyMode()));
229  const MTDGeomDet* thedet = geom->idToDet(geoId);
230  if (thedet == nullptr)
231  throw cms::Exception("BtlLocalRecoValidation") << "GeographicalID: " << std::hex << geoId.rawId() << " ("
232  << detId.rawId() << ") is invalid!" << std::dec << std::endl;
233  const ProxyMTDTopology& topoproxy = static_cast<const ProxyMTDTopology&>(thedet->topology());
234  const RectangularMTDTopology& topo = static_cast<const RectangularMTDTopology&>(topoproxy.specificTopology());
235 
236  Local3DPoint local_point(0., 0., 0.);
237  local_point = topo.pixelToModuleLocalPoint(local_point, detId.row(topo.nrows()), detId.column(topo.nrows()));
238  const auto& global_point = thedet->toGlobal(local_point);
239 
240  meHitEnergy_->Fill(recHit.energy());
241  meHitTime_->Fill(recHit.time());
242  meHitTimeError_->Fill(recHit.timeError());
243  meHitLongPos_->Fill(recHit.position());
244  meHitLongPosErr_->Fill(recHit.positionError());
245 
246  meOccupancy_->Fill(global_point.z(), global_point.phi());
247 
248  if (LocalPosDebug_) {
249  meLocalOccupancy_->Fill(local_point.x() + recHit.position(), local_point.y());
250  meHitXlocal_->Fill(local_point.x());
251  meHitYlocal_->Fill(local_point.y());
252  meHitZlocal_->Fill(local_point.z());
253  }
254  meHitX_->Fill(global_point.x());
255  meHitY_->Fill(global_point.y());
256  meHitZ_->Fill(global_point.z());
257  meHitPhi_->Fill(global_point.phi());
258  meHitEta_->Fill(global_point.eta());
259 
260  meHitTvsE_->Fill(recHit.energy(), recHit.time());
261  meHitEvsPhi_->Fill(global_point.phi(), recHit.energy());
262  meHitEvsEta_->Fill(global_point.eta(), recHit.energy());
263  meHitEvsZ_->Fill(global_point.z(), recHit.energy());
264  meHitTvsPhi_->Fill(global_point.phi(), recHit.time());
265  meHitTvsEta_->Fill(global_point.eta(), recHit.time());
266  meHitTvsZ_->Fill(global_point.z(), recHit.time());
267 
268  // Resolution histograms
269  if (m_btlSimHits.count(detId.rawId()) == 1 && m_btlSimHits[detId.rawId()].energy > hitMinEnergy_) {
270  float longpos_res = recHit.position() - convertMmToCm(m_btlSimHits[detId.rawId()].x_local);
271  float time_res = recHit.time() - m_btlSimHits[detId.rawId()].time;
272  float energy_res = recHit.energy() - m_btlSimHits[detId.rawId()].energy;
273 
274  Local3DPoint local_point_sim(convertMmToCm(m_btlSimHits[detId.rawId()].x_local),
275  convertMmToCm(m_btlSimHits[detId.rawId()].y_local),
276  convertMmToCm(m_btlSimHits[detId.rawId()].z_local));
277  local_point_sim =
278  topo.pixelToModuleLocalPoint(local_point_sim, detId.row(topo.nrows()), detId.column(topo.nrows()));
279  const auto& global_point_sim = thedet->toGlobal(local_point_sim);
280 
281  meTimeRes_->Fill(time_res);
282  meEnergyRes_->Fill(energy_res);
283 
284  meLongPosPull_->Fill(longpos_res / recHit.positionError());
285  meLongPosPullvsEta_->Fill(std::abs(global_point_sim.eta()), longpos_res / recHit.positionError());
286  meLongPosPullvsE_->Fill(m_btlSimHits[detId.rawId()].energy, longpos_res / recHit.positionError());
287 
288  meTPullvsEta_->Fill(std::abs(global_point_sim.eta()), time_res / recHit.timeError());
289  meTPullvsE_->Fill(m_btlSimHits[detId.rawId()].energy, time_res / recHit.timeError());
290  }
291 
292  n_reco_btl++;
293 
294  } // recHit loop
295 
296  if (n_reco_btl > 0)
297  meNhits_->Fill(log10(n_reco_btl));
298 
299  // --- Loop over the BTL RECO clusters ---
300  for (const auto& DetSetClu : *btlRecCluHandle) {
301  for (const auto& cluster : DetSetClu) {
302  if (cluster.energy() < hitMinEnergy_)
303  continue;
304  BTLDetId cluId = cluster.id();
305  DetId detIdObject(cluId);
306  const auto& genericDet = geom->idToDetUnit(detIdObject);
307  if (genericDet == nullptr) {
308  throw cms::Exception("BtlLocalRecoValidation")
309  << "GeographicalID: " << std::hex << cluId << " is invalid!" << std::dec << std::endl;
310  }
311 
312  const ProxyMTDTopology& topoproxy = static_cast<const ProxyMTDTopology&>(genericDet->topology());
313  const RectangularMTDTopology& topo = static_cast<const RectangularMTDTopology&>(topoproxy.specificTopology());
314 
315  // --- Cluster position in the module reference frame
316  Local3DPoint local_point(topo.localX(cluster.x()), topo.localY(cluster.y()), 0.);
317  const auto& global_point = genericDet->toGlobal(local_point);
318 
319  meCluEnergy_->Fill(cluster.energy());
320  meCluTime_->Fill(cluster.time());
321  meCluTimeError_->Fill(cluster.timeError());
322  meCluPhi_->Fill(global_point.phi());
323  meCluEta_->Fill(global_point.eta());
324  meCluZvsPhi_->Fill(global_point.z(), global_point.phi());
325  meCluHits_->Fill(cluster.size());
326 
327  // --- Get the SIM hits associated to the cluster and calculate
328  // the cluster SIM energy, time and position
329 
330  double cluEneSIM = 0.;
331  double cluTimeSIM = 0.;
332  double cluLocXSIM = 0.;
333  double cluLocYSIM = 0.;
334  double cluLocZSIM = 0.;
335 
336  for (int ihit = 0; ihit < cluster.size(); ++ihit) {
337  int hit_row = cluster.minHitRow() + cluster.hitOffset()[ihit * 2];
338  int hit_col = cluster.minHitCol() + cluster.hitOffset()[ihit * 2 + 1];
339 
340  // Match the RECO hit to the corresponding SIM hit
341  for (const auto& recHit : *btlRecHitsHandle) {
342  BTLDetId hitId(recHit.id().rawId());
343 
344  if (m_btlSimHits.count(hitId.rawId()) == 0)
345  continue;
346 
347  // Check the hit position
348  if (hitId.mtdSide() != cluId.mtdSide() || hitId.mtdRR() != cluId.mtdRR() || recHit.row() != hit_row ||
349  recHit.column() != hit_col)
350  continue;
351 
352  // Check the hit energy and time
353  if (recHit.energy() != cluster.hitENERGY()[ihit] || recHit.time() != cluster.hitTIME()[ihit])
354  continue;
355 
356  // SIM hit's position in the module reference frame
357  Local3DPoint local_point_sim(convertMmToCm(m_btlSimHits[recHit.id().rawId()].x_local),
358  convertMmToCm(m_btlSimHits[recHit.id().rawId()].y_local),
359  convertMmToCm(m_btlSimHits[recHit.id().rawId()].z_local));
360  local_point_sim =
361  topo.pixelToModuleLocalPoint(local_point_sim, hitId.row(topo.nrows()), hitId.column(topo.nrows()));
362 
363  // Calculate the SIM cluster's position in the module reference frame
364  cluLocXSIM += local_point_sim.x() * m_btlSimHits[recHit.id().rawId()].energy;
365  cluLocYSIM += local_point_sim.y() * m_btlSimHits[recHit.id().rawId()].energy;
366  cluLocZSIM += local_point_sim.z() * m_btlSimHits[recHit.id().rawId()].energy;
367 
368  // Calculate the SIM cluster energy and time
369  cluEneSIM += m_btlSimHits[recHit.id().rawId()].energy;
370  cluTimeSIM += m_btlSimHits[recHit.id().rawId()].time * m_btlSimHits[recHit.id().rawId()].energy;
371 
372  } // recHit loop
373 
374  } // ihit loop
375 
376  // --- Fill the cluster resolution histograms
377  if (cluTimeSIM > 0. && cluEneSIM > 0.) {
378  cluTimeSIM /= cluEneSIM;
379 
380  Local3DPoint cluLocalPosSIM(cluLocXSIM / cluEneSIM, cluLocYSIM / cluEneSIM, cluLocZSIM / cluEneSIM);
381  const auto& cluGlobalPosSIM = genericDet->toGlobal(cluLocalPosSIM);
382 
383  float time_res = cluster.time() - cluTimeSIM;
384  float energy_res = cluster.energy() - cluEneSIM;
385  meCluTimeRes_->Fill(time_res);
386  meCluEnergyRes_->Fill(energy_res);
387 
388  float rho_res = global_point.perp() - cluGlobalPosSIM.perp();
389  float phi_res = global_point.phi() - cluGlobalPosSIM.phi();
390 
391  meCluRhoRes_->Fill(rho_res);
392  meCluPhiRes_->Fill(phi_res);
393 
394  if (LocalPosDebug_) {
395  float x_res = global_point.x() - cluGlobalPosSIM.x();
396  float y_res = global_point.y() - cluGlobalPosSIM.y();
397  float z_res = global_point.z() - cluGlobalPosSIM.z();
398 
399  meCluXRes_->Fill(x_res);
400  meCluYRes_->Fill(y_res);
401  meCluZRes_->Fill(z_res);
402 
403  meCluYXLocal_->Fill(local_point.x(), local_point.y());
404  meCluYXLocalSim_->Fill(cluLocalPosSIM.x(), cluLocalPosSIM.y());
405  }
406 
407  meCluTPullvsEta_->Fill(std::abs(cluGlobalPosSIM.eta()), time_res / cluster.timeError());
408  meCluTPullvsE_->Fill(cluEneSIM, time_res / cluster.timeError());
409 
410  } // if ( cluTimeSIM > 0. && cluEneSIM > 0. )
411 
412  } // cluster loop
413 
414  } // DetSetClu loop
415 
416  // --- Loop over the BTL Uncalibrated RECO hits
417  if (uncalibRecHitsPlots_) {
418  auto btlUncalibRecHitsHandle = makeValid(iEvent.getHandle(btlUncalibRecHitsToken_));
419 
420  for (const auto& uRecHit : *btlUncalibRecHitsHandle) {
421  BTLDetId detId = uRecHit.id();
422 
423  // --- Skip UncalibratedRecHits not matched to SimHits
424  if (m_btlSimHits.count(detId.rawId()) != 1)
425  continue;
426 
427  DetId geoId = detId.geographicalId(MTDTopologyMode::crysLayoutFromTopoMode(topology->getMTDTopologyMode()));
428  const MTDGeomDet* thedet = geom->idToDet(geoId);
429  if (thedet == nullptr)
430  throw cms::Exception("BtlLocalRecoValidation") << "GeographicalID: " << std::hex << geoId.rawId() << " ("
431  << detId.rawId() << ") is invalid!" << std::dec << std::endl;
432  const ProxyMTDTopology& topoproxy = static_cast<const ProxyMTDTopology&>(thedet->topology());
433  const RectangularMTDTopology& topo = static_cast<const RectangularMTDTopology&>(topoproxy.specificTopology());
434 
435  Local3DPoint local_point(0., 0., 0.);
436  local_point = topo.pixelToModuleLocalPoint(local_point, detId.row(topo.nrows()), detId.column(topo.nrows()));
437  const auto& global_point = thedet->toGlobal(local_point);
438 
439  // --- Combine the information from the left and right BTL cell sides
440 
441  float nHits = 0.;
442  float hit_amplitude = 0.;
443  float hit_time = 0.;
444 
445  // left side:
446  if (uRecHit.amplitude().first > 0.) {
447  hit_amplitude += uRecHit.amplitude().first;
448  hit_time += uRecHit.time().first;
449  nHits += 1.;
450  }
451  // right side:
452  if (uRecHit.amplitude().second > 0.) {
453  hit_amplitude += uRecHit.amplitude().second;
454  hit_time += uRecHit.time().second;
455  nHits += 1.;
456  }
457 
458  hit_amplitude /= nHits;
459  hit_time /= nHits;
460 
461  // --- Fill the histograms
462 
463  if (hit_amplitude < hitMinAmplitude_)
464  continue;
465 
466  float time_res = hit_time - m_btlSimHits[detId.rawId()].time;
467 
468  // amplitude histograms
469 
470  int qBin = (int)(hit_amplitude / binWidthQ_);
471  if (qBin > nBinsQ_ - 1)
472  qBin = nBinsQ_ - 1;
473 
474  meTimeResQ_[qBin]->Fill(time_res);
475 
476  int etaBin = 0;
477  for (int ibin = 1; ibin < nBinsQEta_; ++ibin)
478  if (fabs(global_point.eta()) >= binsQEta_[ibin] && fabs(global_point.eta()) < binsQEta_[ibin + 1])
479  etaBin = ibin;
480 
481  meTimeResQvsEta_[qBin][etaBin]->Fill(time_res);
482 
483  // eta histograms
484 
485  etaBin = (int)(fabs(global_point.eta()) / binWidthEta_);
486  if (etaBin > nBinsEta_ - 1)
487  etaBin = nBinsEta_ - 1;
488 
489  meTimeResEta_[etaBin]->Fill(time_res);
490 
491  qBin = 0;
492  for (int ibin = 1; ibin < nBinsEtaQ_; ++ibin)
493  if (hit_amplitude >= binsEtaQ_[ibin] && hit_amplitude < binsEtaQ_[ibin + 1])
494  qBin = ibin;
495 
496  meTimeResEtavsQ_[etaBin][qBin]->Fill(time_res);
497 
498  } // uRecHit loop
499  }
500 }
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
virtual const Topology & topology() const
Definition: GeomDet.cc:67
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
static constexpr float binWidthQ_
static constexpr int nBinsEtaQ_
MonitorElement * meLongPosPullvsEta_
constexpr NumType convertUnitsTo(double desiredUnits, NumType val)
Definition: GeantUnits.h:100
void Fill(long long x)
Handle< PROD > getHandle(EDGetTokenT< PROD > token) const
Definition: Event.h:563
BTLDetId geographicalId(CrysLayout lay) const
Definition: BTLDetId.cc:171
float localX(const float mpX) const override
static constexpr float binWidthEta_
edm::EDGetTokenT< FTLClusterCollection > btlRecCluToken_
static constexpr float binsQEta_[nBinsQEta_+1]
virtual const PixelTopology & specificTopology() const
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static constexpr int nBinsQEta_
int nrows() const override
edm::ESGetToken< MTDTopology, MTDTopologyRcd > mtdtopoToken_
MonitorElement * meLocalOccupancy_
LocalPoint pixelToModuleLocalPoint(const LocalPoint &plp, int row, int col) const
MonitorElement * meTimeResEta_[nBinsEta_]
int mtdRR() const
Definition: MTDDetId.h:64
float localY(const float mpY) const override
edm::EDGetTokenT< FTLUncalibratedRecHitCollection > btlUncalibRecHitsToken_
int mtdSide() const
Definition: MTDDetId.h:59
Definition: DetId.h:17
edm::EDGetTokenT< FTLRecHitCollection > btlRecHitsToken_
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell const int32_t nHits
static constexpr int nBinsQ_
MonitorElement * meTimeResQvsEta_[nBinsQ_][nBinsQEta_]
static constexpr float binsEtaQ_[nBinsEtaQ_+1]
MonitorElement * meTimeResEtavsQ_[nBinsEta_][nBinsEtaQ_]
ESTransientHandle< T > getTransientHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:168
Detector identifier class for the Barrel Timing Layer. The crystal count must start from 0...
Definition: BTLDetId.h:18
constexpr NumType convertMmToCm(NumType millimeters)
Definition: GeantUnits.h:63
int column(unsigned nrows=16) const
Definition: BTLDetId.h:110
static constexpr int nBinsEta_
BTLDetId::CrysLayout crysLayoutFromTopoMode(const int &topoMode)
auto makeValid(const U &iOtherHandleType) noexcept(false)
Definition: ValidHandle.h:52
edm::EDGetTokenT< CrossingFrame< PSimHit > > btlSimHitsToken_
T x() const
Definition: PV3DBase.h:59
MonitorElement * meTimeResQ_[nBinsQ_]
int etaBin(const l1t::HGCalMulticluster *cl)
int row(unsigned nrows=16) const
Definition: BTLDetId.h:105
void BtlLocalRecoValidation::bookHistograms ( DQMStore::IBooker ibook,
edm::Run const &  run,
edm::EventSetup const &  iSetup 
)
overrideprivatevirtual

Implements DQMEDAnalyzer.

Definition at line 503 of file BtlLocalRecoValidation.cc.

References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), dqm::implementation::IBooker::bookProfile(), folder_, LocalPosDebug_, meCluEnergy_, meCluEnergyRes_, meCluEta_, meCluHits_, meCluPhi_, meCluPhiRes_, meCluRhoRes_, meCluTime_, meCluTimeError_, meCluTimeRes_, meCluTPullvsE_, meCluTPullvsEta_, meCluXRes_, meCluYRes_, meCluYXLocal_, meCluYXLocalSim_, meCluZRes_, meCluZvsPhi_, meEnergyRes_, meHitEnergy_, meHitEta_, meHitEvsEta_, meHitEvsPhi_, meHitEvsZ_, meHitLongPos_, meHitLongPosErr_, meHitPhi_, meHitTime_, meHitTimeError_, meHitTvsE_, meHitTvsEta_, meHitTvsPhi_, meHitTvsZ_, meHitX_, meHitXlocal_, meHitY_, meHitYlocal_, meHitZ_, meHitZlocal_, meLocalOccupancy_, meLongPosPull_, meLongPosPullvsE_, meLongPosPullvsEta_, meNhits_, meOccupancy_, meTimeRes_, meTimeResEta_, meTimeResEtavsQ_, meTimeResQ_, meTimeResQvsEta_, meTPullvsE_, meTPullvsEta_, nBinsEta_, nBinsEtaQ_, nBinsQ_, nBinsQEta_, dqm::implementation::NavigatorBase::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, and uncalibRecHitsPlots_.

505  {
506  ibook.setCurrentFolder(folder_);
507 
508  // --- histograms booking
509 
510  meNhits_ = ibook.book1D("BtlNhits", "Number of BTL RECO hits;log_{10}(N_{RECO})", 100, 0., 5.25);
511 
512  meHitEnergy_ = ibook.book1D("BtlHitEnergy", "BTL RECO hits energy;E_{RECO} [MeV]", 100, 0., 20.);
513  meHitTime_ = ibook.book1D("BtlHitTime", "BTL RECO hits ToA;ToA_{RECO} [ns]", 100, 0., 25.);
514  meHitTimeError_ = ibook.book1D("BtlHitTimeError", "BTL RECO hits ToA error;#sigma^{ToA}_{RECO} [ns]", 50, 0., 0.1);
515  meOccupancy_ = ibook.book2D(
516  "BtlOccupancy", "BTL RECO hits occupancy;Z_{RECO} [cm]; #phi_{RECO} [rad]", 65, -260., 260., 126, -3.2, 3.2);
517  if (LocalPosDebug_) {
518  meLocalOccupancy_ = ibook.book2D(
519  "BtlLocalOccupancy", "BTL RECO hits local occupancy;X_{RECO} [cm]; Y_{RECO} [cm]", 100, 10., 10., 60, -3., 3.);
520  meHitXlocal_ = ibook.book1D("BtlHitXlocal", "BTL RECO local X;X_{RECO}^{LOC} [cm]", 100, -10., 10.);
521  meHitYlocal_ = ibook.book1D("BtlHitYlocal", "BTL RECO local Y;Y_{RECO}^{LOC} [cm]", 60, -3, 3);
522  meHitZlocal_ = ibook.book1D("BtlHitZlocal", "BTL RECO local z;z_{RECO}^{LOC} [cm]", 10, -1, 1);
523  }
524  meHitX_ = ibook.book1D("BtlHitX", "BTL RECO hits X;X_{RECO} [cm]", 60, -120., 120.);
525  meHitY_ = ibook.book1D("BtlHitY", "BTL RECO hits Y;Y_{RECO} [cm]", 60, -120., 120.);
526  meHitZ_ = ibook.book1D("BtlHitZ", "BTL RECO hits Z;Z_{RECO} [cm]", 100, -260., 260.);
527  meHitPhi_ = ibook.book1D("BtlHitPhi", "BTL RECO hits #phi;#phi_{RECO} [rad]", 126, -3.2, 3.2);
528  meHitEta_ = ibook.book1D("BtlHitEta", "BTL RECO hits #eta;#eta_{RECO}", 100, -1.55, 1.55);
529  meHitTvsE_ =
530  ibook.bookProfile("BtlHitTvsE", "BTL RECO ToA vs energy;E_{RECO} [MeV];ToA_{RECO} [ns]", 50, 0., 20., 0., 100.);
531  meHitEvsPhi_ = ibook.bookProfile(
532  "BtlHitEvsPhi", "BTL RECO energy vs #phi;#phi_{RECO} [rad];E_{RECO} [MeV]", 50, -3.2, 3.2, 0., 100.);
533  meHitEvsEta_ = ibook.bookProfile(
534  "BtlHitEvsEta", "BTL RECO energy vs #eta;#eta_{RECO};E_{RECO} [MeV]", 50, -1.55, 1.55, 0., 100.);
535  meHitEvsZ_ =
536  ibook.bookProfile("BtlHitEvsZ", "BTL RECO energy vs Z;Z_{RECO} [cm];E_{RECO} [MeV]", 50, -260., 260., 0., 100.);
537  meHitTvsPhi_ = ibook.bookProfile(
538  "BtlHitTvsPhi", "BTL RECO ToA vs #phi;#phi_{RECO} [rad];ToA_{RECO} [ns]", 50, -3.2, 3.2, 0., 100.);
539  meHitTvsEta_ =
540  ibook.bookProfile("BtlHitTvsEta", "BTL RECO ToA vs #eta;#eta_{RECO};ToA_{RECO} [ns]", 50, -1.6, 1.6, 0., 100.);
541  meHitTvsZ_ =
542  ibook.bookProfile("BtlHitTvsZ", "BTL RECO ToA vs Z;Z_{RECO} [cm];ToA_{RECO} [ns]", 50, -260., 260., 0., 100.);
543  meHitLongPos_ = ibook.book1D("BtlLongPos", "BTL RECO hits longitudinal position;long. pos._{RECO}", 100, -10, 10);
545  ibook.book1D("BtlLongPosErr", "BTL RECO hits longitudinal position error; long. pos. error_{RECO}", 100, -1, 1);
546  meTimeRes_ = ibook.book1D("BtlTimeRes", "BTL time resolution;T_{RECO}-T_{SIM}", 100, -0.5, 0.5);
547  meEnergyRes_ = ibook.book1D("BtlEnergyRes", "BTL energy resolution;E_{RECO}-E_{SIM}", 100, -0.5, 0.5);
548  meLongPosPull_ = ibook.book1D("BtlLongPosPull",
549  "BTL longitudinal position pull;X^{loc}_{RECO}-X^{loc}_{SIM}/#sigma_{xloc_{RECO}}",
550  100,
551  -5.,
552  5.);
554  "BtlLongposPullvsE",
555  "BTL longitudinal position pull vs E;E_{SIM} [MeV];X^{loc}_{RECO}-X^{loc}_{SIM}/#sigma_{xloc_{RECO}}",
556  20,
557  0.,
558  20.,
559  -5.,
560  5.,
561  "S");
563  "BtlLongposPullvsEta",
564  "BTL longitudinal position pull vs #eta;|#eta_{RECO}|;X^{loc}_{RECO}-X^{loc}_{SIM}/#sigma_{xloc_{RECO}}",
565  32,
566  0,
567  1.55,
568  -5.,
569  5.,
570  "S");
571  meTPullvsE_ = ibook.bookProfile(
572  "BtlTPullvsE", "BTL time pull vs E;E_{SIM} [MeV];(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}", 20, 0., 20., -5., 5., "S");
573  meTPullvsEta_ = ibook.bookProfile("BtlTPullvsEta",
574  "BTL time pull vs #eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
575  30,
576  0,
577  1.55,
578  -5.,
579  5.,
580  "S");
581  meCluTime_ = ibook.book1D("BtlCluTime", "BTL cluster time ToA;ToA [ns]", 250, 0, 25);
582  meCluTimeError_ = ibook.book1D("BtlCluTimeError", "BTL cluster time error;#sigma_{t} [ns]", 100, 0, 0.1);
583  meCluEnergy_ = ibook.book1D("BtlCluEnergy", "BTL cluster energy;E_{RECO} [MeV]", 100, 0, 20);
584  meCluPhi_ = ibook.book1D("BtlCluPhi", "BTL cluster #phi;#phi_{RECO} [rad]", 144, -3.2, 3.2);
585  meCluEta_ = ibook.book1D("BtlCluEta", "BTL cluster #eta;#eta_{RECO}", 100, -1.55, 1.55);
586  meCluHits_ = ibook.book1D("BtlCluHitNumber", "BTL hits per cluster; Cluster size", 10, 0, 10);
587  meCluZvsPhi_ = ibook.book2D(
588  "BtlOccupancy", "BTL cluster Z vs #phi;Z_{RECO} [cm]; #phi_{RECO} [rad]", 144, -260., 260., 50, -3.2, 3.2);
589 
590  meCluTimeRes_ = ibook.book1D("BtlCluTimeRes", "BTL cluster time resolution;T_{RECO}-T_{SIM} [ns]", 100, -0.5, 0.5);
592  ibook.book1D("BtlCluEnergyRes", "BTL cluster energy resolution;E_{RECO}-E_{SIM} [MeV]", 100, -0.5, 0.5);
593  meCluTPullvsE_ = ibook.bookProfile("BtlCluTPullvsE",
594  "BTL cluster time pull vs E;E_{SIM} [MeV];(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
595  20,
596  0.,
597  20.,
598  -5.,
599  5.,
600  "S");
602  ibook.bookProfile("BtlCluTPullvsEta",
603  "BTL cluster time pull vs #eta;|#eta_{RECO}|;(T_{RECO}-T_{SIM})/#sigma_{T_{RECO}}",
604  30,
605  0,
606  1.55,
607  -5.,
608  5.,
609  "S");
610  meCluRhoRes_ =
611  ibook.book1D("BtlCluRhoRes", "BTL cluster #rho resolution;#rho_{RECO}-#rho_{SIM} [cm]", 100, -0.5, 0.5);
612  meCluPhiRes_ =
613  ibook.book1D("BtlCluPhiRes", "BTL cluster #phi resolution;#phi_{RECO}-#phi_{SIM} [rad]", 100, -0.03, 0.03);
614  if (LocalPosDebug_) {
615  meCluXRes_ = ibook.book1D("BtlCluXRes", "BTL cluster X resolution;X_{RECO}-X_{SIM} [cm]", 100, -3.1, 3.1);
616  meCluYRes_ = ibook.book1D("BtlCluYRes", "BTL cluster Y resolution;Y_{RECO}-Y_{SIM} [cm]", 100, -3.1, 3.1);
617  meCluZRes_ = ibook.book1D("BtlCluZRes", "BTL cluster Z resolution;Z_{RECO}-Z_{SIM} [cm]", 100, -0.2, 0.2);
618  meCluYXLocal_ = ibook.book2D("BtlCluYXLocal",
619  "BTL cluster local Y vs X;X^{local}_{RECO} [cm];Y^{local}_{RECO} [cm]",
620  200,
621  -9.5,
622  9.5,
623  200,
624  -2.8,
625  2.8);
626  meCluYXLocalSim_ = ibook.book2D("BtlCluYXLocalSim",
627  "BTL cluster local Y vs X;X^{local}_{SIM} [cm];Y^{local}_{SIM} [cm]",
628  200,
629  -9.5,
630  9.5,
631  200,
632  -2.8,
633  2.8);
634  }
635 
636  // --- UncalibratedRecHits histograms
637 
638  if (uncalibRecHitsPlots_) {
639  for (unsigned int ihistoQ = 0; ihistoQ < nBinsQ_; ++ihistoQ) {
640  std::string hname = Form("TimeResQ_%d", ihistoQ);
641  std::string htitle = Form("BTL time resolution (Q bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoQ);
642  meTimeResQ_[ihistoQ] = ibook.book1D(hname, htitle, 200, -0.3, 0.7);
643 
644  for (unsigned int ihistoEta = 0; ihistoEta < nBinsQEta_; ++ihistoEta) {
645  hname = Form("TimeResQvsEta_%d_%d", ihistoQ, ihistoEta);
646  htitle = Form("BTL time resolution (Q bin = %d, |#eta| bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoQ, ihistoEta);
647  meTimeResQvsEta_[ihistoQ][ihistoEta] = ibook.book1D(hname, htitle, 200, -0.3, 0.7);
648 
649  } // ihistoEta loop
650 
651  } // ihistoQ loop
652 
653  for (unsigned int ihistoEta = 0; ihistoEta < nBinsEta_; ++ihistoEta) {
654  std::string hname = Form("TimeResEta_%d", ihistoEta);
655  std::string htitle = Form("BTL time resolution (|#eta| bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoEta);
656  meTimeResEta_[ihistoEta] = ibook.book1D(hname, htitle, 200, -0.3, 0.7);
657 
658  for (unsigned int ihistoQ = 0; ihistoQ < nBinsEtaQ_; ++ihistoQ) {
659  hname = Form("TimeResEtavsQ_%d_%d", ihistoEta, ihistoQ);
660  htitle = Form("BTL time resolution (|#eta| bin = %d, Q bin = %d);T_{RECO} - T_{SIM} [ns]", ihistoEta, ihistoQ);
661  meTimeResEtavsQ_[ihistoEta][ihistoQ] = ibook.book1D(hname, htitle, 200, -0.3, 0.7);
662 
663  } // ihistoQ loop
664 
665  } // ihistoEta loop
666  }
667 }
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
static constexpr int nBinsEtaQ_
MonitorElement * meLongPosPullvsEta_
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:322
static constexpr int nBinsQEta_
MonitorElement * meLocalOccupancy_
MonitorElement * meTimeResEta_[nBinsEta_]
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:177
static constexpr int nBinsQ_
MonitorElement * meTimeResQvsEta_[nBinsQ_][nBinsQEta_]
MonitorElement * meTimeResEtavsQ_[nBinsEta_][nBinsEtaQ_]
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_]
void BtlLocalRecoValidation::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 670 of file BtlLocalRecoValidation.cc.

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

670  {
672 
673  desc.add<std::string>("folder", "MTD/BTL/LocalReco");
674  desc.add<edm::InputTag>("recHitsTag", edm::InputTag("mtdRecHits", "FTLBarrel"));
675  desc.add<edm::InputTag>("uncalibRecHitsTag", edm::InputTag("mtdUncalibratedRecHits", "FTLBarrel"));
676  desc.add<edm::InputTag>("simHitsTag", edm::InputTag("mix", "g4SimHitsFastTimerHitsBarrel"));
677  desc.add<edm::InputTag>("recCluTag", edm::InputTag("mtdClusters", "FTLBarrel"));
678  desc.add<double>("HitMinimumEnergy", 1.); // [MeV]
679  desc.add<bool>("LocalPositionDebug", false);
680  desc.add<bool>("UncalibRecHitsPlots", false);
681  desc.add<double>("HitMinimumAmplitude", 30.); // [pC]
682 
683  descriptions.add("btlLocalReco", desc);
684 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)

Member Data Documentation

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

Definition at line 155 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

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

Definition at line 147 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

constexpr float BtlLocalRecoValidation::binWidthEta_ = 0.05
staticprivate

Definition at line 153 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

constexpr float BtlLocalRecoValidation::binWidthQ_ = 30.
staticprivate

Definition at line 145 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

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

Definition at line 75 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and BtlLocalRecoValidation().

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

Definition at line 72 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and BtlLocalRecoValidation().

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

Definition at line 74 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and BtlLocalRecoValidation().

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

Definition at line 73 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and BtlLocalRecoValidation().

const std::string BtlLocalRecoValidation::folder_
private

Definition at line 66 of file BtlLocalRecoValidation.cc.

Referenced by bookHistograms().

const double BtlLocalRecoValidation::hitMinAmplitude_
private

Definition at line 70 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

const double BtlLocalRecoValidation::hitMinEnergy_
private

Definition at line 67 of file BtlLocalRecoValidation.cc.

Referenced by analyze().

const bool BtlLocalRecoValidation::LocalPosDebug_
private

Definition at line 68 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluEnergy_
private

Definition at line 124 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluEnergyRes_
private

Definition at line 131 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluEta_
private

Definition at line 126 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluHits_
private

Definition at line 127 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluPhi_
private

Definition at line 125 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluPhiRes_
private

Definition at line 135 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluRhoRes_
private

Definition at line 134 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluTime_
private

Definition at line 122 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluTimeError_
private

Definition at line 123 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluTimeRes_
private

Definition at line 130 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluTPullvsE_
private

Definition at line 132 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluTPullvsEta_
private

Definition at line 133 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluXRes_
private

Definition at line 136 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluYRes_
private

Definition at line 137 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluYXLocal_
private

Definition at line 139 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluYXLocalSim_
private

Definition at line 140 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluZRes_
private

Definition at line 138 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meCluZvsPhi_
private

Definition at line 128 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meEnergyRes_
private

Definition at line 113 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitEnergy_
private

Definition at line 84 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitEta_
private

Definition at line 100 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitEvsEta_
private

Definition at line 104 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitEvsPhi_
private

Definition at line 103 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitEvsZ_
private

Definition at line 105 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitLongPos_
private

Definition at line 109 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitLongPosErr_
private

Definition at line 110 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitPhi_
private

Definition at line 99 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitTime_
private

Definition at line 85 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitTimeError_
private

Definition at line 86 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitTvsE_
private

Definition at line 102 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitTvsEta_
private

Definition at line 107 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitTvsPhi_
private

Definition at line 106 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitTvsZ_
private

Definition at line 108 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitX_
private

Definition at line 96 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitXlocal_
private

Definition at line 92 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitY_
private

Definition at line 97 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitYlocal_
private

Definition at line 93 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitZ_
private

Definition at line 98 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meHitZlocal_
private

Definition at line 94 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meLocalOccupancy_
private

Definition at line 91 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meLongPosPull_
private

Definition at line 115 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meLongPosPullvsE_
private

Definition at line 116 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meLongPosPullvsEta_
private

Definition at line 117 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meNhits_
private

Definition at line 82 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meOccupancy_
private

Definition at line 88 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meTimeRes_
private

Definition at line 112 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meTimeResEta_[nBinsEta_]
private

Definition at line 157 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

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

Definition at line 158 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meTimeResQ_[nBinsQ_]
private

Definition at line 149 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

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

Definition at line 150 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meTPullvsE_
private

Definition at line 119 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* BtlLocalRecoValidation::meTPullvsEta_
private

Definition at line 120 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

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

Definition at line 77 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and BtlLocalRecoValidation().

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

Definition at line 78 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and BtlLocalRecoValidation().

constexpr int BtlLocalRecoValidation::nBinsEta_ = 31
staticprivate

Definition at line 152 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

constexpr int BtlLocalRecoValidation::nBinsEtaQ_ = 7
staticprivate

Definition at line 154 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

constexpr int BtlLocalRecoValidation::nBinsQ_ = 20
staticprivate

Definition at line 144 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

constexpr int BtlLocalRecoValidation::nBinsQEta_ = 3
staticprivate

Definition at line 146 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), and bookHistograms().

const bool BtlLocalRecoValidation::uncalibRecHitsPlots_
private

Definition at line 69 of file BtlLocalRecoValidation.cc.

Referenced by analyze(), bookHistograms(), and BtlLocalRecoValidation().