CMS 3D CMS Logo

BtlDigiHitsValidation.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Validation/MtdValidation
4 // Class: BtlDigiHitsValidation
5 //
14 #include <string>
15 
20 
23 
27 
32 
35 
37 
39 public:
41  ~BtlDigiHitsValidation() override;
42 
43  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
44 
45 private:
46  void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
47 
48  void analyze(const edm::Event&, const edm::EventSetup&) override;
49 
50  // ------------ member data ------------
51 
53  const bool LocalPosDebug_;
54 
56 
59 
60  // --- histograms declaration
61 
63 
66 
68 
69  //local position monitoring
74 
80 
88 };
89 
90 // ------------ constructor and destructor --------------
92  : folder_(iConfig.getParameter<std::string>("folder")),
93  LocalPosDebug_(iConfig.getParameter<bool>("LocalPositionDebug")) {
94  btlDigiHitsToken_ = consumes<BTLDigiCollection>(iConfig.getParameter<edm::InputTag>("inputTag"));
95  mtdgeoToken_ = esConsumes<MTDGeometry, MTDDigiGeometryRecord>();
96  mtdtopoToken_ = esConsumes<MTDTopology, MTDTopologyRcd>();
97 }
98 
100 
101 // ------------ method called for each event ------------
103  using namespace edm;
104 
105  auto geometryHandle = iSetup.getTransientHandle(mtdgeoToken_);
106  const MTDGeometry* geom = geometryHandle.product();
107 
108  auto topologyHandle = iSetup.getTransientHandle(mtdtopoToken_);
109  const MTDTopology* topology = topologyHandle.product();
110 
111  auto btlDigiHitsHandle = makeValid(iEvent.getHandle(btlDigiHitsToken_));
112 
113  // --- Loop over the BLT DIGI hits
114 
115  unsigned int n_digi_btl[2] = {0, 0};
116 
117  for (const auto& dataFrame : *btlDigiHitsHandle) {
118  BTLDetId detId = dataFrame.id();
120  const MTDGeomDet* thedet = geom->idToDet(geoId);
121  if (thedet == nullptr)
122  throw cms::Exception("BtlDigiHitsValidation") << "GeographicalID: " << std::hex << geoId.rawId() << " ("
123  << detId.rawId() << ") is invalid!" << std::dec << std::endl;
124  const ProxyMTDTopology& topoproxy = static_cast<const ProxyMTDTopology&>(thedet->topology());
125  const RectangularMTDTopology& topo = static_cast<const RectangularMTDTopology&>(topoproxy.specificTopology());
126 
127  Local3DPoint local_point(0., 0., 0.);
128  local_point = topo.pixelToModuleLocalPoint(local_point, detId.row(topo.nrows()), detId.column(topo.nrows()));
129  const auto& global_point = thedet->toGlobal(local_point);
130 
131  const auto& sample_L = dataFrame.sample(0);
132  const auto& sample_R = dataFrame.sample(1);
133 
134  uint32_t adc[2] = {sample_L.data(), sample_R.data()};
135  uint32_t tdc[2] = {sample_L.toa(), sample_R.toa()};
136 
137  for (int iside = 0; iside < 2; ++iside) {
138  if (adc[iside] == 0)
139  continue;
140 
141  meHitCharge_[iside]->Fill(adc[iside]);
142  meHitTime_[iside]->Fill(tdc[iside]);
143 
144  meOccupancy_[iside]->Fill(global_point.z(), global_point.phi());
145 
146  if (LocalPosDebug_) {
147  meLocalOccupancy_[iside]->Fill(local_point.x(), local_point.y());
148  meHitXlocal_[iside]->Fill(local_point.x());
149  meHitYlocal_[iside]->Fill(local_point.y());
150  meHitZlocal_[iside]->Fill(local_point.z());
151  }
152 
153  meHitX_[iside]->Fill(global_point.x());
154  meHitY_[iside]->Fill(global_point.y());
155  meHitZ_[iside]->Fill(global_point.z());
156  meHitPhi_[iside]->Fill(global_point.phi());
157  meHitEta_[iside]->Fill(global_point.eta());
158 
159  meHitTvsQ_[iside]->Fill(adc[iside], tdc[iside]);
160  meHitQvsPhi_[iside]->Fill(global_point.phi(), adc[iside]);
161  meHitQvsEta_[iside]->Fill(global_point.eta(), adc[iside]);
162  meHitQvsZ_[iside]->Fill(global_point.z(), adc[iside]);
163  meHitTvsPhi_[iside]->Fill(global_point.phi(), tdc[iside]);
164  meHitTvsEta_[iside]->Fill(global_point.eta(), tdc[iside]);
165  meHitTvsZ_[iside]->Fill(global_point.z(), tdc[iside]);
166 
167  n_digi_btl[iside]++;
168 
169  } // iside loop
170 
171  } // dataFrame loop
172 
173  if (n_digi_btl[0] > 0)
174  meNhits_[0]->Fill(log10(n_digi_btl[0]));
175  if (n_digi_btl[1] > 0)
176  meNhits_[1]->Fill(log10(n_digi_btl[1]));
177 }
178 
179 // ------------ method for histogram booking ------------
181  edm::Run const& run,
182  edm::EventSetup const& iSetup) {
183  ibook.setCurrentFolder(folder_);
184  // --- histograms booking
185 
186  meNhits_[0] = ibook.book1D("BtlNhitsL", "Number of BTL DIGI hits (L);log_{10}(N_{DIGI})", 100, 0., 5.25);
187  meNhits_[1] = ibook.book1D("BtlNhitsR", "Number of BTL DIGI hits (R);log_{10}(N_{DIGI})", 100, 0., 5.25);
188 
189  meHitCharge_[0] = ibook.book1D("BtlHitChargeL", "BTL DIGI hits charge (L);Q_{DIGI} [ADC counts]", 100, 0., 1024.);
190  meHitCharge_[1] = ibook.book1D("BtlHitChargeR", "BTL DIGI hits charge (R);Q_{DIGI} [ADC counts]", 100, 0., 1024.);
191  meHitTime_[0] = ibook.book1D("BtlHitTimeL", "BTL DIGI hits ToA (L);ToA_{DIGI} [TDC counts]", 100, 0., 1024.);
192  meHitTime_[1] = ibook.book1D("BtlHitTimeR", "BTL DIGI hits ToA (R);ToA_{DIGI} [TDC counts]", 100, 0., 1024.);
193  meOccupancy_[0] = ibook.book2D("BtlOccupancyL",
194  "BTL DIGI hits occupancy (L);Z_{DIGI} [cm]; #phi_{DIGI} [rad]",
195  65,
196  -260.,
197  260.,
198  126,
199  -3.15,
200  3.15);
201  meOccupancy_[1] = ibook.book2D("BtlOccupancyR",
202  "BTL DIGI hits occupancy (R);Z_{DIGI} [cm]; #phi_{DIGI} [rad]",
203  65,
204  -260.,
205  260.,
206  126,
207  -3.15,
208  3.15);
209  if (LocalPosDebug_) {
210  meLocalOccupancy_[0] = ibook.book2D("BtlLocalOccupancyL",
211  "BTL DIGI hits local occupancy (L);X_{DIGI} [cm]; Y_{DIGI} [cm]",
212  100,
213  -10.,
214  10,
215  60,
216  -3.,
217  3.);
218  meLocalOccupancy_[1] = ibook.book2D(
219  "BtlLocalOccupancyR", "BTL DIGI hits occupancy (R);X_{DIGI} [cm]; Y_{DIGI} [cm]", 100, -10., 10., 60, -3., 3.);
220  meHitXlocal_[0] = ibook.book1D("BtlHitXlocalL", "BTL DIGI local X (L);X_{DIGI}^{LOC} [cm]", 100, -10., 10.);
221  meHitXlocal_[1] = ibook.book1D("BtlHitXlocalR", "BTL DIGI local X (R);X_{DIGI}^{LOC} [cm]", 100, -10., 10.);
222  meHitYlocal_[0] = ibook.book1D("BtlHitYlocalL", "BTL DIGI local Y (L);Y_{DIGI}^{LOC} [cm]", 60, -3., 3.);
223  meHitYlocal_[1] = ibook.book1D("BtlHitYlocalR", "BTL DIGI local Y (R);Y_{DIGI}^{LOC} [cm]", 60, -3., 3.);
224  meHitZlocal_[0] = ibook.book1D("BtlHitZlocalL", "BTL DIGI local z (L);z_{DIGI}^{LOC} [cm]", 10, -1, 1);
225  meHitZlocal_[1] = ibook.book1D("BtlHitZlocalR", "BTL DIGI local z (R);z_{DIGI}^{LOC} [cm]", 10, -1, 1);
226  }
227 
228  meHitX_[0] = ibook.book1D("BtlHitXL", "BTL DIGI hits X (L);X_{DIGI} [cm]", 60, -120., 120.);
229  meHitX_[1] = ibook.book1D("BtlHitXR", "BTL DIGI hits X (R);X_{DIGI} [cm]", 60, -120., 120.);
230  meHitY_[0] = ibook.book1D("BtlHitYL", "BTL DIGI hits Y (L);Y_{DIGI} [cm]", 60, -120., 120.);
231  meHitY_[1] = ibook.book1D("BtlHitYR", "BTL DIGI hits Y (R);Y_{DIGI} [cm]", 60, -120., 120.);
232  meHitZ_[0] = ibook.book1D("BtlHitZL", "BTL DIGI hits Z (L);Z_{DIGI} [cm]", 100, -260., 260.);
233  meHitZ_[1] = ibook.book1D("BtlHitZR", "BTL DIGI hits Z (R);Z_{DIGI} [cm]", 100, -260., 260.);
234  meHitPhi_[0] = ibook.book1D("BtlHitPhiL", "BTL DIGI hits #phi (L);#phi_{DIGI} [rad]", 126, -3.15, 3.15);
235  meHitPhi_[1] = ibook.book1D("BtlHitPhiR", "BTL DIGI hits #phi (R);#phi_{DIGI} [rad]", 126, -3.15, 3.15);
236  meHitEta_[0] = ibook.book1D("BtlHitEtaL", "BTL DIGI hits #eta (L);#eta_{DIGI}", 100, -1.55, 1.55);
237  meHitEta_[1] = ibook.book1D("BtlHitEtaR", "BTL DIGI hits #eta (R);#eta_{DIGI}", 100, -1.55, 1.55);
238 
239  meHitTvsQ_[0] = ibook.bookProfile("BtlHitTvsQL",
240  "BTL DIGI ToA vs charge (L);Q_{DIGI} [ADC counts];ToA_{DIGI} [TDC counts]",
241  50,
242  0.,
243  1024.,
244  0.,
245  1024.);
246  meHitTvsQ_[1] = ibook.bookProfile("BtlHitTvsQR",
247  "BTL DIGI ToA vs charge (R);Q_{DIGI} [ADC counts];ToA_{DIGI} [TDC counts]",
248  50,
249  0.,
250  1024.,
251  0.,
252  1024.);
253  meHitQvsPhi_[0] = ibook.bookProfile("BtlHitQvsPhiL",
254  "BTL DIGI charge vs #phi (L);#phi_{DIGI} [rad];Q_{DIGI} [ADC counts]",
255  50,
256  -3.15,
257  3.15,
258  0.,
259  1024.);
260  meHitQvsPhi_[1] = ibook.bookProfile("BtlHitQvsPhiR",
261  "BTL DIGI charge vs #phi (R);#phi_{DIGI} [rad];Q_{DIGI} [ADC counts]",
262  50,
263  -3.15,
264  3.15,
265  0.,
266  1024.);
267  meHitQvsEta_[0] = ibook.bookProfile(
268  "BtlHitQvsEtaL", "BTL DIGI charge vs #eta (L);#eta_{DIGI};Q_{DIGI} [ADC counts]", 50, -1.55, 1.55, 0., 1024.);
269  meHitQvsEta_[1] = ibook.bookProfile(
270  "BtlHitQvsEtaR", "BTL DIGI charge vs #eta (R);#eta_{DIGI};Q_{DIGI} [ADC counts]", 50, -1.55, 1.55, 0., 1024.);
271  meHitQvsZ_[0] = ibook.bookProfile(
272  "BtlHitQvsZL", "BTL DIGI charge vs Z (L);Z_{DIGI} [cm];Q_{DIGI} [ADC counts]", 50, -260., 260., 0., 1024.);
273  meHitQvsZ_[1] = ibook.bookProfile(
274  "BtlHitQvsZR", "BTL DIGI charge vs Z (R);Z_{DIGI} [cm];Q_{DIGI} [ADC counts]", 50, -260., 260., 0., 1024.);
275  meHitTvsPhi_[0] = ibook.bookProfile(
276  "BtlHitTvsPhiL", "BTL DIGI ToA vs #phi (L);#phi_{DIGI} [rad];ToA_{DIGI} [TDC counts]", 50, -3.15, 3.15, 0., 1024.);
277  meHitTvsPhi_[1] = ibook.bookProfile(
278  "BtlHitTvsPhiR", "BTL DIGI ToA vs #phi (R);#phi_{DIGI} [rad];ToA_{DIGI} [TDC counts]", 50, -3.15, 3.15, 0., 1024.);
279  meHitTvsEta_[0] = ibook.bookProfile(
280  "BtlHitTvsEtaL", "BTL DIGI ToA vs #eta (L);#eta_{DIGI};ToA_{DIGI} [TDC counts]", 50, -1.55, 1.55, 0., 1024.);
281  meHitTvsEta_[1] = ibook.bookProfile(
282  "BtlHitTvsEtaR", "BTL DIGI ToA vs #eta (R);#eta_{DIGI};ToA_{DIGI} [TDC counts]", 50, -1.55, 1.55, 0., 1024.);
283  meHitTvsZ_[0] = ibook.bookProfile(
284  "BtlHitTvsZL", "BTL DIGI ToA vs Z (L);Z_{DIGI} [cm];ToA_{DIGI} [TDC counts]", 50, -260., 260., 0., 1024.);
285  meHitTvsZ_[1] = ibook.bookProfile(
286  "BtlHitTvsZR", "BTL DIGI ToA vs Z (R);Z_{DIGI} [cm];ToA_{DIGI} [TDC counts]", 50, -260., 260., 0., 1024.);
287 }
288 
289 // ------------ method fills 'descriptions' with the allowed parameters for the module ------------
292 
293  desc.add<std::string>("folder", "MTD/BTL/DigiHits");
294  desc.add<edm::InputTag>("inputTag", edm::InputTag("mix", "FTLBarrel"));
295  desc.add<bool>("LocalPositionDebug", false);
296 
297  descriptions.add("btlDigiHitsDefault", desc);
298 }
299 
FTLDigiCollections.h
dqm::impl::MonitorElement
Definition: MonitorElement.h:98
BtlDigiHitsValidation::meHitTvsPhi_
MonitorElement * meHitTvsPhi_[2]
Definition: BtlDigiHitsValidation.cc:85
BtlDigiHitsValidation::meHitY_
MonitorElement * meHitY_[2]
Definition: BtlDigiHitsValidation.cc:76
BTLDetId.h
electrons_cff.bool
bool
Definition: electrons_cff.py:366
BtlDigiHitsValidation::meOccupancy_
MonitorElement * meOccupancy_[2]
Definition: BtlDigiHitsValidation.cc:67
BtlDigiHitsValidation::LocalPosDebug_
const bool LocalPosDebug_
Definition: BtlDigiHitsValidation.cc:53
BtlDigiHitsValidation::btlDigiHitsToken_
edm::EDGetTokenT< BTLDigiCollection > btlDigiHitsToken_
Definition: BtlDigiHitsValidation.cc:55
BtlDigiHitsValidation::folder_
const std::string folder_
Definition: BtlDigiHitsValidation.cc:52
edm::Run
Definition: Run.h:45
BtlDigiHitsValidation::meLocalOccupancy_
MonitorElement * meLocalOccupancy_[2]
Definition: BtlDigiHitsValidation.cc:70
edm::EDGetTokenT
Definition: EDGetToken.h:33
edm
HLT enums.
Definition: AlignableModifier.h:19
gpuClustering::adc
uint16_t *__restrict__ uint16_t const *__restrict__ adc
Definition: gpuClusterChargeCut.h:20
BtlDigiHitsValidation::meHitTvsEta_
MonitorElement * meHitTvsEta_[2]
Definition: BtlDigiHitsValidation.cc:86
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89285
MTDGeometry.h
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
TrackerGeomDet
Definition: TrackerGeomDet.h:6
BtlDigiHitsValidation::meHitEta_
MonitorElement * meHitEta_[2]
Definition: BtlDigiHitsValidation.cc:79
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
MTDDigiGeometryRecord.h
ProxyMTDTopology::specificTopology
virtual const PixelTopology & specificTopology() const
Definition: ProxyMTDTopology.h:89
DQMStore.h
GeomDet::topology
virtual const Topology & topology() const
Definition: GeomDet.cc:67
BtlDigiHitsValidation::meHitTime_
MonitorElement * meHitTime_[2]
Definition: BtlDigiHitsValidation.cc:65
MTDTopologyMode.h
MTDTopology::getMTDTopologyMode
int getMTDTopologyMode() const
Definition: MTDTopology.h:27
DetId
Definition: DetId.h:17
MakerMacros.h
BTLDetId
Detector identifier class for the Barrel Timing Layer. The crystal count must start from 0,...
Definition: BTLDetId.h:18
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
BtlDigiHitsValidation::meHitZlocal_
MonitorElement * meHitZlocal_[2]
Definition: BtlDigiHitsValidation.cc:73
dqm::impl::MonitorElement::Fill
void Fill(long long x)
Definition: MonitorElement.h:290
BTLDetId::row
int row(unsigned nrows=16) const
Definition: BTLDetId.h:105
dqm::implementation::IBooker::bookProfile
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
BtlDigiHitsValidation::meNhits_
MonitorElement * meNhits_[2]
Definition: BtlDigiHitsValidation.cc:62
RectangularMTDTopology.h
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
BtlDigiHitsValidation::meHitTvsZ_
MonitorElement * meHitTvsZ_[2]
Definition: BtlDigiHitsValidation.cc:87
Point3DBase< float, LocalTag >
BtlDigiHitsValidation::mtdgeoToken_
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
Definition: BtlDigiHitsValidation.cc:57
DQMEDAnalyzer.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
ValidHandle.h
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
folder_
std::string folder_
Definition: DQMEDAnalyzer.cc:60
DQMEDAnalyzer
Definition: DQMEDAnalyzer.py:1
MTDTopology
Definition: MTDTopology.h:13
GeomDet::toGlobal
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
edm::ParameterSet
Definition: ParameterSet.h:47
Event.h
MTDTopologyMode::crysLayoutFromTopoMode
BTLDetId::CrysLayout crysLayoutFromTopoMode(const int &topoMode)
Definition: MTDTopologyMode.h:19
BtlDigiHitsValidation
Definition: BtlDigiHitsValidation.cc:38
BtlDigiHitsValidation::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: BtlDigiHitsValidation.cc:290
iEvent
int iEvent
Definition: GenABIO.cc:224
BtlDigiHitsValidation::meHitX_
MonitorElement * meHitX_[2]
Definition: BtlDigiHitsValidation.cc:75
edm::EventSetup
Definition: EventSetup.h:58
BtlDigiHitsValidation::meHitYlocal_
MonitorElement * meHitYlocal_[2]
Definition: BtlDigiHitsValidation.cc:72
BtlDigiHitsValidation::meHitCharge_
MonitorElement * meHitCharge_[2]
Definition: BtlDigiHitsValidation.cc:64
BtlDigiHitsValidation::meHitXlocal_
MonitorElement * meHitXlocal_[2]
Definition: BtlDigiHitsValidation.cc:71
edm::makeValid
auto makeValid(const U &iOtherHandleType) noexcept(false)
Definition: ValidHandle.h:52
edm::EventSetup::getTransientHandle
ESTransientHandle< T > getTransientHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:166
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord >
BtlDigiHitsValidation::~BtlDigiHitsValidation
~BtlDigiHitsValidation() override
Definition: BtlDigiHitsValidation.cc:99
RectangularMTDTopology
Definition: RectangularMTDTopology.h:39
ProxyMTDTopology
Definition: ProxyMTDTopology.h:28
ProxyMTDTopology.h
MTDGeometry
Definition: MTDGeometry.h:14
BtlDigiHitsValidation::mtdtopoToken_
edm::ESGetToken< MTDTopology, MTDTopologyRcd > mtdtopoToken_
Definition: BtlDigiHitsValidation.cc:58
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
std
Definition: JetResolutionObject.h:76
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
writedatasetfile.run
run
Definition: writedatasetfile.py:27
MTDTopologyRcd.h
Frameworkfwd.h
BtlDigiHitsValidation::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: BtlDigiHitsValidation.cc:102
dqm::implementation::IBooker::book2D
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
Exception
Definition: hltDiff.cc:245
BtlDigiHitsValidation::BtlDigiHitsValidation
BtlDigiHitsValidation(const edm::ParameterSet &)
Definition: BtlDigiHitsValidation.cc:91
BtlDigiHitsValidation::bookHistograms
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: BtlDigiHitsValidation.cc:180
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
dqm::implementation::IBooker
Definition: DQMStore.h:43
BtlDigiHitsValidation::meHitQvsPhi_
MonitorElement * meHitQvsPhi_[2]
Definition: BtlDigiHitsValidation.cc:82
BtlDigiHitsValidation::meHitZ_
MonitorElement * meHitZ_[2]
Definition: BtlDigiHitsValidation.cc:77
BtlDigiHitsValidation::meHitQvsEta_
MonitorElement * meHitQvsEta_[2]
Definition: BtlDigiHitsValidation.cc:83
ParameterSet.h
BtlDigiHitsValidation::meHitTvsQ_
MonitorElement * meHitTvsQ_[2]
Definition: BtlDigiHitsValidation.cc:81
BTLDetId::geographicalId
BTLDetId geographicalId(CrysLayout lay) const
Definition: BTLDetId.cc:171
edm::Event
Definition: Event.h:73
BtlDigiHitsValidation::meHitPhi_
MonitorElement * meHitPhi_[2]
Definition: BtlDigiHitsValidation.cc:78
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
edm::InputTag
Definition: InputTag.h:15
MTDTopology.h
dqm::implementation::IBooker::book1D
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
BtlDigiHitsValidation::meHitQvsZ_
MonitorElement * meHitQvsZ_[2]
Definition: BtlDigiHitsValidation.cc:84
BTLDetId::column
int column(unsigned nrows=16) const
Definition: BTLDetId.h:110