|
|
Go to the documentation of this file.
49 pixelFlag_(config_.getParameter<
bool>(
"PixelPlotFillingFlag")),
50 geomType_(config_.getParameter<
std::
string>(
"GeometryType")),
51 otDigiSrc_(config_.getParameter<
edm::
InputTag>(
"OuterTrackerDigiSource")),
52 itPixelDigiSrc_(config_.getParameter<
edm::
InputTag>(
"InnerPixelDigiSource")),
54 itPixelDigiToken_(consumes<
edm::DetSetVector<
PixelDigi>>(itPixelDigiSrc_)) {
55 edm::LogInfo(
"Phase2TrackerMonitorDigi") <<
">>> Construct Phase2TrackerMonitorDigi ";
64 edm::LogInfo(
"Phase2TrackerMonitorDigi") <<
">>> Destroy Phase2TrackerMonitorDigi ";
83 if (theTkDigiGeomWatcher.
check(iSetup)) {
102 unsigned int rawid = DSViter->id;
103 edm::LogInfo(
"Phase2TrackerMonitorDigi") <<
" Det Id = " << rawid;
107 std::map<uint32_t, DigiMEs>::iterator
pos =
layerMEs.find(layer);
111 const DetId detId(rawid);
122 if (nRows * nColumns == 0)
137 int col = di->column();
156 if (row_last == -1) {
161 if (
abs(row - row_last) == 1 &&
col == col_last) {
181 edm::LogInfo(
"Phase2TrackerMonitorDigi") <<
" row " << row <<
" col " <<
col <<
" row_last " << row_last
182 <<
" col_last " << col_last <<
" width " <<
width;
191 float occupancy = 1.0;
192 if (nRows * nColumns > 0)
193 occupancy = nDigi * 1.0 / (nRows * nColumns);
210 DigiMEs& local_mes = ilayer.second;
228 unsigned int rawid = DSViter->id;
230 edm::LogInfo(
"Phase2TrackerMonitorDigi") <<
" Det Id = " << rawid;
234 std::map<uint32_t, DigiMEs>::iterator
pos =
layerMEs.find(layer);
249 if (nRows * nColumns == 0)
260 int col = di->column();
262 const DetId detId(rawid);
273 if (di->overThreshold())
281 if (row_last == -1) {
285 if (
abs(row - row_last) == 1 &&
col == col_last) {
302 edm::LogInfo(
"Phase2TrackerMonitorDigi") <<
" row " << row <<
" col " <<
col <<
" row_last " << row_last
303 <<
" col_last " << col_last <<
" width " <<
width;
317 float occupancy = 1.0;
318 if (nRows * nColumns > 0)
319 occupancy = nDigi * 1.0 / (nRows * nColumns);
343 DigiMEs& local_mes = ilayer.second;
364 if (theTkDigiGeomWatcher.check(iSetup)) {
368 for (
auto const& det_u : tGeom->
detUnits()) {
369 unsigned int detId_raw = det_u->geographicalId().rawId();
393 if (
Parameters.getParameter<
bool>(
"switch") && ParametersOcc.getParameter<
bool>(
"switch"))
402 ParametersOcc.getParameter<
double>(
"xmin"),
403 ParametersOcc.getParameter<
double>(
"xmax"));
420 if (
Parameters.getParameter<
bool>(
"switch") && ParametersOcc.getParameter<
bool>(
"switch"))
429 ParametersOcc.getParameter<
double>(
"xmin"),
430 ParametersOcc.getParameter<
double>(
"xmax"));
448 std::map<uint32_t, DigiMEs>::iterator
pos =
layerMEs.find(layer);
454 std::ostringstream fname1, fname2,
tag;
459 fname2 <<
"Layer_" << layer;
462 idisc = layer - side * 100;
463 fname1 <<
"EndCap_Side_" << side;
464 fname2 <<
"Disc_" << idisc;
470 <<
"/" << fname1.str() <<
"/" << fname2.str();
484 HistoName <<
"NumberOfDigisPerDet_" << fname2.str();
497 HistoName <<
"DigiOccupancyP_" << fname2.str();
508 HistoName <<
"DigiOccupancyVsEtaP_" << fname2.str();
509 if (
Parameters.getParameter<
bool>(
"switch") && EtaParameters.getParameter<
bool>(
"switch"))
512 EtaParameters.getParameter<int32_t>(
"Nbins"),
513 EtaParameters.getParameter<
double>(
"xmin"),
514 EtaParameters.getParameter<
double>(
"xmax"),
523 HistoName <<
"PositionOfDigisP_" << fname2.str().c_str();
538 HistoName <<
"ClusterPositionP_" << fname2.str();
554 HistoName <<
"ChargeXYMap_" << fname2.str().c_str();
569 HistoName <<
"TotalNumberOfDigisPerLayer_" << fname2.str();
581 HistoName <<
"NumberOfHitDetectorsPerLayer_" << fname2.str();
593 HistoName <<
"NumberOfClustersPerDet_" << fname2.str();
605 HistoName <<
"ClusterWidth_" << fname2.str();
618 HistoName <<
"DigiOccupancyS_" << fname2.str();
629 HistoName <<
"DigiOccupancyVsEtaS_" << fname2.str();
630 if (
Parameters.getParameter<
bool>(
"switch") && EtaParameters.getParameter<
bool>(
"switch"))
633 EtaParameters.getParameter<int32_t>(
"Nbins"),
634 EtaParameters.getParameter<
double>(
"xmin"),
635 EtaParameters.getParameter<
double>(
"xmax"),
643 HistoName <<
"FractionOfOverThresholdDigis_" << fname2.str();
648 HistoName <<
"FractionOfOverThresholdDigisVaEta_" << fname2.str();
649 if (
Parameters.getParameter<
bool>(
"switch") && EtaParameters.getParameter<
bool>(
"switch"))
652 EtaParameters.getParameter<int32_t>(
"Nbins"),
653 EtaParameters.getParameter<
double>(
"xmin"),
654 EtaParameters.getParameter<
double>(
"xmax"),
663 HistoName <<
"ClusterPositionS_" << fname2.str();
678 HistoName <<
"PositionOfDigisS_" << fname2.str().c_str();
693 HistoName <<
"ChargeOfDigis_" << fname2.str();
705 HistoName <<
"ChargeOfDigisVsWidth_" << fname2.str();
719 layerMEs.insert(std::make_pair(layer, local_mes));
const TrackerGeomDet * idToDet(DetId) const override
bool check(const edm::EventSetup &iSetup)
T const * product() const
MonitorElement * PositionOfDigisS
const edm::EDGetTokenT< edm::DetSetVector< Phase2TrackerDigi > > otDigiToken_
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)
charges
only generated particles of these IDs are considered
edm::ParameterSet config_
void fillOTDigiHistos(const edm::Handle< edm::DetSetVector< Phase2TrackerDigi >> handle, const edm::ESHandle< TrackerGeometry > gHandle)
MonitorElement * RZOccupancyMap
iterator end()
Return the off-the-end iterator.
MonitorElement * TotalNumberOfDigisPerLayer
int getITPixelLayerNumber(const DetId &id) const
int getOTLayerNumber(const DetId &id) const
MonitorElement * ChargeXYMap
MonitorElement * bookProfile2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, double lowZ, double highZ, char const *option="s", FUNC onbooking=NOOP())
constexpr Detector det() const
get the detector field from this detid
virtual void setCurrentFolder(std::string const &fullpath)
iterator begin()
Return an iterator to the first DetSet.
MonitorElement * EtaOccupancyProfS
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) override
virtual const Topology & topology() const
virtual LocalPoint localPosition(const MeasurementPoint &) const =0
std::map< unsigned int, DigiMEs > layerMEs
MonitorElement * XYOccupancyMap
MonitorElement * FractionOfOvTBitsVsEta
edm::ESHandle< TrackerTopology > tTopoHandle_
MonitorElement * NumberOfClustersPerDet
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
MonitorElement * XYPositionMap
const Plane & surface() const
The nominal surface of the GeomDet.
unsigned int nHitDetsPerLayer
unsigned int nDigiPerLayer
#define DEFINE_FWK_MODULE(type)
void fillITPixelDigiHistos(const edm::Handle< edm::DetSetVector< PixelDigi >> handle, const edm::ESHandle< TrackerGeometry > gHandle)
const DetContainer & detUnits() const override
Returm a vector of all GeomDet.
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
MonitorElement * NumberOfDigisPerDet
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
virtual int ncolumns() const =0
MonitorElement * ChargeOfDigis
MonitorElement * ClusterWidth
MonitorElement * ClusterPositionS
Phase2TrackerMonitorDigi(const edm::ParameterSet &)
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
MonitorElement * PositionOfDigisP
collection_type::const_iterator const_iterator
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
static int position[264][3]
void bookHistograms(DQMStore::IBooker &ibooker, edm::Run const &iRun, edm::EventSetup const &iSetup) override
const edm::EDGetTokenT< edm::DetSetVector< PixelDigi > > itPixelDigiToken_
MonitorElement * DigiOccupancyS
void bookLayerHistos(DQMStore::IBooker &ibooker, unsigned int det_id, const TrackerTopology *tTopo)
T getParameter(std::string const &) const
~Phase2TrackerMonitorDigi() override
MonitorElement * FractionOfOvTBits
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
MonitorElement * DigiOccupancyP
MonitorElement * ChargeOfDigisVsWidth
MonitorElement * EtaOccupancyProfP
MonitorElement * NumberOfHitDetectorsPerLayer
Abs< T >::type abs(const T &t)
virtual int nrows() const =0
MonitorElement * ClusterPositionP
vector< ParameterSet > Parameters
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
MonitorElement * RZPositionMap
collection_type::const_iterator const_iterator