CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
GEMCheckGeometry.cc
Go to the documentation of this file.
6 
7 #include <iomanip>
8 
10  GE11PhiBegin_ = gc.getUntrackedParameter<double>("GE11PhiBegin", -5.);
11  GE11PhiStep_ = gc.getUntrackedParameter<double>("GE11PhiStep", 10);
12  minPhi_ = gc.getUntrackedParameter<double>("minPhi", -180.);
13  maxPhi_ = gc.getUntrackedParameter<double>("maxPhi", +180.);
14  detailPlot_ = gc.getParameter<bool>("detailPlot");
15  geomToken_ = esConsumes<GEMGeometry, MuonGeometryRecord>();
16 }
17 
19  if (!detailPlot_)
20  return;
21 
22  const GEMGeometry *GEMGeometry_ = &iSetup.getData(geomToken_);
23  if (!GEMGeometry_) {
24  edm::LogError("MuonGEMGeometry") << "+++ Error : GEM geometry is unavailable on event loop. +++\n";
25  return;
26  }
27 
28  ibooker.setCurrentFolder("MuonGEMDigisV/GEMDigisTask");
29  LogDebug("GEMCheckGeometry") << "ibooker set current folder\n";
30 
31  for (auto region : GEMGeometry_->regions()) {
32  TString title = TString::Format("Geometry's phi distribution on Region %d ; #phi(degree); ;", region->region());
33  TString name = TString::Format("geo_phi_r%d", region->region());
34  auto temp_me = ibooker.book2D(name.Data(), title.Data(), 360000, -180., 180, 12, 1, 13);
35  temp_me->setBinLabel(1, "St1,La1_even", 2);
36  temp_me->setBinLabel(2, "St1,La1_odd", 2);
37  temp_me->setBinLabel(3, "St1,La2_even", 2);
38  temp_me->setBinLabel(4, "St1,La2_odd", 2);
39  temp_me->setBinLabel(5, "St2,La1_even", 2);
40  temp_me->setBinLabel(6, "St2,La1_odd", 2);
41  temp_me->setBinLabel(7, "St2,La2_even", 2);
42  temp_me->setBinLabel(8, "St2,La2_odd", 2);
43  theStdPlots.insert(std::map<UInt_t, MonitorElement *>::value_type(name.Hash(), temp_me));
44  }
45 
46  for (auto region : GEMGeometry_->regions()) {
47  for (auto station : region->stations()) {
48  for (auto ring : station->rings()) {
49  for (auto sch : ring->superChambers()) {
50  for (auto ch : sch->chambers()) {
51  for (auto roll : ch->etaPartitions()) {
52  const StripTopology *topology(&(roll->specificTopology()));
53  auto parameters(roll->specs()->parameters());
54  float nStrips(parameters[3]);
55  for (int strip = 0; strip <= nStrips; strip++) {
56  LocalPoint lEdge(topology->localPosition(strip));
57 
58  double phi = roll->toGlobal(lEdge).phi().degrees();
59 
60  GEMDetId id(roll->id());
61  int region_idx = id.region();
62  int station_idx = id.station();
63  int chamber_idx = id.chamber();
64  int layer_idx = id.layer();
65  int value = (station_idx - 1) * 4 + (layer_idx - 1) * 2 + (chamber_idx % 2) + 1;
66 
67  if (region_idx == 1) {
68  UInt_t hash = TString("geo_phi_r1").Hash();
69  theStdPlots[hash]->Fill(phi, value);
70  } else {
71  UInt_t hash = TString("geo_phi_r-1").Hash();
72  theStdPlots[hash]->Fill(phi, value);
73  }
74  }
75  }
76  }
77  }
78  }
79  }
80  }
81 }
82 
84 
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
T getUntrackedParameter(std::string const &, T const &) const
std::map< UInt_t, MonitorElement * > theStdPlots
uint16_t *__restrict__ id
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
~GEMCheckGeometry() override
void analyze(const edm::Event &e, const edm::EventSetup &) override
Log< level::Error, false > LogError
tuple nStrips
1.2 is to make the matching window safely the two nearest strips 0.35 is the size of an ME0 chamber i...
bool getData(T &iHolder) const
Definition: EventSetup.h:128
GEMCheckGeometry(const edm::ParameterSet &gc)
const std::vector< const GEMRegion * > & regions() const
Return a vector of all GEM regions.
Definition: GEMGeometry.cc:30
virtual 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)
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > geomToken_
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:177
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
virtual LocalPoint localPosition(float strip) const =0
Definition: Run.h:45
#define LogDebug(id)