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]
 
MonitorElementmeHitToT_ [4]
 
MonitorElementmeHitToTvsQ_ [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 88 of file EtlDigiHitsValidation.cc.

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

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

◆ ~EtlDigiHitsValidation()

EtlDigiHitsValidation::~EtlDigiHitsValidation ( )
override

Definition at line 96 of file EtlDigiHitsValidation.cc.

96 {}

Member Function Documentation

◆ analyze()

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

Reimplemented from DQMEDAnalyzer.

Definition at line 99 of file EtlDigiHitsValidation.cc.

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

99  {
100  using namespace edm;
101 
102  auto geometryHandle = iSetup.getTransientHandle(mtdgeoToken_);
103  const MTDGeometry* geom = geometryHandle.product();
104 
105  auto etlDigiHitsHandle = makeValid(iEvent.getHandle(etlDigiHitsToken_));
106 
107  // --- Loop over the ETL DIGI hits
108 
109  unsigned int n_digi_etl[4] = {0, 0, 0, 0};
110  for (size_t i = 0; i < 4; i++) {
111  ndigiPerLGAD_[i].clear();
112  }
113 
114  size_t index(0);
115 
116  for (const auto& dataFrame : *etlDigiHitsHandle) {
117  // --- Get the on-time sample
118  int isample = 2;
119  double weight = 1.0;
120  const auto& sample = dataFrame.sample(isample);
121  ETLDetId detId = dataFrame.id();
122  DetId geoId = detId.geographicalId();
123 
124  const MTDGeomDet* thedet = geom->idToDet(geoId);
125  if (thedet == nullptr)
126  throw cms::Exception("EtlDigiHitsValidation") << "GeographicalID: " << std::hex << geoId.rawId() << " ("
127  << detId.rawId() << ") is invalid!" << std::dec << std::endl;
128  const PixelTopology& topo = static_cast<const PixelTopology&>(thedet->topology());
129 
130  Local3DPoint local_point(topo.localX(sample.row()), topo.localY(sample.column()), 0.);
131  const auto& global_point = thedet->toGlobal(local_point);
132 
133  // --- Fill the histograms
134 
135  int idet = 999;
136  if (detId.discSide() == 1) {
137  weight = -weight;
138  }
139  if ((detId.zside() == -1) && (detId.nDisc() == 1)) {
140  idet = 0;
141  } else if ((detId.zside() == -1) && (detId.nDisc() == 2)) {
142  idet = 1;
143  } else if ((detId.zside() == 1) && (detId.nDisc() == 1)) {
144  idet = 2;
145  } else if ((detId.zside() == 1) && (detId.nDisc() == 2)) {
146  idet = 3;
147  } else {
148  edm::LogWarning("EtlDigiHitsValidation") << "Unknown ETL DetId configuration: " << detId;
149  continue;
150  }
151 
152  index++;
153  LogDebug("EtlDigiHitsValidation") << "Digi # " << index << " DetId " << detId.rawId() << " idet " << idet;
154 
155  meHitCharge_[idet]->Fill(sample.data());
156  meHitTime_[idet]->Fill(sample.toa());
157  meHitToT_[idet]->Fill(sample.tot());
158  meOccupancy_[idet]->Fill(global_point.x(), global_point.y(), weight);
159 
160  if (optionalPlots_) {
161  if ((idet == 0) || (idet == 1)) {
162  meLocalOccupancy_[0]->Fill(local_point.x(), local_point.y());
163  meHitXlocal_[0]->Fill(local_point.x());
164  meHitYlocal_[0]->Fill(local_point.y());
165 
166  } else if ((idet == 2) || (idet == 3)) {
167  meLocalOccupancy_[1]->Fill(local_point.x(), local_point.y());
168  meHitXlocal_[1]->Fill(local_point.x());
169  meHitYlocal_[1]->Fill(local_point.y());
170  }
171  }
172 
173  meHitX_[idet]->Fill(global_point.x());
174  meHitY_[idet]->Fill(global_point.y());
175  meHitZ_[idet]->Fill(global_point.z());
176  meHitPhi_[idet]->Fill(global_point.phi());
177  meHitEta_[idet]->Fill(global_point.eta());
178 
179  meHitTvsQ_[idet]->Fill(sample.data(), sample.toa());
180  meHitToTvsQ_[idet]->Fill(sample.data(), sample.tot());
181  meHitQvsPhi_[idet]->Fill(global_point.phi(), sample.data());
182  meHitQvsEta_[idet]->Fill(global_point.eta(), sample.data());
183  meHitTvsPhi_[idet]->Fill(global_point.phi(), sample.toa());
184  meHitTvsEta_[idet]->Fill(global_point.eta(), sample.toa());
185 
186  n_digi_etl[idet]++;
187  size_t ncount(0);
188  ndigiPerLGAD_[idet].emplace(detId.rawId(), ncount);
189  ndigiPerLGAD_[idet].at(detId.rawId())++;
190 
191  } // dataFrame loop
192 
193  for (int i = 0; i < 4; i++) {
194  meNhits_[i]->Fill(log10(n_digi_etl[i]));
195  for (const auto& thisNdigi : ndigiPerLGAD_[i]) {
196  meNhitsPerLGAD_[i]->Fill(thisNdigi.second);
197  }
198  }
199 }
MonitorElement * meHitQvsPhi_[4]
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 * meHitToTvsQ_[4]
MonitorElement * meHitY_[4]
MonitorElement * meHitTime_[4]
MonitorElement * meHitYlocal_[2]
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
MonitorElement * meHitTvsPhi_[4]
MonitorElement * meHitPhi_[4]
Detector identifier class for the Endcap Timing Layer.
Definition: ETLDetId.h:16
HLT enums.
ESTransientHandle< T > getTransientHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:141
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
MonitorElement * meNhitsPerLGAD_[4]
Log< level::Warning, false > LogWarning
auto makeValid(const U &iOtherHandleType) noexcept(false)
Definition: ValidHandle.h:52
MonitorElement * meHitToT_[4]
#define LogDebug(id)

◆ bookHistograms()

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

Implements DQMEDAnalyzer.

Definition at line 202 of file EtlDigiHitsValidation.cc.

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

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

◆ fillDescriptions()

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

Definition at line 570 of file EtlDigiHitsValidation.cc.

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

570  {
572 
573  desc.add<std::string>("folder", "MTD/ETL/DigiHits");
574  desc.add<edm::InputTag>("inputTag", edm::InputTag("mix", "FTLEndcap"));
575  desc.add<bool>("optionalPlots", false);
576 
577  descriptions.add("etlDigiHitsDefaultValid", desc);
578 }
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 75 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitPhi_

MonitorElement* EtlDigiHitsValidation::meHitPhi_[4]
private

Definition at line 74 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitQvsEta_

MonitorElement* EtlDigiHitsValidation::meHitQvsEta_[4]
private

Definition at line 80 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitQvsPhi_

MonitorElement* EtlDigiHitsValidation::meHitQvsPhi_[4]
private

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

◆ meHitToT_

MonitorElement* EtlDigiHitsValidation::meHitToT_[4]
private

Definition at line 63 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitToTvsQ_

MonitorElement* EtlDigiHitsValidation::meHitToTvsQ_[4]
private

Definition at line 78 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTvsEta_

MonitorElement* EtlDigiHitsValidation::meHitTvsEta_[4]
private

Definition at line 82 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTvsPhi_

MonitorElement* EtlDigiHitsValidation::meHitTvsPhi_[4]
private

Definition at line 81 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTvsQ_

MonitorElement* EtlDigiHitsValidation::meHitTvsQ_[4]
private

Definition at line 77 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitX_

MonitorElement* EtlDigiHitsValidation::meHitX_[4]
private

Definition at line 71 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitXlocal_

MonitorElement* EtlDigiHitsValidation::meHitXlocal_[2]
private

Definition at line 68 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitY_

MonitorElement* EtlDigiHitsValidation::meHitY_[4]
private

Definition at line 72 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitYlocal_

MonitorElement* EtlDigiHitsValidation::meHitYlocal_[2]
private

Definition at line 69 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitZ_

MonitorElement* EtlDigiHitsValidation::meHitZ_[4]
private

Definition at line 73 of file EtlDigiHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meLocalOccupancy_

MonitorElement* EtlDigiHitsValidation::meLocalOccupancy_[2]
private

Definition at line 67 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 65 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 EtlDigiHitsValidation().

◆ ndigiPerLGAD_

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

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