CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Attributes
SiPixelDigiModule Class Reference

#include <SiPixelDigiModule.h>

Public Types

typedef edm::DetSet< PixelDigi >::const_iterator DigiIterator
 
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 

Public Member Functions

void book (const edm::ParameterSet &iConfig, const TrackerTopology *pTT, DQMStore::IBooker &iBooker, int type=0, bool twoD=true, bool hiRes=false, bool reducedSet=false, bool additInfo=false, bool isUpgrade=false)
 Book histograms. More...
 
int fill (const edm::DetSetVector< PixelDigi > &input, const TrackerTopology *pTT, MonitorElement *combBarrel, MonitorElement *chanBarrel, std::vector< MonitorElement *> &chanBarrelL, MonitorElement *combEndcap, const bool modon, const bool ladon, const bool layon, const bool phion, const bool bladeon, const bool diskon, const bool ringon, const bool twoD, const bool reducedSet, const bool twoDimModOn, const bool twoDimOnlyLayDisk, int &nDigisA, int &nDigisB, bool isUpgrade)
 Fill histograms. More...
 
std::pair< int, int > getZeroLoEffROCs ()
 
void resetRocMap ()
 
 SiPixelDigiModule ()
 Default constructor. More...
 
 SiPixelDigiModule (const uint32_t &id)
 Constructor with raw DetId. More...
 
 SiPixelDigiModule (const uint32_t &id, const int &ncols, const int &nrows)
 Constructor with raw DetId and sensor size. More...
 
 ~SiPixelDigiModule ()
 Destructor. More...
 

Private Attributes

uint32_t id_
 
MonitorElementmeADC_
 
MonitorElementmeADCBlade_
 
MonitorElementmeADCDisk_
 
MonitorElementmeADCLad_
 
MonitorElementmeADCLay_
 
MonitorElementmeADCPhi_
 
MonitorElementmeADCRing_
 
MonitorElementmeNDigis_
 
MonitorElementmeNDigisBlade_
 
MonitorElementmeNDigisDisk_
 
MonitorElementmeNDigisLad_
 
MonitorElementmeNDigisLay_
 
MonitorElementmeNDigisPhi_
 
MonitorElementmeNDigisRing_
 
MonitorElementmePixDigis_
 
MonitorElementmePixDigis_px_
 
MonitorElementmePixDigis_py_
 
MonitorElementmePixDigisDisk_
 
MonitorElementmePixDigisLad_
 
MonitorElementmePixDigisLad_px_
 
MonitorElementmePixDigisLad_py_
 
MonitorElementmePixDigisLay_
 
MonitorElementmePixDigisLay_px_
 
MonitorElementmePixDigisLay_py_
 
MonitorElementmePixDigisPhi_
 
MonitorElementmePixDigisPhi_px_
 
MonitorElementmePixDigisPhi_py_
 
MonitorElementmePixDigisRing_
 
MonitorElementmePixDigisRing_px_
 
MonitorElementmePixDigisRing_py_
 
MonitorElementmePixRocsDisk_ = nullptr
 
MonitorElementmePixRocsLay_ = nullptr
 
MonitorElementmeZeroOccRocsDisk_ = nullptr
 
MonitorElementmeZeroOccRocsLay_ = nullptr
 
int ncols_
 
int nrows_
 

Detailed Description

Definition at line 30 of file SiPixelDigiModule.h.

Member Typedef Documentation

◆ DigiIterator

Definition at line 44 of file SiPixelDigiModule.h.

◆ DQMStore

Definition at line 32 of file SiPixelDigiModule.h.

◆ MonitorElement

Definition at line 33 of file SiPixelDigiModule.h.

Constructor & Destructor Documentation

◆ SiPixelDigiModule() [1/3]

SiPixelDigiModule::SiPixelDigiModule ( )

Default constructor.

Framework.

Definition at line 26 of file SiPixelDigiModule.cc.

◆ SiPixelDigiModule() [2/3]

SiPixelDigiModule::SiPixelDigiModule ( const uint32_t &  id)

Constructor with raw DetId.

Definition at line 28 of file SiPixelDigiModule.cc.

◆ SiPixelDigiModule() [3/3]

SiPixelDigiModule::SiPixelDigiModule ( const uint32_t &  id,
const int &  ncols,
const int &  nrows 
)

Constructor with raw DetId and sensor size.

Definition at line 30 of file SiPixelDigiModule.cc.

◆ ~SiPixelDigiModule()

SiPixelDigiModule::~SiPixelDigiModule ( )

Destructor.

Definition at line 35 of file SiPixelDigiModule.cc.

35 {}

Member Function Documentation

◆ book()

void SiPixelDigiModule::book ( const edm::ParameterSet iConfig,
const TrackerTopology pTT,
DQMStore::IBooker iBooker,
int  type = 0,
bool  twoD = true,
bool  hiRes = false,
bool  reducedSet = false,
bool  additInfo = false,
bool  isUpgrade = false 
)

Book histograms.

Definition at line 39 of file SiPixelDigiModule.cc.

References Reference_intrackfit_cff::barrel, PixelEndcapName::bladeName(), dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), PixelEndcapName::diskName(), makeMuonMisalignmentScenario::endcap, edm::ParameterSet::getParameter(), SiPixelOfflineDQM_source_cff::hiRes, id_, PixelBarrelName::isHalfModule(), SiPixelOfflineDQM_client_cff::isUpgrade, PixelBarrelName::ladderName(), PixelBarrelName::layerName(), meADC_, meADCBlade_, meADCDisk_, meADCLad_, meADCLay_, meADCPhi_, meADCRing_, meNDigis_, meNDigisBlade_, meNDigisDisk_, meNDigisLad_, meNDigisLay_, meNDigisPhi_, meNDigisRing_, mePixDigis_, mePixDigis_px_, mePixDigis_py_, mePixDigisDisk_, mePixDigisLad_, mePixDigisLad_px_, mePixDigisLad_py_, mePixDigisLay_, mePixDigisLay_px_, mePixDigisLay_py_, mePixDigisPhi_, mePixDigisPhi_px_, mePixDigisPhi_py_, mePixDigisRing_, mePixDigisRing_px_, mePixDigisRing_py_, mePixRocsDisk_, mePixRocsLay_, meZeroOccRocsDisk_, meZeroOccRocsLay_, callgraph::module, PixelBarrelName::moduleName(), ncols_, nrows_, PixelEndcapName::pannelName(), PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, PixelEndcapName::plaquetteName(), SiPixelOfflineDQM_source_cff::reducedSet, dqm::impl::MonitorElement::setAxisTitle(), SiPixelHistogramId::setHistoId(), TrackRefitter_38T_cff::src, AlCaHLTBitMon_QueryRunRegistry::string, and DetId::subdetId().

47  {
48  bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
49  bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
50  bool isHalfModule = false;
51  if (barrel) {
52  isHalfModule = PixelBarrelName(DetId(id_), pTT, isUpgrade).isHalfModule();
53  }
54 
55  std::string hid;
56  // Get collection name and instantiate Histo Id builder
57  edm::InputTag src = iConfig.getParameter<edm::InputTag>("src");
58 
59  int nbinx = ncols_ / 2, nbiny = nrows_ / 2;
60  std::string twodtitle = "Number of Digis (1bin=four pixels)";
61  std::string pxtitle = "Number of Digis (1bin=two columns)";
62  std::string pytitle = "Number of Digis (1bin=two rows)";
63  std::string twodroctitle = "ROC Occupancy (1bin=one ROC)";
64  std::string twodzeroOccroctitle = "Zero Occupancy ROC Map (1bin=one ROC) for ";
65  if (hiRes) {
66  nbinx = ncols_;
67  nbiny = nrows_;
68  twodtitle = "Number of Digis (1bin=one pixel)";
69  pxtitle = "Number of Digis (1bin=one column)";
70  pytitle = "Number of Digis (1bin=one row)";
71  }
72  if (type == 0) {
73  SiPixelHistogramId* theHistogramId = new SiPixelHistogramId(src.label());
74  // Number of digis
75  hid = theHistogramId->setHistoId("ndigis", id_);
76  meNDigis_ = iBooker.book1D(hid, "Number of Digis", 25, 0., 25.);
77  meNDigis_->setAxisTitle("Number of digis", 1);
78  // Charge in ADC counts
79  hid = theHistogramId->setHistoId("adc", id_);
80  meADC_ = iBooker.book1D(hid, "Digi charge", 128, 0., 256.);
81  meADC_->setAxisTitle("ADC counts", 1);
82  if (!reducedSet) {
83  if (twoD) {
84  if (additInfo) {
85  // 2D hit map
86  hid = theHistogramId->setHistoId("hitmap", id_);
87  mePixDigis_ = iBooker.book2D(hid, twodtitle, nbinx, 0., float(ncols_), nbiny, 0., float(nrows_));
88  mePixDigis_->setAxisTitle("Columns", 1);
89  mePixDigis_->setAxisTitle("Rows", 2);
90  //std::cout << "During booking: type is "<< type << ", ID is "<< id_ << ", pwd for booking is " << theDMBE->pwd() << ", Plot name: " << hid << std::endl;
91  }
92  } else {
93  // projections of 2D hit map
94  hid = theHistogramId->setHistoId("hitmap", id_);
95  mePixDigis_px_ = iBooker.book1D(hid + "_px", pxtitle, nbinx, 0., float(ncols_));
96  mePixDigis_py_ = iBooker.book1D(hid + "_py", pytitle, nbiny, 0., float(nrows_));
97  mePixDigis_px_->setAxisTitle("Columns", 1);
98  mePixDigis_py_->setAxisTitle("Rows", 1);
99  }
100  }
101  delete theHistogramId;
102  }
103 
104  if (type == 1 && barrel) {
105  uint32_t DBladder;
106  DBladder = PixelBarrelName(DetId(id_), pTT, isUpgrade).ladderName();
107  char sladder[80];
108  sprintf(sladder, "Ladder_%02i", DBladder);
109  hid = src.label() + "_" + sladder;
110  if (isHalfModule)
111  hid += "H";
112  else
113  hid += "F";
114  // Number of digis
115  meNDigisLad_ = iBooker.book1D("ndigis_" + hid, "Number of Digis", 25, 0., 25.);
116  meNDigisLad_->setAxisTitle("Number of digis", 1);
117  // Charge in ADC counts
118  meADCLad_ = iBooker.book1D("adc_" + hid, "Digi charge", 128, 0., 256.);
119  meADCLad_->setAxisTitle("ADC counts", 1);
120  if (!reducedSet) {
121  if (twoD) {
122  // 2D hit map
123  mePixDigisLad_ = iBooker.book2D("hitmap_" + hid, twodtitle, nbinx, 0., float(ncols_), nbiny, 0., float(nrows_));
124  mePixDigisLad_->setAxisTitle("Columns", 1);
125  mePixDigisLad_->setAxisTitle("Rows", 2);
126  //std::cout << "During booking: type is "<< type << ", ID is "<< id_ << ", pwd for booking is " << theDMBE->pwd() << ", Plot name: " << hid << std::endl;
127  } else {
128  // projections of 2D hit map
129  mePixDigisLad_px_ = iBooker.book1D("hitmap_" + hid + "_px", pxtitle, nbinx, 0., float(ncols_));
130  mePixDigisLad_py_ = iBooker.book1D("hitmap_" + hid + "_py", pytitle, nbiny, 0., float(nrows_));
131  mePixDigisLad_px_->setAxisTitle("Columns", 1);
132  mePixDigisLad_py_->setAxisTitle("Rows", 1);
133  }
134  }
135  }
136  if (type == 2 && barrel) {
137  uint32_t DBlayer;
138  DBlayer = PixelBarrelName(DetId(id_), pTT, isUpgrade).layerName();
139  char slayer[80];
140  sprintf(slayer, "Layer_%i", DBlayer);
141  hid = src.label() + "_" + slayer;
142  if (!additInfo) {
143  // Number of digis
144  meNDigisLay_ = iBooker.book1D("ndigis_" + hid, "Number of Digis", 25, 0., 25.);
145  meNDigisLay_->setAxisTitle("Number of digis", 1);
146  // Charge in ADC counts
147  meADCLay_ = iBooker.book1D("adc_" + hid, "Digi charge", 128, 0., 256.);
148  meADCLay_->setAxisTitle("ADC counts", 1);
149  }
150  if (!reducedSet) {
151  if (twoD || additInfo) {
152  // 2D hit map
153  if (isHalfModule) {
155  iBooker.book2D("hitmap_" + hid, twodtitle, nbinx, 0., float(ncols_), 2 * nbiny, 0., float(2 * nrows_));
156  } else {
158  iBooker.book2D("hitmap_" + hid, twodtitle, nbinx, 0., float(ncols_), nbiny, 0., float(nrows_));
159  }
160  mePixDigisLay_->setAxisTitle("Columns", 1);
161  mePixDigisLay_->setAxisTitle("Rows", 2);
162 
163  //std::cout << "During booking: type is "<< type << ", ID is "<< id_ << ", pwd for booking is " << theDMBE->pwd() << ", Plot name: " << hid << std::endl;
164  int yROCbins[3] = {18, 30, 42};
165  mePixRocsLay_ = iBooker.book2D("rocmap_" + hid,
166  twodroctitle,
167  32,
168  0.,
169  32.,
170  yROCbins[DBlayer - 1],
171  1.5,
172  1.5 + float(yROCbins[DBlayer - 1] / 2));
173  mePixRocsLay_->setAxisTitle("ROCs per Module", 1);
174  mePixRocsLay_->setAxisTitle("ROCs per 1/2 Ladder", 2);
175  meZeroOccRocsLay_ = iBooker.book2D("zeroOccROC_map",
176  twodzeroOccroctitle + hid,
177  32,
178  0.,
179  32.,
180  yROCbins[DBlayer - 1],
181  1.5,
182  1.5 + float(yROCbins[DBlayer - 1] / 2));
183  meZeroOccRocsLay_->setAxisTitle("ROCs per Module", 1);
184  meZeroOccRocsLay_->setAxisTitle("ROCs per 1/2 Ladder", 2);
185  }
186  if (!twoD && !additInfo) {
187  // projections of 2D hit map
188  mePixDigisLay_px_ = iBooker.book1D("hitmap_" + hid + "_px", pxtitle, nbinx, 0., float(ncols_));
189  if (isHalfModule) {
190  mePixDigisLay_py_ = iBooker.book1D("hitmap_" + hid + "_py", pytitle, 2 * nbiny, 0., float(2 * nrows_));
191  } else {
192  mePixDigisLay_py_ = iBooker.book1D("hitmap_" + hid + "_py", pytitle, nbiny, 0., float(nrows_));
193  }
194  mePixDigisLay_px_->setAxisTitle("Columns", 1);
195  mePixDigisLay_py_->setAxisTitle("Rows", 1);
196  }
197  }
198  }
199  if (type == 3 && barrel) {
200  uint32_t DBmodule;
201  DBmodule = PixelBarrelName(DetId(id_), pTT, isUpgrade).moduleName();
202  char smodule[80];
203  sprintf(smodule, "Ring_%i", DBmodule);
204  hid = src.label() + "_" + smodule;
205  // Number of digis
206  meNDigisPhi_ = iBooker.book1D("ndigis_" + hid, "Number of Digis", 25, 0., 25.);
207  meNDigisPhi_->setAxisTitle("Number of digis", 1);
208  // Charge in ADC counts
209  meADCPhi_ = iBooker.book1D("adc_" + hid, "Digi charge", 128, 0., 256.);
210  meADCPhi_->setAxisTitle("ADC counts", 1);
211  if (!reducedSet) {
212  if (twoD) {
213  // 2D hit map
214  if (isHalfModule) {
216  iBooker.book2D("hitmap_" + hid, twodtitle, nbinx, 0., float(ncols_), 2 * nbiny, 0., float(2 * nrows_));
217  } else {
219  iBooker.book2D("hitmap_" + hid, twodtitle, nbinx, 0., float(ncols_), nbiny, 0., float(nrows_));
220  }
221  mePixDigisPhi_->setAxisTitle("Columns", 1);
222  mePixDigisPhi_->setAxisTitle("Rows", 2);
223  //std::cout << "During booking: type is "<< type << ", ID is "<< id_ << ", pwd for booking is " << theDMBE->pwd() << ", Plot name: " << hid << std::endl;
224  } else {
225  // projections of 2D hit map
226  mePixDigisPhi_px_ = iBooker.book1D("hitmap_" + hid + "_px", pxtitle, nbinx, 0., float(ncols_));
227  if (isHalfModule) {
228  mePixDigisPhi_py_ = iBooker.book1D("hitmap_" + hid + "_py", pytitle, 2 * nbiny, 0., float(2 * nrows_));
229  } else {
230  mePixDigisPhi_py_ = iBooker.book1D("hitmap_" + hid + "_py", pytitle, nbiny, 0., float(nrows_));
231  }
232  mePixDigisPhi_px_->setAxisTitle("Columns", 1);
233  mePixDigisPhi_py_->setAxisTitle("Rows", 1);
234  }
235  }
236  }
237  if (type == 4 && endcap) {
238  uint32_t blade;
239  blade = PixelEndcapName(DetId(id_), pTT, isUpgrade).bladeName();
240 
241  char sblade[80];
242  sprintf(sblade, "Blade_%02i", blade);
243  hid = src.label() + "_" + sblade;
244  // Number of digis
245  meNDigisBlade_ = iBooker.book1D("ndigis_" + hid, "Number of Digis", 25, 0., 25.);
246  meNDigisBlade_->setAxisTitle("Number of digis", 1);
247  // Charge in ADC counts
248  meADCBlade_ = iBooker.book1D("adc_" + hid, "Digi charge", 128, 0., 256.);
249  meADCBlade_->setAxisTitle("ADC counts", 1);
250  }
251  if (type == 5 && endcap) {
252  uint32_t disk;
253  disk = PixelEndcapName(DetId(id_), pTT, isUpgrade).diskName();
254 
255  char sdisk[80];
256  sprintf(sdisk, "Disk_%i", disk);
257  hid = src.label() + "_" + sdisk;
258  if (!additInfo) {
259  // Number of digis
260  meNDigisDisk_ = iBooker.book1D("ndigis_" + hid, "Number of Digis", 25, 0., 25.);
261  meNDigisDisk_->setAxisTitle("Number of digis", 1);
262  // Charge in ADC counts
263  meADCDisk_ = iBooker.book1D("adc_" + hid, "Digi charge", 128, 0., 256.);
264  meADCDisk_->setAxisTitle("ADC counts", 1);
265  }
266  if (additInfo) {
267  mePixDigisDisk_ = iBooker.book2D("hitmap_" + hid, twodtitle, 260, 0., 260., 160, 0., 160.);
268  mePixDigisDisk_->setAxisTitle("Columns", 1);
269  mePixDigisDisk_->setAxisTitle("Rows", 2);
270  //ROC information in disks
271  mePixRocsDisk_ = iBooker.book2D("rocmap_" + hid, twodroctitle, 26, 0., 26., 24, 1., 13.);
272  mePixRocsDisk_->setAxisTitle("ROCs per Module (2 Panels)", 1);
273  mePixRocsDisk_->setAxisTitle("Blade Number", 2);
274  meZeroOccRocsDisk_ = iBooker.book2D("zeroOccROC_map", twodzeroOccroctitle + hid, 26, 0., 26., 24, 1., 13.);
275  meZeroOccRocsDisk_->setAxisTitle("Zero-Occupancy ROCs per Module (2 Panels)", 1);
276  meZeroOccRocsDisk_->setAxisTitle("Blade Number", 2);
277  }
278  }
279  if (type == 6 && endcap) {
280  uint32_t panel;
281  uint32_t module;
282  panel = PixelEndcapName(DetId(id_), pTT, isUpgrade).pannelName();
284 
285  char slab[80];
286  sprintf(slab, "Panel_%i_Ring_%i", panel, module);
287  hid = src.label() + "_" + slab;
288  // Number of digis
289  meNDigisRing_ = iBooker.book1D("ndigis_" + hid, "Number of Digis", 25, 0., 25.);
290  meNDigisRing_->setAxisTitle("Number of digis", 1);
291  // Charge in ADC counts
292  meADCRing_ = iBooker.book1D("adc_" + hid, "Digi charge", 128, 0., 256.);
293  meADCRing_->setAxisTitle("ADC counts", 1);
294  if (!reducedSet) {
295  if (twoD) {
296  // 2D hit map
298  iBooker.book2D("hitmap_" + hid, twodtitle, nbinx, 0., float(ncols_), nbiny, 0., float(nrows_));
299  mePixDigisRing_->setAxisTitle("Columns", 1);
300  mePixDigisRing_->setAxisTitle("Rows", 2);
301  //std::cout << "During booking: type is "<< type << ", ID is "<< id_ << ", pwd for booking is " << theDMBE->pwd() << ", Plot name: " << hid << std::endl;
302  } else {
303  // projections of 2D hit map
304  mePixDigisRing_px_ = iBooker.book1D("hitmap_" + hid + "_px", pxtitle, nbinx, 0., float(ncols_));
305  mePixDigisRing_py_ = iBooker.book1D("hitmap_" + hid + "_py", pytitle, nbiny, 0., float(nrows_));
306  mePixDigisRing_px_->setAxisTitle("Columns", 1);
307  mePixDigisRing_py_->setAxisTitle("Rows", 1);
308  }
309  }
310  }
311 }
MonitorElement * meNDigisRing_
MonitorElement * mePixDigisLad_py_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
MonitorElement * mePixDigis_
MonitorElement * mePixDigisPhi_py_
MonitorElement * meADCRing_
int bladeName() const
blade id
int moduleName() const
module id (index in z)
MonitorElement * meNDigis_
MonitorElement * mePixDigisRing_px_
MonitorElement * mePixDigis_py_
MonitorElement * meADC_
MonitorElement * mePixDigisDisk_
MonitorElement * meNDigisBlade_
MonitorElement * meADCDisk_
MonitorElement * mePixDigisPhi_px_
bool isHalfModule() const
full or half module
MonitorElement * mePixDigisRing_py_
int diskName() const
disk id
MonitorElement * mePixRocsDisk_
MonitorElement * mePixRocsLay_
MonitorElement * meZeroOccRocsLay_
MonitorElement * mePixDigisLay_py_
MonitorElement * meADCLad_
MonitorElement * meADCBlade_
MonitorElement * meNDigisLay_
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
MonitorElement * mePixDigisLad_
MonitorElement * meADCLay_
std::string setHistoId(std::string variable, uint32_t &rawId)
Set Histogram Id.
Definition: DetId.h:17
MonitorElement * mePixDigis_px_
int layerName() const
layer id
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 * mePixDigisLad_px_
MonitorElement * mePixDigisLay_
MonitorElement * meNDigisPhi_
MonitorElement * meZeroOccRocsDisk_
MonitorElement * mePixDigisRing_
MonitorElement * meADCPhi_
int ladderName() const
ladder id (index in phi)
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 * mePixDigisPhi_
MonitorElement * meNDigisDisk_
int pannelName() const
pannel id
MonitorElement * meNDigisLad_
MonitorElement * mePixDigisLay_px_
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
int plaquetteName() const
plaquetteId (in pannel)

◆ fill()

int SiPixelDigiModule::fill ( const edm::DetSetVector< PixelDigi > &  input,
const TrackerTopology pTT,
MonitorElement combBarrel,
MonitorElement chanBarrel,
std::vector< MonitorElement *> &  chanBarrelL,
MonitorElement combEndcap,
const bool  modon,
const bool  ladon,
const bool  layon,
const bool  phion,
const bool  bladeon,
const bool  diskon,
const bool  ringon,
const bool  twoD,
const bool  reducedSet,
const bool  twoDimModOn,
const bool  twoDimOnlyLayDisk,
int &  nDigisA,
int &  nDigisB,
bool  isUpgrade 
)

Fill histograms.

Definition at line 316 of file SiPixelDigiModule.cc.

References gpuClustering::adc, Reference_intrackfit_cff::barrel, edm::DetSetVector< T >::begin(), PixelEndcapName::bladeName(), cuy::col, edm::DetSetVector< T >::end(), makeMuonMisalignmentScenario::endcap, dqm::impl::MonitorElement::Fill(), HcalObjRepresent::Fill(), dqmMemoryStats::float, mps_fire::i, id_, input, PixelBarrelName::isHalfModule(), SiPixelOfflineDQM_client_cff::isUpgrade, dqmiolumiharvest::j, PixelBarrelName::ladderName(), PixelBarrelName::layerName(), meADC_, meADCBlade_, meADCDisk_, meADCLad_, meADCLay_, meADCPhi_, meADCRing_, meNDigis_, meNDigisBlade_, meNDigisDisk_, meNDigisLad_, meNDigisLay_, meNDigisPhi_, meNDigisRing_, mePixDigis_, mePixDigis_px_, mePixDigis_py_, mePixDigisDisk_, mePixDigisLad_, mePixDigisLad_px_, mePixDigisLad_py_, mePixDigisLay_, mePixDigisLay_px_, mePixDigisLay_py_, mePixDigisPhi_, mePixDigisPhi_px_, mePixDigisPhi_py_, mePixDigisRing_, mePixDigisRing_px_, mePixDigisRing_py_, mePixRocsDisk_, mePixRocsLay_, PixelBarrelName::mI, PixelBarrelName::mO, PixelBarrelName::moduleName(), gpuClustering::msize, PixelEndcapName::pannelName(), PixelBarrelName::pI, PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, PixelBarrelName::pO, SiPixelOfflineDQM_source_cff::reducedSet, PixelBarrelName::shell(), DetId::subdetId(), SiPixelOfflineDQM_source_cff::twoDimModOn, and SiPixelOfflineDQM_source_cff::twoDimOnlyLayDisk.

335  {
336  bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
337  bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
338  bool isHalfModule = false;
339  uint32_t DBladder = 0;
340  if (barrel) {
341  isHalfModule = PixelBarrelName(DetId(id_), pTT, isUpgrade).isHalfModule();
342  DBladder = PixelBarrelName(DetId(id_), pTT, isUpgrade).ladderName();
343  }
344 
345  edm::DetSetVector<PixelDigi>::const_iterator isearch = input.find(id_); // search digis of detid
346 
347  unsigned int numberOfDigisMod = 0;
348  int msize;
349  if (isUpgrade) {
350  msize = 10;
351  } else {
352  msize = 8;
353  }
354  int numberOfDigis[msize];
355  for (int i = 0; i != msize; i++)
356  numberOfDigis[i] = 0;
357  nDigisA = 0;
358  nDigisB = 0;
359  if (isearch != input.end()) { // Not an empty iterator
360 
361  // Look at digis now
363  for (di = isearch->data.begin(); di != isearch->data.end(); di++) {
364  int adc = di->adc(); // charge
365  int col = di->column(); // column
366  int row = di->row(); // row
367  numberOfDigisMod++;
368 
369  int DBlayer = 0;
370  int DBmodule = 0;
371 
372  if (!isUpgrade) {
374  DBlayer = PixelBarrelName(DetId(id_), pTT, isUpgrade).layerName();
375  DBmodule = PixelBarrelName(DetId(id_), pTT, isUpgrade).moduleName();
376  if (barrel) {
377  if (isHalfModule) {
378  if (DBshell == PixelBarrelName::pI || DBshell == PixelBarrelName::pO) {
379  numberOfDigis[0]++;
380  nDigisA++;
381  if (DBlayer == 1)
382  numberOfDigis[2]++;
383  if (DBlayer == 2)
384  numberOfDigis[3]++;
385  if (DBlayer == 3)
386  numberOfDigis[4]++;
387  }
388  if (DBshell == PixelBarrelName::mI || DBshell == PixelBarrelName::mO) {
389  numberOfDigis[1]++;
390  nDigisB++;
391  if (DBlayer == 1)
392  numberOfDigis[5]++;
393  if (DBlayer == 2)
394  numberOfDigis[6]++;
395  if (DBlayer == 3)
396  numberOfDigis[7]++;
397  }
398  } else {
399  if (row < 80) {
400  numberOfDigis[0]++;
401  nDigisA++;
402  if (DBlayer == 1)
403  numberOfDigis[2]++;
404  if (DBlayer == 2)
405  numberOfDigis[3]++;
406  if (DBlayer == 3)
407  numberOfDigis[4]++;
408  } else {
409  numberOfDigis[1]++;
410  nDigisB++;
411  if (DBlayer == 1)
412  numberOfDigis[5]++;
413  if (DBlayer == 2)
414  numberOfDigis[6]++;
415  if (DBlayer == 3)
416  numberOfDigis[7]++;
417  }
418  }
419  }
420  } else if (isUpgrade) {
421  DBlayer = PixelBarrelName(DetId(id_), pTT, isUpgrade).layerName();
422  DBmodule = PixelBarrelName(DetId(id_), pTT, isUpgrade).moduleName();
423  if (barrel) {
424  if (row < 80) {
425  numberOfDigis[0]++;
426  nDigisA++;
427  if (DBlayer == 1)
428  numberOfDigis[2]++;
429  if (DBlayer == 2)
430  numberOfDigis[3]++;
431  if (DBlayer == 3)
432  numberOfDigis[4]++;
433  if (DBlayer == 4)
434  numberOfDigis[5]++;
435  } else {
436  numberOfDigis[1]++;
437  nDigisB++;
438  if (DBlayer == 1)
439  numberOfDigis[6]++;
440  if (DBlayer == 2)
441  numberOfDigis[7]++;
442  if (DBlayer == 3)
443  numberOfDigis[8]++;
444  if (DBlayer == 4)
445  numberOfDigis[9]++;
446  }
447  }
448  }
449 
450  if (modon) {
451  if (!reducedSet) {
452  if (twoD) {
453  if (twoDimModOn)
454  (mePixDigis_)->Fill((float)col, (float)row);
455  } else {
456  (mePixDigis_px_)->Fill((float)col);
457  (mePixDigis_py_)->Fill((float)row);
458  }
459  }
460  (meADC_)->Fill((float)adc);
461  }
462  if (ladon && barrel) {
463  (meADCLad_)->Fill((float)adc);
464  if (!reducedSet) {
465  if (twoD)
466  (mePixDigisLad_)->Fill((float)col, (float)row);
467  else {
468  (mePixDigisLad_px_)->Fill((float)col);
469  (mePixDigisLad_py_)->Fill((float)row);
470  }
471  }
472  }
473  if ((layon || twoDimOnlyLayDisk) && barrel) {
474  if (!twoDimOnlyLayDisk)
475  (meADCLay_)->Fill((float)adc);
476  if (!reducedSet) {
477  if ((layon && twoD) || twoDimOnlyLayDisk) {
478  //ROC histos...
479  float rocx = (float)col / 52. + 8.0 * float(DBmodule - 1);
480  float rocy = (float)row / 160. + float(DBladder);
481  //Shift 1st ladder (half modules) up by 1 bin
482  if (DBladder == 1)
483  rocy = rocy + 0.5;
484  mePixRocsLay_->Fill(rocx, rocy);
485 
486  if (isHalfModule && DBladder == 1) {
487  (mePixDigisLay_)->Fill((float)col, (float)row + 80);
488  } else
489  (mePixDigisLay_)->Fill((float)col, (float)row);
490  }
491  if ((layon && !twoD) && !twoDimOnlyLayDisk) {
492  (mePixDigisLay_px_)->Fill((float)col);
493  if (isHalfModule && DBladder == 1) {
494  (mePixDigisLay_py_)->Fill((float)row + 80);
495  } else
496  (mePixDigisLay_py_)->Fill((float)row);
497  }
498  }
499  }
500  if (phion && barrel) {
501  (meADCPhi_)->Fill((float)adc);
502  if (!reducedSet) {
503  if (twoD) {
504  if (isHalfModule && DBladder == 1) {
505  (mePixDigisPhi_)->Fill((float)col, (float)row + 80);
506  } else
507  (mePixDigisPhi_)->Fill((float)col, (float)row);
508  } else {
509  (mePixDigisPhi_px_)->Fill((float)col);
510  if (isHalfModule && DBladder == 1) {
511  (mePixDigisPhi_py_)->Fill((float)row + 80);
512  } else
513  (mePixDigisPhi_py_)->Fill((float)row);
514  }
515  }
516  }
517  if (bladeon && endcap) {
518  (meADCBlade_)->Fill((float)adc);
519  }
520 
521  if ((diskon || twoDimOnlyLayDisk) && endcap) {
522  if (!twoDimOnlyLayDisk)
523  (meADCDisk_)->Fill((float)adc);
524  if (twoDimOnlyLayDisk) {
525  (mePixDigisDisk_)->Fill((float)col, (float)row);
526  //ROC monitoring
527  int DBpanel;
528  int DBblade;
529  DBpanel = PixelEndcapName(DetId(id_), pTT, isUpgrade).pannelName();
530  DBblade = PixelEndcapName(DetId(id_), pTT, isUpgrade).bladeName();
531  float offx = 0.;
532  //This crazy offset takes into account the roc and module fpix configuration
533  for (int i = DBpanel; i < DBmodule; ++i) {
534  offx = offx + float(5 + DBpanel - i);
535  }
536  float rocx = (float)col / 52. + offx + 14.0 * float(DBpanel - 1);
537  float rocy = (float)row / 160. + float(DBblade);
538  mePixRocsDisk_->Fill(rocx, rocy);
539  }
540  }
541  if (ringon && endcap) {
542  (meADCRing_)->Fill((float)adc);
543  if (!reducedSet) {
544  if (twoD)
545  (mePixDigisRing_)->Fill((float)col, (float)row);
546  else {
547  (mePixDigisRing_px_)->Fill((float)col);
548  (mePixDigisRing_py_)->Fill((float)row);
549  }
550  }
551  }
552  }
553  if (modon)
554  (meNDigis_)->Fill((float)numberOfDigisMod);
555  if (ladon && barrel)
556  (meNDigisLad_)->Fill((float)numberOfDigisMod);
557  if (layon && barrel && !twoDimOnlyLayDisk)
558  (meNDigisLay_)->Fill((float)numberOfDigisMod);
559  if (phion && barrel)
560  (meNDigisPhi_)->Fill((float)numberOfDigisMod);
561  if (bladeon && endcap)
562  (meNDigisBlade_)->Fill((float)numberOfDigisMod);
563  if (diskon && endcap && !twoDimOnlyLayDisk)
564  (meNDigisDisk_)->Fill((float)numberOfDigisMod);
565  if (ringon && endcap)
566  (meNDigisRing_)->Fill((float)numberOfDigisMod);
567  if (barrel) {
568  if (combBarrel)
569  combBarrel->Fill((float)numberOfDigisMod);
570  if (chanBarrel) {
571  if (numberOfDigis[0] > 0)
572  chanBarrel->Fill((float)numberOfDigis[0]);
573  if (numberOfDigis[1] > 0)
574  chanBarrel->Fill((float)numberOfDigis[1]);
575  }
576  int j = 2;
577  for (std::vector<MonitorElement*>::iterator i = chanBarrelL.begin(); i != chanBarrelL.end(); i++) {
578  if (numberOfDigis[j] > 0)
579  (*i)->Fill((float)numberOfDigis[j]);
580  j++;
581  }
582  } else if (endcap) {
583  if (combEndcap)
584  combEndcap->Fill((float)numberOfDigisMod);
585  }
586  }
587 
588  //std::cout<<"numberOfDigis for this module: "<<numberOfDigis<<std::endl;
589  return numberOfDigisMod;
590 }
MonitorElement * meNDigisRing_
MonitorElement * mePixDigisLad_py_
MonitorElement * mePixDigis_
MonitorElement * mePixDigisPhi_py_
MonitorElement * meADCRing_
int bladeName() const
blade id
int moduleName() const
module id (index in z)
MonitorElement * meNDigis_
MonitorElement * mePixDigisRing_px_
MonitorElement * mePixDigis_py_
MonitorElement * meADC_
MonitorElement * mePixDigisDisk_
static std::string const input
Definition: EdmProvDump.cc:50
MonitorElement * meNDigisBlade_
void Fill(long long x)
MonitorElement * meADCDisk_
MonitorElement * mePixDigisPhi_px_
bool isHalfModule() const
full or half module
MonitorElement * mePixDigisRing_py_
MonitorElement * mePixRocsDisk_
MonitorElement * mePixRocsLay_
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * mePixDigisLay_py_
MonitorElement * meADCLad_
MonitorElement * meADCBlade_
MonitorElement * meNDigisLay_
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
MonitorElement * mePixDigisLad_
iterator end()
Return the off-the-end iterator.
Definition: DetSetVector.h:325
MonitorElement * meADCLay_
Shell shell() const
Definition: DetId.h:17
MonitorElement * mePixDigis_px_
int layerName() const
layer id
MonitorElement * mePixDigisLad_px_
MonitorElement * mePixDigisLay_
MonitorElement * meNDigisPhi_
col
Definition: cuy.py:1009
MonitorElement * mePixDigisRing_
MonitorElement * meADCPhi_
int ladderName() const
ladder id (index in phi)
iterator begin()
Return an iterator to the first DetSet.
Definition: DetSetVector.h:314
__shared__ int msize
MonitorElement * mePixDigisPhi_
collection_type::const_iterator const_iterator
Definition: DetSet.h:31
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:102
MonitorElement * meNDigisDisk_
int pannelName() const
pannel id
uint16_t *__restrict__ uint16_t const *__restrict__ adc
MonitorElement * meNDigisLad_
MonitorElement * mePixDigisLay_px_

◆ getZeroLoEffROCs()

std::pair< int, int > SiPixelDigiModule::getZeroLoEffROCs ( )

Definition at line 601 of file SiPixelDigiModule.cc.

References dqm::impl::MonitorElement::Fill(), dqmMemoryStats::float, dqm::impl::MonitorElement::getBinContent(), dqm::impl::MonitorElement::getEntries(), dqm::impl::MonitorElement::getNbinsX(), dqm::impl::MonitorElement::getNbinsY(), mps_fire::i, dqmiolumiharvest::j, mePixRocsDisk_, mePixRocsLay_, meZeroOccRocsDisk_, and meZeroOccRocsLay_.

601  {
602  int nZeroROC = 0;
603  int nLoEffROC = 0;
604  float SF = 1.0;
606  if (mePixRocsDisk_->getEntries() > 0)
608  for (int i = 1; i < mePixRocsDisk_->getNbinsX() + 1; ++i) {
609  for (int j = 1; j < mePixRocsDisk_->getNbinsY() + 1; ++j) {
610  float localX = float(i) - 0.5;
611  float localY = float(j) / 2.0 + 0.75;
612  if (mePixRocsDisk_->getBinContent(i, j) < 1) {
613  nZeroROC++;
614  meZeroOccRocsDisk_->Fill(localX, localY);
615  }
616  if (mePixRocsDisk_->getBinContent(i, j) * SF < 0.25) {
617  nLoEffROC++;
618  }
619  }
620  }
621  return std::pair<int, int>(nZeroROC, nLoEffROC);
622  }
624  if (mePixRocsLay_->getEntries() > 0)
626  for (int i = 1; i < mePixRocsLay_->getNbinsX() + 1; ++i) {
627  for (int j = 1; j < mePixRocsLay_->getNbinsY() + 1; ++j) {
628  float localX = float(i) - 0.5;
629  float localY = float(j) / 2.0 + 1.25;
630  if (mePixRocsLay_->getBinContent(i, j) < 8) {
631  nZeroROC++;
632  meZeroOccRocsLay_->Fill(localX, localY);
633  } //in some regions of pixel there are modules with no HV but enabled ROCs that sometime give a fake hit, so the dead rocs have to be counted to have less than 8 hits in 10 LS
634  if (mePixRocsLay_->getBinContent(i, j) * SF < 0.25) {
635  nLoEffROC++;
636  }
637  }
638  }
639  return std::pair<int, int>(nZeroROC, nLoEffROC);
640  }
641  return std::pair<int, int>(0, 0);
642 }
void Fill(long long x)
MonitorElement * mePixRocsDisk_
MonitorElement * mePixRocsLay_
MonitorElement * meZeroOccRocsLay_
virtual double getEntries() const
get # of entries
virtual int getNbinsY() const
get # of bins in Y-axis
MonitorElement * meZeroOccRocsDisk_
virtual int getNbinsX() const
get # of bins in X-axis
virtual double getBinContent(int binx) const
get content of bin (1-D)

◆ resetRocMap()

void SiPixelDigiModule::resetRocMap ( )

Definition at line 593 of file SiPixelDigiModule.cc.

References mePixRocsDisk_, mePixRocsLay_, and dqm::impl::MonitorElement::Reset().

593  {
594  if (mePixRocsDisk_)
596  if (mePixRocsLay_)
597  mePixRocsLay_->Reset();
598 }
virtual void Reset()
Remove all data from the ME, keept the empty histogram with all its settings.
MonitorElement * mePixRocsDisk_
MonitorElement * mePixRocsLay_

Member Data Documentation

◆ id_

uint32_t SiPixelDigiModule::id_
private

Definition at line 86 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ meADC_

MonitorElement* SiPixelDigiModule::meADC_
private

Definition at line 90 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ meADCBlade_

MonitorElement* SiPixelDigiModule::meADCBlade_
private

Definition at line 118 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ meADCDisk_

MonitorElement* SiPixelDigiModule::meADCDisk_
private

Definition at line 121 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ meADCLad_

MonitorElement* SiPixelDigiModule::meADCLad_
private

Definition at line 97 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ meADCLay_

MonitorElement* SiPixelDigiModule::meADCLay_
private

Definition at line 103 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ meADCPhi_

MonitorElement* SiPixelDigiModule::meADCPhi_
private

Definition at line 111 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ meADCRing_

MonitorElement* SiPixelDigiModule::meADCRing_
private

Definition at line 127 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ meNDigis_

MonitorElement* SiPixelDigiModule::meNDigis_
private

Definition at line 89 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ meNDigisBlade_

MonitorElement* SiPixelDigiModule::meNDigisBlade_
private

Definition at line 117 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ meNDigisDisk_

MonitorElement* SiPixelDigiModule::meNDigisDisk_
private

Definition at line 120 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ meNDigisLad_

MonitorElement* SiPixelDigiModule::meNDigisLad_
private

Definition at line 96 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ meNDigisLay_

MonitorElement* SiPixelDigiModule::meNDigisLay_
private

Definition at line 102 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ meNDigisPhi_

MonitorElement* SiPixelDigiModule::meNDigisPhi_
private

Definition at line 110 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ meNDigisRing_

MonitorElement* SiPixelDigiModule::meNDigisRing_
private

Definition at line 126 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigis_

MonitorElement* SiPixelDigiModule::mePixDigis_
private

Definition at line 91 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigis_px_

MonitorElement* SiPixelDigiModule::mePixDigis_px_
private

Definition at line 92 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigis_py_

MonitorElement* SiPixelDigiModule::mePixDigis_py_
private

Definition at line 93 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigisDisk_

MonitorElement* SiPixelDigiModule::mePixDigisDisk_
private

Definition at line 122 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigisLad_

MonitorElement* SiPixelDigiModule::mePixDigisLad_
private

Definition at line 98 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigisLad_px_

MonitorElement* SiPixelDigiModule::mePixDigisLad_px_
private

Definition at line 99 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigisLad_py_

MonitorElement* SiPixelDigiModule::mePixDigisLad_py_
private

Definition at line 100 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigisLay_

MonitorElement* SiPixelDigiModule::mePixDigisLay_
private

Definition at line 104 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigisLay_px_

MonitorElement* SiPixelDigiModule::mePixDigisLay_px_
private

Definition at line 107 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigisLay_py_

MonitorElement* SiPixelDigiModule::mePixDigisLay_py_
private

Definition at line 108 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigisPhi_

MonitorElement* SiPixelDigiModule::mePixDigisPhi_
private

Definition at line 112 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigisPhi_px_

MonitorElement* SiPixelDigiModule::mePixDigisPhi_px_
private

Definition at line 113 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigisPhi_py_

MonitorElement* SiPixelDigiModule::mePixDigisPhi_py_
private

Definition at line 114 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigisRing_

MonitorElement* SiPixelDigiModule::mePixDigisRing_
private

Definition at line 128 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigisRing_px_

MonitorElement* SiPixelDigiModule::mePixDigisRing_px_
private

Definition at line 129 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixDigisRing_py_

MonitorElement* SiPixelDigiModule::mePixDigisRing_py_
private

Definition at line 130 of file SiPixelDigiModule.h.

Referenced by book(), and fill().

◆ mePixRocsDisk_

MonitorElement* SiPixelDigiModule::mePixRocsDisk_ = nullptr
private

Definition at line 123 of file SiPixelDigiModule.h.

Referenced by book(), fill(), getZeroLoEffROCs(), and resetRocMap().

◆ mePixRocsLay_

MonitorElement* SiPixelDigiModule::mePixRocsLay_ = nullptr
private

Definition at line 105 of file SiPixelDigiModule.h.

Referenced by book(), fill(), getZeroLoEffROCs(), and resetRocMap().

◆ meZeroOccRocsDisk_

MonitorElement* SiPixelDigiModule::meZeroOccRocsDisk_ = nullptr
private

Definition at line 124 of file SiPixelDigiModule.h.

Referenced by book(), and getZeroLoEffROCs().

◆ meZeroOccRocsLay_

MonitorElement* SiPixelDigiModule::meZeroOccRocsLay_ = nullptr
private

Definition at line 106 of file SiPixelDigiModule.h.

Referenced by book(), and getZeroLoEffROCs().

◆ ncols_

int SiPixelDigiModule::ncols_
private

Definition at line 87 of file SiPixelDigiModule.h.

Referenced by book().

◆ nrows_

int SiPixelDigiModule::nrows_
private

Definition at line 88 of file SiPixelDigiModule.h.

Referenced by book().