15 if ( GEMGeometry_ ==
nullptr)
return ;
16 LogDebug(
"GEMStripDigiValidation")<<
"Geometry is acquired from MuonGeometryRecord\n";
18 LogDebug(
"GEMStripDigiValidation")<<
"ibooker set current folder\n";
20 LogDebug(
"GEMStripDigiValidation")<<
"nregions set.\n";
21 LogDebug(
"GEMStripDigiValidation")<<
"nstations set.\n";
22 int nstripsGE11 = 384;
23 int nstripsGE21 = 768;
25 LogDebug(
"GEMStripDigiValidation")<<
"Successfully binning set.\n";
31 for(
auto& region : 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(
"strip_simple_zr%s",histname_suffix.Data());
38 auto* simpleZR =
getSimpleZR(ibooker, simpleZR_title, simpleZR_histname);
39 if ( simpleZR !=
nullptr) {
43 for(
auto&
station : region->stations()) {
48 TString dcEta_title = TString::Format(
"Occupancy for detector component %s;;#eta-partition",title_suffix2.Data());
49 TString dcEta_histname = TString::Format(
"strip_dcEta%s",histname_suffix2.Data());
52 if ( dcEta !=
nullptr) {
60 for(
auto& region : GEMGeometry_->
regions() ) {
61 for(
auto&
station : region->stations()) {
62 for(
int la = 1 ; la <= 2 ; la++) {
63 int re = region->region();
65 int region_num = (re+1)/2;
66 int station_num = st-1;
69 if ( st ==1 ) nstrips = nstripsGE11;
70 else nstrips = nstripsGE21;
73 theStrip_phistrip[region_num][station_num][layer_num] = ibooker.
book2D( (
"strip_dg_phistrip"+name_prefix).c_str(), (
"Digi occupancy: "+label_prefix+
"; phi [rad];strip number").c_str(), 280, -
TMath::Pi(),
TMath::Pi(), nstrips/2,0,nstrips);
74 theStrip[region_num][station_num][layer_num] = ibooker.
book1D( (
"strip_dg"+name_prefix).c_str(), (
"Digi occupancy per stip number: "+label_prefix+
";strip number; entries").c_str(), nstrips,0.5,nstrips+0.5);
75 theStrip_bx[region_num][station_num][layer_num] = ibooker.
book1D( (
"strip_dg_bx"+name_prefix).c_str(), (
"Bunch crossing: "+label_prefix+
"; bunch crossing ; entries").c_str(), 11,-5.5,5.5);
76 theStrip_zr[region_num][station_num][layer_num] =
BookHistZR(ibooker,
"strip_dg",
"Strip Digi",region_num,station_num,layer_num);
77 theStrip_xy[region_num][station_num][layer_num] =
BookHistXY(ibooker,
"strip_dg",
"Strip Digi",region_num,station_num,layer_num);
78 TString xy_name = TString::Format(
"strip_dg_xy%s_odd",name_prefix.c_str());
79 TString xy_title = TString::Format(
"Digi XY occupancy %s at odd chambers",label_prefix.c_str());
80 theStrip_xy_ch[ xy_name.Hash() ] = ibooker.
book2D(xy_name, xy_title, 360, -360,360, 360, -360, 360);
81 xy_name = TString::Format(
"strip_dg_xy%s_even",name_prefix.c_str());
82 xy_title = TString::Format(
"Digi XY occupancy %s at even chambers",label_prefix.c_str());
83 theStrip_xy_ch[ xy_name.Hash() ] = ibooker.
book2D(xy_name, xy_title, 360, -360,360, 360, -360, 360);
88 LogDebug(
"GEMStripDigiValidation")<<
"Booking End.\n";
102 GEMGeometry_ = &*hGeom;
105 edm::LogError(
"GEMStripDigiValidation") <<
"+++ Error : GEM geometry is unavailable on event loop. +++\n";
112 edm::LogError(
"GEMStripDigiValidation") <<
"Cannot get strips by Token stripToken.\n";
119 if ( gdet ==
nullptr) {
120 std::cout<<
"Getting DetId failed. Discard this gem strip hit.Maybe it comes from unmatched geometry."<<std::endl;
126 int re =
id.region();
128 int st =
id.station();
130 Short_t nroll = (Short_t)
id.roll();
133 for (digiItr = (*cItr ).second.first; digiItr != (*cItr ).second.second; ++digiItr)
135 Short_t
strip = (Short_t) digiItr->strip();
136 Short_t bx = (Short_t) digiItr->bx();
141 Float_t g_r = (Float_t) gp.
perp();
143 Float_t g_phi = (Float_t) gp.
phi();
144 Float_t g_x = (Float_t) gp.
x();
145 Float_t g_y = (Float_t) gp.
y();
146 Float_t g_z = (Float_t) gp.
z();
149 int region_num = (re+1)/2;
150 int station_num = st-1;
151 int layer_num = la-1;
153 int binX = (chamber-1)*2+layer_num;
158 TString simple_zr_histname = TString::Format(
"strip_simple_zr%s",histname_suffix.Data());
163 TString dcEta_histname = TString::Format(
"strip_dcEta%s",histname_suffix.Data());
168 if (
theStrip_xy[region_num][station_num][layer_num] !=
nullptr) {
171 theStrip[region_num][station_num][layer_num]->
Fill(strip);
177 if ( chamber %2 == 0 ) { hname = TString::Format(
"strip_dg_xy%s_even",name_prefix.c_str()); }
178 else { hname = TString::Format(
"strip_dg_xy%s_odd",name_prefix.c_str()); }
182 std::cout<<
"Error is occued when histograms is called."<<std::endl;
T getParameter(std::string const &) const
std::unordered_map< UInt_t, MonitorElement * > theStrip_xy_ch
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
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 * theStrip_bx[2][3][2]
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)
void analyze(const edm::Event &e, const edm::EventSetup &) override
std::unordered_map< UInt_t, MonitorElement * > theStrip_dcEta
GEMStripDigiValidation(const edm::ParameterSet &)
MonitorElement * theStrip_phistrip[2][3][2]
std::string getSuffixTitle(int region, int station, int layer)
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 &)
MonitorElement * theStrip[2][3][2]
~GEMStripDigiValidation()
std::string getSuffixName(int region, int station, int layer)
const std::vector< const GEMRegion * > & regions() const
Return a vector of all GEM regions.
MonitorElement * book1D(Args &&...args)
std::unordered_map< UInt_t, MonitorElement * > theStrip_simple_zr
void setCurrentFolder(const std::string &fullpath)
MonitorElement * book2D(Args &&...args)
const GeomDet * idToDet(DetId) const override
std::vector< GEMDigi >::const_iterator const_iterator
MonitorElement * getDCEta(DQMStore::IBooker &, const GEMStation *, TString, TString)
MonitorElement * theStrip_zr[2][3][2]
return(e1-e2)*(e1-e2)+dp *dp
MonitorElement * theStrip_xy[2][3][2]