12 if (GEMGeometry_ ==
nullptr)
14 LogDebug(
"GEMPadDigiValidation") <<
"Geometry is acquired from MuonGeometryRecord\n";
16 LogDebug(
"GEMPadDigiValidation") <<
"ibooker set current folder\n";
18 if (GEMGeometry_ ==
nullptr)
21 GEMGeometry_->
regions()[0]->stations()[0]->superChambers()[0]->chambers()[0]->etaPartitions()[0]->npads();
25 if (GEMGeometry_->
regions()[0]->stations().size() > 1 &&
26 !GEMGeometry_->
regions()[0]->stations()[1]->superChambers().empty()) {
28 GEMGeometry_->
regions()[0]->stations()[1]->superChambers()[0]->chambers()[0]->etaPartitions()[0]->npads();
31 for (
auto ®ion : GEMGeometry_->
regions()) {
32 int re = region->region();
35 TString simpleZR_title = TString::Format(
"ZR Occupancy%s; |Z|(cm) ; R(cm)", title_suffix.Data());
36 TString simpleZR_histname = TString::Format(
"pad_simple_zr%s", histname_suffix.Data());
38 auto *simpleZR =
getSimpleZR(ibooker, simpleZR_title, simpleZR_histname);
39 if (simpleZR !=
nullptr) {
42 for (
auto &
station : region->stations()) {
48 TString::Format(
"Occupancy for detector component %s;;#eta-partition", title_suffix2.Data());
49 TString dcEta_histname = TString::Format(
"pad_dcEta%s", histname_suffix2.Data());
52 if (dcEta !=
nullptr) {
59 for (
auto ®ion : GEMGeometry_->
regions()) {
60 int re = region->region();
61 int region_num = (re + 1) / 2;
62 for (
auto &
station : region->stations()) {
64 int station_num = st - 1;
69 for (
int la = 1; la <= 2; la++) {
70 int layer_num = la - 1;
74 ibooker.
book2D((
"pad_dg_phipad" + name_prefix).c_str(),
75 (
"Digi occupancy: " + label_prefix +
"; phi [rad]; Pad number").c_str(),
82 theCSCPad[region_num][station_num][layer_num] =
83 ibooker.
book1D((
"pad_dg" + name_prefix).c_str(),
84 (
"Digi occupancy per pad number: " + label_prefix +
";Pad number; entries").c_str(),
89 ibooker.
book1D((
"pad_dg_bx" + name_prefix).c_str(),
90 (
"Bunch crossing: " + label_prefix +
"; bunch crossing ; entries").c_str(),
95 BookHistZR(ibooker,
"pad_dg",
"Pad Digi", region_num, station_num, layer_num);
97 BookHistXY(ibooker,
"pad_dg",
"Pad Digi", region_num, station_num, layer_num);
98 TString xy_name = TString::Format(
"pad_dg_xy%s_odd", name_prefix.c_str());
99 TString xy_title = TString::Format(
"Digi XY occupancy %s at odd chambers", label_prefix.c_str());
101 xy_name = TString::Format(
"pad_dg_xy%s_even", name_prefix.c_str());
102 xy_title = TString::Format(
"Digi XY occupancy %s at even chambers", label_prefix.c_str());
103 theCSCPad_xy_ch[xy_name.Hash()] = ibooker.
book2D(xy_name, xy_title, 360, -360, 360, 360, -360, 360);
117 GEMGeometry_ = &*hGeom;
119 edm::LogError(
"GEMPadDigiValidation") <<
"+++ Error : GEM geometry is unavailable on event loop. +++\n";
125 edm::LogError(
"GEMPadDigiValidation") <<
"Cannot get pads by label GEMPadToken.";
132 if (gdet ==
nullptr) {
133 std::cout <<
"Getting DetId failed. Discard this gem pad hit.Maybe it " 134 "comes from unmatched geometry." 141 int re =
id.region();
143 int st =
id.station();
145 Short_t nroll = (Short_t)
id.roll();
150 for (digiItr = (*cItr).second.first; digiItr != (*cItr).second.second; ++digiItr) {
151 Short_t pad = (Short_t)digiItr->
pad();
152 Short_t bx = (Short_t)digiItr->bx();
157 Float_t g_r = (Float_t)gp.
perp();
158 Float_t g_phi = (Float_t)gp.
phi();
159 Float_t g_x = (Float_t)gp.
x();
160 Float_t g_y = (Float_t)gp.
y();
161 Float_t g_z = (Float_t)gp.
z();
162 edm::LogInfo(
"GEMPadDIGIValidation") <<
"Global x " << g_x <<
"Global y " << g_y <<
"\n";
163 edm::LogInfo(
"GEMPadDIGIValidation") <<
"Global pad " << pad <<
"Global phi " << g_phi << std::endl;
164 edm::LogInfo(
"GEMPadDIGIValidation") <<
"Global bx " << bx << std::endl;
166 int region_num = (re + 1) / 2;
167 int station_num = st - 1;
168 int layer_num = la - 1;
169 int binX = (chamber - 1) * 2 + layer_num;
174 TString simple_zr_histname = TString::Format(
"pad_simple_zr%s", histname_suffix.Data());
178 TString dcEta_histname = TString::Format(
"pad_dcEta%s", histname_suffix.Data());
189 if (chamber % 2 == 0) {
190 hname = TString::Format(
"pad_dg_xy%s_even", name_prefix.c_str());
192 hname = TString::Format(
"pad_dg_xy%s_odd", name_prefix.c_str());
MonitorElement * theCSCPad_zr[2][3][2]
T getParameter(std::string const &) const
MonitorElement * theCSCPad[2][3][2]
MonitorElement * theCSCPad_xy[2][3][2]
MonitorElement * BookHistZR(DQMStore::IBooker &, const char *name, const char *label, unsigned int region_num, unsigned int station_num, unsigned int layer_num=99)
edm::EDGetToken InputTagToken_
Geom::Phi< T > phi() const
MonitorElement * getSimpleZR(DQMStore::IBooker &, TString, TString)
MonitorElement * BookHistXY(DQMStore::IBooker &, const char *name, const char *label, unsigned int region_num, unsigned int station_num, unsigned int layer_num=99)
std::string getSuffixTitle(int region, int station, int layer)
std::unordered_map< UInt_t, MonitorElement * > thePad_dcEta
const Plane & surface() const
The nominal surface of the GeomDet.
const GEMEtaPartition * etaPartition(GEMDetId id) const
Return a GEMEtaPartition given its id.
const GEMGeometry * initGeometry(const edm::EventSetup &)
std::string getSuffixName(int region, int station, int layer)
void setCurrentFolder(std::string const &fullpath)
std::unordered_map< UInt_t, MonitorElement * > thePad_simple_zr
std::unordered_map< UInt_t, MonitorElement * > theCSCPad_xy_ch
GEMPadDigiValidation(const edm::ParameterSet &)
const std::vector< const GEMRegion * > & regions() const
Return a vector of all GEM regions.
MonitorElement * book1D(Args &&...args)
~GEMPadDigiValidation() override
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * theCSCPad_bx[2][3][2]
MonitorElement * book2D(Args &&...args)
const GeomDet * idToDet(DetId) const override
std::vector< DigiType >::const_iterator const_iterator
MonitorElement * getDCEta(DQMStore::IBooker &, const GEMStation *, TString, TString)
void analyze(const edm::Event &e, const edm::EventSetup &) override
MonitorElement * theCSCPad_phipad[2][3][2]