CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
GlobalDigisHistogrammer.cc
Go to the documentation of this file.
1 
9 
11  : fName(""),
12  verbosity(0),
13  frequency(0),
14  label(""),
15  getAllProvenances(false),
16  printProvenanceInfo(false),
17  theCSCStripPedestalSum(0),
18  theCSCStripPedestalCount(0),
19  count(0) {
20  std::string MsgLoggerCat = "GlobalDigisHistogrammer_GlobalDigisHistogrammer";
21 
22  // get information from parameter set
23  fName = iPSet.getUntrackedParameter<std::string>("Name");
24  verbosity = iPSet.getUntrackedParameter<int>("Verbosity");
25  frequency = iPSet.getUntrackedParameter<int>("Frequency");
26  outputfile = iPSet.getParameter<std::string>("outputFile");
27  doOutput = iPSet.getParameter<bool>("DoOutput");
28  edm::ParameterSet m_Prov = iPSet.getParameter<edm::ParameterSet>("ProvenanceLookup");
29  getAllProvenances = m_Prov.getUntrackedParameter<bool>("GetAllProvenances");
30  printProvenanceInfo = m_Prov.getUntrackedParameter<bool>("PrintProvenanceInfo");
31 
32  // get Labels to use to extract information
33  GlobalDigisSrc_ = iPSet.getParameter<edm::InputTag>("GlobalDigisSrc");
34  // ECalEBSrc_ = iPSet.getParameter<edm::InputTag>("ECalEBSrc");
35  // ECalEESrc_ = iPSet.getParameter<edm::InputTag>("ECalEESrc");
36  // ECalESSrc_ = iPSet.getParameter<edm::InputTag>("ECalESSrc");
37  // HCalSrc_ = iPSet.getParameter<edm::InputTag>("HCalSrc");
38  // SiStripSrc_ = iPSet.getParameter<edm::InputTag>("SiStripSrc");
39  // SiPxlSrc_ = iPSet.getParameter<edm::InputTag>("SiPxlSrc");
40  // MuDTSrc_ = iPSet.getParameter<edm::InputTag>("MuDTSrc");
41  // MuCSCStripSrc_ = iPSet.getParameter<edm::InputTag>("MuCSCStripSrc");
42  // MuCSCWireSrc_ = iPSet.getParameter<edm::InputTag>("MuCSCWireSrc");
43 
44  // fix for consumes
45  GlobalDigisSrc_Token_ = consumes<PGlobalDigi>(iPSet.getParameter<edm::InputTag>("GlobalDigisSrc"));
46  // use value of first digit to determine default output level (inclusive)
47  // 0 is none, 1 is basic, 2 is fill output, 3 is gather output
48  verbosity %= 10;
49 
50  // create persistent object
51  // produces<PGlobalDigi>(label);
52 
53  // print out Parameter Set information being used
54  if (verbosity >= 0) {
55  edm::LogInfo(MsgLoggerCat) << "\n===============================\n"
56  << "Initialized as EDHistogrammer with parameter values:\n"
57  << " Name = " << fName << "\n"
58  << " Verbosity = " << verbosity << "\n"
59  << " Frequency = " << frequency << "\n"
60  << " OutputFile = " << outputfile << "\n"
61  << " DoOutput = " << doOutput << "\n"
62  << " GetProv = " << getAllProvenances << "\n"
63  << " PrintProv = " << printProvenanceInfo << "\n"
64  << " Global Src = " << GlobalDigisSrc_ << "\n"
65 
66  << "===============================\n";
67  }
68 }
69 
70 // set default constants
71 // ECal
72 
73 // ECalgainConv_[0] = 0.;
74 // ECalgainConv_[1] = 1.;
75 // ECalgainConv_[2] = 2.;
76 // ECalgainConv_[3] = 12.;
77 // ECalbarrelADCtoGeV_ = 0.035;
78 // ECalendcapADCtoGeV_ = 0.06;
79 
81  // monitor elements
82 
83  // Si Strip ***Done***
84  std::string SiStripString[19] = {"TECW1",
85  "TECW2",
86  "TECW3",
87  "TECW4",
88  "TECW5",
89  "TECW6",
90  "TECW7",
91  "TECW8",
92  "TIBL1",
93  "TIBL2",
94  "TIBL3",
95  "TIBL4",
96  "TIDW1",
97  "TIDW2",
98  "TIDW3",
99  "TOBL1",
100  "TOBL2",
101  "TOBL3",
102  "TOBL4"};
103 
104  for (int i = 0; i < 19; ++i) {
105  mehSiStripn[i] = nullptr;
106  mehSiStripADC[i] = nullptr;
107  mehSiStripStrip[i] = nullptr;
108  }
109 
110  ibooker.setCurrentFolder("GlobalDigisV/SiStrips");
111  for (int amend = 0; amend < 19; ++amend) {
112  mehSiStripn[amend] =
113  ibooker.book1D("hSiStripn_" + SiStripString[amend], SiStripString[amend] + " Digis", 500, 0., 1000.);
114 
115  mehSiStripn[amend]->setAxisTitle("Number of Digis", 1);
116  mehSiStripn[amend]->setAxisTitle("Count", 2);
117  mehSiStripADC[amend] =
118  ibooker.book1D("hSiStripADC_" + SiStripString[amend], SiStripString[amend] + " ADC", 150, 0.0, 300.);
119 
120  mehSiStripADC[amend]->setAxisTitle("ADC", 1);
121  mehSiStripADC[amend]->setAxisTitle("Count", 2);
122  mehSiStripStrip[amend] =
123  ibooker.book1D("hSiStripStripADC_" + SiStripString[amend], SiStripString[amend] + " Strip", 200, 0.0, 800.);
124  mehSiStripStrip[amend]->setAxisTitle("Strip Number", 1);
125  mehSiStripStrip[amend]->setAxisTitle("Count", 2);
126  }
127 
128  // HCal **DONE**
129  std::string HCalString[4] = {"HB", "HE", "HO", "HF"};
130  float calnUpper[4] = {3000., 3000., 3000., 2000.};
131  float calnLower[4] = {2000., 2000., 2000., 1000.};
132  float SHEUpper[4] = {0.05, .05, 0.05, 20};
133  float SHEvAEEUpper[4] = {5000, 5000, 5000, 20};
134  float SHEvAEELower[4] = {-5000, -5000, -5000, -20};
135  int SHEvAEEnBins[4] = {200, 200, 200, 40};
136  double ProfileUpper[4] = {1., 1., 1., 20.};
137 
138  for (int i = 0; i < 4; ++i) {
139  mehHcaln[i] = nullptr;
140  mehHcalAEE[i] = nullptr;
141  mehHcalSHE[i] = nullptr;
142  mehHcalAEESHE[i] = nullptr;
143  mehHcalSHEvAEE[i] = nullptr;
144  }
145 
146  ibooker.setCurrentFolder("GlobalDigisV/HCals");
147  for (int amend = 0; amend < 4; ++amend) {
148  mehHcaln[amend] = ibooker.book1D(
149  "hHcaln_" + HCalString[amend], HCalString[amend] + " digis", 1000, calnLower[amend], calnUpper[amend]);
150 
151  mehHcaln[amend]->setAxisTitle("Number of Digis", 1);
152  mehHcaln[amend]->setAxisTitle("Count", 2);
153  mehHcalAEE[amend] = ibooker.book1D("hHcalAEE_" + HCalString[amend], HCalString[amend] + "Cal AEE", 60, -10., 50.);
154 
155  mehHcalAEE[amend]->setAxisTitle("Analog Equivalent Energy", 1);
156  mehHcalAEE[amend]->setAxisTitle("Count", 2);
157  mehHcalSHE[amend] =
158  ibooker.book1D("hHcalSHE_" + HCalString[amend], HCalString[amend] + "Cal SHE", 100, 0.0, SHEUpper[amend]);
159 
160  mehHcalSHE[amend]->setAxisTitle("Simulated Hit Energy", 1);
161  mehHcalSHE[amend]->setAxisTitle("Count", 2);
162  mehHcalAEESHE[amend] = ibooker.book1D("hHcalAEESHE_" + HCalString[amend],
163  HCalString[amend] + "Cal AEE/SHE",
164  SHEvAEEnBins[amend],
165  SHEvAEELower[amend],
166  SHEvAEEUpper[amend]);
167 
168  mehHcalAEESHE[amend]->setAxisTitle("ADC / SHE", 1);
169  mehHcalAEESHE[amend]->setAxisTitle("Count", 2);
170 
171  //************ Not sure how to do Profile ME **************
172  mehHcalSHEvAEE[amend] = ibooker.bookProfile("hHcalSHEvAEE_" + HCalString[amend],
173  HCalString[amend] + "Cal SHE vs. AEE",
174  60,
175  (float)-10.,
176  (float)50.,
177  100,
178  (float)0.,
179  (float)ProfileUpper[amend],
180  "");
181 
182  mehHcalSHEvAEE[amend]->setAxisTitle("AEE / SHE", 1);
183  mehHcalSHEvAEE[amend]->setAxisTitle("SHE", 2);
184  }
185 
186  // Ecal **Done **
187  std::string ECalString[2] = {"EB", "EE"};
188 
189  for (int i = 0; i < 2; ++i) {
190  mehEcaln[i] = nullptr;
191  mehEcalAEE[i] = nullptr;
192  mehEcalSHE[i] = nullptr;
193  mehEcalMaxPos[i] = nullptr;
194  mehEcalMultvAEE[i] = nullptr;
195  mehEcalSHEvAEESHE[i] = nullptr;
196  }
197 
198  ibooker.setCurrentFolder("GlobalDigisV/ECals");
199  for (int amend = 0; amend < 2; ++amend) {
200  mehEcaln[amend] = ibooker.book1D("hEcaln_" + ECalString[amend], ECalString[amend] + " digis", 300, 1000., 4000.);
201 
202  mehEcaln[amend]->setAxisTitle("Number of Digis", 1);
203  mehEcaln[amend]->setAxisTitle("Count", 2);
204  mehEcalAEE[amend] = ibooker.book1D("hEcalAEE_" + ECalString[amend], ECalString[amend] + "Cal AEE", 100, 0., 1.);
205 
206  mehEcalAEE[amend]->setAxisTitle("Analog Equivalent Energy", 1);
207  mehEcalAEE[amend]->setAxisTitle("Count", 2);
208  mehEcalSHE[amend] = ibooker.book1D("hEcalSHE_" + ECalString[amend], ECalString[amend] + "Cal SHE", 50, 0., 5.);
209 
210  mehEcalSHE[amend]->setAxisTitle("Simulated Hit Energy", 1);
211  mehEcalSHE[amend]->setAxisTitle("Count", 2);
212  mehEcalMaxPos[amend] =
213  ibooker.book1D("hEcalMaxPos_" + ECalString[amend], ECalString[amend] + "Cal MaxPos", 10, 0., 10.);
214 
215  mehEcalMaxPos[amend]->setAxisTitle("Maximum Position", 1);
216  mehEcalMaxPos[amend]->setAxisTitle("Count", 2);
217 
218  //************ Not sure how to do Profile ME **************
219  mehEcalSHEvAEESHE[amend] = ibooker.bookProfile("hEcalSHEvAEESHE_" + ECalString[amend],
220  ECalString[amend] + "Cal SHE vs. AEE/SHE",
221  100,
222  (float)0.,
223  (float)10.,
224  50,
225  (float)0.,
226  (float)5.,
227  "");
228 
229  mehEcalSHEvAEESHE[amend]->setAxisTitle("AEE / SHE", 1);
230  mehEcalSHEvAEESHE[amend]->setAxisTitle("SHE", 2);
231  mehEcalMultvAEE[amend] = ibooker.bookProfile("hEcalMultvAEE_" + ECalString[amend],
232  ECalString[amend] + "Cal Multi vs. AEE",
233  100,
234  (float)0.,
235  (float)10.,
236  400,
237  (float)0.,
238  (float)4000.,
239  "");
240  mehEcalMultvAEE[amend]->setAxisTitle("Analog Equivalent Energy", 1);
241  mehEcalMultvAEE[amend]->setAxisTitle("Number of Digis", 2);
242  }
243 
244  mehEcaln[2] = nullptr;
245  mehEcaln[2] = ibooker.book1D("hEcaln_ES", "ESCAL digis", 100, 0., 500.);
246  mehEcaln[2]->setAxisTitle("Number of Digis", 1);
247  mehEcaln[2]->setAxisTitle("Count", 2);
248  std::string ADCNumber[3] = {"0", "1", "2"};
249  for (int i = 0; i < 3; ++i) {
250  mehEScalADC[i] = nullptr;
251  mehEScalADC[i] = ibooker.book1D("hEcalADC" + ADCNumber[i] + "_ES", "ESCAL ADC" + ADCNumber[i], 150, 950., 1500.);
252 
253  mehEScalADC[i]->setAxisTitle("ADC" + ADCNumber[i], 1);
254  mehEScalADC[i]->setAxisTitle("Count", 2);
255  }
256 
257  // Si Pixels ***DONE***
258  std::string SiPixelString[7] = {"BRL1", "BRL2", "BRL3", "FWD1n", "FWD1p", "FWD2n", "FWD2p"};
259 
260  for (int j = 0; j < 7; ++j) {
261  mehSiPixeln[j] = nullptr;
262  mehSiPixelADC[j] = nullptr;
263  mehSiPixelRow[j] = nullptr;
264  mehSiPixelCol[j] = nullptr;
265  }
266 
267  ibooker.setCurrentFolder("GlobalDigisV/SiPixels");
268  for (int amend = 0; amend < 7; ++amend) {
269  if (amend < 3) {
270  mehSiPixeln[amend] =
271  ibooker.book1D("hSiPixeln_" + SiPixelString[amend], SiPixelString[amend] + " Digis", 50, 0., 100.);
272  } else {
273  mehSiPixeln[amend] =
274  ibooker.book1D("hSiPixeln_" + SiPixelString[amend], SiPixelString[amend] + " Digis", 25, 0., 50.);
275  }
276 
277  mehSiPixeln[amend]->setAxisTitle("Number of Digis", 1);
278  mehSiPixeln[amend]->setAxisTitle("Count", 2);
279  mehSiPixelADC[amend] =
280  ibooker.book1D("hSiPixelADC_" + SiPixelString[amend], SiPixelString[amend] + " ADC", 150, 0.0, 300.);
281 
282  mehSiPixelADC[amend]->setAxisTitle("ADC", 1);
283  mehSiPixelADC[amend]->setAxisTitle("Count", 2);
284  mehSiPixelRow[amend] =
285  ibooker.book1D("hSiPixelRow_" + SiPixelString[amend], SiPixelString[amend] + " Row", 100, 0.0, 100.);
286 
287  mehSiPixelRow[amend]->setAxisTitle("Row Number", 1);
288  mehSiPixelRow[amend]->setAxisTitle("Count", 2);
289  mehSiPixelCol[amend] =
290  ibooker.book1D("hSiPixelColumn_" + SiPixelString[amend], SiPixelString[amend] + " Column", 200, 0.0, 500.);
291 
292  mehSiPixelCol[amend]->setAxisTitle("Column Number", 1);
293  mehSiPixelCol[amend]->setAxisTitle("Count", 2);
294  }
295 
296  // Muons ***DONE****
297  ibooker.setCurrentFolder("GlobalDigisV/Muons");
298  std::string MuonString[4] = {"MB1", "MB2", "MB3", "MB4"};
299 
300  for (int i = 0; i < 4; ++i) {
301  mehDtMuonn[i] = nullptr;
302  mehDtMuonLayer[i] = nullptr;
303  mehDtMuonTime[i] = nullptr;
304  mehDtMuonTimevLayer[i] = nullptr;
305  }
306 
307  for (int j = 0; j < 4; ++j) {
308  mehDtMuonn[j] = ibooker.book1D("hDtMuonn_" + MuonString[j], MuonString[j] + " digis", 25, 0., 50.);
309 
310  mehDtMuonn[j]->setAxisTitle("Number of Digis", 1);
311  mehDtMuonn[j]->setAxisTitle("Count", 2);
312  mehDtMuonLayer[j] = ibooker.book1D("hDtLayer_" + MuonString[j], MuonString[j] + " Layer", 12, 1., 13.);
313 
314  mehDtMuonLayer[j]->setAxisTitle("4 * (SuperLayer - 1) + Layer", 1);
315  mehDtMuonLayer[j]->setAxisTitle("Count", 2);
316  mehDtMuonTime[j] = ibooker.book1D("hDtMuonTime_" + MuonString[j], MuonString[j] + " Time", 300, 400., 1000.);
317 
318  mehDtMuonTime[j]->setAxisTitle("Time", 1);
319  mehDtMuonTime[j]->setAxisTitle("Count", 2);
320  mehDtMuonTimevLayer[j] = ibooker.bookProfile(
321  "hDtMuonTimevLayer_" + MuonString[j], MuonString[j] + " Time vs. Layer", 12, 1., 13., 300, 400., 1000., "");
322 
323  mehDtMuonTimevLayer[j]->setAxisTitle("4 * (SuperLayer - 1) + Layer", 1);
324  mehDtMuonTimevLayer[j]->setAxisTitle("Time", 2);
325  }
326 
327  // **** Have to do CSC and RPC now *****
328  // CSC
329  mehCSCStripn = nullptr;
330  mehCSCStripn = ibooker.book1D("hCSCStripn", "CSC Strip digis", 25, 0., 50.);
331  mehCSCStripn->setAxisTitle("Number of Digis", 1);
332  mehCSCStripn->setAxisTitle("Count", 2);
333 
334  mehCSCStripADC = nullptr;
335  mehCSCStripADC = ibooker.book1D("hCSCStripADC", "CSC Strip ADC", 110, 0., 1100.);
336  mehCSCStripADC->setAxisTitle("ADC", 1);
337  mehCSCStripADC->setAxisTitle("Count", 2);
338 
339  mehCSCWiren = nullptr;
340  mehCSCWiren = ibooker.book1D("hCSCWiren", "CSC Wire digis", 25, 0., 50.);
341  mehCSCWiren->setAxisTitle("Number of Digis", 1);
342  mehCSCWiren->setAxisTitle("Count", 2);
343 
344  mehCSCWireTime = nullptr;
345  mehCSCWiren = ibooker.book1D("hCSCWireTime", "CSC Wire Time", 10, 0., 10.);
346  mehCSCWiren->setAxisTitle("Time", 1);
347  mehCSCWiren->setAxisTitle("Count", 2);
348 
349 } // close bookHistograms
350 
352 
354  std::string MsgLoggerCat = "GlobalDigisHistogrammer_analyze";
355 
356  // keep track of number of events processed
357  ++count;
358 
359  // get event id information
360  edm::RunNumber_t nrun = iEvent.id().run();
361  edm::EventNumber_t nevt = iEvent.id().event();
362 
363  if (verbosity > 0) {
364  edm::LogInfo(MsgLoggerCat) << "Processing run " << nrun << ", event " << nevt << " (" << count << " events total)";
365  } else if (verbosity == 0) {
366  if (nevt % frequency == 0 || nevt == 1) {
367  edm::LogInfo(MsgLoggerCat) << "Processing run " << nrun << ", event " << nevt << " (" << count
368  << " events total)";
369  }
370  }
371 
372  // clear event holders
373  // clear();
374 
375  // look at information available in the event
376  if (getAllProvenances) {
377  std::vector<const edm::StableProvenance *> AllProv;
378  iEvent.getAllStableProvenance(AllProv);
379 
380  if (verbosity >= 0)
381  edm::LogInfo(MsgLoggerCat) << "Number of Provenances = " << AllProv.size();
382 
383  if (printProvenanceInfo && (verbosity >= 0)) {
384  TString eventout("\nProvenance info:\n");
385 
386  for (unsigned int i = 0; i < AllProv.size(); ++i) {
387  eventout += "\n ******************************";
388  eventout += "\n Module : ";
389  // eventout += (AllProv[i]->product).moduleLabel();
390  eventout += AllProv[i]->moduleLabel();
391  eventout += "\n ProductID : ";
392  // eventout += (AllProv[i]->product).productID_.id_;
393  eventout += AllProv[i]->productID().id();
394  eventout += "\n ClassName : ";
395  // eventout += (AllProv[i]->product).fullClassName_;
396  eventout += AllProv[i]->className();
397  eventout += "\n InstanceName : ";
398  // eventout += (AllProv[i]->product).productInstanceName_;
399  eventout += AllProv[i]->productInstanceName();
400  eventout += "\n BranchName : ";
401  // eventout += (AllProv[i]->product).branchName_;
402  eventout += AllProv[i]->branchName();
403  }
404  eventout += "\n ******************************\n";
405  edm::LogInfo(MsgLoggerCat) << eventout << "\n";
406  printProvenanceInfo = false;
407  getAllProvenances = false;
408  }
409  edm::Handle<PGlobalDigi> srcGlobalDigis;
410  iEvent.getByToken(GlobalDigisSrc_Token_, srcGlobalDigis);
411  if (!srcGlobalDigis.isValid()) {
412  edm::LogWarning(MsgLoggerCat) << "Unable to find PGlobalDigis in event!";
413  return;
414  }
415 
416  int nEBCalDigis = srcGlobalDigis->getnEBCalDigis();
417  int nEECalDigis = srcGlobalDigis->getnEECalDigis();
418  int nESCalDigis = srcGlobalDigis->getnESCalDigis();
419 
420  int nHBCalDigis = srcGlobalDigis->getnHBCalDigis();
421  int nHECalDigis = srcGlobalDigis->getnHECalDigis();
422  int nHOCalDigis = srcGlobalDigis->getnHOCalDigis();
423  int nHFCalDigis = srcGlobalDigis->getnHFCalDigis();
424 
425  int nTIBL1Digis = srcGlobalDigis->getnTIBL1Digis();
426  int nTIBL2Digis = srcGlobalDigis->getnTIBL2Digis();
427  int nTIBL3Digis = srcGlobalDigis->getnTIBL3Digis();
428  int nTIBL4Digis = srcGlobalDigis->getnTIBL4Digis();
429  int nTOBL1Digis = srcGlobalDigis->getnTOBL1Digis();
430  int nTOBL2Digis = srcGlobalDigis->getnTOBL2Digis();
431  int nTOBL3Digis = srcGlobalDigis->getnTOBL3Digis();
432  int nTOBL4Digis = srcGlobalDigis->getnTOBL4Digis();
433  int nTIDW1Digis = srcGlobalDigis->getnTIDW1Digis();
434  int nTIDW2Digis = srcGlobalDigis->getnTIDW2Digis();
435  int nTIDW3Digis = srcGlobalDigis->getnTIDW3Digis();
436  int nTECW1Digis = srcGlobalDigis->getnTECW1Digis();
437  int nTECW2Digis = srcGlobalDigis->getnTECW2Digis();
438  int nTECW3Digis = srcGlobalDigis->getnTECW3Digis();
439  int nTECW4Digis = srcGlobalDigis->getnTECW4Digis();
440  int nTECW5Digis = srcGlobalDigis->getnTECW5Digis();
441  int nTECW6Digis = srcGlobalDigis->getnTECW6Digis();
442  int nTECW7Digis = srcGlobalDigis->getnTECW7Digis();
443  int nTECW8Digis = srcGlobalDigis->getnTECW8Digis();
444 
445  int nBRL1Digis = srcGlobalDigis->getnBRL1Digis();
446  int nBRL2Digis = srcGlobalDigis->getnBRL2Digis();
447  int nBRL3Digis = srcGlobalDigis->getnBRL3Digis();
448  int nFWD1nDigis = srcGlobalDigis->getnFWD1nDigis();
449  int nFWD1pDigis = srcGlobalDigis->getnFWD1pDigis();
450  int nFWD2nDigis = srcGlobalDigis->getnFWD2nDigis();
451  int nFWD2pDigis = srcGlobalDigis->getnFWD2pDigis();
452 
453  int nMB1Digis = srcGlobalDigis->getnMB1Digis();
454  int nMB2Digis = srcGlobalDigis->getnMB2Digis();
455  int nMB3Digis = srcGlobalDigis->getnMB3Digis();
456  int nMB4Digis = srcGlobalDigis->getnMB4Digis();
457 
458  int nCSCstripDigis = srcGlobalDigis->getnCSCstripDigis();
459 
460  int nCSCwireDigis = srcGlobalDigis->getnCSCwireDigis();
461 
462  // get Ecal info
463  std::vector<PGlobalDigi::ECalDigi> EECalDigis = srcGlobalDigis->getEECalDigis();
464  mehEcaln[0]->Fill((float)nEECalDigis);
465  for (unsigned int i = 0; i < EECalDigis.size(); ++i) {
466  mehEcalAEE[0]->Fill(EECalDigis[i].AEE);
467  mehEcalMaxPos[0]->Fill(EECalDigis[i].maxPos);
468  mehEcalMultvAEE[0]->Fill(EECalDigis[i].AEE, (float)nEECalDigis, 1);
469  if (EECalDigis[i].SHE != 0.) {
470  mehEcalSHE[0]->Fill(EECalDigis[i].SHE);
471  mehEcalSHEvAEESHE[0]->Fill(EECalDigis[i].AEE / EECalDigis[i].SHE, EECalDigis[i].SHE, 1);
472  }
473  }
474 
475  std::vector<PGlobalDigi::ECalDigi> EBCalDigis = srcGlobalDigis->getEBCalDigis();
476  mehEcaln[1]->Fill((float)nEBCalDigis);
477  for (unsigned int i = 0; i < EBCalDigis.size(); ++i) {
478  mehEcalAEE[1]->Fill(EBCalDigis[i].AEE);
479  mehEcalMaxPos[1]->Fill(EBCalDigis[i].maxPos);
480  mehEcalMultvAEE[1]->Fill(EBCalDigis[i].AEE, (float)nEBCalDigis, 1);
481  if (EBCalDigis[i].SHE != 0.) {
482  mehEcalSHE[1]->Fill(EBCalDigis[i].SHE);
483  mehEcalSHEvAEESHE[1]->Fill(EBCalDigis[i].AEE / EBCalDigis[i].SHE, EBCalDigis[i].SHE, 1);
484  }
485  }
486 
487  std::vector<PGlobalDigi::ESCalDigi> ESCalDigis = srcGlobalDigis->getESCalDigis();
488  mehEcaln[2]->Fill((float)nESCalDigis);
489  for (unsigned int i = 0; i < ESCalDigis.size(); ++i) {
490  mehEScalADC[0]->Fill(ESCalDigis[i].ADC0);
491  mehEScalADC[1]->Fill(ESCalDigis[i].ADC1);
492  mehEScalADC[2]->Fill(ESCalDigis[i].ADC2);
493  }
494 
495  // Get HCal info
496  std::vector<PGlobalDigi::HCalDigi> HBCalDigis = srcGlobalDigis->getHBCalDigis();
497  mehHcaln[0]->Fill((float)nHBCalDigis);
498  for (unsigned int i = 0; i < HBCalDigis.size(); ++i) {
499  mehHcalAEE[0]->Fill(HBCalDigis[i].AEE);
500  if (HBCalDigis[i].SHE != 0.) {
501  mehHcalSHE[0]->Fill(HBCalDigis[i].SHE);
502  mehHcalAEESHE[0]->Fill(HBCalDigis[i].AEE / HBCalDigis[i].SHE);
503  mehHcalSHEvAEE[0]->Fill(HBCalDigis[i].AEE, HBCalDigis[i].SHE, 1);
504  }
505  }
506  std::vector<PGlobalDigi::HCalDigi> HECalDigis = srcGlobalDigis->getHECalDigis();
507  mehHcaln[1]->Fill((float)nHECalDigis);
508  for (unsigned int i = 0; i < HECalDigis.size(); ++i) {
509  mehHcalAEE[1]->Fill(HECalDigis[i].AEE);
510  if (HECalDigis[i].SHE != 0.) {
511  mehHcalSHE[1]->Fill(HECalDigis[i].SHE);
512  mehHcalAEESHE[1]->Fill(HECalDigis[i].AEE / HECalDigis[i].SHE);
513  mehHcalSHEvAEE[1]->Fill(HECalDigis[i].AEE, HECalDigis[i].SHE, 1);
514  }
515  }
516 
517  std::vector<PGlobalDigi::HCalDigi> HOCalDigis = srcGlobalDigis->getHOCalDigis();
518  mehHcaln[2]->Fill((float)nHOCalDigis);
519  for (unsigned int i = 0; i < HOCalDigis.size(); ++i) {
520  mehHcalAEE[2]->Fill(HOCalDigis[i].AEE);
521  if (HOCalDigis[i].SHE != 0.) {
522  mehHcalSHE[2]->Fill(HOCalDigis[i].SHE);
523  mehHcalAEESHE[2]->Fill(HOCalDigis[i].AEE / HOCalDigis[i].SHE);
524  mehHcalSHEvAEE[2]->Fill(HOCalDigis[i].AEE, HOCalDigis[i].SHE, 1);
525  }
526  }
527 
528  std::vector<PGlobalDigi::HCalDigi> HFCalDigis = srcGlobalDigis->getHFCalDigis();
529  mehHcaln[3]->Fill((float)nHFCalDigis);
530  for (unsigned int i = 0; i < HFCalDigis.size(); ++i) {
531  mehHcalAEE[3]->Fill(HFCalDigis[i].AEE);
532  if (HFCalDigis[i].SHE != 0.) {
533  mehHcalSHE[3]->Fill(HFCalDigis[i].SHE);
534  mehHcalAEESHE[3]->Fill(HFCalDigis[i].AEE / HFCalDigis[i].SHE);
535  mehHcalSHEvAEE[3]->Fill(HFCalDigis[i].AEE, HFCalDigis[i].SHE, 1);
536  }
537  }
538 
539  // get SiStrip info
540  std::vector<PGlobalDigi::SiStripDigi> TIBL1Digis = srcGlobalDigis->getTIBL1Digis();
541  mehSiStripn[0]->Fill((float)nTIBL1Digis);
542  for (unsigned int i = 0; i < TIBL1Digis.size(); ++i) {
543  mehSiStripADC[0]->Fill(TIBL1Digis[i].ADC);
544  mehSiStripStrip[0]->Fill(TIBL1Digis[i].STRIP);
545  }
546 
547  std::vector<PGlobalDigi::SiStripDigi> TIBL2Digis = srcGlobalDigis->getTIBL2Digis();
548  mehSiStripn[1]->Fill((float)nTIBL2Digis);
549  for (unsigned int i = 0; i < TIBL2Digis.size(); ++i) {
550  mehSiStripADC[1]->Fill(TIBL2Digis[i].ADC);
551  mehSiStripStrip[1]->Fill(TIBL2Digis[i].STRIP);
552  }
553 
554  std::vector<PGlobalDigi::SiStripDigi> TIBL3Digis = srcGlobalDigis->getTIBL3Digis();
555  mehSiStripn[2]->Fill((float)nTIBL3Digis);
556  for (unsigned int i = 0; i < TIBL3Digis.size(); ++i) {
557  mehSiStripADC[2]->Fill(TIBL3Digis[i].ADC);
558  mehSiStripStrip[2]->Fill(TIBL3Digis[i].STRIP);
559  }
560 
561  std::vector<PGlobalDigi::SiStripDigi> TIBL4Digis = srcGlobalDigis->getTIBL4Digis();
562  mehSiStripn[3]->Fill((float)nTIBL4Digis);
563  for (unsigned int i = 0; i < TIBL4Digis.size(); ++i) {
564  mehSiStripADC[3]->Fill(TIBL4Digis[i].ADC);
565  mehSiStripStrip[3]->Fill(TIBL4Digis[i].STRIP);
566  }
567 
568  std::vector<PGlobalDigi::SiStripDigi> TOBL1Digis = srcGlobalDigis->getTOBL1Digis();
569  mehSiStripn[4]->Fill((float)nTOBL1Digis);
570  for (unsigned int i = 0; i < TOBL1Digis.size(); ++i) {
571  mehSiStripADC[4]->Fill(TOBL1Digis[i].ADC);
572  mehSiStripStrip[4]->Fill(TOBL1Digis[i].STRIP);
573  }
574 
575  std::vector<PGlobalDigi::SiStripDigi> TOBL2Digis = srcGlobalDigis->getTOBL2Digis();
576  mehSiStripn[5]->Fill((float)nTOBL2Digis);
577  for (unsigned int i = 0; i < TOBL2Digis.size(); ++i) {
578  mehSiStripADC[5]->Fill(TOBL2Digis[i].ADC);
579  mehSiStripStrip[5]->Fill(TOBL2Digis[i].STRIP);
580  }
581 
582  std::vector<PGlobalDigi::SiStripDigi> TOBL3Digis = srcGlobalDigis->getTOBL3Digis();
583  mehSiStripn[6]->Fill((float)nTOBL3Digis);
584  for (unsigned int i = 0; i < TOBL3Digis.size(); ++i) {
585  mehSiStripADC[6]->Fill(TOBL3Digis[i].ADC);
586  mehSiStripStrip[6]->Fill(TOBL3Digis[i].STRIP);
587  }
588 
589  std::vector<PGlobalDigi::SiStripDigi> TOBL4Digis = srcGlobalDigis->getTOBL4Digis();
590  mehSiStripn[7]->Fill((float)nTOBL4Digis);
591  for (unsigned int i = 0; i < TOBL4Digis.size(); ++i) {
592  mehSiStripADC[7]->Fill(TOBL4Digis[i].ADC);
593  mehSiStripStrip[7]->Fill(TOBL4Digis[i].STRIP);
594  }
595 
596  std::vector<PGlobalDigi::SiStripDigi> TIDW1Digis = srcGlobalDigis->getTIDW1Digis();
597  mehSiStripn[8]->Fill((float)nTIDW1Digis);
598  for (unsigned int i = 0; i < TIDW1Digis.size(); ++i) {
599  mehSiStripADC[8]->Fill(TIDW1Digis[i].ADC);
600  mehSiStripStrip[8]->Fill(TIDW1Digis[i].STRIP);
601  }
602 
603  std::vector<PGlobalDigi::SiStripDigi> TIDW2Digis = srcGlobalDigis->getTIDW2Digis();
604  mehSiStripn[9]->Fill((float)nTIDW2Digis);
605  for (unsigned int i = 0; i < TIDW2Digis.size(); ++i) {
606  mehSiStripADC[9]->Fill(TIDW2Digis[i].ADC);
607  mehSiStripStrip[9]->Fill(TIDW2Digis[i].STRIP);
608  }
609 
610  std::vector<PGlobalDigi::SiStripDigi> TIDW3Digis = srcGlobalDigis->getTIDW3Digis();
611  mehSiStripn[10]->Fill((float)nTIDW3Digis);
612  for (unsigned int i = 0; i < TIDW3Digis.size(); ++i) {
613  mehSiStripADC[10]->Fill(TIDW3Digis[i].ADC);
614  mehSiStripStrip[10]->Fill(TIDW3Digis[i].STRIP);
615  }
616 
617  std::vector<PGlobalDigi::SiStripDigi> TECW1Digis = srcGlobalDigis->getTECW1Digis();
618  mehSiStripn[11]->Fill((float)nTECW1Digis);
619  for (unsigned int i = 0; i < TECW1Digis.size(); ++i) {
620  mehSiStripADC[11]->Fill(TECW1Digis[i].ADC);
621  mehSiStripStrip[11]->Fill(TECW1Digis[i].STRIP);
622  }
623 
624  std::vector<PGlobalDigi::SiStripDigi> TECW2Digis = srcGlobalDigis->getTECW2Digis();
625  mehSiStripn[12]->Fill((float)nTECW2Digis);
626  for (unsigned int i = 0; i < TECW2Digis.size(); ++i) {
627  mehSiStripADC[12]->Fill(TECW2Digis[i].ADC);
628  mehSiStripStrip[12]->Fill(TECW2Digis[i].STRIP);
629  }
630 
631  std::vector<PGlobalDigi::SiStripDigi> TECW3Digis = srcGlobalDigis->getTECW3Digis();
632  mehSiStripn[13]->Fill((float)nTECW3Digis);
633  for (unsigned int i = 0; i < TECW3Digis.size(); ++i) {
634  mehSiStripADC[13]->Fill(TECW3Digis[i].ADC);
635  mehSiStripStrip[13]->Fill(TECW3Digis[i].STRIP);
636  }
637 
638  std::vector<PGlobalDigi::SiStripDigi> TECW4Digis = srcGlobalDigis->getTECW4Digis();
639  mehSiStripn[14]->Fill((float)nTECW4Digis);
640  for (unsigned int i = 0; i < TECW4Digis.size(); ++i) {
641  mehSiStripADC[14]->Fill(TECW4Digis[i].ADC);
642  mehSiStripStrip[14]->Fill(TECW4Digis[i].STRIP);
643  }
644 
645  std::vector<PGlobalDigi::SiStripDigi> TECW5Digis = srcGlobalDigis->getTECW5Digis();
646  mehSiStripn[15]->Fill((float)nTECW5Digis);
647  for (unsigned int i = 0; i < TECW5Digis.size(); ++i) {
648  mehSiStripADC[15]->Fill(TECW5Digis[i].ADC);
649  mehSiStripStrip[15]->Fill(TECW5Digis[i].STRIP);
650  }
651 
652  std::vector<PGlobalDigi::SiStripDigi> TECW6Digis = srcGlobalDigis->getTECW6Digis();
653  mehSiStripn[16]->Fill((float)nTECW6Digis);
654  for (unsigned int i = 0; i < TECW6Digis.size(); ++i) {
655  mehSiStripADC[16]->Fill(TECW6Digis[i].ADC);
656  mehSiStripStrip[16]->Fill(TECW6Digis[i].STRIP);
657  }
658 
659  std::vector<PGlobalDigi::SiStripDigi> TECW7Digis = srcGlobalDigis->getTECW7Digis();
660  mehSiStripn[17]->Fill((float)nTECW7Digis);
661  for (unsigned int i = 0; i < TECW7Digis.size(); ++i) {
662  mehSiStripADC[17]->Fill(TECW7Digis[i].ADC);
663  mehSiStripStrip[17]->Fill(TECW7Digis[i].STRIP);
664  }
665 
666  std::vector<PGlobalDigi::SiStripDigi> TECW8Digis = srcGlobalDigis->getTECW8Digis();
667  mehSiStripn[18]->Fill((float)nTECW8Digis);
668  for (unsigned int i = 0; i < TECW8Digis.size(); ++i) {
669  mehSiStripADC[18]->Fill(TECW8Digis[i].ADC);
670  mehSiStripStrip[18]->Fill(TECW8Digis[i].STRIP);
671  }
672 
673  // get SiPixel info
674  std::vector<PGlobalDigi::SiPixelDigi> BRL1Digis = srcGlobalDigis->getBRL1Digis();
675  mehSiPixeln[0]->Fill((float)nBRL1Digis);
676  for (unsigned int i = 0; i < BRL1Digis.size(); ++i) {
677  mehSiPixelADC[0]->Fill(BRL1Digis[i].ADC);
678  mehSiPixelRow[0]->Fill(BRL1Digis[i].ROW);
679  mehSiPixelCol[0]->Fill(BRL1Digis[i].COLUMN);
680  }
681 
682  std::vector<PGlobalDigi::SiPixelDigi> BRL2Digis = srcGlobalDigis->getBRL2Digis();
683  mehSiPixeln[1]->Fill((float)nBRL2Digis);
684  for (unsigned int i = 0; i < BRL2Digis.size(); ++i) {
685  mehSiPixelADC[1]->Fill(BRL2Digis[i].ADC);
686  mehSiPixelRow[1]->Fill(BRL2Digis[i].ROW);
687  mehSiPixelCol[1]->Fill(BRL2Digis[i].COLUMN);
688  }
689 
690  std::vector<PGlobalDigi::SiPixelDigi> BRL3Digis = srcGlobalDigis->getBRL3Digis();
691  mehSiPixeln[2]->Fill((float)nBRL3Digis);
692  for (unsigned int i = 0; i < BRL3Digis.size(); ++i) {
693  mehSiPixelADC[2]->Fill(BRL3Digis[i].ADC);
694  mehSiPixelRow[2]->Fill(BRL3Digis[i].ROW);
695  mehSiPixelCol[2]->Fill(BRL3Digis[i].COLUMN);
696  }
697 
698  std::vector<PGlobalDigi::SiPixelDigi> FWD1pDigis = srcGlobalDigis->getFWD1pDigis();
699  mehSiPixeln[3]->Fill((float)nFWD1pDigis);
700  for (unsigned int i = 0; i < FWD1pDigis.size(); ++i) {
701  mehSiPixelADC[3]->Fill(FWD1pDigis[i].ADC);
702  mehSiPixelRow[3]->Fill(FWD1pDigis[i].ROW);
703  mehSiPixelCol[3]->Fill(FWD1pDigis[i].COLUMN);
704  }
705 
706  std::vector<PGlobalDigi::SiPixelDigi> FWD1nDigis = srcGlobalDigis->getFWD1nDigis();
707  mehSiPixeln[4]->Fill((float)nFWD1nDigis);
708  for (unsigned int i = 0; i < FWD1nDigis.size(); ++i) {
709  mehSiPixelADC[4]->Fill(FWD1nDigis[i].ADC);
710  mehSiPixelRow[4]->Fill(FWD1nDigis[i].ROW);
711  mehSiPixelCol[4]->Fill(FWD1nDigis[i].COLUMN);
712  }
713 
714  std::vector<PGlobalDigi::SiPixelDigi> FWD2pDigis = srcGlobalDigis->getFWD2pDigis();
715  mehSiPixeln[5]->Fill((float)nFWD2pDigis);
716  for (unsigned int i = 0; i < FWD2pDigis.size(); ++i) {
717  mehSiPixelADC[5]->Fill(FWD2pDigis[i].ADC);
718  mehSiPixelRow[5]->Fill(FWD2pDigis[i].ROW);
719  mehSiPixelCol[5]->Fill(FWD2pDigis[i].COLUMN);
720  }
721 
722  std::vector<PGlobalDigi::SiPixelDigi> FWD2nDigis = srcGlobalDigis->getFWD2nDigis();
723  mehSiPixeln[6]->Fill((float)nFWD2nDigis);
724  for (unsigned int i = 0; i < FWD2nDigis.size(); ++i) {
725  mehSiPixelADC[6]->Fill(FWD2nDigis[i].ADC);
726  mehSiPixelRow[6]->Fill(FWD2nDigis[i].ROW);
727  mehSiPixelCol[6]->Fill(FWD2nDigis[i].COLUMN);
728  }
729 
730  // get DtMuon info
731  std::vector<PGlobalDigi::DTDigi> MB1Digis = srcGlobalDigis->getMB1Digis();
732  mehDtMuonn[0]->Fill((float)nMB1Digis);
733  for (unsigned int i = 0; i < MB1Digis.size(); ++i) {
734  float layer = 4.0 * (MB1Digis[i].SLAYER - 1.0) + MB1Digis[i].LAYER;
735  mehDtMuonLayer[0]->Fill(layer);
736  mehDtMuonTime[0]->Fill(MB1Digis[i].TIME);
737  mehDtMuonTimevLayer[0]->Fill(layer, MB1Digis[i].TIME, 1);
738  }
739 
740  std::vector<PGlobalDigi::DTDigi> MB2Digis = srcGlobalDigis->getMB2Digis();
741  mehDtMuonn[1]->Fill((float)nMB2Digis);
742  for (unsigned int i = 0; i < MB2Digis.size(); ++i) {
743  float layer = 4.0 * (MB2Digis[i].SLAYER - 1.0) + MB2Digis[i].LAYER;
744  mehDtMuonLayer[1]->Fill(layer);
745  mehDtMuonTime[1]->Fill(MB2Digis[i].TIME);
746  mehDtMuonTimevLayer[1]->Fill(layer, MB2Digis[i].TIME, 1);
747  }
748 
749  std::vector<PGlobalDigi::DTDigi> MB3Digis = srcGlobalDigis->getMB3Digis();
750  mehDtMuonn[2]->Fill((float)nMB3Digis);
751  for (unsigned int i = 0; i < MB3Digis.size(); ++i) {
752  float layer = 4.0 * (MB3Digis[i].SLAYER - 1.0) + MB3Digis[i].LAYER;
753  mehDtMuonLayer[2]->Fill(layer);
754  mehDtMuonTime[2]->Fill(MB3Digis[i].TIME);
755  mehDtMuonTimevLayer[2]->Fill(layer, MB3Digis[i].TIME, 1);
756  }
757 
758  std::vector<PGlobalDigi::DTDigi> MB4Digis = srcGlobalDigis->getMB4Digis();
759  mehDtMuonn[3]->Fill((float)nMB4Digis);
760  for (unsigned int i = 0; i < MB4Digis.size(); ++i) {
761  float layer = 4.0 * (MB4Digis[i].SLAYER - 1.0) + MB4Digis[i].LAYER;
762  mehDtMuonLayer[3]->Fill(layer);
763  mehDtMuonTime[3]->Fill(MB4Digis[i].TIME);
764  mehDtMuonTimevLayer[3]->Fill(layer, MB4Digis[i].TIME, 1);
765  }
766 
767  // get CSC Strip info
768  std::vector<PGlobalDigi::CSCstripDigi> CSCstripDigis = srcGlobalDigis->getCSCstripDigis();
769  mehCSCStripn->Fill((float)nCSCstripDigis);
770  for (unsigned int i = 0; i < CSCstripDigis.size(); ++i) {
771  mehCSCStripADC->Fill(CSCstripDigis[i].ADC);
772  }
773 
774  // get CSC Wire info
775  std::vector<PGlobalDigi::CSCwireDigi> CSCwireDigis = srcGlobalDigis->getCSCwireDigis();
776  mehCSCWiren->Fill((float)nCSCwireDigis);
777  for (unsigned int i = 0; i < CSCwireDigis.size(); ++i) {
778  mehCSCWireTime->Fill(CSCwireDigis[i].TIME);
779  }
780  if (verbosity > 0)
781  edm::LogInfo(MsgLoggerCat) << "Done gathering data from event.";
782 
783  } // end loop through events
784 }
785 
786 // define this as a plug-in
787 // DEFINE_FWK_MODULE(GlobalDigisHistogrammer);
RunNumber_t run() const
Definition: EventID.h:38
EventNumber_t event() const
Definition: EventID.h:40
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * mehDtMuonLayer[4]
MonitorElement * mehEcalMultvAEE[2]
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
unsigned long long EventNumber_t
MonitorElement * mehHcalAEESHE[4]
MonitorElement * mehSiPixelCol[7]
MonitorElement * mehHcalSHEvAEE[4]
MonitorElement * mehHcalSHE[4]
MonitorElement * mehDtMuonTimevLayer[4]
constexpr std::array< uint8_t, layerIndexSize > layer
GlobalDigisHistogrammer(const edm::ParameterSet &)
void Fill(long long x)
char const * label
MonitorElement * mehSiStripADC[19]
int iEvent
Definition: GenABIO.cc:224
MonitorElement * mehEcalSHEvAEESHE[2]
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())
Definition: DQMStore.h:399
MonitorElement * mehEcalSHE[2]
MonitorElement * mehHcalAEE[4]
MonitorElement * mehSiPixelRow[7]
MonitorElement * mehSiPixelADC[7]
string TIME
Definition: hcal_runs.py:19
bool isValid() const
Definition: HandleBase.h:70
Log< level::Info, false > LogInfo
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
MonitorElement * mehDtMuonTime[4]
MonitorElement * mehSiStripStrip[19]
edm::EventID id() const
Definition: EventBase.h:59
MonitorElement * mehEScalADC[3]
MonitorElement * mehEcalAEE[2]
MonitorElement * mehEcalMaxPos[2]
unsigned int RunNumber_t
edm::EDGetTokenT< PGlobalDigi > GlobalDigisSrc_Token_
MonitorElement * mehSiStripn[19]
Log< level::Warning, false > LogWarning
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: Run.h:45
void getAllStableProvenance(std::vector< StableProvenance const * > &provenances) const
Definition: Event.cc:136
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)