CMS 3D CMS Logo

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

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

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

Public Member Functions

 EtlDigiHitsValidation (const edm::ParameterSet &)
 
 ~EtlDigiHitsValidation () 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
 

Private Attributes

edm::EDGetTokenT< ETLDigiCollectionetlDigiHitsToken_
 
const std::string folder_
 
MonitorElementmeHitCharge_ [4]
 
MonitorElementmeHitEta_ [4]
 
MonitorElementmeHitPhi_ [4]
 
MonitorElementmeHitQvsEta_ [4]
 
MonitorElementmeHitQvsPhi_ [4]
 
MonitorElementmeHitTime_ [4]
 
MonitorElementmeHitTvsEta_ [4]
 
MonitorElementmeHitTvsPhi_ [4]
 
MonitorElementmeHitTvsQ_ [4]
 
MonitorElementmeHitX_ [4]
 
MonitorElementmeHitXlocal_ [2]
 
MonitorElementmeHitY_ [4]
 
MonitorElementmeHitYlocal_ [2]
 
MonitorElementmeHitZ_ [4]
 
MonitorElementmeLocalOccupancy_ [2]
 
MonitorElementmeNhits_ [4]
 
MonitorElementmeNhitsPerLGAD_ [4]
 
MonitorElementmeOccupancy_ [4]
 
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecordmtdgeoToken_
 
edm::ESGetToken< MTDTopology, MTDTopologyRcdmtdtopoToken_
 
std::array< std::unordered_map< uint32_t, uint32_t >, 4 > ndigiPerLGAD_
 
const bool optionalPlots_
 

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: ETL DIGI hits validation

Implementation: [Notes on implementation]

Definition at line 34 of file EtlDigiHitsValidation.cc.

Constructor & Destructor Documentation

◆ EtlDigiHitsValidation()

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

Definition at line 86 of file EtlDigiHitsValidation.cc.

References etlDigiHitsToken_, edm::ParameterSet::getParameter(), mtdgeoToken_, and mtdtopoToken_.

87  : folder_(iConfig.getParameter<std::string>("folder")),
88  optionalPlots_(iConfig.getParameter<bool>("optionalPlots")) {
89  etlDigiHitsToken_ = consumes<ETLDigiCollection>(iConfig.getParameter<edm::InputTag>("inputTag"));
90  mtdgeoToken_ = esConsumes<MTDGeometry, MTDDigiGeometryRecord>();
91  mtdtopoToken_ = esConsumes<MTDTopology, MTDTopologyRcd>();
92 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDGetTokenT< ETLDigiCollection > etlDigiHitsToken_
edm::ESGetToken< MTDTopology, MTDTopologyRcd > mtdtopoToken_
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_

◆ ~EtlDigiHitsValidation()

EtlDigiHitsValidation::~EtlDigiHitsValidation ( )
override

Definition at line 94 of file EtlDigiHitsValidation.cc.

94 {}

Member Function Documentation

◆ analyze()

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

Reimplemented from DQMEDAnalyzer.

Definition at line 97 of file EtlDigiHitsValidation.cc.

References TauDecayModes::dec, hcalRecHitTable_cff::detId, etlDigiHitsToken_, MTDTopologyMode::etlLayoutFromTopoMode(), Exception, dqm::impl::MonitorElement::Fill(), relativeConstraints::geom, MTDTopology::getMTDTopologyMode(), edm::EventSetup::getTransientHandle(), mps_fire::i, iEvent, PixelTopology::localX(), PixelTopology::localY(), edm::makeValid(), meHitCharge_, meHitEta_, meHitPhi_, meHitQvsEta_, meHitQvsPhi_, meHitTime_, meHitTvsEta_, meHitTvsPhi_, meHitTvsQ_, meHitX_, meHitXlocal_, meHitY_, meHitYlocal_, meHitZ_, meLocalOccupancy_, meNhits_, meNhitsPerLGAD_, meOccupancy_, mtdgeoToken_, mtdtopoToken_, ndigiPerLGAD_, optionalPlots_, DetId::rawId(), ecalGpuTask_cfi::sample, GeomDet::toGlobal(), GeomDet::topology(), ETLDetId::tp, mps_merge::weight, PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().

97  {
98  using namespace edm;
99 
100  auto geometryHandle = iSetup.getTransientHandle(mtdgeoToken_);
101  const MTDGeometry* geom = geometryHandle.product();
102 
103  auto topologyHandle = iSetup.getTransientHandle(mtdtopoToken_);
104  const MTDTopology* topology = topologyHandle.product();
105 
106  bool topo1Dis = false;
107  bool topo2Dis = false;
109  topo1Dis = true;
110  } else {
111  topo2Dis = true;
112  }
113 
114  auto etlDigiHitsHandle = makeValid(iEvent.getHandle(etlDigiHitsToken_));
115 
116  // --- Loop over the ETL DIGI hits
117 
118  unsigned int n_digi_etl[4] = {0, 0, 0, 0};
119  for (size_t i = 0; i < 4; i++) {
120  ndigiPerLGAD_[i].clear();
121  }
122 
123  for (const auto& dataFrame : *etlDigiHitsHandle) {
124  // --- Get the on-time sample
125  int isample = 2;
126  double weight = 1.0;
127  const auto& sample = dataFrame.sample(isample);
128  ETLDetId detId = dataFrame.id();
129  DetId geoId = detId.geographicalId();
130 
131  const MTDGeomDet* thedet = geom->idToDet(geoId);
132  if (thedet == nullptr)
133  throw cms::Exception("EtlDigiHitsValidation") << "GeographicalID: " << std::hex << geoId.rawId() << " ("
134  << detId.rawId() << ") is invalid!" << std::dec << std::endl;
135  const PixelTopology& topo = static_cast<const PixelTopology&>(thedet->topology());
136 
137  Local3DPoint local_point(topo.localX(sample.row()), topo.localY(sample.column()), 0.);
138  const auto& global_point = thedet->toGlobal(local_point);
139 
140  // --- Fill the histograms
141 
142  int idet = 999;
143 
144  if (topo1Dis) {
145  if (detId.zside() == -1) {
146  idet = 0;
147  } else if (detId.zside() == 1) {
148  idet = 2;
149  } else {
150  continue;
151  }
152  }
153 
154  if (topo2Dis) {
155  if (detId.discSide() == 1) {
156  weight = -weight;
157  }
158  if ((detId.zside() == -1) && (detId.nDisc() == 1)) {
159  idet = 0;
160  } else if ((detId.zside() == -1) && (detId.nDisc() == 2)) {
161  idet = 1;
162  } else if ((detId.zside() == 1) && (detId.nDisc() == 1)) {
163  idet = 2;
164  } else if ((detId.zside() == 1) && (detId.nDisc() == 2)) {
165  idet = 3;
166  } else {
167  continue;
168  }
169  }
170 
171  meHitCharge_[idet]->Fill(sample.data());
172  meHitTime_[idet]->Fill(sample.toa());
173  meOccupancy_[idet]->Fill(global_point.x(), global_point.y(), weight);
174 
175  if (optionalPlots_) {
176  if ((idet == 0) || (idet == 1)) {
177  meLocalOccupancy_[0]->Fill(local_point.x(), local_point.y());
178  meHitXlocal_[0]->Fill(local_point.x());
179  meHitYlocal_[0]->Fill(local_point.y());
180 
181  } else if ((idet == 2) || (idet == 3)) {
182  meLocalOccupancy_[1]->Fill(local_point.x(), local_point.y());
183  meHitXlocal_[1]->Fill(local_point.x());
184  meHitYlocal_[1]->Fill(local_point.y());
185  }
186  }
187 
188  meHitX_[idet]->Fill(global_point.x());
189  meHitY_[idet]->Fill(global_point.y());
190  meHitZ_[idet]->Fill(global_point.z());
191  meHitPhi_[idet]->Fill(global_point.phi());
192  meHitEta_[idet]->Fill(global_point.eta());
193 
194  meHitTvsQ_[idet]->Fill(sample.data(), sample.toa());
195  meHitQvsPhi_[idet]->Fill(global_point.phi(), sample.data());
196  meHitQvsEta_[idet]->Fill(global_point.eta(), sample.data());
197  meHitTvsPhi_[idet]->Fill(global_point.phi(), sample.toa());
198  meHitTvsEta_[idet]->Fill(global_point.eta(), sample.toa());
199 
200  n_digi_etl[idet]++;
201  size_t ncount(0);
202  ndigiPerLGAD_[idet].emplace(detId.rawId(), ncount);
203  ndigiPerLGAD_[idet].at(detId.rawId())++;
204 
205  } // dataFrame loop
206 
207  if (topo1Dis) {
208  meNhits_[0]->Fill(log10(n_digi_etl[0]));
209  meNhits_[2]->Fill(log10(n_digi_etl[2]));
210  for (const auto& thisNdigi : ndigiPerLGAD_[0]) {
211  meNhitsPerLGAD_[0]->Fill(thisNdigi.second);
212  }
213  for (const auto& thisNdigi : ndigiPerLGAD_[2]) {
214  meNhitsPerLGAD_[2]->Fill(thisNdigi.second);
215  }
216  }
217 
218  if (topo2Dis) {
219  for (int i = 0; i < 4; i++) {
220  meNhits_[i]->Fill(log10(n_digi_etl[i]));
221  for (const auto& thisNdigi : ndigiPerLGAD_[i]) {
222  meNhitsPerLGAD_[i]->Fill(thisNdigi.second);
223  }
224  }
225  }
226 }
MonitorElement * meHitQvsPhi_[4]
int getMTDTopologyMode() const
Definition: MTDTopology.h:27
MonitorElement * meHitXlocal_[2]
virtual const Topology & topology() const
Definition: GeomDet.cc:67
MonitorElement * meHitEta_[4]
Definition: weight.py:1
edm::EDGetTokenT< ETLDigiCollection > etlDigiHitsToken_
std::array< std::unordered_map< uint32_t, uint32_t >, 4 > ndigiPerLGAD_
MonitorElement * meNhits_[4]
void Fill(long long x)
virtual float localX(float mpX) const =0
MonitorElement * meOccupancy_[4]
MonitorElement * meHitTvsQ_[4]
int iEvent
Definition: GenABIO.cc:224
MonitorElement * meLocalOccupancy_[2]
MonitorElement * meHitQvsEta_[4]
MonitorElement * meHitCharge_[4]
MonitorElement * meHitY_[4]
MonitorElement * meHitTime_[4]
MonitorElement * meHitYlocal_[2]
ETLDetId::EtlLayout etlLayoutFromTopoMode(const int &topoMode)
MonitorElement * meHitTvsEta_[4]
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
MonitorElement * meHitX_[4]
MonitorElement * meHitZ_[4]
Definition: DetId.h:17
virtual float localY(float mpY) const =0
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
edm::ESGetToken< MTDTopology, MTDTopologyRcd > mtdtopoToken_
MonitorElement * meHitTvsPhi_[4]
MonitorElement * meHitPhi_[4]
Detector identifier class for the Endcap Timing Layer.
Definition: ETLDetId.h:15
HLT enums.
ESTransientHandle< T > getTransientHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:141
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
MonitorElement * meNhitsPerLGAD_[4]
auto makeValid(const U &iOtherHandleType) noexcept(false)
Definition: ValidHandle.h:52

◆ bookHistograms()

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

Implements DQMEDAnalyzer.

Definition at line 229 of file EtlDigiHitsValidation.cc.

References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), dqm::implementation::IBooker::bookProfile(), folder_, meHitCharge_, meHitEta_, meHitPhi_, meHitQvsEta_, meHitQvsPhi_, meHitTime_, meHitTvsEta_, meHitTvsPhi_, meHitTvsQ_, meHitX_, meHitXlocal_, meHitY_, meHitYlocal_, meHitZ_, meLocalOccupancy_, meNhits_, meNhitsPerLGAD_, meOccupancy_, optionalPlots_, and dqm::implementation::NavigatorBase::setCurrentFolder().

231  {
232  ibook.setCurrentFolder(folder_);
233 
234  // --- histograms booking
235 
236  meNhits_[0] = ibook.book1D("EtlNhitsZnegD1",
237  "Number of ETL DIGI hits (-Z, Single(topo1D)/First(topo2D) disk);log_{10}(N_{DIGI})",
238  100,
239  0.,
240  5.25);
241  meNhits_[1] =
242  ibook.book1D("EtlNhitsZnegD2", "Number of ETL DIGI hits (-Z, Second disk);log_{10}(N_{DIGI})", 100, 0., 5.25);
243  meNhits_[2] = ibook.book1D("EtlNhitsZposD1",
244  "Number of ETL DIGI hits (+Z, Single(topo1D)/First(topo2D) disk);log_{10}(N_{DIGI})",
245  100,
246  0.,
247  5.25);
248  meNhits_[3] =
249  ibook.book1D("EtlNhitsZposD2", "Number of ETL DIGI hits (+Z, Second disk);log_{10}(N_{DIGI})", 100, 0., 5.25);
250 
251  meNhitsPerLGAD_[0] = ibook.book1D("EtlNhitsPerLGADZnegD1",
252  "Number of ETL DIGI hits (-Z, Single(topo1D)/First(topo2D) disk) per LGAD;N_{DIGI}",
253  50,
254  0.,
255  50.);
256  meNhitsPerLGAD_[1] =
257  ibook.book1D("EtlNhitsPerLGADZnegD2", "Number of ETL DIGI hits (-Z, Second disk) per LGAD;N_{DIGI}", 50, 0., 50.);
258  meNhitsPerLGAD_[2] = ibook.book1D("EtlNhitsPerLGADZposD1",
259  "Number of ETL DIGI hits (+Z, Single(topo1D)/First(topo2D) disk) per LGAD;N_{DIGI}",
260  50,
261  0.,
262  50.);
263  meNhitsPerLGAD_[3] =
264  ibook.book1D("EtlNhitsPerLGADZposD2", "Number of ETL DIGI hits (+Z, Second disk) per LGAD;N_{DIGI}", 50, 0., 50.);
265 
266  meHitCharge_[0] = ibook.book1D("EtlHitChargeZnegD1",
267  "ETL DIGI hits charge (-Z, Single(topo1D)/First(topo2D) disk);Q_{DIGI} [ADC counts]",
268  100,
269  0.,
270  256.);
271  meHitCharge_[1] =
272  ibook.book1D("EtlHitChargeZnegD2", "ETL DIGI hits charge (-Z, Second disk);Q_{DIGI} [ADC counts]", 100, 0., 256.);
273  meHitCharge_[2] = ibook.book1D("EtlHitChargeZposD1",
274  "ETL DIGI hits charge (+Z, Single(topo1D)/First(topo2D) disk);Q_{DIGI} [ADC counts]",
275  100,
276  0.,
277  256.);
278  meHitCharge_[3] =
279  ibook.book1D("EtlHitChargeZposD2", "ETL DIGI hits charge (+Z, Second disk);Q_{DIGI} [ADC counts]", 100, 0., 256.);
280  meHitTime_[0] = ibook.book1D("EtlHitTimeZnegD1",
281  "ETL DIGI hits ToA (-Z, Single(topo1D)/First(topo2D) disk);ToA_{DIGI} [TDC counts]",
282  100,
283  0.,
284  2000.);
285  meHitTime_[1] =
286  ibook.book1D("EtlHitTimeZnegD2", "ETL DIGI hits ToA (-Z, Second disk);ToA_{DIGI} [TDC counts]", 100, 0., 2000.);
287  meHitTime_[2] = ibook.book1D("EtlHitTimeZposD1",
288  "ETL DIGI hits ToA (+Z, Single(topo1D)/First(topo2D) disk);ToA_{DIGI} [TDC counts]",
289  100,
290  0.,
291  2000.);
292  meHitTime_[3] =
293  ibook.book1D("EtlHitTimeZposD2", "ETL DIGI hits ToA (+Z, Second disk);ToA_{DIGI} [TDC counts]", 100, 0., 2000.);
294 
295  meOccupancy_[0] =
296  ibook.book2D("EtlOccupancyZnegD1",
297  "ETL DIGI hits occupancy (-Z, Single(topo1D)/First(topo2D) disk);X_{DIGI} [cm];Y_{DIGI} [cm]",
298  135,
299  -135.,
300  135.,
301  135,
302  -135.,
303  135.);
304  meOccupancy_[1] = ibook.book2D("EtlOccupancyZnegD2",
305  "ETL DIGI hits occupancy (-Z, Second disk);X_{DIGI} [cm];Y_{DIGI} [cm]",
306  135,
307  -135.,
308  135.,
309  135,
310  -135.,
311  135.);
312  meOccupancy_[2] =
313  ibook.book2D("EtlOccupancyZposD1",
314  "ETL DIGI hits occupancy (+Z, Single(topo1D)/First(topo2D) disk);X_{DIGI} [cm];Y_{DIGI} [cm]",
315  135,
316  -135.,
317  135.,
318  135,
319  -135.,
320  135.);
321  meOccupancy_[3] = ibook.book2D("EtlOccupancyZposD2",
322  "ETL DIGI hits occupancy (+Z, Second disk);X_{DIGI} [cm];Y_{DIGI} [cm]",
323  135,
324  -135.,
325  135.,
326  135,
327  -135.,
328  135.);
329  if (optionalPlots_) {
330  meLocalOccupancy_[0] = ibook.book2D("EtlLocalOccupancyZneg",
331  "ETL DIGI hits local occupancy (-Z);X_{DIGI} [cm];Y_{DIGI} [cm]",
332  100,
333  -2.2,
334  2.2,
335  50,
336  -1.1,
337  1.1);
338  meLocalOccupancy_[1] = ibook.book2D("EtlLocalOccupancyZpos",
339  "ETL DIGI hits local occupancy (+Z);X_{DIGI} [cm];Y_{DIGI} [cm]",
340  100,
341  -2.2,
342  2.2,
343  50,
344  -1.1,
345  1.1);
346  meHitXlocal_[0] = ibook.book1D("EtlHitXlocalZneg", "ETL DIGI local X (-Z);X_{DIGI}^{LOC} [cm]", 100, -2.2, 2.2);
347  meHitXlocal_[1] = ibook.book1D("EtlHitXlocalZpos", "ETL DIGI local X (+Z);X_{DIGI}^{LOC} [cm]", 100, -2.2, 2.2);
348  meHitYlocal_[0] = ibook.book1D("EtlHitYlocalZneg", "ETL DIGI local Y (-Z);Y_{DIGI}^{LOC} [cm]", 50, -1.1, 1.1);
349  meHitYlocal_[1] = ibook.book1D("EtlHitYlocalZpos", "ETL DIGI local Y (-Z);Y_{DIGI}^{LOC} [cm]", 50, -1.1, 1.1);
350  }
351  meHitX_[0] = ibook.book1D(
352  "EtlHitXZnegD1", "ETL DIGI hits X (-Z, Single(topo1D)/First(topo2D) disk);X_{DIGI} [cm]", 100, -130., 130.);
353  meHitX_[1] = ibook.book1D("EtlHitXZnegD2", "ETL DIGI hits X (-Z, Second disk);X_{DIGI} [cm]", 100, -130., 130.);
354  meHitX_[2] = ibook.book1D(
355  "EtlHitXZposD1", "ETL DIGI hits X (+Z, Single(topo1D)/First(topo2D) disk);X_{DIGI} [cm]", 100, -130., 130.);
356  meHitX_[3] = ibook.book1D("EtlHitXZposD2", "ETL DIGI hits X (+Z, Second disk);X_{DIGI} [cm]", 100, -130., 130.);
357  meHitY_[0] = ibook.book1D(
358  "EtlHitYZnegD1", "ETL DIGI hits Y (-Z, Single(topo1D)/First(topo2D) disk);Y_{DIGI} [cm]", 100, -130., 130.);
359  meHitY_[1] = ibook.book1D("EtlHitYZnegD2", "ETL DIGI hits Y (-Z, Second disk);Y_{DIGI} [cm]", 100, -130., 130.);
360  meHitY_[2] = ibook.book1D(
361  "EtlHitYZposD1", "ETL DIGI hits Y (+Z, Single(topo1D)/First(topo2D) disk);Y_{DIGI} [cm]", 100, -130., 130.);
362  meHitY_[3] = ibook.book1D("EtlHitYZposD2", "ETL DIGI hits Y (+Z, Second disk);Y_{DIGI} [cm]", 100, -130., 130.);
363  meHitZ_[0] = ibook.book1D(
364  "EtlHitZZnegD1", "ETL DIGI hits Z (-Z, Single(topo1D)/First(topo2D) disk);Z_{DIGI} [cm]", 100, -302., -298.);
365  meHitZ_[1] = ibook.book1D("EtlHitZZnegD2", "ETL DIGI hits Z (-Z, Second disk);Z_{DIGI} [cm]", 100, -304., -300.);
366  meHitZ_[2] = ibook.book1D(
367  "EtlHitZZposD1", "ETL DIGI hits Z (+Z, Single(topo1D)/First(topo2D) disk);Z_{DIGI} [cm]", 100, 298., 302.);
368  meHitZ_[3] = ibook.book1D("EtlHitZZposD2", "ETL DIGI hits Z (+Z, Second disk);Z_{DIGI} [cm]", 100, 300., 304.);
369 
370  meHitPhi_[0] = ibook.book1D("EtlHitPhiZnegD1",
371  "ETL DIGI hits #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad]",
372  100,
373  -3.15,
374  3.15);
375  meHitPhi_[1] =
376  ibook.book1D("EtlHitPhiZnegD2", "ETL DIGI hits #phi (-Z, Second disk);#phi_{DIGI} [rad]", 100, -3.15, 3.15);
377  meHitPhi_[2] = ibook.book1D("EtlHitPhiZposD1",
378  "ETL DIGI hits #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad]",
379  100,
380  -3.15,
381  3.15);
382  meHitPhi_[3] =
383  ibook.book1D("EtlHitPhiZposD2", "ETL DIGI hits #phi (+Z, Second disk);#phi_{DIGI} [rad]", 100, -3.15, 3.15);
384  meHitEta_[0] = ibook.book1D(
385  "EtlHitEtaZnegD1", "ETL DIGI hits #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI}", 100, -3.2, -1.56);
386  meHitEta_[1] = ibook.book1D("EtlHitEtaZnegD2", "ETL DIGI hits #eta (-Z, Second disk);#eta_{DIGI}", 100, -3.2, -1.56);
387  meHitEta_[2] = ibook.book1D(
388  "EtlHitEtaZposD1", "ETL DIGI hits #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI}", 100, 1.56, 3.2);
389  meHitEta_[3] = ibook.book1D("EtlHitEtaZposD2", "ETL DIGI hits #eta (+Z, Second disk);#eta_{DIGI}", 100, 1.56, 3.2);
390  meHitTvsQ_[0] = ibook.bookProfile(
391  "EtlHitTvsQZnegD1",
392  "ETL DIGI ToA vs charge (-Z, Single(topo1D)/First(topo2D) disk);Q_{DIGI} [ADC counts];ToA_{DIGI} [TDC counts]",
393  50,
394  0.,
395  256.,
396  0.,
397  1024.);
398  meHitTvsQ_[1] =
399  ibook.bookProfile("EtlHitTvsQZnegD2",
400  "ETL DIGI ToA vs charge (-Z, Second Disk);Q_{DIGI} [ADC counts];ToA_{DIGI} [TDC counts]",
401  50,
402  0.,
403  256.,
404  0.,
405  1024.);
406  meHitTvsQ_[2] = ibook.bookProfile(
407  "EtlHitTvsQZposD1",
408  "ETL DIGI ToA vs charge (+Z, Single(topo1D)/First(topo2D) disk);Q_{DIGI} [ADC counts];ToA_{DIGI} [TDC counts]",
409  50,
410  0.,
411  256.,
412  0.,
413  1024.);
414  meHitTvsQ_[3] =
415  ibook.bookProfile("EtlHitTvsQZposD2",
416  "ETL DIGI ToA vs charge (+Z, Second disk);Q_{DIGI} [ADC counts];ToA_{DIGI} [TDC counts]",
417  50,
418  0.,
419  256.,
420  0.,
421  1024.);
422  meHitQvsPhi_[0] = ibook.bookProfile(
423  "EtlHitQvsPhiZnegD1",
424  "ETL DIGI charge vs #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad];Q_{DIGI} [ADC counts]",
425  50,
426  -3.15,
427  3.15,
428  0.,
429  1024.);
430  meHitQvsPhi_[1] =
431  ibook.bookProfile("EtlHitQvsPhiZnegD2",
432  "ETL DIGI charge vs #phi (-Z, Second disk);#phi_{DIGI} [rad];Q_{DIGI} [ADC counts]",
433  50,
434  -3.15,
435  3.15,
436  0.,
437  1024.);
438  meHitQvsPhi_[2] = ibook.bookProfile(
439  "EtlHitQvsPhiZposD1",
440  "ETL DIGI charge vs #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad];Q_{DIGI} [ADC counts]",
441  50,
442  -3.15,
443  3.15,
444  0.,
445  1024.);
446  meHitQvsPhi_[3] =
447  ibook.bookProfile("EtlHitQvsPhiZposD2",
448  "ETL DIGI charge vs #phi (+Z, Second disk);#phi_{DIGI} [rad];Q_{DIGI} [ADC counts]",
449  50,
450  -3.15,
451  3.15,
452  0.,
453  1024.);
454  meHitQvsEta_[0] = ibook.bookProfile(
455  "EtlHitQvsEtaZnegD1",
456  "ETL DIGI charge vs #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI};Q_{DIGI} [ADC counts]",
457  50,
458  -3.2,
459  -1.56,
460  0.,
461  1024.);
462  meHitQvsEta_[1] = ibook.bookProfile("EtlHitQvsEtaZnegD2",
463  "ETL DIGI charge vs #eta (-Z, Second disk);#eta_{DIGI};Q_{DIGI} [ADC counts]",
464  50,
465  -3.2,
466  -1.56,
467  0.,
468  1024.);
469  meHitQvsEta_[2] = ibook.bookProfile(
470  "EtlHitQvsEtaZposD1",
471  "ETL DIGI charge vs #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI};Q_{DIGI} [ADC counts]",
472  50,
473  1.56,
474  3.2,
475  0.,
476  1024.);
477  meHitQvsEta_[3] = ibook.bookProfile("EtlHitQvsEtaZposD2",
478  "ETL DIGI charge vs #eta (+Z, Second disk);#eta_{DIGI};Q_{DIGI} [ADC counts]",
479  50,
480  1.56,
481  3.2,
482  0.,
483  1024.);
484  meHitTvsPhi_[0] = ibook.bookProfile(
485  "EtlHitTvsPhiZnegD1",
486  "ETL DIGI ToA vs #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad];ToA_{DIGI} [TDC counts]",
487  50,
488  -3.15,
489  3.15,
490  0.,
491  1024.);
492  meHitTvsPhi_[1] =
493  ibook.bookProfile("EtlHitTvsPhiZnegD2",
494  "ETL DIGI ToA vs #phi (-Z, Second disk);#phi_{DIGI} [rad];ToA_{DIGI} [TDC counts]",
495  50,
496  -3.15,
497  3.15,
498  0.,
499  1024.);
500  meHitTvsPhi_[2] = ibook.bookProfile(
501  "EtlHitTvsPhiZposD1",
502  "ETL DIGI ToA vs #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad];ToA_{DIGI} [TDC counts]",
503  50,
504  -3.15,
505  3.15,
506  0.,
507  1024.);
508  meHitTvsPhi_[3] =
509  ibook.bookProfile("EtlHitTvsPhiZposD2",
510  "ETL DIGI ToA vs #phi (+Z, Second disk);#phi_{DIGI} [rad];ToA_{DIGI} [TDC counts]",
511  50,
512  -3.15,
513  3.15,
514  0.,
515  1024.);
516  meHitTvsEta_[0] = ibook.bookProfile(
517  "EtlHitTvsEtaZnegD1",
518  "ETL DIGI ToA vs #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI};ToA_{DIGI} [TDC counts]",
519  50,
520  -3.2,
521  -1.56,
522  0.,
523  1024.);
524  meHitTvsEta_[1] = ibook.bookProfile("EtlHitTvsEtaZnegD2",
525  "ETL DIGI ToA vs #eta (-Z, Second disk);#eta_{DIGI};ToA_{DIGI} [TDC counts]",
526  50,
527  -3.2,
528  -1.56,
529  0.,
530  1024.);
531  meHitTvsEta_[2] = ibook.bookProfile(
532  "EtlHitTvsEtaZposD1",
533  "ETL DIGI ToA vs #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI};ToA_{DIGI} [TDC counts]",
534  50,
535  1.56,
536  3.2,
537  0.,
538  1024.);
539  meHitTvsEta_[3] = ibook.bookProfile("EtlHitTvsEtaZposD2",
540  "ETL DIGI ToA vs #eta (+Z, Second disk);#eta_{DIGI};ToA_{DIGI} [TDC counts]",
541  50,
542  1.56,
543  3.2,
544  0.,
545  1024.);
546 }
MonitorElement * meHitQvsPhi_[4]
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
MonitorElement * meHitXlocal_[2]
MonitorElement * meHitEta_[4]
MonitorElement * meNhits_[4]
MonitorElement * meOccupancy_[4]
MonitorElement * meHitTvsQ_[4]
MonitorElement * meLocalOccupancy_[2]
MonitorElement * meHitQvsEta_[4]
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 * meHitCharge_[4]
MonitorElement * meHitY_[4]
MonitorElement * meHitTime_[4]
MonitorElement * meHitYlocal_[2]
MonitorElement * meHitTvsEta_[4]
MonitorElement * meHitX_[4]
MonitorElement * meHitZ_[4]
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
MonitorElement * meHitTvsPhi_[4]
MonitorElement * meHitPhi_[4]
MonitorElement * meNhitsPerLGAD_[4]
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98

◆ fillDescriptions()

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

Definition at line 549 of file EtlDigiHitsValidation.cc.

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

549  {
551 
552  desc.add<std::string>("folder", "MTD/ETL/DigiHits");
553  desc.add<edm::InputTag>("inputTag", edm::InputTag("mix", "FTLEndcap"));
554  desc.add<bool>("optionalPlots", false);
555 
556  descriptions.add("etlDigiHitsDefaultValid", desc);
557 }
void add(std::string const &label, ParameterSetDescription const &psetDescription)

Member Data Documentation

◆ etlDigiHitsToken_

edm::EDGetTokenT<ETLDigiCollection> EtlDigiHitsValidation::etlDigiHitsToken_
private

Definition at line 51 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and EtlDigiHitsValidation().

◆ folder_

const std::string EtlDigiHitsValidation::folder_
private

Definition at line 48 of file EtlDigiHitsValidation.cc.

Referenced by bookHistograms().

◆ meHitCharge_

MonitorElement* EtlDigiHitsValidation::meHitCharge_[4]
private

Definition at line 61 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitEta_

MonitorElement* EtlDigiHitsValidation::meHitEta_[4]
private

Definition at line 74 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitPhi_

MonitorElement* EtlDigiHitsValidation::meHitPhi_[4]
private

Definition at line 73 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitQvsEta_

MonitorElement* EtlDigiHitsValidation::meHitQvsEta_[4]
private

Definition at line 78 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitQvsPhi_

MonitorElement* EtlDigiHitsValidation::meHitQvsPhi_[4]
private

Definition at line 77 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTime_

MonitorElement* EtlDigiHitsValidation::meHitTime_[4]
private

Definition at line 62 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTvsEta_

MonitorElement* EtlDigiHitsValidation::meHitTvsEta_[4]
private

Definition at line 80 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTvsPhi_

MonitorElement* EtlDigiHitsValidation::meHitTvsPhi_[4]
private

Definition at line 79 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTvsQ_

MonitorElement* EtlDigiHitsValidation::meHitTvsQ_[4]
private

Definition at line 76 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitX_

MonitorElement* EtlDigiHitsValidation::meHitX_[4]
private

Definition at line 70 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitXlocal_

MonitorElement* EtlDigiHitsValidation::meHitXlocal_[2]
private

Definition at line 67 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitY_

MonitorElement* EtlDigiHitsValidation::meHitY_[4]
private

Definition at line 71 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitYlocal_

MonitorElement* EtlDigiHitsValidation::meHitYlocal_[2]
private

Definition at line 68 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitZ_

MonitorElement* EtlDigiHitsValidation::meHitZ_[4]
private

Definition at line 72 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meLocalOccupancy_

MonitorElement* EtlDigiHitsValidation::meLocalOccupancy_[2]
private

Definition at line 66 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meNhits_

MonitorElement* EtlDigiHitsValidation::meNhits_[4]
private

Definition at line 58 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meNhitsPerLGAD_

MonitorElement* EtlDigiHitsValidation::meNhitsPerLGAD_[4]
private

Definition at line 59 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meOccupancy_

MonitorElement* EtlDigiHitsValidation::meOccupancy_[4]
private

Definition at line 64 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ mtdgeoToken_

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

Definition at line 53 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and EtlDigiHitsValidation().

◆ mtdtopoToken_

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

Definition at line 54 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and EtlDigiHitsValidation().

◆ ndigiPerLGAD_

std::array<std::unordered_map<uint32_t, uint32_t>, 4> EtlDigiHitsValidation::ndigiPerLGAD_
private

Definition at line 82 of file EtlDigiHitsValidation.cc.

Referenced by analyze().

◆ optionalPlots_

const bool EtlDigiHitsValidation::optionalPlots_
private

Definition at line 49 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().