CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
RPCBookDetUnitME.cc
Go to the documentation of this file.
7 
9 std::map<std::string, MonitorElement*> RPCMonitorDigi::bookDetUnitME(RPCDetId & detId, const edm::EventSetup & iSetup) {
10  std::map<std::string, MonitorElement*> meMap;
11 
12  std::string ringType;
13  int ring;
14  if(detId.region() == 0) {
15  ringType = "Wheel";
16  ring = detId.ring();
17  }else if (detId.region() == -1){
18  ringType = "Disk";
19  ring = detId.region()*detId.station();
20  }else {
21  ringType = "Disk";
22  ring = detId.station();
23  }
24 
26  std::string folder = "RPC/RecHits/" + folderStr->folderStructure(detId);
27 
28  dbe->setCurrentFolder(folder);
29 
30  //get number of strips in current roll
31  int nstrips = this->stripsInRoll(detId, iSetup);
32  if (nstrips == 0 ) nstrips = 1;
33 
35  RPCGeomServ RPCname(detId);
36  std::string nameRoll = RPCname.name();
37 
38 
39 
40 
41  std::stringstream os;
42  os.str("");
43  os<<"Occupancy_"<<nameRoll;
44  meMap[os.str()] = dbe->book1D(os.str(), os.str(), nstrips, 0.5, nstrips+0.5);
45  dbe->tag( meMap[os.str()], rpcdqm::OCCUPANCY);
46 
47  //cout<<meMap[os.str()]->flags()<<endl;
48 
49 
50  if (dqmexpert) {
51  os.str("");
52  os<<"BXN_"<<nameRoll;
53  meMap[os.str()] = dbe->book1D(os.str(), os.str(), 21, -10.5, 10.5);
54 
55  os.str("");
56  os<<"ClusterSize_"<<nameRoll;
57  meMap[os.str()] = dbe->book1D(os.str(), os.str(), 20, 0.5, 20.5);
58  dbe->tag( meMap[os.str()], rpcdqm::CLUSTERSIZE);
59  //os.str("");
60 // os<<"NumberOfClusters_"<<nameRoll;
61 // meMap[os.str()] = dbe->book1D(os.str(), os.str(), 10, 0.5, 10.5);
62 
63  os.str("");
64  os<<"Multiplicity_"<<nameRoll;
65  meMap[os.str()] = dbe->book1D(os.str(), os.str(), 50, 0.5, 50.5);
66  dbe->tag( meMap[os.str()], rpcdqm::MULTIPLICITY);
67 
68  os.str("");
69  os<<"BXWithData_"<<nameRoll;
70  meMap[os.str()] = dbe->book1D(os.str(), os.str(), 10, 0.5, 10.5);
71 
73 
74  os.str("");
75  os<<"NumberOfClusters_"<<nameRoll;
76  meMap[os.str()] = dbe->book1D(os.str(), os.str(),20,0.5,20.5);
77  }
78 
79  if (dqmsuperexpert) {
80  os.str("");
81  os<<"BXN_vs_strip_"<<nameRoll;
82  meMap[os.str()] = dbe->book2D(os.str(), os.str(), nstrips , 0.5, nstrips+0.5 , 21, -10.5, 10.5);
83 
84  os.str("");
85  os<<"ClusterSize_vs_Strip_"<<nameRoll;
86  meMap[os.str()] = dbe->book2D(os.str(), os.str(),nstrips, 0.5, nstrips+0.5,11, 0.5, 11.5);
87 
88  }
89 
90  MonitorElement * myMe;
91 
92  os.str("");
93  if(detId.region()==0)
94  os<<"RPC/RecHits/Barrel/Wheel_"<<ring<<"/SummaryBySectors/";
95  else if (detId.region()==1)
96  os<<"RPC/RecHits/Endcap+/Disk_"<<ring<<"/SummaryBySectors/";
97  else
98  os<<"RPC/RecHits/Endcap-/Disk_"<<ring<<"/SummaryBySectors/";
99  std::string WheelSummary = os.str();
100  dbe->setCurrentFolder(WheelSummary);
101 
102  os.str("");
103  os<<"Occupancy_"<<ringType<<"_"<<ring<<"_Sector_"<<detId.sector();
104  myMe = dbe->get(WheelSummary+"/"+os.str());
105 
106  rpcdqm::utils rpcUtils;
107  //check if ME for this sector have already been booked
108  if(myMe) meMap[os.str()]=myMe;
109  else {
110  if(detId.region()==0) {
111  if (detId.sector()==9 || detId.sector()==11)
112  meMap[os.str()] = dbe->book2D(os.str(), os.str(), 96, 0.5,96.5, 15, 0.5, 15.5);
113  else if (detId.sector()==4)
114  meMap[os.str()] = dbe->book2D(os.str(), os.str(), 96, 0.5, 96.5, 21, 0.5, 21.5);
115  else
116  meMap[os.str()] = dbe->book2D(os.str(), os.str(), 96, 0.5, 96.5, 17, 0.5, 17.5);
117 
118  meMap[os.str()]->setAxisTitle("strip", 1);
119  rpcUtils.labelYAxisRoll( meMap[os.str()], 0, ring);
120 
121  }else{//Endcap
122  float fBin = ((detId.sector()-1)*6)+ 0.5;
123  float lBin = fBin+12;
124  meMap[os.str()] = dbe->book2D(os.str(), os.str(), 96, 0.5, 96.5, 12,fBin, lBin);
125  meMap[os.str()]->setAxisTitle("strip", 1);
126  std::stringstream yLabel;
127  for(int r = 2; r<= 3; r ++) {
128  int offset = 0;
129  if (r ==3) offset =6;
130  for (int i = 1 ; i<=6; i++) {
131  yLabel.str("");
132  yLabel<<"R"<<r<<"_C"<<(((detId.sector()-1)*6) +i);
133  meMap[os.str()]->setBinLabel(i+offset, yLabel.str(), 2);
134 
135  }
136  }
137  for(int i = 1; i <= 96 ; i++) {
138  if (i ==1) meMap[os.str()]->setBinLabel(i, "1", 1);
139  else if (i==16) meMap[os.str()]->setBinLabel(i, "RollA", 1);
140  else if (i==32) meMap[os.str()]->setBinLabel(i, "32", 1);
141  else if (i==33) meMap[os.str()]->setBinLabel(i, "1", 1);
142  else if (i==48) meMap[os.str()]->setBinLabel(i, "RollB", 1);
143  else if (i==64) meMap[os.str()]->setBinLabel(i, "32", 1);
144  else if (i==65) meMap[os.str()]->setBinLabel(i, "1", 1);
145  else if (i==80) meMap[os.str()]->setBinLabel(i, "RollC", 1);
146  else if (i==96) meMap[os.str()]->setBinLabel(i, "32", 1);
147  else meMap[os.str()]->setBinLabel(i, "", 1);
148  }
149  }
150  }
151 
152  os.str("");
153  os<<"BxDistribution_"<<ringType<<"_"<<ring<<"_Sector_"<<detId.sector();
154  myMe = dbe->get(WheelSummary+"/"+os.str());
155  if(myMe) meMap[os.str()]=myMe;
156  else meMap[os.str()] = dbe->book1D(os.str(), os.str(), 11, -5.5, 5.5);
157 
158  os.str("");
159  os<<"BXWithData_"<<ringType<<"_"<<ring<<"_Sector_"<<detId.sector();
160  myMe = dbe->get(WheelSummary+"/"+os.str());
161  if(myMe) meMap[os.str()]=myMe;
162  else meMap[os.str()] = dbe->book1D(os.str(), os.str(), 10, 0.5, 10.5);
163 
164  return meMap;
165 }
166 
167 
168 
169 std::map<std::string, MonitorElement*> RPCMonitorDigi::bookRegionRing(int region, int ring) {
170  std::map<std::string, MonitorElement*> meMap;
171  std::string ringType = (region == 0)?"Wheel":"Disk";
172 
174  std::stringstream os, label;
175 
176  rpcdqm::utils rpcUtils;
177 
178  // os<<"OccupancyXY_"<<ringType<<"_"<<ring;
179  // // meMap[os.str()] = dbe->book2D(os.str(), os.str(),63, -800, 800, 63, -800, 800);
180  // meMap[os.str()] = dbe->book2D(os.str(), os.str(),1000, -800, 800, 1000, -800, 800);
181 
182  os.str("");
183  os<<"ClusterSize_"<<ringType<<"_"<<ring;
184  meMap[os.str()] = dbe->book1D(os.str(), os.str(),20, 0.5, 20.5);
185 
186  os.str("");
187  os<<"1DOccupancy_"<<ringType<<"_"<<ring;
188  if (region!=0) meMap[os.str()] = dbe->book1D(os.str(), os.str(), 6, 0.5, 6.5);
189  else meMap[os.str()] = dbe->book1D(os.str(), os.str(), 12, 0.5, 12.5);
190  int sect=7;
191  if(region==0) sect=13;
192  for(int i=1; i<sect; i++) {
193  label.str("");
194  label<<"Sec"<<i;
195  //cout<<label.str()<<endl;
196  meMap[os.str()] ->setBinLabel(i, label.str(), 1); // to be corrected !!!!
197  }
198 
199  if(region==0) {
200 
201  os.str("");
202  os<<"Occupancy_Roll_vs_Sector_"<<ringType<<"_"<<ring;
203  meMap[os.str()] = dbe->book2D(os.str(), os.str(), 12, 0.5,12.5, 21, 0.5, 21.5);
204  rpcUtils.labelXAxisSector(meMap[os.str()]);
205  rpcUtils.labelYAxisRoll( meMap[os.str()], 0, ring);
206 
207 
208  }else{
209 
210  os.str("");
211  os<<"Occupancy_Ring_vs_Segment_"<<ringType<<"_"<<ring;
212  meMap[os.str()] = dbe->book2D(os.str(), os.str(), 36, 0.5,36.5, 6, 0.5, 6.5);
213 
214  rpcUtils.labelXAxisSegment(meMap[os.str()]);
215  rpcUtils.labelYAxisRing(meMap[os.str()], 2);
216 
217  }
218 
219  os.str("");
220  os<<"BxDistribution_"<<ringType<<"_"<<ring;
221  meMap[os.str()] = dbe->book1D(os.str(), os.str(), 11, -5.5, 5.5);
222 
223 
224  return meMap;
225 }
226 
227 //returns the number of strips in each roll
230  iSetup.get<MuonGeometryRecord>().get(rpcgeo);
231 
232  const RPCRoll * rpcRoll = rpcgeo->roll(id);
233 
234  if (rpcRoll)
235  return rpcRoll->nstrips();
236  else
237  return 1;
238 }
int i
Definition: DBlmapReader.cc:9
std::string globalFolder_
const std::string & label
Definition: MVAComputer.cc:186
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:519
std::map< std::string, MonitorElement * > bookRegionRing(int region, int ring)
Booking of MonitoringElemnt at Wheel/Disk level.
int nstrips() const
Definition: RPCRoll.cc:46
void labelXAxisSegment(MonitorElement *myMe)
Definition: utils.h:221
DQMStore * dbe
DQM store.
void tag(MonitorElement *me, unsigned int myTag)
Definition: DQMStore.cc:1156
virtual std::string name()
Definition: RPCGeomServ.cc:15
int ring() const
Definition: RPCDetId.h:74
std::map< std::string, MonitorElement * > bookDetUnitME(RPCDetId &, const edm::EventSetup &)
Booking of MonitoringElemnt for one RPCDetId (= roll)
unsigned int offset(bool)
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1270
void labelXAxisSector(MonitorElement *myMe)
Definition: utils.h:206
std::string folderStructure(RPCDetId detId)
const T & get() const
Definition: EventSetup.h:55
int stripsInRoll(RPCDetId &, const edm::EventSetup &)
int sector() const
Sector id: the group of chambers at same phi (and increasing r)
Definition: RPCDetId.h:104
void labelYAxisRoll(MonitorElement *myMe, int region, int ring)
Definition: utils.h:239
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:647
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:237
void labelYAxisRing(MonitorElement *myMe, int numberOfRings)
Definition: utils.h:266
int region() const
Region id: 0 for Barrel, +/-1 For +/- Endcap.
Definition: RPCDetId.h:65
int station() const
Definition: RPCDetId.h:98