File indexing completed on 2024-04-06 12:08:21
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include "DQM/SiPixelCommon/interface/SiPixelHistogramId.h"
0023 #include "DQM/SiPixelMonitorCluster/interface/SiPixelClusterModule.h"
0024 #include "DQMServices/Core/interface/DQMStore.h"
0025
0026 #include "FWCore/ServiceRegistry/interface/Service.h"
0027
0028 #include <cstdlib>
0029 #include <iostream>
0030 #include <memory>
0031 #include <string>
0032 #include <vector>
0033
0034
0035 #include "DataFormats/DetId/interface/DetId.h"
0036 #include "DataFormats/TrackerCommon/interface/PixelBarrelName.h"
0037 #include "DataFormats/SiPixelDetId/interface/PixelBarrelNameUpgrade.h"
0038 #include "DataFormats/TrackerCommon/interface/PixelEndcapName.h"
0039 #include "DataFormats/SiPixelDetId/interface/PixelEndcapNameUpgrade.h"
0040 #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"
0041 #include "Geometry/Records/interface/TrackerTopologyRcd.h"
0042
0043
0044
0045 SiPixelClusterModule::SiPixelClusterModule() : id_(0), ncols_(416), nrows_(160) {}
0046
0047 SiPixelClusterModule::SiPixelClusterModule(const uint32_t &id) : id_(id), ncols_(416), nrows_(160) {}
0048
0049 SiPixelClusterModule::SiPixelClusterModule(const uint32_t &id, const int &ncols, const int &nrows)
0050 : id_(id), ncols_(ncols), nrows_(nrows) {}
0051
0052
0053
0054 SiPixelClusterModule::~SiPixelClusterModule() {}
0055
0056
0057
0058 void SiPixelClusterModule::book(const edm::ParameterSet &iConfig,
0059 const TrackerTopology *pTT,
0060 DQMStore::IBooker &iBooker,
0061 int type,
0062 bool twoD,
0063 bool reducedSet,
0064 bool isUpgrade) {
0065 bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
0066 bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
0067 bool isHalfModule = false;
0068 if (barrel) {
0069 isHalfModule = PixelBarrelName(DetId(id_), pTT, isUpgrade).isHalfModule();
0070 }
0071 int nbinx = ncols_ / 2;
0072 int nbiny = nrows_ / 2;
0073
0074 std::string hid;
0075
0076 edm::InputTag src = iConfig.getParameter<edm::InputTag>("src");
0077 if (type == 0) {
0078 SiPixelHistogramId *theHistogramId = new SiPixelHistogramId(src.label());
0079
0080 hid = theHistogramId->setHistoId("nclusters", id_);
0081 meNClusters_ = iBooker.book1D(hid, "Number of Clusters", 8, 0., 8.);
0082 meNClusters_->setAxisTitle("Number of Clusters", 1);
0083
0084 hid = theHistogramId->setHistoId("charge", id_);
0085 meCharge_ = iBooker.book1D(hid, "Cluster charge", 100, 0., 200.);
0086 meCharge_->setAxisTitle("Charge [kilo electrons]", 1);
0087
0088 hid = theHistogramId->setHistoId("size", id_);
0089 meSize_ = iBooker.book1D(hid, "Total cluster size", 30, 0., 30.);
0090 meSize_->setAxisTitle("Cluster size [number of pixels]", 1);
0091 if (!reducedSet) {
0092
0093 hid = theHistogramId->setHistoId("minrow", id_);
0094 meMinRow_ = iBooker.book1D(hid, "Lowest cluster row", 200, 0., 200.);
0095 meMinRow_->setAxisTitle("Lowest cluster row", 1);
0096
0097 hid = theHistogramId->setHistoId("maxrow", id_);
0098 meMaxRow_ = iBooker.book1D(hid, "Highest cluster row", 200, 0., 200.);
0099 meMaxRow_->setAxisTitle("Highest cluster row", 1);
0100
0101 hid = theHistogramId->setHistoId("mincol", id_);
0102 meMinCol_ = iBooker.book1D(hid, "Lowest cluster column", 500, 0., 500.);
0103 meMinCol_->setAxisTitle("Lowest cluster column", 1);
0104
0105 hid = theHistogramId->setHistoId("maxcol", id_);
0106 meMaxCol_ = iBooker.book1D(hid, "Highest cluster column", 500, 0., 500.);
0107 meMaxCol_->setAxisTitle("Highest cluster column", 1);
0108
0109 hid = theHistogramId->setHistoId("x", id_);
0110 meX_ = iBooker.book1D(hid, "Cluster barycenter X (row #)", 200, 0., 200.);
0111 meX_->setAxisTitle("Barycenter x-position [row #]", 1);
0112
0113 hid = theHistogramId->setHistoId("y", id_);
0114 meY_ = iBooker.book1D(hid, "Cluster barycenter Y (column #)", 500, 0., 500.);
0115 meY_->setAxisTitle("Barycenter y-position [column #]", 1);
0116
0117 hid = theHistogramId->setHistoId("sizeX", id_);
0118 meSizeX_ = iBooker.book1D(hid, "Cluster x-width (rows)", 10, 0., 10.);
0119 meSizeX_->setAxisTitle("Cluster x-size [rows]", 1);
0120
0121 hid = theHistogramId->setHistoId("sizeY", id_);
0122 meSizeY_ = iBooker.book1D(hid, "Cluster y-width (columns)", 15, 0., 15.);
0123 meSizeY_->setAxisTitle("Cluster y-size [columns]", 1);
0124 int nbinx = ncols_ / 2;
0125 int nbiny = nrows_ / 2;
0126 hid = theHistogramId->setHistoId("hitmap", id_);
0127 if (twoD) {
0128
0129 mePixClusters_ = iBooker.book2D(
0130 hid, "Number of Clusters (1bin=four pixels)", nbinx, 0., float(ncols_), nbiny, 0., float(nrows_));
0131 mePixClusters_->setAxisTitle("Columns", 1);
0132 mePixClusters_->setAxisTitle("Rows", 2);
0133 } else {
0134
0135 mePixClusters_px_ =
0136 iBooker.book1D(hid + "_px", "Number of Clusters (1bin=two columns)", nbinx, 0., float(ncols_));
0137 mePixClusters_py_ = iBooker.book1D(hid + "_py", "Number of Clusters (1bin=two rows)", nbiny, 0., float(nrows_));
0138 mePixClusters_px_->setAxisTitle("Columns", 1);
0139 mePixClusters_py_->setAxisTitle("Rows", 1);
0140 }
0141 }
0142 delete theHistogramId;
0143 }
0144
0145
0146 if (barrel && type == 7) {
0147 hid = src.label() + "_Barrel";
0148 meSizeYvsEtaBarrel_ = iBooker.book2D(
0149 "sizeYvsEta_" + hid, "Cluster size along beamline vs. Cluster position #eta", 60, -3., 3., 40, 0., 40.);
0150 meSizeYvsEtaBarrel_->setAxisTitle("Cluster #eta", 1);
0151 meSizeYvsEtaBarrel_->setAxisTitle("Cluster size along beamline [number of pixels]", 2);
0152 }
0153 if (type == 1 && barrel) {
0154 uint32_t DBladder;
0155 DBladder = PixelBarrelName(DetId(id_), pTT, isUpgrade).ladderName();
0156 char sladder[80];
0157 sprintf(sladder, "Ladder_%02i", DBladder);
0158 hid = src.label() + "_" + sladder;
0159 if (isHalfModule)
0160 hid += "H";
0161 else
0162 hid += "F";
0163
0164 meNClustersLad_ = iBooker.book1D("nclusters_" + hid, "Number of Clusters", 8, 0., 8.);
0165 meNClustersLad_->setAxisTitle("Number of Clusters", 1);
0166
0167 meChargeLad_ = iBooker.book1D("charge_" + hid, "Cluster charge", 100, 0., 200.);
0168 meChargeLad_->setAxisTitle("Charge [kilo electrons]", 1);
0169
0170 meSizeLad_ = iBooker.book1D("size_" + hid, "Total cluster size", 30, 0., 30.);
0171 meSizeLad_->setAxisTitle("Cluster size [number of pixels]", 1);
0172 if (!reducedSet) {
0173
0174 meMinRowLad_ = iBooker.book1D("minrow_" + hid, "Lowest cluster row", 200, 0., 200.);
0175 meMinRowLad_->setAxisTitle("Lowest cluster row", 1);
0176
0177 meMaxRowLad_ = iBooker.book1D("maxrow_" + hid, "Highest cluster row", 200, 0., 200.);
0178 meMaxRowLad_->setAxisTitle("Highest cluster row", 1);
0179
0180 meMinColLad_ = iBooker.book1D("mincol_" + hid, "Lowest cluster column", 500, 0., 500.);
0181 meMinColLad_->setAxisTitle("Lowest cluster column", 1);
0182
0183 meMaxColLad_ = iBooker.book1D("maxcol_" + hid, "Highest cluster column", 500, 0., 500.);
0184 meMaxColLad_->setAxisTitle("Highest cluster column", 1);
0185
0186 meXLad_ = iBooker.book1D("x_" + hid, "Cluster barycenter X (row #)", 200, 0., 200.);
0187 meXLad_->setAxisTitle("Barycenter x-position [row #]", 1);
0188
0189 meYLad_ = iBooker.book1D("y_" + hid, "Cluster barycenter Y (column #)", 500, 0., 500.);
0190 meYLad_->setAxisTitle("Barycenter y-position [column #]", 1);
0191
0192 meSizeXLad_ = iBooker.book1D("sizeX_" + hid, "Cluster x-width (rows)", 10, 0., 10.);
0193 meSizeXLad_->setAxisTitle("Cluster x-size [rows]", 1);
0194
0195 meSizeYLad_ = iBooker.book1D("sizeY_" + hid, "Cluster y-width (columns)", 15, 0., 15.);
0196 meSizeYLad_->setAxisTitle("Cluster y-size [columns]", 1);
0197 if (twoD) {
0198
0199 mePixClustersLad_ = iBooker.book2D("hitmap_" + hid,
0200 "Number of Clusters (1bin=four pixels)",
0201 nbinx,
0202 0.,
0203 float(ncols_),
0204 nbiny,
0205 0.,
0206 float(nrows_));
0207 mePixClustersLad_->setAxisTitle("Columns", 1);
0208 mePixClustersLad_->setAxisTitle("Rows", 2);
0209 } else {
0210
0211 mePixClustersLad_px_ =
0212 iBooker.book1D("hitmap_" + hid + "_px", "Number of Clusters (1bin=two columns)", nbinx, 0., float(ncols_));
0213 mePixClustersLad_py_ =
0214 iBooker.book1D("hitmap_" + hid + "_py", "Number of Clusters (1bin=two rows)", nbiny, 0., float(nrows_));
0215 mePixClustersLad_px_->setAxisTitle("Columns", 1);
0216 mePixClustersLad_py_->setAxisTitle("Rows", 1);
0217 }
0218 }
0219 }
0220
0221 if (type == 2 && barrel) {
0222 uint32_t DBlayer;
0223 DBlayer = PixelBarrelName(DetId(id_), pTT, isUpgrade).layerName();
0224 char slayer[80];
0225 sprintf(slayer, "Layer_%i", DBlayer);
0226 hid = src.label() + "_" + slayer;
0227
0228 meNClustersLay_ = iBooker.book1D("nclusters_" + hid, "Number of Clusters", 8, 0., 8.);
0229 meNClustersLay_->setAxisTitle("Number of Clusters", 1);
0230
0231 meChargeLay_ = iBooker.book1D("charge_" + hid, "Cluster charge", 100, 0., 200.);
0232 meChargeLay_->setAxisTitle("Charge [kilo electrons]", 1);
0233
0234 meSizeLay_ = iBooker.book1D("size_" + hid, "Total cluster size", 30, 0., 30.);
0235 meSizeLay_->setAxisTitle("Cluster size [in pixels]", 1);
0236 if (!reducedSet) {
0237
0238 meMinRowLay_ = iBooker.book1D("minrow_" + hid, "Lowest cluster row", 200, 0., 200.);
0239 meMinRowLay_->setAxisTitle("Lowest cluster row", 1);
0240
0241 meMaxRowLay_ = iBooker.book1D("maxrow_" + hid, "Highest cluster row", 200, 0., 200.);
0242 meMaxRowLay_->setAxisTitle("Highest cluster row", 1);
0243
0244 meMinColLay_ = iBooker.book1D("mincol_" + hid, "Lowest cluster column", 500, 0., 500.);
0245 meMinColLay_->setAxisTitle("Lowest cluster column", 1);
0246
0247 meMaxColLay_ = iBooker.book1D("maxcol_" + hid, "Highest cluster column", 500, 0., 500.);
0248 meMaxColLay_->setAxisTitle("Highest cluster column", 1);
0249
0250 meXLay_ = iBooker.book1D("x_" + hid, "Cluster barycenter X (row #)", 200, 0., 200.);
0251 meXLay_->setAxisTitle("Barycenter x-position [row #]", 1);
0252
0253 meYLay_ = iBooker.book1D("y_" + hid, "Cluster barycenter Y (column #)", 500, 0., 500.);
0254 meYLay_->setAxisTitle("Barycenter y-position [column #]", 1);
0255
0256 meSizeXLay_ = iBooker.book1D("sizeX_" + hid, "Cluster x-width (rows)", 10, 0., 10.);
0257 meSizeXLay_->setAxisTitle("Cluster x-size [rows]", 1);
0258
0259 meSizeYLay_ = iBooker.book1D("sizeY_" + hid, "Cluster y-width (columns)", 15, 0., 15.);
0260 meSizeYLay_->setAxisTitle("Cluster y-size [columns]", 1);
0261 if (twoD) {
0262
0263 if (isHalfModule) {
0264 mePixClustersLay_ = iBooker.book2D("hitmap_" + hid,
0265 "Number of Clusters (1bin=four pixels)",
0266 nbinx,
0267 0.,
0268 float(ncols_),
0269 2 * nbiny,
0270 0.,
0271 float(2 * nrows_));
0272 } else {
0273 mePixClustersLay_ = iBooker.book2D("hitmap_" + hid,
0274 "Number of Clusters (1bin=four pixels)",
0275 nbinx,
0276 0.,
0277 float(ncols_),
0278 nbiny,
0279 0.,
0280 float(nrows_));
0281 }
0282 mePixClustersLay_->setAxisTitle("Columns", 1);
0283 mePixClustersLay_->setAxisTitle("Rows", 2);
0284 } else {
0285
0286 mePixClustersLay_px_ =
0287 iBooker.book1D("hitmap_" + hid + "_px", "Number of Clusters (1bin=two columns)", nbinx, 0., float(ncols_));
0288 if (isHalfModule) {
0289 mePixClustersLay_py_ = iBooker.book1D(
0290 "hitmap_" + hid + "_py", "Number of Clusters (1bin=two rows)", 2 * nbiny, 0., float(2 * nrows_));
0291 } else {
0292 mePixClustersLay_py_ =
0293 iBooker.book1D("hitmap_" + hid + "_py", "Number of Clusters (1bin=two rows)", nbiny, 0., float(nrows_));
0294 }
0295 mePixClustersLay_px_->setAxisTitle("Columns", 1);
0296 mePixClustersLay_py_->setAxisTitle("Rows", 1);
0297 }
0298 }
0299 }
0300 if (type == 3 && barrel) {
0301 uint32_t DBmodule;
0302 DBmodule = PixelBarrelName(DetId(id_), pTT, isUpgrade).moduleName();
0303 char smodule[80];
0304 sprintf(smodule, "Ring_%i", DBmodule);
0305 hid = src.label() + "_" + smodule;
0306
0307 meNClustersPhi_ = iBooker.book1D("nclusters_" + hid, "Number of Clusters", 8, 0., 8.);
0308 meNClustersPhi_->setAxisTitle("Number of Clusters", 1);
0309
0310 meChargePhi_ = iBooker.book1D("charge_" + hid, "Cluster charge", 100, 0., 200.);
0311 meChargePhi_->setAxisTitle("Charge [kilo electrons]", 1);
0312
0313 meSizePhi_ = iBooker.book1D("size_" + hid, "Total cluster size", 30, 0., 30.);
0314 meSizePhi_->setAxisTitle("Cluster size [number of pixels]", 1);
0315 if (!reducedSet) {
0316
0317 meMinRowPhi_ = iBooker.book1D("minrow_" + hid, "Lowest cluster row", 200, 0., 200.);
0318 meMinRowPhi_->setAxisTitle("Lowest cluster row", 1);
0319
0320 meMaxRowPhi_ = iBooker.book1D("maxrow_" + hid, "Highest cluster row", 200, 0., 200.);
0321 meMaxRowPhi_->setAxisTitle("Highest cluster row", 1);
0322
0323 meMinColPhi_ = iBooker.book1D("mincol_" + hid, "Lowest cluster column", 500, 0., 500.);
0324 meMinColPhi_->setAxisTitle("Lowest cluster column", 1);
0325
0326 meMaxColPhi_ = iBooker.book1D("maxcol_" + hid, "Highest cluster column", 500, 0., 500.);
0327 meMaxColPhi_->setAxisTitle("Highest cluster column", 1);
0328
0329 meXPhi_ = iBooker.book1D("x_" + hid, "Cluster barycenter X (row #)", 200, 0., 200.);
0330 meXPhi_->setAxisTitle("Barycenter x-position [row #]", 1);
0331
0332 meYPhi_ = iBooker.book1D("y_" + hid, "Cluster barycenter Y (column #)", 500, 0., 500.);
0333 meYPhi_->setAxisTitle("Barycenter y-position [column #]", 1);
0334
0335 meSizeXPhi_ = iBooker.book1D("sizeX_" + hid, "Cluster x-width (rows)", 10, 0., 10.);
0336 meSizeXPhi_->setAxisTitle("Cluster x-size [rows]", 1);
0337
0338 meSizeYPhi_ = iBooker.book1D("sizeY_" + hid, "Cluster y-width (columns)", 15, 0., 15.);
0339 meSizeYPhi_->setAxisTitle("Cluster y-size [columns]", 1);
0340 if (twoD) {
0341
0342 if (isHalfModule) {
0343 mePixClustersPhi_ = iBooker.book2D("hitmap_" + hid,
0344 "Number of Clusters (1bin=four pixels)",
0345 nbinx,
0346 0.,
0347 float(ncols_),
0348 2 * nbiny,
0349 0.,
0350 float(2 * nrows_));
0351 } else {
0352 mePixClustersPhi_ = iBooker.book2D("hitmap_" + hid,
0353 "Number of Clusters (1bin=four pixels)",
0354 nbinx,
0355 0.,
0356 float(ncols_),
0357 nbiny,
0358 0.,
0359 float(nrows_));
0360 }
0361 mePixClustersPhi_->setAxisTitle("Columns", 1);
0362 mePixClustersPhi_->setAxisTitle("Rows", 2);
0363 } else {
0364
0365 mePixClustersPhi_px_ =
0366 iBooker.book1D("hitmap_" + hid + "_px", "Number of Clusters (1bin=two columns)", nbinx, 0., float(ncols_));
0367 if (isHalfModule) {
0368 mePixClustersPhi_py_ = iBooker.book1D(
0369 "hitmap_" + hid + "_py", "Number of Clusters (1bin=two rows)", 2 * nbiny, 0., float(2 * nrows_));
0370 } else {
0371 mePixClustersPhi_py_ =
0372 iBooker.book1D("hitmap_" + hid + "_py", "Number of Clusters (1bin=two rows)", nbiny, 0., float(nrows_));
0373 }
0374 mePixClustersPhi_px_->setAxisTitle("Columns", 1);
0375 mePixClustersPhi_py_->setAxisTitle("Rows", 1);
0376 }
0377 }
0378 }
0379
0380 if (type == 4 && endcap) {
0381 uint32_t blade;
0382 blade = PixelEndcapName(DetId(id_), pTT, isUpgrade).bladeName();
0383
0384 char sblade[80];
0385 sprintf(sblade, "Blade_%02i", blade);
0386 hid = src.label() + "_" + sblade;
0387
0388 meNClustersBlade_ = iBooker.book1D("nclusters_" + hid, "Number of Clusters", 8, 0., 8.);
0389 meNClustersBlade_->setAxisTitle("Number of Clusters", 1);
0390
0391 meChargeBlade_ = iBooker.book1D("charge_" + hid, "Cluster charge", 100, 0., 200.);
0392 meChargeBlade_->setAxisTitle("Charge [kilo electrons]", 1);
0393
0394 meSizeBlade_ = iBooker.book1D("size_" + hid, "Total cluster size", 30, 0., 30.);
0395 meSizeBlade_->setAxisTitle("Cluster size [number of pixels]", 1);
0396 if (!reducedSet) {
0397
0398 meMinRowBlade_ = iBooker.book1D("minrow_" + hid, "Lowest cluster row", 200, 0., 200.);
0399 meMinRowBlade_->setAxisTitle("Lowest cluster row", 1);
0400
0401 meMaxRowBlade_ = iBooker.book1D("maxrow_" + hid, "Highest cluster row", 200, 0., 200.);
0402 meMaxRowBlade_->setAxisTitle("Highest cluster row", 1);
0403
0404 meMinColBlade_ = iBooker.book1D("mincol_" + hid, "Lowest cluster column", 500, 0., 500.);
0405 meMinColBlade_->setAxisTitle("Lowest cluster column", 1);
0406
0407 meMaxColBlade_ = iBooker.book1D("maxcol_" + hid, "Highest cluster column", 500, 0., 500.);
0408 meMaxColBlade_->setAxisTitle("Highest cluster column", 1);
0409
0410 meXBlade_ = iBooker.book1D("x_" + hid, "Cluster barycenter X (row #)", 200, 0., 200.);
0411 meXBlade_->setAxisTitle("Barycenter x-position [row #]", 1);
0412
0413 meYBlade_ = iBooker.book1D("y_" + hid, "Cluster barycenter Y (column #)", 500, 0., 500.);
0414 meYBlade_->setAxisTitle("Barycenter y-position [column #]", 1);
0415
0416 meSizeXBlade_ = iBooker.book1D("sizeX_" + hid, "Cluster x-width (rows)", 10, 0., 10.);
0417 meSizeXBlade_->setAxisTitle("Cluster x-size [rows]", 1);
0418
0419 meSizeYBlade_ = iBooker.book1D("sizeY_" + hid, "Cluster y-width (columns)", 15, 0., 15.);
0420 meSizeYBlade_->setAxisTitle("Cluster y-size [columns]", 1);
0421 }
0422 }
0423 if (type == 5 && endcap) {
0424 uint32_t disk;
0425 disk = PixelEndcapName(DetId(id_), pTT, isUpgrade).diskName();
0426
0427 char sdisk[80];
0428 sprintf(sdisk, "Disk_%i", disk);
0429 hid = src.label() + "_" + sdisk;
0430
0431 meNClustersDisk_ = iBooker.book1D("nclusters_" + hid, "Number of Clusters", 8, 0., 8.);
0432 meNClustersDisk_->setAxisTitle("Number of Clusters", 1);
0433
0434 meChargeDisk_ = iBooker.book1D("charge_" + hid, "Cluster charge", 100, 0., 200.);
0435 meChargeDisk_->setAxisTitle("Charge [kilo electrons]", 1);
0436
0437 meSizeDisk_ = iBooker.book1D("size_" + hid, "Total cluster size", 30, 0., 30.);
0438 meSizeDisk_->setAxisTitle("Cluster size [number of pixels]", 1);
0439 if (!reducedSet) {
0440
0441 meMinRowDisk_ = iBooker.book1D("minrow_" + hid, "Lowest cluster row", 200, 0., 200.);
0442 meMinRowDisk_->setAxisTitle("Lowest cluster row", 1);
0443
0444 meMaxRowDisk_ = iBooker.book1D("maxrow_" + hid, "Highest cluster row", 200, 0., 200.);
0445 meMaxRowDisk_->setAxisTitle("Highest cluster row", 1);
0446
0447 meMinColDisk_ = iBooker.book1D("mincol_" + hid, "Lowest cluster column", 500, 0., 500.);
0448 meMinColDisk_->setAxisTitle("Lowest cluster column", 1);
0449
0450 meMaxColDisk_ = iBooker.book1D("maxcol_" + hid, "Highest cluster column", 500, 0., 500.);
0451 meMaxColDisk_->setAxisTitle("Highest cluster column", 1);
0452
0453 meXDisk_ = iBooker.book1D("x_" + hid, "Cluster barycenter X (row #)", 200, 0., 200.);
0454 meXDisk_->setAxisTitle("Barycenter x-position [row #]", 1);
0455
0456 meYDisk_ = iBooker.book1D("y_" + hid, "Cluster barycenter Y (column #)", 500, 0., 500.);
0457 meYDisk_->setAxisTitle("Barycenter y-position [column #]", 1);
0458
0459 meSizeXDisk_ = iBooker.book1D("sizeX_" + hid, "Cluster x-width (rows)", 10, 0., 10.);
0460 meSizeXDisk_->setAxisTitle("Cluster x-size [rows]", 1);
0461
0462 meSizeYDisk_ = iBooker.book1D("sizeY_" + hid, "Cluster y-width (columns)", 15, 0., 15.);
0463 meSizeYDisk_->setAxisTitle("Cluster y-size [columns]", 1);
0464 }
0465 }
0466
0467 if (type == 6 && endcap) {
0468 uint32_t panel;
0469 uint32_t module;
0470 panel = PixelEndcapName(DetId(id_), pTT, isUpgrade).pannelName();
0471 module = PixelEndcapName(DetId(id_), pTT, isUpgrade).plaquetteName();
0472
0473 char slab[80];
0474 sprintf(slab, "Panel_%i_Ring_%i", panel, module);
0475 hid = src.label() + "_" + slab;
0476
0477 meNClustersRing_ = iBooker.book1D("nclusters_" + hid, "Number of Clusters", 8, 0., 8.);
0478 meNClustersRing_->setAxisTitle("Number of Clusters", 1);
0479
0480 meChargeRing_ = iBooker.book1D("charge_" + hid, "Cluster charge", 100, 0., 200.);
0481 meChargeRing_->setAxisTitle("Charge [kilo electrons]", 1);
0482
0483 meSizeRing_ = iBooker.book1D("size_" + hid, "Total cluster size", 30, 0., 30.);
0484 meSizeRing_->setAxisTitle("Cluster size [number of pixels]", 1);
0485 if (!reducedSet) {
0486
0487 meMinRowRing_ = iBooker.book1D("minrow_" + hid, "Lowest cluster row", 200, 0., 200.);
0488 meMinRowRing_->setAxisTitle("Lowest cluster row", 1);
0489
0490 meMaxRowRing_ = iBooker.book1D("maxrow_" + hid, "Highest cluster row", 200, 0., 200.);
0491 meMaxRowRing_->setAxisTitle("Highest cluster row", 1);
0492
0493 meMinColRing_ = iBooker.book1D("mincol_" + hid, "Lowest cluster column", 500, 0., 500.);
0494 meMinColRing_->setAxisTitle("Lowest cluster column", 1);
0495
0496 meMaxColRing_ = iBooker.book1D("maxcol_" + hid, "Highest cluster column", 500, 0., 500.);
0497 meMaxColRing_->setAxisTitle("Highest cluster column", 1);
0498
0499 meXRing_ = iBooker.book1D("x_" + hid, "Cluster barycenter X (row #)", 200, 0., 200.);
0500 meXRing_->setAxisTitle("Barycenter x-position [row #]", 1);
0501
0502 meYRing_ = iBooker.book1D("y_" + hid, "Cluster barycenter Y (column #)", 500, 0., 500.);
0503 meYRing_->setAxisTitle("Barycenter y-position [column #]", 1);
0504
0505 meSizeXRing_ = iBooker.book1D("sizeX_" + hid, "Cluster x-width (rows)", 10, 0., 10.);
0506 meSizeXRing_->setAxisTitle("Cluster x-size [rows]", 1);
0507
0508 meSizeYRing_ = iBooker.book1D("sizeY_" + hid, "Cluster y-width (columns)", 15, 0., 15.);
0509 meSizeYRing_->setAxisTitle("Cluster y-size [columns]", 1);
0510 if (twoD) {
0511
0512 mePixClustersRing_ = iBooker.book2D("hitmap_" + hid,
0513 "Number of Clusters (1bin=four pixels)",
0514 nbinx,
0515 0.,
0516 float(ncols_),
0517 nbiny,
0518 0.,
0519 float(nrows_));
0520 mePixClustersRing_->setAxisTitle("Columns", 1);
0521 mePixClustersRing_->setAxisTitle("Rows", 2);
0522 } else {
0523
0524 mePixClustersRing_px_ =
0525 iBooker.book1D("hitmap_" + hid + "_px", "Number of Clusters (1bin=two columns)", nbinx, 0., float(ncols_));
0526 mePixClustersRing_py_ =
0527 iBooker.book1D("hitmap_" + hid + "_py", "Number of Clusters (1bin=two rows)", nbiny, 0., float(nrows_));
0528 mePixClustersRing_px_->setAxisTitle("Columns", 1);
0529 mePixClustersRing_py_->setAxisTitle("Rows", 1);
0530 }
0531 }
0532 }
0533 }
0534
0535
0536
0537 int SiPixelClusterModule::fill(const edmNew::DetSetVector<SiPixelCluster> &input,
0538 const TrackerTopology *pTT,
0539 const TrackerGeometry *tracker,
0540 int *barrelClusterTotal,
0541 int *fpixPClusterTotal,
0542 int *fpixMClusterTotal,
0543 std::vector<MonitorElement *> &layers,
0544 std::vector<MonitorElement *> &diskspz,
0545 std::vector<MonitorElement *> &disksmz,
0546 bool modon,
0547 bool ladon,
0548 bool layon,
0549 bool phion,
0550 bool bladeon,
0551 bool diskon,
0552 bool ringon,
0553 bool twoD,
0554 bool reducedSet,
0555 bool smileyon,
0556 bool isUpgrade) {
0557 bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
0558 bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
0559
0560 edmNew::DetSetVector<SiPixelCluster>::const_iterator isearch = input.find(id_);
0561 unsigned int numberOfClusters = 0;
0562 unsigned int numberOfFpixClusters = 0;
0563
0564 if (isearch != input.end()) {
0565
0566
0567 edmNew::DetSet<SiPixelCluster>::const_iterator di;
0568 for (di = isearch->begin(); di != isearch->end(); di++) {
0569 numberOfClusters++;
0570 if (endcap)
0571 numberOfFpixClusters++;
0572 if (barrel)
0573 (*barrelClusterTotal)++;
0574 float charge = 0.001 * (di->charge());
0575 float x = di->x();
0576 float y = di->y();
0577 int size = di->size();
0578 int sizeX = di->sizeX();
0579 int sizeY = di->sizeY();
0580 int minPixelRow = di->minPixelRow();
0581 int maxPixelRow = di->maxPixelRow();
0582 int minPixelCol = di->minPixelCol();
0583 int maxPixelCol = di->maxPixelCol();
0584
0585 const PixelGeomDetUnit *theGeomDet = dynamic_cast<const PixelGeomDetUnit *>(tracker->idToDet(DetId(id_)));
0586
0587 const PixelTopology *topol = &(theGeomDet->specificTopology());
0588 LocalPoint clustlp = topol->localPosition(MeasurementPoint(x, y));
0589 GlobalPoint clustgp = theGeomDet->surface().toGlobal(clustlp);
0590 if (modon)
0591 meCharge_->Fill((float)charge);
0592 if (modon)
0593 meSize_->Fill((float)size);
0594
0595 if (barrel) {
0596 uint32_t DBlayer = PixelBarrelName(DetId(id_), pTT, isUpgrade).layerName();
0597 if (!(DBlayer > layers.size()) && (layers[DBlayer - 1]))
0598 layers[DBlayer - 1]->Fill(clustgp.z(), clustgp.phi());
0599 } else if (endcap) {
0600 uint32_t DBdisk = PixelEndcapName(DetId(id_), pTT, isUpgrade).diskName();
0601 if (clustgp.z() > 0) {
0602 (*fpixPClusterTotal)++;
0603 if (!(DBdisk > diskspz.size()) && (diskspz[DBdisk - 1]))
0604 diskspz[DBdisk - 1]->Fill(clustgp.x(), clustgp.y());
0605 } else {
0606 (*fpixMClusterTotal)++;
0607 if (!(DBdisk > disksmz.size()) && (disksmz[DBdisk - 1]))
0608 disksmz[DBdisk - 1]->Fill(clustgp.x(), clustgp.y());
0609 }
0610 }
0611 if (!reducedSet) {
0612 (meMinRow_)->Fill((int)minPixelRow);
0613 (meMaxRow_)->Fill((int)maxPixelRow);
0614 (meMinCol_)->Fill((int)minPixelCol);
0615 (meMaxCol_)->Fill((int)maxPixelCol);
0616 (meSizeX_)->Fill((int)sizeX);
0617 (meSizeY_)->Fill((int)sizeY);
0618 (meX_)->Fill((float)x);
0619 (meY_)->Fill((float)y);
0620 if (twoD)
0621 (mePixClusters_)->Fill((float)y, (float)x);
0622 else {
0623 (mePixClusters_px_)->Fill((float)y);
0624 (mePixClusters_py_)->Fill((float)x);
0625 }
0626 }
0627
0628 if (barrel && smileyon) {
0629 (meSizeYvsEtaBarrel_)->Fill(clustgp.eta(), sizeY);
0630
0631
0632
0633 }
0634 if (ladon && barrel) {
0635 (meChargeLad_)->Fill((float)charge);
0636 (meSizeLad_)->Fill((int)size);
0637 if (!reducedSet) {
0638 (meMinRowLad_)->Fill((int)minPixelRow);
0639 (meMaxRowLad_)->Fill((int)maxPixelRow);
0640 (meMinColLad_)->Fill((int)minPixelCol);
0641 (meMaxColLad_)->Fill((int)maxPixelCol);
0642 (meXLad_)->Fill((float)x);
0643 (meYLad_)->Fill((float)y);
0644 (meSizeXLad_)->Fill((int)sizeX);
0645 (meSizeYLad_)->Fill((int)sizeY);
0646 if (twoD)
0647 (mePixClustersLad_)->Fill((float)y, (float)x);
0648 else {
0649 (mePixClustersLad_px_)->Fill((float)y);
0650 (mePixClustersLad_py_)->Fill((float)x);
0651 }
0652 }
0653 }
0654 if (layon && barrel) {
0655 (meChargeLay_)->Fill((float)charge);
0656 (meSizeLay_)->Fill((int)size);
0657 if (!reducedSet) {
0658 (meMinRowLay_)->Fill((int)minPixelRow);
0659 (meMaxRowLay_)->Fill((int)maxPixelRow);
0660 (meMinColLay_)->Fill((int)minPixelCol);
0661 (meMaxColLay_)->Fill((int)maxPixelCol);
0662 (meXLay_)->Fill((float)x);
0663 (meYLay_)->Fill((float)y);
0664 (meSizeXLay_)->Fill((int)sizeX);
0665 (meSizeYLay_)->Fill((int)sizeY);
0666 if (twoD)
0667 (mePixClustersLay_)->Fill((float)y, (float)x);
0668 else {
0669 (mePixClustersLay_px_)->Fill((float)y);
0670 (mePixClustersLay_py_)->Fill((float)x);
0671 }
0672 }
0673 }
0674 if (phion && barrel) {
0675 (meChargePhi_)->Fill((float)charge);
0676 (meSizePhi_)->Fill((int)size);
0677 if (!reducedSet) {
0678 (meMinRowPhi_)->Fill((int)minPixelRow);
0679 (meMaxRowPhi_)->Fill((int)maxPixelRow);
0680 (meMinColPhi_)->Fill((int)minPixelCol);
0681 (meMaxColPhi_)->Fill((int)maxPixelCol);
0682 (meXPhi_)->Fill((float)x);
0683 (meYPhi_)->Fill((float)y);
0684 (meSizeXPhi_)->Fill((int)sizeX);
0685 (meSizeYPhi_)->Fill((int)sizeY);
0686 if (twoD)
0687 (mePixClustersPhi_)->Fill((float)y, (float)x);
0688 else {
0689 (mePixClustersPhi_px_)->Fill((float)y);
0690 (mePixClustersPhi_py_)->Fill((float)x);
0691 }
0692 }
0693 }
0694 if (bladeon && endcap) {
0695 (meChargeBlade_)->Fill((float)charge);
0696 (meSizeBlade_)->Fill((int)size);
0697 if (!reducedSet) {
0698 (meMinRowBlade_)->Fill((int)minPixelRow);
0699 (meMaxRowBlade_)->Fill((int)maxPixelRow);
0700 (meMinColBlade_)->Fill((int)minPixelCol);
0701 (meMaxColBlade_)->Fill((int)maxPixelCol);
0702 (meXBlade_)->Fill((float)x);
0703 (meYBlade_)->Fill((float)y);
0704 (meSizeXBlade_)->Fill((int)sizeX);
0705 (meSizeYBlade_)->Fill((int)sizeY);
0706 }
0707 }
0708 if (diskon && endcap) {
0709 (meChargeDisk_)->Fill((float)charge);
0710 (meSizeDisk_)->Fill((int)size);
0711 if (!reducedSet) {
0712 (meMinRowDisk_)->Fill((int)minPixelRow);
0713 (meMaxRowDisk_)->Fill((int)maxPixelRow);
0714 (meMinColDisk_)->Fill((int)minPixelCol);
0715 (meMaxColDisk_)->Fill((int)maxPixelCol);
0716 (meXDisk_)->Fill((float)x);
0717 (meYDisk_)->Fill((float)y);
0718 (meSizeXDisk_)->Fill((int)sizeX);
0719 (meSizeYDisk_)->Fill((int)sizeY);
0720 }
0721 }
0722
0723 if (ringon && endcap) {
0724 (meChargeRing_)->Fill((float)charge);
0725 (meSizeRing_)->Fill((int)size);
0726 if (!reducedSet) {
0727 (meMinRowRing_)->Fill((int)minPixelRow);
0728 (meMaxRowRing_)->Fill((int)maxPixelRow);
0729 (meMinColRing_)->Fill((int)minPixelCol);
0730 (meMaxColRing_)->Fill((int)maxPixelCol);
0731 (meXRing_)->Fill((float)x);
0732 (meYRing_)->Fill((float)y);
0733 (meSizeXRing_)->Fill((int)sizeX);
0734 (meSizeYRing_)->Fill((int)sizeY);
0735 if (twoD)
0736 (mePixClustersRing_)->Fill((float)y, (float)x);
0737 else {
0738 (mePixClustersRing_px_)->Fill((float)y);
0739 (mePixClustersRing_py_)->Fill((float)x);
0740 }
0741 }
0742 }
0743 }
0744 if (modon)
0745 (meNClusters_)->Fill((float)numberOfClusters);
0746 if (ladon && barrel)
0747 (meNClustersLad_)->Fill((float)numberOfClusters);
0748 if (layon && barrel)
0749 (meNClustersLay_)->Fill((float)numberOfClusters);
0750 if (phion && barrel)
0751 (meNClustersPhi_)->Fill((float)numberOfClusters);
0752 if (bladeon && endcap)
0753 (meNClustersBlade_)->Fill((float)numberOfClusters);
0754 if (diskon && endcap)
0755 (meNClustersDisk_)->Fill((float)numberOfClusters);
0756 if (ringon && endcap)
0757 (meNClustersRing_)->Fill((float)numberOfClusters);
0758 }
0759
0760
0761 return numberOfFpixClusters;
0762 }