CMS 3D CMS Logo

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

#include <SiPixelClusterSource.h>

Inheritance diagram for SiPixelClusterSource:
one::DQMEDAnalyzer< T > one::dqmimplementation::DQMBaseClass< T... >

Public Types

typedef edmNew::DetSet< SiPixelCluster >::const_iterator ClusterIterator
 

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
virtual void bookMEs (DQMStore::IBooker &, const edm::EventSetup &iSetup)
 
virtual void buildStructure (edm::EventSetup const &)
 
void dqmBeginRun (const edm::Run &, edm::EventSetup const &) override
 
 SiPixelClusterSource (const edm::ParameterSet &conf)
 
 ~SiPixelClusterSource () override
 
- Public Member Functions inherited from one::DQMEDAnalyzer< T >
 DQMEDAnalyzer ()=default
 
 DQMEDAnalyzer (DQMEDAnalyzer< T... > const &)=delete
 
 DQMEDAnalyzer (DQMEDAnalyzer< T... > &&)=delete
 
 ~DQMEDAnalyzer () override=default
 

Public Attributes

std::string topFolderName_
 

Private Member Functions

void getrococcupancy (DetId detId, const edm::DetSetVector< PixelDigi > &diginp, const TrackerTopology *const tTopo, std::vector< MonitorElement * > const &meinput)
 
void getrococcupancye (DetId detId, const edmNew::DetSetVector< SiPixelCluster > &clustColl, const TrackerTopology *const pTT, edm::ESHandle< TrackerGeometry > pDD, MonitorElement *meinput)
 

Private Attributes

int bigEventSize
 
MonitorElementbigFpixClusterEventRate
 
bool bladeOn
 
edm::ParameterSet conf_
 
edm::InputTag digisrc_
 
edm::EDGetTokenT< edm::DetSetVector< PixelDigi > > digisrcToken_
 
bool diskOn
 
int eventNo
 
bool firstRun
 
bool isPIB
 
bool isUpgrade
 
bool ladOn
 
bool layOn
 
int lumSec
 
std::vector< MonitorElement * > meClPosDiskmz
 
std::vector< MonitorElement * > meClPosDiskpz
 
std::vector< MonitorElement * > meClPosLayer
 
MonitorElementmeClusBarrelProf
 
MonitorElementmeClusFpixMProf
 
MonitorElementmeClusFpixPProf
 
std::vector< MonitorElement * > meZeroRocBPIX
 
MonitorElementmeZeroRocFPIX
 
bool modOn
 
int nBigEvents
 
int nLumiSecs
 
int noOfDisks
 
int noOfLayers
 
bool phiOn
 
bool reducedSet
 
bool ringOn
 
bool saveFile
 
bool slowDown
 
bool smileyOn
 
edm::InputTag src_
 
edm::EDGetTokenT< edmNew::DetSetVector< SiPixelCluster > > srcToken_
 
std::map< uint32_t, SiPixelClusterModule * > thePixelStructure
 
bool twoDimOn
 

Detailed Description

Definition at line 59 of file SiPixelClusterSource.h.

Member Typedef Documentation

Definition at line 64 of file SiPixelClusterSource.h.

Constructor & Destructor Documentation

SiPixelClusterSource::SiPixelClusterSource ( const edm::ParameterSet conf)
explicit

Definition at line 48 of file SiPixelClusterSource.cc.

References conf_, digisrcToken_, firstRun, edm::ParameterSet::getParameter(), srcToken_, AlCaHLTBitMon_QueryRunRegistry::string, and topFolderName_.

49  : conf_(iConfig),
52  saveFile(conf_.getUntrackedParameter<bool>("saveFile", false)),
53  isPIB(conf_.getUntrackedParameter<bool>("isPIB", false)),
54  slowDown(conf_.getUntrackedParameter<bool>("slowDown", false)),
55  modOn(conf_.getUntrackedParameter<bool>("modOn", true)),
56  twoDimOn(conf_.getUntrackedParameter<bool>("twoDimOn", true)),
57  reducedSet(conf_.getUntrackedParameter<bool>("reducedSet", false)),
58  ladOn(conf_.getUntrackedParameter<bool>("ladOn", false)),
59  layOn(conf_.getUntrackedParameter<bool>("layOn", false)),
60  phiOn(conf_.getUntrackedParameter<bool>("phiOn", false)),
61  ringOn(conf_.getUntrackedParameter<bool>("ringOn", false)),
62  bladeOn(conf_.getUntrackedParameter<bool>("bladeOn", false)),
63  diskOn(conf_.getUntrackedParameter<bool>("diskOn", false)),
64  smileyOn(conf_.getUntrackedParameter<bool>("smileyOn", false)),
65  bigEventSize(conf_.getUntrackedParameter<int>("bigEventSize", 100)),
66  isUpgrade(conf_.getUntrackedParameter<bool>("isUpgrade", false)),
67  noOfLayers(0),
68  noOfDisks(0) {
69  LogInfo("PixelDQM") << "SiPixelClusterSource::SiPixelClusterSource: Got DQM BackEnd interface" << endl;
70 
71  // set Token(-s)
72  srcToken_ = consumes<edmNew::DetSetVector<SiPixelCluster>>(conf_.getParameter<edm::InputTag>("src"));
73  digisrcToken_ = consumes<edm::DetSetVector<PixelDigi>>(conf_.getParameter<edm::InputTag>("digisrc"));
74  firstRun = true;
75  topFolderName_ = conf_.getParameter<std::string>("TopFolderName");
76 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< edmNew::DetSetVector< SiPixelCluster > > srcToken_
edm::ParameterSet conf_
edm::EDGetTokenT< edm::DetSetVector< PixelDigi > > digisrcToken_
SiPixelClusterSource::~SiPixelClusterSource ( )
override

Definition at line 78 of file SiPixelClusterSource.cc.

References thePixelStructure.

78  {
79  // do anything here that needs to be done at desctruction time
80  // (e.g. close files, deallocate resources etc.)
81  LogInfo("PixelDQM") << "SiPixelClusterSource::~SiPixelClusterSource: Destructor" << endl;
82 
83  std::map<uint32_t, SiPixelClusterModule *>::iterator struct_iter;
84  for (struct_iter = thePixelStructure.begin(); struct_iter != thePixelStructure.end(); struct_iter++) {
85  delete struct_iter->second;
86  struct_iter->second = nullptr;
87  }
88 }
std::map< uint32_t, SiPixelClusterModule * > thePixelStructure

Member Function Documentation

void SiPixelClusterSource::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 213 of file SiPixelClusterSource.cc.

References bigEventSize, bigFpixClusterEventRate, bladeOn, TrackerGeometry::dets(), digisrcToken_, diskOn, eventNo, MonitorElement::Fill(), edm::EventSetup::get(), edm::Event::getByToken(), getrococcupancy(), getrococcupancye(), mps_fire::i, input, createfilelist::int, isUpgrade, ladOn, layOn, edm::EventBase::luminosityBlock(), meClPosDiskmz, meClPosDiskpz, meClPosLayer, meClusBarrelProf, meClusFpixMProf, meClusFpixPProf, meZeroRocBPIX, meZeroRocFPIX, modOn, noOfDisks, noOfLayers, edm::EventBase::orbitNumber(), phiOn, PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, edm::Handle< T >::product(), edm::ESHandle< T >::product(), reducedSet, ringOn, slowDown, smileyOn, srcToken_, DetId::subdetId(), thePixelStructure, trackingTruthProducer_cfi::tracker, and twoDimOn.

213  {
214  eventNo++;
215 
216  if (meClPosLayer.at(0) && meClPosLayer.at(0)->getEntries() > 150000) {
217  for (int i = 0; i < noOfLayers; i++) {
218  meClPosLayer.at(i)->Reset();
219  }
220  for (int i = 0; i < noOfDisks; i++) {
221  meClPosDiskpz.at(i)->Reset();
222  meClPosDiskmz.at(i)->Reset();
223  }
224  }
225 
226  // get input data
228  iEvent.getByToken(srcToken_, input);
229  auto const &clustColl = *(input.product());
230 
232  iSetup.get<TrackerDigiGeometryRecord>().get(pDD);
233  const TrackerGeometry *tracker = &(*pDD);
234 
236  iEvent.getByToken(digisrcToken_, digiinput);
237  const edm::DetSetVector<PixelDigi> diginp = *(digiinput.product());
238 
239  edm::ESHandle<TrackerTopology> tTopoHandle;
240  iSetup.get<TrackerTopologyRcd>().get(tTopoHandle);
241  const TrackerTopology *pTT = tTopoHandle.product();
242 
243  int lumiSection = (int)iEvent.luminosityBlock();
244  int nEventFpixClusters = 0;
245 
246  int nEventsBarrel = 0;
247  int nEventsFPIXm = 0;
248  int nEventsFPIXp = 0;
249 
250  std::map<uint32_t, SiPixelClusterModule *>::iterator struct_iter;
251  for (struct_iter = thePixelStructure.begin(); struct_iter != thePixelStructure.end(); struct_iter++) {
252  int numberOfFpixClusters = (*struct_iter)
253  .second->fill(*input,
254  tracker,
255  &nEventsBarrel,
256  &nEventsFPIXp,
257  &nEventsFPIXm,
258  meClPosLayer,
261  modOn,
262  ladOn,
263  layOn,
264  phiOn,
265  bladeOn,
266  diskOn,
267  ringOn,
268  twoDimOn,
269  reducedSet,
270  smileyOn,
271  isUpgrade);
272  nEventFpixClusters = nEventFpixClusters + numberOfFpixClusters;
273  }
274 
275  if (nEventFpixClusters > bigEventSize) {
277  bigFpixClusterEventRate->Fill(lumiSection, 1. / 23.);
278  }
279  }
280 
281  float trendVar = iEvent.orbitNumber() / 262144.0; // lumisection : seconds - matches strip trend plot
282 
283  meClusBarrelProf->Fill(trendVar, nEventsBarrel);
284  meClusFpixPProf->Fill(trendVar, nEventsFPIXp);
285  meClusFpixMProf->Fill(trendVar, nEventsFPIXm);
286 
287  // std::cout<<"nEventFpixClusters: "<<nEventFpixClusters<<" , nLumiSecs:
288  // "<<nLumiSecs<<" , nBigEvents: "<<nBigEvents<<std::endl;
289 
290  for (TrackerGeometry::DetContainer::const_iterator it = pDD->dets().begin(); it != pDD->dets().end(); it++) {
291  DetId detId = (*it)->geographicalId();
292 
293  // fill barrel
294  if (detId.subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel)) {
295  getrococcupancy(detId, diginp, pTT, meZeroRocBPIX);
296  }
297 
298  // fill endcap
299  if (detId.subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap)) {
300  getrococcupancye(detId, clustColl, pTT, pDD, meZeroRocFPIX);
301  }
302  }
303 
304  // slow down...
305  if (slowDown)
306  usleep(10000);
307 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
std::vector< MonitorElement * > meClPosLayer
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:61
void getrococcupancy(DetId detId, const edm::DetSetVector< PixelDigi > &diginp, const TrackerTopology *const tTopo, std::vector< MonitorElement * > const &meinput)
std::vector< MonitorElement * > meClPosDiskmz
edm::EDGetTokenT< edmNew::DetSetVector< SiPixelCluster > > srcToken_
MonitorElement * meZeroRocFPIX
std::map< uint32_t, SiPixelClusterModule * > thePixelStructure
static std::string const input
Definition: EdmProvDump.cc:48
void Fill(long long x)
const DetContainer & dets() const override
Returm a vector of all GeomDet (including all GeomDetUnits)
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:41
MonitorElement * meClusBarrelProf
int orbitNumber() const
Definition: EventBase.h:65
MonitorElement * meClusFpixMProf
Definition: DetId.h:18
std::vector< MonitorElement * > meZeroRocBPIX
T const * product() const
Definition: Handle.h:74
void getrococcupancye(DetId detId, const edmNew::DetSetVector< SiPixelCluster > &clustColl, const TrackerTopology *const pTT, edm::ESHandle< TrackerGeometry > pDD, MonitorElement *meinput)
edm::EDGetTokenT< edm::DetSetVector< PixelDigi > > digisrcToken_
MonitorElement * meClusFpixPProf
std::vector< MonitorElement * > meClPosDiskpz
T get() const
Definition: EventSetup.h:71
T const * product() const
Definition: ESHandle.h:86
MonitorElement * bigFpixClusterEventRate
void SiPixelClusterSource::bookHistograms ( DQMStore::IBooker ,
edm::Run const &  ,
edm::EventSetup const &   
)
override

Definition at line 109 of file SiPixelClusterSource.cc.

References DQMStore::IBooker::book2D(), bookMEs(), DQMStore::IBooker::bookProfile(), digisrc_, MonitorElement::getTH1(), mps_fire::i, edm::InputTag::label(), meClPosDiskmz, meClPosDiskpz, meClPosLayer, meClusBarrelProf, meClusFpixMProf, meClusFpixPProf, meZeroRocBPIX, meZeroRocFPIX, noOfDisks, noOfLayers, MonitorElement::setAxisTitle(), MonitorElement::setBinLabel(), DQMStore::IBooker::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, topFolderName_, Phase2TrackerMonitorDigi_cff::ymax, and Phase2TrackerMonitorDigi_cff::ymin.

109  {
110  bookMEs(iBooker, iSetup);
111  // Book occupancy maps in global coordinates for all clusters:
112  iBooker.setCurrentFolder(topFolderName_ + "/Clusters/OffTrack");
113  // bpix
114  std::stringstream ss1, ss2;
115  for (int i = 1; i <= noOfLayers; i++) {
116  ss1.str(std::string());
117  ss1 << "position_siPixelClusters_Layer_" << i;
118  ss2.str(std::string());
119  ss2 << "Clusters Layer" << i << ";Global Z (cm);Global #phi";
120  meClPosLayer.push_back(iBooker.book2D(ss1.str(), ss2.str(), 200, -30., 30., 128, -3.2, 3.2));
121  }
122  for (int i = 1; i <= noOfDisks; i++) {
123  ss1.str(std::string());
124  ss1 << "position_siPixelClusters_pz_Disk_" << i;
125  ss2.str(std::string());
126  ss2 << "Clusters +Z Disk" << i << ";Global X (cm);Global Y (cm)";
127  meClPosDiskpz.push_back(iBooker.book2D(ss1.str(), ss2.str(), 80, -20., 20., 80, -20., 20.));
128  ss1.str(std::string());
129  ss1 << "position_siPixelClusters_mz_Disk_" << i;
130  ss2.str(std::string());
131  ss2 << "Clusters -Z Disk" << i << ";Global X (cm);Global Y (cm)";
132  meClPosDiskmz.push_back(iBooker.book2D(ss1.str(), ss2.str(), 80, -20., 20., 80, -20., 20.));
133  }
134 
135  // Book trend cluster plots for barrel and endcap. Lumisections for offline
136  // and second for online - taken from strips
137  iBooker.setCurrentFolder(topFolderName_ + "/Barrel");
138  ss1.str(std::string());
139  ss1 << "totalNumberOfClustersProfile_siPixelClusters_Barrel";
140  ss2.str(std::string());
141  ss2 << "Total number of barrel clusters profile;Lumisection;";
142  meClusBarrelProf = iBooker.bookProfile(ss1.str(), ss2.str(), 2400, 0., 150, 0, 0, "");
143  meClusBarrelProf->getTH1()->SetCanExtend(TH1::kAllAxes);
144 
145  iBooker.setCurrentFolder(topFolderName_ + "/Endcap");
146 
147  ss1.str(std::string());
148  ss1 << "totalNumberOfClustersProfile_siPixelClusters_FPIX+";
149  ss2.str(std::string());
150  ss2 << "Total number of FPIX+ clusters profile;Lumisection;";
151  meClusFpixPProf = iBooker.bookProfile(ss1.str(), ss2.str(), 2400, 0., 150, 0, 0, "");
152  meClusFpixPProf->getTH1()->SetCanExtend(TH1::kAllAxes);
153 
154  ss1.str(std::string());
155  ss1 << "totalNumberOfClustersProfile_siPixelClusters_FPIX-";
156  ss2.str(std::string());
157  ss2 << "Total number of FPIX- clusters profile;Lumisection;";
158  meClusFpixMProf = iBooker.bookProfile(ss1.str(), ss2.str(), 2400, 0., 150, 0, 0, "");
159  meClusFpixMProf->getTH1()->SetCanExtend(TH1::kAllAxes);
160 
161  iBooker.setCurrentFolder(topFolderName_ + "/Barrel");
162  for (int i = 1; i <= noOfLayers; i++) {
163  int ybins = -1;
164  float ymin = 0.;
165  float ymax = 0.;
166  if (i == 1) {
167  ybins = 42;
168  ymin = -10.5;
169  ymax = 10.5;
170  }
171  if (i == 2) {
172  ybins = 66;
173  ymin = -16.5;
174  ymax = 16.5;
175  }
176  if (i == 3) {
177  ybins = 90;
178  ymin = -22.5;
179  ymax = 22.5;
180  }
181  if (i == 4) {
182  ybins = 130;
183  ymin = -32.5;
184  ymax = 32.5;
185  }
186  ss1.str(std::string());
187  ss1 << "pix_bar Occ_roc_online_" + digisrc_.label() + "_layer_" << i;
188  ss2.str(std::string());
189  ss2 << "Pixel Barrel Occupancy, ROC level (Online): Layer " << i;
190  meZeroRocBPIX.push_back(iBooker.book2D(ss1.str(), ss2.str(), 72, -4.5, 4.5, ybins, ymin, ymax));
191  meZeroRocBPIX.at(i - 1)->setAxisTitle("ROC / Module", 1);
192  meZeroRocBPIX.at(i - 1)->setAxisTitle("ROC / Ladder", 2);
193  }
194 
195  iBooker.setCurrentFolder(topFolderName_ + "/Endcap");
196  meZeroRocFPIX = iBooker.book2D(
197  "ROC_endcap_occupancy", "Pixel Endcap Occupancy, ROC level (Online)", 72, -4.5, 4.5, 288, -12.5, 12.5);
198  meZeroRocFPIX->setBinLabel(1, "Disk-2 Pnl2", 1);
199  meZeroRocFPIX->setBinLabel(9, "Disk-2 Pnl1", 1);
200  meZeroRocFPIX->setBinLabel(19, "Disk-1 Pnl2", 1);
201  meZeroRocFPIX->setBinLabel(27, "Disk-1 Pnl1", 1);
202  meZeroRocFPIX->setBinLabel(41, "Disk+1 Pnl1", 1);
203  meZeroRocFPIX->setBinLabel(49, "Disk+1 Pnl2", 1);
204  meZeroRocFPIX->setBinLabel(59, "Disk+2 Pnl1", 1);
205  meZeroRocFPIX->setBinLabel(67, "Disk+2 Pnl2", 1);
206  meZeroRocFPIX->setAxisTitle("Blades in Inner (>0) / Outer(<) Halves", 2);
207  meZeroRocFPIX->setAxisTitle("ROC occupancy", 3);
208 }
std::vector< MonitorElement * > meClPosLayer
TH1 * getTH1() const
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
std::vector< MonitorElement * > meClPosDiskmz
MonitorElement * meZeroRocFPIX
MonitorElement * meClusBarrelProf
MonitorElement * meClusFpixMProf
std::vector< MonitorElement * > meZeroRocBPIX
MonitorElement * meClusFpixPProf
std::vector< MonitorElement * > meClPosDiskpz
std::string const & label() const
Definition: InputTag.h:36
virtual void bookMEs(DQMStore::IBooker &, const edm::EventSetup &iSetup)
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void SiPixelClusterSource::bookMEs ( DQMStore::IBooker iBooker,
const edm::EventSetup iSetup 
)
virtual

Create folder tree and book histograms

Definition at line 384 of file SiPixelClusterSource.cc.

References bigEventSize, bigFpixClusterEventRate, bladeOn, DQMStore::IBooker::book1D(), conf_, diskOn, Exception, isPIB, isUpgrade, ladOn, layOn, LogDebug, modOn, phiOn, reducedSet, ringOn, DQMStore::IBooker::setCurrentFolder(), SiPixelFolderOrganizer::setModuleFolder(), smileyOn, thePixelStructure, runGCPTkAlMap::title, topFolderName_, and twoDimOn.

Referenced by bookHistograms().

384  {
385  // Get DQM interface
387  char title[256];
388  snprintf(title,
389  256,
390  "Rate of events with >%i FPIX clusters;LumiSection;Rate of large "
391  "FPIX events per LS [Hz]",
392  bigEventSize);
393  bigFpixClusterEventRate = iBooker.book1D("bigFpixClusterEventRate", title, 5000, 0., 5000.);
394 
395  std::map<uint32_t, SiPixelClusterModule *>::iterator struct_iter;
396 
397  SiPixelFolderOrganizer theSiPixelFolder(false);
398 
399  for (struct_iter = thePixelStructure.begin(); struct_iter != thePixelStructure.end(); struct_iter++) {
401  if (modOn) {
402  if (theSiPixelFolder.setModuleFolder(iBooker, (*struct_iter).first, 0, isUpgrade)) {
403  (*struct_iter).second->book(conf_, iSetup, iBooker, 0, twoDimOn, reducedSet, isUpgrade);
404  } else {
405  if (!isPIB)
406  throw cms::Exception("LogicError") << "[SiPixelClusterSource::bookMEs] Creation of DQM folder "
407  "failed";
408  }
409  }
410  if (ladOn) {
411  if (theSiPixelFolder.setModuleFolder(iBooker, (*struct_iter).first, 1, isUpgrade)) {
412  (*struct_iter).second->book(conf_, iSetup, iBooker, 1, twoDimOn, reducedSet, isUpgrade);
413  } else {
414  LogDebug("PixelDQM") << "PROBLEM WITH LADDER-FOLDER\n";
415  }
416  }
417  if (layOn) {
418  if (theSiPixelFolder.setModuleFolder(iBooker, (*struct_iter).first, 2, isUpgrade)) {
419  (*struct_iter).second->book(conf_, iSetup, iBooker, 2, twoDimOn, reducedSet, isUpgrade);
420  } else {
421  LogDebug("PixelDQM") << "PROBLEM WITH LAYER-FOLDER\n";
422  }
423  }
424  if (phiOn) {
425  if (theSiPixelFolder.setModuleFolder(iBooker, (*struct_iter).first, 3, isUpgrade)) {
426  (*struct_iter).second->book(conf_, iSetup, iBooker, 3, twoDimOn, reducedSet, isUpgrade);
427  } else {
428  LogDebug("PixelDQM") << "PROBLEM WITH PHI-FOLDER\n";
429  }
430  }
431  if (bladeOn) {
432  if (theSiPixelFolder.setModuleFolder(iBooker, (*struct_iter).first, 4, isUpgrade)) {
433  (*struct_iter).second->book(conf_, iSetup, iBooker, 4, twoDimOn, reducedSet, isUpgrade);
434  } else {
435  LogDebug("PixelDQM") << "PROBLEM WITH BLADE-FOLDER\n";
436  }
437  }
438  if (diskOn) {
439  if (theSiPixelFolder.setModuleFolder(iBooker, (*struct_iter).first, 5, isUpgrade)) {
440  (*struct_iter).second->book(conf_, iSetup, iBooker, 5, twoDimOn, reducedSet, isUpgrade);
441  } else {
442  LogDebug("PixelDQM") << "PROBLEM WITH DISK-FOLDER\n";
443  }
444  }
445  if (ringOn) {
446  if (theSiPixelFolder.setModuleFolder(iBooker, (*struct_iter).first, 6, isUpgrade)) {
447  (*struct_iter).second->book(conf_, iSetup, iBooker, 6, twoDimOn, reducedSet, isUpgrade);
448  } else {
449  LogDebug("PixelDQM") << "PROBLEM WITH RING-FOLDER\n";
450  }
451  }
452  if (smileyOn) {
453  if (theSiPixelFolder.setModuleFolder(iBooker, (*struct_iter).first, 7, isUpgrade)) {
454  (*struct_iter).second->book(conf_, iSetup, iBooker, 7, twoDimOn, reducedSet, isUpgrade);
455  } else {
456  LogDebug("PixelDQM") << "PROBLEM WITH BARREL-FOLDER\n";
457  }
458  }
459  }
460 }
#define LogDebug(id)
std::map< uint32_t, SiPixelClusterModule * > thePixelStructure
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:106
edm::ParameterSet conf_
MonitorElement * bigFpixClusterEventRate
void SiPixelClusterSource::buildStructure ( edm::EventSetup const &  )
virtual

Definition at line 312 of file SiPixelClusterSource.cc.

References PixelEndcapName::bladeName(), TrackerGeometry::dets(), TrackerGeometry::detTypes(), PixelEndcapName::diskName(), edm::EventSetup::get(), PixelEndcapName::halfCylinder(), TrackerGeometry::idToDetUnit(), isPIB, isUpgrade, PixelBarrelName::layerName(), LogDebug, RecoTauDiscriminantConfiguration::mask, hgcalPlots::ncols, noOfDisks, noOfLayers, PixelEndcapName::pannelName(), PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, PixelEndcapName::plaquetteName(), edm::ESHandle< T >::product(), DetId::rawId(), PixelGeomDetUnit::specificTopology(), AlCaHLTBitMon_QueryRunRegistry::string, DetId::subdetId(), and thePixelStructure.

Referenced by dqmBeginRun().

312  {
313  LogInfo("PixelDQM") << " SiPixelClusterSource::buildStructure";
315  iSetup.get<TrackerDigiGeometryRecord>().get(pDD);
316 
317  edm::ESHandle<TrackerTopology> tTopoHandle;
318  iSetup.get<TrackerTopologyRcd>().get(tTopoHandle);
319  const TrackerTopology *pTT = tTopoHandle.product();
320 
321  LogVerbatim("PixelDQM") << " *** Geometry node for TrackerGeom is " << &(*pDD) << std::endl;
322  LogVerbatim("PixelDQM") << " *** I have " << pDD->dets().size() << " detectors" << std::endl;
323  LogVerbatim("PixelDQM") << " *** I have " << pDD->detTypes().size() << " types" << std::endl;
324 
325  for (TrackerGeometry::DetContainer::const_iterator it = pDD->dets().begin(); it != pDD->dets().end(); it++) {
326  if (dynamic_cast<PixelGeomDetUnit const *>((*it)) != nullptr) {
327  DetId detId = (*it)->geographicalId();
328  const GeomDetUnit *geoUnit = pDD->idToDetUnit(detId);
329  const PixelGeomDetUnit *pixDet = dynamic_cast<const PixelGeomDetUnit *>(geoUnit);
330  int nrows = (pixDet->specificTopology()).nrows();
331  int ncols = (pixDet->specificTopology()).ncolumns();
332 
333  if ((detId.subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel)) ||
334  (detId.subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap))) {
335  uint32_t id = detId();
336  if (detId.subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel)) {
337  if (isPIB)
338  continue;
339  LogDebug("PixelDQM") << " ---> Adding Barrel Module " << detId.rawId() << endl;
340  int layer = PixelBarrelName(DetId(id), pTT, isUpgrade).layerName();
341  if (layer > noOfLayers)
342  noOfLayers = layer;
343  SiPixelClusterModule *theModule = new SiPixelClusterModule(id, ncols, nrows);
344  thePixelStructure.insert(pair<uint32_t, SiPixelClusterModule *>(id, theModule));
345  } else if (detId.subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap)) {
346  LogDebug("PixelDQM") << " ---> Adding Endcap Module " << detId.rawId() << endl;
348  int disk = PixelEndcapName(DetId(id), pTT, isUpgrade).diskName();
349  if (disk > noOfDisks)
350  noOfDisks = disk;
351  int blade = PixelEndcapName(DetId(id), pTT, isUpgrade).bladeName();
352  int panel = PixelEndcapName(DetId(id), pTT, isUpgrade).pannelName();
354  char sside[80];
355  sprintf(sside, "HalfCylinder_%i", side);
356  char sdisk[80];
357  sprintf(sdisk, "Disk_%i", disk);
358  char sblade[80];
359  sprintf(sblade, "Blade_%02i", blade);
360  char spanel[80];
361  sprintf(spanel, "Panel_%i", panel);
362  char smodule[80];
363  sprintf(smodule, "Module_%i", module);
364  std::string side_str = sside;
365  std::string disk_str = sdisk;
366  bool mask = side_str.find("HalfCylinder_1") != string::npos ||
367  side_str.find("HalfCylinder_2") != string::npos ||
368  side_str.find("HalfCylinder_4") != string::npos || disk_str.find("Disk_2") != string::npos;
369  // clutch to take all of FPIX, but no BPIX:
370  mask = false;
371  if (isPIB && mask)
372  continue;
373  SiPixelClusterModule *theModule = new SiPixelClusterModule(id, ncols, nrows);
374  thePixelStructure.insert(pair<uint32_t, SiPixelClusterModule *>(id, theModule));
375  }
376  }
377  }
378  }
379  LogInfo("PixelDQM") << " *** Pixel Structure Size " << thePixelStructure.size() << endl;
380 }
#define LogDebug(id)
int plaquetteName() const
plaquetteId (in pannel)
const DetTypeContainer & detTypes() const override
Return a vector of all det types.
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:50
std::map< uint32_t, SiPixelClusterModule * > thePixelStructure
int bladeName() const
blade id
const DetContainer & dets() const override
Returm a vector of all GeomDet (including all GeomDetUnits)
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:41
Definition: DetId.h:18
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
int layerName() const
layer id
int pannelName() const
pannel id
int diskName() const
disk id
HalfCylinder halfCylinder() const
T const * product() const
Definition: ESHandle.h:86
Definition: vlib.h:208
void SiPixelClusterSource::dqmBeginRun ( const edm::Run ,
edm::EventSetup const &   
)
override

Definition at line 90 of file SiPixelClusterSource.cc.

References bladeOn, buildStructure(), diskOn, eventNo, firstRun, ladOn, layOn, lumSec, modOn, nBigEvents, nLumiSecs, phiOn, ringOn, smileyOn, and twoDimOn.

90  {
91  LogInfo("PixelDQM") << " SiPixelClusterSource::beginJob - Initialisation ... " << std::endl;
92  LogInfo("PixelDQM") << "Mod/Lad/Lay/Phi " << modOn << "/" << ladOn << "/" << layOn << "/" << phiOn << std::endl;
93  LogInfo("PixelDQM") << "Blade/Disk/Ring" << bladeOn << "/" << diskOn << "/" << ringOn << std::endl;
94  LogInfo("PixelDQM") << "2DIM IS " << twoDimOn << "\n";
95  LogInfo("PixelDQM") << "Smiley (Cluster sizeY vs. Cluster eta) is " << smileyOn << "\n";
96 
97  if (firstRun) {
98  eventNo = 0;
99  lumSec = 0;
100  nLumiSecs = 0;
101  nBigEvents = 0;
102  // Build map
103  buildStructure(iSetup);
104 
105  firstRun = false;
106  }
107 }
virtual void buildStructure(edm::EventSetup const &)
void SiPixelClusterSource::getrococcupancy ( DetId  detId,
const edm::DetSetVector< PixelDigi > &  diginp,
const TrackerTopology *const  tTopo,
std::vector< MonitorElement * > const &  meinput 
)
private

Definition at line 462 of file SiPixelClusterSource.cc.

References funct::abs(), edm::DetSetVector< T >::begin(), cuy::col, edm::DetSetVector< T >::end(), edm::DetSetVector< T >::find(), pfNegativeDeepFlavourTagInfos_cfi::flip, objects.autophobj::float, PixelBarrelName::isHalfModule(), isUpgrade, PixelBarrelName::ladderName(), PixelBarrelName::layerName(), PixelBarrelName::moduleName(), and PixelBarrelName::shell().

Referenced by analyze().

465  {
466  edm::DetSetVector<PixelDigi>::const_iterator ipxsearch = diginp.find(detId);
467  if (ipxsearch != diginp.end()) {
468  // Look at digis now
470  for (pxdi = ipxsearch->begin(); pxdi != ipxsearch->end(); pxdi++) {
471  bool isHalfModule = PixelBarrelName(DetId(detId), tTopo, isUpgrade).isHalfModule();
472  int DBlayer = PixelBarrelName(DetId(detId), tTopo, isUpgrade).layerName();
473  int DBmodule = PixelBarrelName(DetId(detId), tTopo, isUpgrade).moduleName();
474  int DBladder = PixelBarrelName(DetId(detId), tTopo, isUpgrade).ladderName();
475  int DBshell = PixelBarrelName(DetId(detId), tTopo, isUpgrade).shell();
476 
477  // add sign to the modules
478  if (DBshell == 1 || DBshell == 2) {
479  DBmodule = -DBmodule;
480  }
481  if (DBshell == 1 || DBshell == 3) {
482  DBladder = -DBladder;
483  }
484 
485  int col = pxdi->column();
486  int row = pxdi->row();
487 
488  float modsign = (float)DBmodule / (abs((float)DBmodule));
489  float ladsign = (float)DBladder / (abs((float)DBladder));
490  float rocx = ((float)col / (52. * 8.)) * modsign + ((float)DBmodule - (modsign)*0.5);
491  float rocy = ((float)row / (80. * 2.)) * ladsign + ((float)DBladder - (ladsign)*0.5);
492 
493  // do the flip where need
494  bool flip = false;
495  if ((DBladder % 2 == 0) && (!isHalfModule)) {
496  flip = true;
497  }
498  if ((flip) && (DBladder > 0)) {
499  if ((((float)DBladder - (ladsign)*0.5) <= rocy) && (rocy < (float)DBladder)) {
500  rocy = rocy + ladsign * 0.5;
501  } else if ((((float)DBladder) <= rocy) && (rocy < ((float)DBladder + (ladsign)*0.5))) {
502  rocy = rocy - ladsign * 0.5;
503  }
504  }
505 
506  // tweak border effect for negative modules/ladders
507  if (modsign < 0) {
508  rocx = rocx - 0.0001;
509  }
510  if (ladsign < 0) {
511  rocy = rocy - 0.0001;
512  } else {
513  rocy = rocy + 0.0001;
514  }
515  if (abs(DBladder) == 1) {
516  rocy = rocy + ladsign * 0.5;
517  } // take care of the half module
518  meinput[DBlayer - 1]->Fill(rocx, rocy);
519  } // end of looping over pxdi
520  }
521 }
iterator find(det_id_type id)
Definition: DetSetVector.h:290
int moduleName() const
module id (index in z)
bool isHalfModule() const
full or half module
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
iterator end()
Return the off-the-end iterator.
Definition: DetSetVector.h:361
Definition: DetId.h:18
int ladderName() const
ladder id (index in phi)
int layerName() const
layer id
Shell shell() const
col
Definition: cuy.py:1010
iterator begin()
Return an iterator to the first DetSet.
Definition: DetSetVector.h:346
collection_type::const_iterator const_iterator
Definition: DetSet.h:33
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:104
void SiPixelClusterSource::getrococcupancye ( DetId  detId,
const edmNew::DetSetVector< SiPixelCluster > &  clustColl,
const TrackerTopology *const  pTT,
edm::ESHandle< TrackerGeometry pDD,
MonitorElement meinput 
)
private

Definition at line 523 of file SiPixelClusterSource.cc.

References funct::abs(), edmNew::DetSetVector< T >::begin(), PixelEndcapName::bladeName(), DEFINE_FWK_MODULE, PixelEndcapName::diskName(), edmNew::DetSetVector< T >::end(), edmNew::DetSetVector< T >::find(), MonitorElement::getBinContent(), PixelEndcapName::halfCylinder(), mps_fire::i, TrackerGeometry::idToDetUnit(), isUpgrade, Topology::localPosition(), PixelEndcapName::pannelName(), PixelEndcapName::plaquetteName(), MonitorElement::setBinContent(), PixelGeomDetUnit::specificTopology(), GeomDet::surface(), Surface::toGlobal(), z, and PV3DBase< T, PVType, FrameType >::z().

Referenced by analyze().

527  {
528  edmNew::DetSetVector<SiPixelCluster>::const_iterator ipxsearch = clustColl.find(detId);
529  if (ipxsearch != clustColl.end()) {
530  // Look at clusters now
532  for (pxclust = ipxsearch->begin(); pxclust != ipxsearch->end(); pxclust++) {
533  const GeomDetUnit *geoUnit = pDD->idToDetUnit(detId);
534  const PixelGeomDetUnit *pixDet = dynamic_cast<const PixelGeomDetUnit *>(geoUnit);
535  const PixelTopology *topol = &(pixDet->specificTopology());
536  LocalPoint clustlp = topol->localPosition(MeasurementPoint(pxclust->x(), pxclust->y()));
537  GlobalPoint clustgp = geoUnit->surface().toGlobal(clustlp);
538 
539  float xclust = pxclust->x();
540  float yclust = pxclust->y();
541  float z = clustgp.z();
542 
543  int pxfside = PixelEndcapName(detId, pTT, isUpgrade).halfCylinder();
544  int pxfpanel = PixelEndcapName(detId, pTT, isUpgrade).pannelName();
545  int pxfmodule = PixelEndcapName(detId, pTT, isUpgrade).plaquetteName();
546  int pxfdisk = PixelEndcapName(detId, pTT, isUpgrade).diskName();
547  int pxfblade = PixelEndcapName(detId, pTT, isUpgrade).bladeName();
548 
549  if ((pxfside == 1) || (pxfside == 3)) {
550  pxfblade = -1. * pxfblade;
551  }
552 
553  if (z < 0.) {
554  pxfdisk = -1. * pxfdisk;
555  }
556 
557  int clu_sdpx = ((pxfdisk > 0) ? 1 : -1) * (2 * (abs(pxfdisk) - 1) + pxfpanel);
558  int binselx = (pxfpanel == 1 && (pxfmodule == 1 || pxfmodule == 4))
559  ? (pxfmodule == 1)
560  : ((pxfpanel == 1 && xclust < 80.0) || (pxfpanel == 2 && xclust >= 80.0));
561  int nperpan = 2 * pxfmodule + pxfpanel - 1 + binselx;
562  int clu_roc_binx =
563  ((pxfdisk > 0) ? nperpan : 9 - nperpan) + (clu_sdpx + 4) * 8 - 2 * ((abs(pxfdisk) == 1) ? pxfdisk : 0);
564 
565  int clu_roc_biny = -99.;
566  int nrocly = pxfmodule + pxfpanel;
567  for (int i = 0; i < nrocly; i++) {
568  int j = (pxfdisk < 0) ? i : nrocly - 1 - i;
569  if (yclust >= (j * 52.0) && yclust < ((j + 1) * 52.0))
570  clu_roc_biny = 6 - nrocly + 2 * i + ((pxfblade > 0) ? pxfblade - 1 : pxfblade + 12) * 12 + 1;
571  }
572  if (pxfblade > 0) {
573  clu_roc_biny = clu_roc_biny + 144;
574  }
575 
576  meinput->setBinContent(clu_roc_binx, clu_roc_biny, meinput->getBinContent(clu_roc_binx, clu_roc_biny) + 1);
577  meinput->setBinContent(
578  clu_roc_binx, clu_roc_biny + 1, meinput->getBinContent(clu_roc_binx, clu_roc_biny + 1) + 1);
579  }
580  }
581 }
int plaquetteName() const
plaquetteId (in pannel)
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:106
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
void setBinContent(int binx, double content)
set content of bin (1-D)
const_iterator end(bool update=false) const
data_type const * const_iterator
Definition: DetSetNew.h:30
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:42
int bladeName() const
blade id
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
T z() const
Definition: PV3DBase.h:64
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
virtual LocalPoint localPosition(const MeasurementPoint &) const =0
const_iterator find(id_type i, bool update=false) const
double getBinContent(int binx) const
get content of bin (1-D)
int pannelName() const
pannel id
int diskName() const
disk id
HalfCylinder halfCylinder() const
const_iterator begin(bool update=false) const

Member Data Documentation

int SiPixelClusterSource::bigEventSize
private

Definition at line 97 of file SiPixelClusterSource.h.

Referenced by analyze(), and bookMEs().

MonitorElement* SiPixelClusterSource::bigFpixClusterEventRate
private

Definition at line 96 of file SiPixelClusterSource.h.

Referenced by analyze(), and bookMEs().

bool SiPixelClusterSource::bladeOn
private

Definition at line 90 of file SiPixelClusterSource.h.

Referenced by analyze(), bookMEs(), and dqmBeginRun().

edm::ParameterSet SiPixelClusterSource::conf_
private

Definition at line 76 of file SiPixelClusterSource.h.

Referenced by bookMEs(), and SiPixelClusterSource().

edm::InputTag SiPixelClusterSource::digisrc_
private

Definition at line 78 of file SiPixelClusterSource.h.

Referenced by bookHistograms().

edm::EDGetTokenT<edm::DetSetVector<PixelDigi> > SiPixelClusterSource::digisrcToken_
private

Definition at line 126 of file SiPixelClusterSource.h.

Referenced by analyze(), and SiPixelClusterSource().

bool SiPixelClusterSource::diskOn
private

Definition at line 90 of file SiPixelClusterSource.h.

Referenced by analyze(), bookMEs(), and dqmBeginRun().

int SiPixelClusterSource::eventNo
private

Definition at line 82 of file SiPixelClusterSource.h.

Referenced by analyze(), and dqmBeginRun().

bool SiPixelClusterSource::firstRun
private

Definition at line 92 of file SiPixelClusterSource.h.

Referenced by dqmBeginRun(), and SiPixelClusterSource().

bool SiPixelClusterSource::isPIB
private

Definition at line 80 of file SiPixelClusterSource.h.

Referenced by bookMEs(), and buildStructure().

bool SiPixelClusterSource::isUpgrade
private
bool SiPixelClusterSource::ladOn
private

Definition at line 88 of file SiPixelClusterSource.h.

Referenced by analyze(), bookMEs(), and dqmBeginRun().

bool SiPixelClusterSource::layOn
private

Definition at line 88 of file SiPixelClusterSource.h.

Referenced by analyze(), bookMEs(), and dqmBeginRun().

int SiPixelClusterSource::lumSec
private

Definition at line 93 of file SiPixelClusterSource.h.

Referenced by dqmBeginRun().

std::vector<MonitorElement *> SiPixelClusterSource::meClPosDiskmz
private

Definition at line 102 of file SiPixelClusterSource.h.

Referenced by analyze(), and bookHistograms().

std::vector<MonitorElement *> SiPixelClusterSource::meClPosDiskpz
private

Definition at line 101 of file SiPixelClusterSource.h.

Referenced by analyze(), and bookHistograms().

std::vector<MonitorElement *> SiPixelClusterSource::meClPosLayer
private

Definition at line 100 of file SiPixelClusterSource.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* SiPixelClusterSource::meClusBarrelProf
private

Definition at line 104 of file SiPixelClusterSource.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* SiPixelClusterSource::meClusFpixMProf
private

Definition at line 106 of file SiPixelClusterSource.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* SiPixelClusterSource::meClusFpixPProf
private

Definition at line 105 of file SiPixelClusterSource.h.

Referenced by analyze(), and bookHistograms().

std::vector<MonitorElement *> SiPixelClusterSource::meZeroRocBPIX
private

Definition at line 108 of file SiPixelClusterSource.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* SiPixelClusterSource::meZeroRocFPIX
private

Definition at line 109 of file SiPixelClusterSource.h.

Referenced by analyze(), and bookHistograms().

bool SiPixelClusterSource::modOn
private

Definition at line 84 of file SiPixelClusterSource.h.

Referenced by analyze(), bookMEs(), and dqmBeginRun().

int SiPixelClusterSource::nBigEvents
private

Definition at line 95 of file SiPixelClusterSource.h.

Referenced by dqmBeginRun().

int SiPixelClusterSource::nLumiSecs
private

Definition at line 94 of file SiPixelClusterSource.h.

Referenced by dqmBeginRun().

int SiPixelClusterSource::noOfDisks
private

Definition at line 112 of file SiPixelClusterSource.h.

Referenced by analyze(), bookHistograms(), and buildStructure().

int SiPixelClusterSource::noOfLayers
private

Definition at line 111 of file SiPixelClusterSource.h.

Referenced by analyze(), bookHistograms(), and buildStructure().

bool SiPixelClusterSource::phiOn
private

Definition at line 88 of file SiPixelClusterSource.h.

Referenced by analyze(), bookMEs(), and dqmBeginRun().

bool SiPixelClusterSource::reducedSet
private

Definition at line 86 of file SiPixelClusterSource.h.

Referenced by analyze(), and bookMEs().

bool SiPixelClusterSource::ringOn
private

Definition at line 90 of file SiPixelClusterSource.h.

Referenced by analyze(), bookMEs(), and dqmBeginRun().

bool SiPixelClusterSource::saveFile
private

Definition at line 79 of file SiPixelClusterSource.h.

bool SiPixelClusterSource::slowDown
private

Definition at line 81 of file SiPixelClusterSource.h.

Referenced by analyze().

bool SiPixelClusterSource::smileyOn
private

Definition at line 91 of file SiPixelClusterSource.h.

Referenced by analyze(), bookMEs(), and dqmBeginRun().

edm::InputTag SiPixelClusterSource::src_
private

Definition at line 77 of file SiPixelClusterSource.h.

edm::EDGetTokenT<edmNew::DetSetVector<SiPixelCluster> > SiPixelClusterSource::srcToken_
private

Definition at line 125 of file SiPixelClusterSource.h.

Referenced by analyze(), and SiPixelClusterSource().

std::map<uint32_t, SiPixelClusterModule *> SiPixelClusterSource::thePixelStructure
private

Definition at line 83 of file SiPixelClusterSource.h.

Referenced by analyze(), bookMEs(), buildStructure(), and ~SiPixelClusterSource().

std::string SiPixelClusterSource::topFolderName_

Definition at line 73 of file SiPixelClusterSource.h.

Referenced by bookHistograms(), bookMEs(), and SiPixelClusterSource().

bool SiPixelClusterSource::twoDimOn
private

Definition at line 85 of file SiPixelClusterSource.h.

Referenced by analyze(), bookMEs(), and dqmBeginRun().