CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
L1TdeRCT.cc
Go to the documentation of this file.
1 /*
2  * \file L1TdeRCT.cc
3  *
4  * version 0.0 A.Savin 2008/04/26
5  * version 1.0 A.Savin 2008/05/05
6  * this version contains single channel histos and 1D efficiencies
7  */
8 
9 
10 
11 
12 
14 
15 // GCT and RCT data formats
18 
19 // TPGs
20 
23 
26 
32 
33 #include "TF2.h"
34 
35 #include <iostream>
36 #include <bitset>
37 
40 
41 
42 using namespace edm;
43 using namespace std;
44 
45 const unsigned int PHIBINS = 18;
46 const float PHIMIN = -0.5;
47 const float PHIMAX = 17.5;
48 
49 const unsigned int ETABINS = 22;
50 const float ETAMIN = -0.5;
51 const float ETAMAX = 21.5;
52 
53 const unsigned int BITETABINS = 44;
54 const float BITETAMIN = 0;
55 const float BITETAMAX = 22;
56 
57 const unsigned int BITPHIBINS = 72;
58 const float BITPHIMIN = 0;
59 const float BITPHIMAX = 18;
60 
61 const unsigned int BITRPHIBINS = 90;
62 const float BITRPHIMIN = 0;
63 const float BITRPHIMAX = 18;
64 
65 const unsigned int TPGPHIBINS = 72;
66 const float TPGPHIMIN = -0.5;
67 const float TPGPHIMAX = 71.5;
68 
69 const unsigned int TPGETABINS = 64;
70 const float TPGETAMIN = -32.;
71 const float TPGETAMAX = 32.;
72 
73 const unsigned int TPGRANK = 256;
74 const float TPGRANKMIN = -.5;
75 const float TPGRANKMAX = 255.5;
76 
77 const unsigned int DEBINS = 127;
78 const float DEMIN = -63.5;
79 const float DEMAX = 63.5;
80 
81 const unsigned int ELBINS = 64;
82 const float ELMIN = -.5;
83 const float ELMAX = 63.5;
84 
85 const unsigned int HCALBINS = 1024;
86 const float HCALMIN = -.5;
87 const float HCALMAX = 1023.5;
88 
89 const unsigned int PhiEtaMax = 396;
90 const unsigned int CHNLBINS = 396;
91 const float CHNLMIN = -0.5;
92 const float CHNLMAX = 395.5;
93 
94 bool first = true ;
95 
96 
97 const int L1TdeRCT::crateFED[90]=
98  {613, 614, 603, 702, 718,
99  611, 612, 602, 700, 718,
100  627, 610, 601,716, 722,
101  625, 626, 609, 714, 722,
102  623, 624, 608, 712, 722,
103  621, 622, 607, 710, 720,
104  619, 620, 606, 708, 720,
105  617, 618, 605, 706, 720,
106  615, 616, 604, 704, 718,
107  631, 632, 648, 703, 719,
108  629, 630, 647, 701, 719,
109  645, 628, 646, 717, 723,
110  643, 644, 654, 715, 723,
111  641, 642, 653, 713, 723,
112  639, 640, 652, 711, 721,
113  637, 638, 651, 709, 721,
114  635, 636, 650, 707, 721,
115  633, 634, 649, 705, 719
116 };
117 
118 
119 
121  rctSourceEmul_( ps.getParameter< InputTag >("rctSourceEmul") ),
122  rctSourceData_( ps.getParameter< InputTag >("rctSourceData") ),
123  ecalTPGData_( ps.getParameter< InputTag >("ecalTPGData") ),
124  hcalTPGData_( ps.getParameter< InputTag >("hcalTPGData") ),
125  gtDigisLabel_( ps.getParameter< InputTag >("gtDigisLabel") ),
126  gtEGAlgoName_ ( ps.getParameter< std::string >("gtEGAlgoName") ),
127  doubleThreshold_ ( ps.getParameter< int >("doubleThreshold") ),
128  filterTriggerType_ (ps.getParameter< int >("filterTriggerType") )
129 {
130 
131 
132 
133  singlechannelhistos_ = ps.getUntrackedParameter < bool > ("singlechannelhistos", false);
134 
136  if(verbose_) std::cout << "L1TdeRCT: single channels histos ON" << std::endl;
137 
138  // verbosity switch
139  verbose_ = ps.getUntrackedParameter < bool > ("verbose", false);
140 
141  if (verbose_)
142  std::cout << "L1TdeRCT: constructor...." << std::endl;
143 
144 
145  dbe = NULL;
146  if (ps.getUntrackedParameter < bool > ("DQMStore", false)) {
148  dbe->setVerbose(0);
149  }
150 
151  outputFile_ =
152  ps.getUntrackedParameter < std::string > ("outputFile", "");
153  if (outputFile_.size() != 0) {
154  if(verbose_) std::
155  cout << "L1T Monitoring histograms will be saved to " <<
156  outputFile_.c_str() << std::endl;
157  }
158 
159  bool disable =
160  ps.getUntrackedParameter < bool > ("disableROOToutput", false);
161  if (disable) {
162  outputFile_ = "";
163  }
164 
166  = ps.getUntrackedParameter<std::string>("HistFolder", "L1TEMU/L1TdeRCT");
167 
168  if (dbe != NULL) {
170  }
171 
172 
173 
174 }
175 
177 {
178 }
179 
181 {
182 
183  nev_ = 0;
184 
185  // get hold of back-end interface
186  DQMStore *dbe = 0;
187  dbe = Service < DQMStore > ().operator->();
188 
189  if (dbe) {
191  dbe->rmdir(histFolder_);
192  }
193 
194 
195  if (dbe) {
196 
198 
199  triggerType_ =
200  dbe->book1D("TriggerType", "TriggerType", 17, -0.5, 16.5);
201 
203  dbe->book1D("gtTriggerAlgoNumbers", "gtTriggerAlgoNumbers", 128, -0.5, 127.5);
204 
206  dbe->book2D("rctInputTPGEcalOcc", "rctInputTPGEcalOcc", TPGETABINS, TPGETAMIN,
208 
210  dbe->book2D("rctInputTPGEcalOccNoCut", "rctInputTPGEcalOccNoCut", TPGETABINS, TPGETAMIN,
212 
214  dbe->book1D("rctInputTPGEcalRank", "rctInputTPGEcalRank", TPGRANK, TPGRANKMIN, TPGRANKMAX) ;
215 
217  dbe->book2D("rctInputTPGHcalOcc", "rctInputTPGHcalOcc", TPGETABINS, TPGETAMIN,
219 
221  dbe->book1D("rctInputTPGHcalSample", "rctInputTPGHcalSample", 10, -0.5, 9.5) ;
222 
224  dbe->book1D("rctInputTPGHcalRank", "rctInputTPGHcalRank", TPGRANK, TPGRANKMIN, TPGRANKMAX) ;
225 
226  dbe->setCurrentFolder(histFolder_+"/EffCurves/NisoEm/");
227 
229  dbe->book2D("trigEffThresh", "Rank occupancy >= 2x trig thresh",
231 
232  dbe->setCurrentFolder(histFolder_+"/EffCurves/NisoEm/ServiceData");
233 
235  dbe->book2D("trigEffThreshOcc", "Rank occupancy >= 2x trig thresh",
238  dbe->book2D("trigEffTriggThreshOcc", "Rank occupancy >= 2x trig thresh, triggered",
240 
241  dbe->setCurrentFolder(histFolder_+"/IsoEm");
242 
243  rctIsoEmEff1_ =
244  dbe->book2D("rctIsoEmEff1", "rctIsoEmEff1", ETABINS, ETAMIN,
246 
248  dbe->book1D("rctIsoEmEff1oneD", "rctIsoEmEff1oneD",
250 
251  rctIsoEmEff2_ =
252  dbe->book2D("rctIsoEmEff2", "rctIsoEmEff2, energy matching required", ETABINS, ETAMIN,
254 
256  dbe->book1D("rctIsoEmEff2oneD", "rctIsoEmEff2oneD, energy matching required",
258 
260  dbe->book2D("rctIsoEmIneff2", "rctIsoEmIneff2, energy matching required", ETABINS, ETAMIN,
262 
264  dbe->book1D("rctIsoEmIneff2oneD", "rctIsoEmIneff2oneD, energy matching required",
266 
267 
269  dbe->book2D("rctIsoEmIneff", "rctIsoEmIneff", ETABINS, ETAMIN,
271 
273  dbe->book1D("rctIsoEmIneff1D", "rctIsoEmIneff1D",
275 
277  dbe->book2D("rctIsoEmOvereff", "rctIsoEmOvereff", ETABINS, ETAMIN,
279 
281  dbe->book1D("rctIsoEmOvereff1D", "rctIsoEmOvereff1D",
283 
284  dbe->setCurrentFolder(histFolder_+"/IsoEm/ServiceData");
285 
287  dbe->book2D("rctIsoEmDataOcc", "rctIsoEmDataOcc", ETABINS, ETAMIN,
289 
291  dbe->book1D("rctIsoEmDataOcc1D", "rctIsoEmDataOcc1D",
293 
295  dbe->book2D("rctIsoEmEmulOcc", "rctIsoEmEmulOcc", ETABINS, ETAMIN,
297 
299  dbe->book1D("rctIsoEmEmulOcc1D", "rctIsoEmEmulOcc1D",
301 
303  dbe->book2D("rctIsoEmEff1Occ", "rctIsoEmEff1Occ", ETABINS, ETAMIN,
305 
307  dbe->book1D("rctIsoEmEff1Occ1D", "rctIsoEmEff1Occ1D",
309 
311  dbe->book2D("rctIsoEmEff2Occ", "rctIsoEmEff2Occ", ETABINS, ETAMIN,
313 
315  dbe->book1D("rctIsoEmEff2Occ1D", "rctIsoEmEff2Occ1D",
317 
319  dbe->book2D("rctIsoEmIneff2Occ", "rctIsoEmIneff2Occ", ETABINS, ETAMIN,
321 
323  dbe->book1D("rctIsoEmIneff2Occ1D", "rctIsoEmIneff2Occ1D",
325 
327  dbe->book2D("rctIsoEmIneffOcc", "rctIsoEmIneffOcc", ETABINS, ETAMIN,
329 
331  dbe->book1D("rctIsoEmIneffOcc1D", "rctIsoEmIneffOcc1D",
333 
335  dbe->book2D("rctIsoEmOvereffOcc", "rctIsoEmOvereffOcc", ETABINS, ETAMIN,
337 
339  dbe->book1D("rctIsoEmOvereffOcc1D", "rctIsoEmOvereffOcc1D",
341 
342 
343  dbe->setCurrentFolder(histFolder_+"/NisoEm");
345  dbe->book2D("rctNisoEmEff1", "rctNisoEmEff1", ETABINS, ETAMIN,
347 
349  dbe->book1D("rctNisoEmEff1oneD", "rctNisoEmEff1oneD",
351 
353  dbe->book2D("rctNisoEmEff2", "rctNisoEmEff2, energy matching required", ETABINS, ETAMIN,
355 
357  dbe->book1D("rctNisoEmEff2oneD", "rctNisoEmEff2oneD, energy matching required",
359 
361  dbe->book2D("rctNisoEmIneff2", "rctNisoEmIneff2, energy matching required", ETABINS, ETAMIN,
363 
365  dbe->book1D("rctNisoEmIneff2oneD", "rctNisoEmIneff2oneD, energy matching required",
367 
368 
370  dbe->book2D("rctNisoEmIneff", "rctNisoEmIneff", ETABINS, ETAMIN,
372 
374  dbe->book1D("rctNisoEmIneff1D", "rctNisoEmIneff1D",
376 
378  dbe->book2D("rctNisoEmOvereff", "rctNisoEmOvereff", ETABINS, ETAMIN,
380 
382  dbe->book1D("rctNisoEmOvereff1D", "rctNisoEmOvereff1D",
384 
385  dbe->setCurrentFolder(histFolder_+"/NisoEm/ServiceData");
386 
388  dbe->book2D("rctNisoEmDataOcc", "rctNisoEmDataOcc", ETABINS, ETAMIN,
390 
392  dbe->book1D("rctNisoEmDataOcc1D", "rctNisoEmDataOcc1D",
394 
396  dbe->book2D("rctNisoEmEmulOcc", "rctNisoEmEmulOcc", ETABINS, ETAMIN,
398 
400  dbe->book1D("rctNisoEmEmulOcc1D", "rctNisoEmEmulOcc1D",
402 
404  dbe->book2D("rctNisoEmEff1Occ", "rctNisoEmEff1Occ", ETABINS, ETAMIN,
406 
408  dbe->book1D("rctNisoEmEff1Occ1D", "rctNisoEmEff1Occ1D",
410 
412  dbe->book2D("rctNisoEmEff2Occ", "rctNisoEmEff2Occ", ETABINS, ETAMIN,
414 
416  dbe->book1D("rctNisoEmEff2Occ1D", "rctNisoEmEff2Occ1D",
418 
420  dbe->book2D("rctNisoEmIneff2Occ", "rctNisoEmIneff2Occ", ETABINS, ETAMIN,
422 
424  dbe->book1D("rctNisoEmIneff2Occ1D", "rctNisoEmIneff2Occ1D",
426 
428  dbe->book2D("rctNisoEmIneffOcc", "rctNisoEmIneffOcc", ETABINS, ETAMIN,
430 
432  dbe->book1D("rctNisoEmIneffOcc1D", "rctNisoEmIneffOcc1D",
434 
436  dbe->book2D("rctNisoEmOvereffOcc", "rctNisoEmOvereffOcc", ETABINS, ETAMIN,
438 
440  dbe->book1D("rctNisoEmOvereffOcc1D", "rctNisoEmOvereffOcc1D",
442 
443  // region information
444  dbe->setCurrentFolder(histFolder_+"/RegionData");
445 
446  rctRegEff1D_ =
447  dbe->book1D("rctRegEff1D", "1D region efficiency",
449 
451  dbe->book1D("rctRegIneff1D", "1D region inefficiency",
453 
455  dbe->book1D("rctRegOvereff1D", "1D region overefficiency",
457 
459  dbe->book1D("rctRegSpEff1D", "1D region efficiency, energy matching required",
461 
463  dbe->book1D("rctRegSpIneff1D", "1D region inefficiency, energy matching required",
465 
466  rctRegEff2D_ =
467  dbe->book2D("rctRegEff2D", "2D region efficiency",
469 
471  dbe->book2D("rctRegIneff2D", "2D region inefficiency",
473 
475  dbe->book2D("rctRegOvereff2D", "2D region overefficiency",
477 
479  dbe->book2D("rctRegSpEff2D", "2D region efficiency, energy matching required",
481 
483  dbe->book2D("rctRegSpIneff2D", "2D region inefficiency, energy matching required",
485 
486  dbe->setCurrentFolder(histFolder_+"/RegionData/ServiceData");
487 
489  dbe->book1D("rctRegDataOcc1D", "1D region occupancy from data",
491 
493  dbe->book1D("rctRegEmulOcc1D", "1D region occupancy from emulator",
495 
497  dbe->book1D("rctRegMatchedOcc1D", "1D region occupancy for matched hits",
499 
501  dbe->book1D("rctRegUnmatchedDataOcc1D", "1D region occupancy for unmatched hardware hits",
503 
505  dbe->book1D("rctRegUnmatchedEmulOcc1D", "1D region occupancy for unmatched emulator hits",
507 
509  dbe->book1D("rctRegSpEffOcc1D", "1D region occupancy for \\Delta E_{T} efficiency",
511 
513  dbe->book1D("rctRegSpIneffOcc1D", "1D region occupancy for \\Delta E_{T} efficiency ",
515 
517  dbe->book2D("rctRegDataOcc2D", "2D region occupancy from hardware",
519 
521  dbe->book2D("rctRegEmulOcc2D", "2D region occupancy from emulator",
523 
525  dbe->book2D("rctRegMatchedOcc2D", "2D region occupancy for matched hits",
527 
529  dbe->book2D("rctRegUnmatchedDataOcc2D", "2D region occupancy for unmatched hardware hits",
531 
533  dbe->book2D("rctRegUnmatchedEmulOcc2D", "2D region occupancy for unmatched emulator hits",
535 
536 // rctRegDeltaEt2D_ =
537 // dbe->book2D("rctRegDeltaEt2D", " \\Delta E_{T} for each channel",
538 // CHNLBINS, CHNLMIN, CHNLMAX, 100, -50., 50.);
539 
541  dbe->book2D("rctRegSpEffOcc2D", "2D region occupancy for \\Delta E_{T} efficiency",
543 
545  dbe->book2D("rctRegSpIneffOcc2D", "2D region occupancy for \\Delta E_{T} inefficiency",
547 
548  // bit information
549  dbe->setCurrentFolder(histFolder_+"/BitData");
550 
552  dbe->book2D("rctBitOverFlowEff2D", "2D overflow bit efficiency",
554 
556  dbe->book2D("rctBitOverFlowIneff2D", "2D overflow bit inefficiency",
558 
560  dbe->book2D("rctBitOverFlowOvereff2D", "2D overflow bit overefficiency",
562 
564  dbe->book2D("rctBitTauVetoEff2D", "2D tau veto bit efficiency",
566 
568  dbe->book2D("rctBitTauVetoIneff2D", "2D tau veto bit inefficiency",
570 
572  dbe->book2D("rctBitTauVetoOvereff2D", "2D tau veto bit overefficiency",
574 
576  dbe->book2D("rctBitMipEff2D", "2D mip bit efficiency",
578 
580  dbe->book2D("rctBitMipIneff2D", "2D mip bit inefficiency",
582 
584  dbe->book2D("rctBitMipOvereff2D", "2D mip bit overefficiency",
586 
587  // QUIETBIT: To add quiet bit information, uncomment following 11 lines:
588  // rctBitQuietEff2D_ =
589  // dbe->book2D("rctBitQuietEff2D", "2D quiet bit efficiency",
590  // ETABINS, ETAMIN, ETAMAX, PHIBINS, PHIMIN, PHIMAX);
591 
592  // rctBitQuietIneff2D_ =
593  // dbe->book2D("rctBitQuietIneff2D", "2D quiet bit inefficiency",
594  // ETABINS, ETAMIN, ETAMAX, PHIBINS, PHIMIN, PHIMAX);
595 
596  // rctBitQuietOvereff2D_ =
597  // dbe->book2D("rctBitQuietOvereff2D", "2D quiet bit overefficiency",
598  // ETABINS, ETAMIN, ETAMAX, PHIBINS, PHIMIN, PHIMAX);
599 
601  dbe->book2D("rctBitHfPlusTauEff2D", "2D HfPlusTau bit efficiency",
603 
605  dbe->book2D("rctBitHfPlusTauIneff2D", "2D HfPlusTau bit inefficiency",
607 
609  dbe->book2D("rctBitHfPlusTauOvereff2D", "2D HfPlusTau bit overefficiency",
611 
612  dbe->setCurrentFolder(histFolder_+"/BitData/ServiceData");
613 
615  dbe->book2D("rctBitEmulOverFlow2D", "2D overflow bit from emulator",
617 
619  dbe->book2D("rctBitDataOverFlow2D", "2D overflow bit from hardware",
621 
623  dbe->book2D("rctBitMatchedOverFlow2D", "2D overflow bit for matched hits",
625 
627  dbe->book2D("rctBitUnmatchedEmulOverFlow2D", "2D overflow bit for unmatched emulator hits",
629 
631  dbe->book2D("rctBitUnmatchedDataOverFlow2D", "2D overflow bit for unmatched hardware hits",
633 
635  dbe->book2D("rctBitEmulTauVeto2D", "2D tau veto bit from emulator",
637 
639  dbe->book2D("rctBitDataTauVeto2D", "2D tau veto bit from hardware",
641 
643  dbe->book2D("rctBitMatchedTauVeto2D", "2D tau veto bit for matched hits",
645 
647  dbe->book2D("rctBitUnmatchedEmulTauVeto2D", "2D tau veto bit for unmatched emulator hits",
649 
651  dbe->book2D("rctBitUnmatchedDataTauVeto2D", "2D tau veto bit for unmatched hardware hits",
653 
655  dbe->book2D("rctBitEmulMip2D", "2D mip bit from emulator",
657 
659  dbe->book2D("rctBitDataMip2D", "2D mip bit from hardware",
661 
663  dbe->book2D("rctBitMatchedMip2D", "2D mip bit for matched hits",
665 
667  dbe->book2D("rctBitUnmatchedEmulMip2D", "2D mip bit for unmatched emulator hits",
669 
671  dbe->book2D("rctBitUnmatchedDataMip2D", "2D mip bit for unmatched hardware hits",
673 
675  dbe->book2D("rctBitEmulQuiet2D", "2D quiet bit from emulator",
677 
679  dbe->book2D("rctBitDataQuiet2D", "2D quiet bit from hardware",
681 
683  dbe->book2D("rctBitMatchedQuiet2D", "2D quiet bit for matched hits",
685 
687  dbe->book2D("rctBitUnmatchedEmulQuiet2D", "2D quiet bit for unmatched emulator hits",
689 
691  dbe->book2D("rctBitUnmatchedDataQuiet2D", "2D quiet bit for unmatched hardware hits",
693 
695  dbe->book2D("rctBitEmulHfPlusTau2D", "2D HfPlusTau bit from emulator",
697 
699  dbe->book2D("rctBitDataHfPlusTau2D", "2D HfPlusTau bit from hardware",
701 
703  dbe->book2D("rctBitMatchedHfPlusTau2D", "2D HfPlusTau bit for matched hits",
705 
707  dbe->book2D("rctBitUnmatchedEmulHfPlusTau2D", "2D HfPlusTau bit for unmatched emulator hits",
709 
711  dbe->book2D("rctBitUnmatchedDataHfPlusTau2D", "2D HfPlusTau bit for unmatched hardware hits",
713 
714  dbe->setCurrentFolder(histFolder_+"/BitMon");
715  rctRegBitOn_ =
716  dbe->book2D("rctRegBitOn", "Monitoring for Bits Stuck On",
718 
719  rctRegBitOff_ =
720  dbe->book2D("rctRegBitOff", "Monitoring for Bits Stuck Off",
722 
723  rctRegBitDiff_ =
724  dbe->book2D("rctRegBitDiff", "Monitoring for Bits Difference",
726 
727  rctIsoEmBitOn_ =
728  dbe->book2D("rctIsoEmBitOn", "Monitoring for Bits Stuck On",
730 
731  rctIsoEmBitOff_ =
732  dbe->book2D("rctIsoEmBitOff", "Monitoring for Bits Stuck Off",
734 
736  dbe->book2D("rctIsoEmBitDiff", "Monitoring for Bits Difference",
738 
739  rctNIsoEmBitOn_ =
740  dbe->book2D("rctNIsoEmBitOn", "Monitoring for Bits Stuck On",
742 
744  dbe->book2D("rctNIsoEmBitOff", "Monitoring for Bits Stuck Off",
746 
748  dbe->book2D("rctNIsoEmBitDiff", "Monitoring for Bits Difference",
750 
751 
752  dbe->setCurrentFolder(histFolder_+"/DBData");
753  fedVectorMonitorRUN_ = dbe->book2D("rctFedVectorMonitorRUN", "FED Vector Monitor Per Run",90,0,90,2,0,2);
754  fedVectorMonitorLS_ = dbe->book2D("rctFedVectorMonitorLS", "FED Vector Monitor Per LS",90,0,90,2,0,2);
755 
756  for(unsigned int i=0;i<90;++i) {
757  char fed[10];
758  sprintf(fed,"%d",crateFED[i]);
759  fedVectorMonitorRUN_->getTH2F()->GetXaxis()->SetBinLabel(i+1,fed);
760  fedVectorMonitorLS_->getTH2F()->GetXaxis()->SetBinLabel(i+1,fed);
761  }
762  fedVectorMonitorRUN_->getTH2F()->GetYaxis()->SetBinLabel(1,"OUT");
763  fedVectorMonitorRUN_->getTH2F()->GetYaxis()->SetBinLabel(2,"IN");
764  fedVectorMonitorLS_->getTH2F()->GetYaxis()->SetBinLabel(1,"OUT");
765  fedVectorMonitorLS_->getTH2F()->GetYaxis()->SetBinLabel(2,"IN");
766 
767 
768 
769 // for single channels
770 
772  {
773  for(int m=0; m<12; m++)
774  {
775  if(m==0) dbe->setCurrentFolder(histFolder_+"/IsoEm/ServiceData/Eff1SnglChnls");
776  if(m==1) dbe->setCurrentFolder(histFolder_+"/NisoEm/ServiceData/Eff1SnglChnls");
777  if(m==2) dbe->setCurrentFolder(histFolder_+"/RegionData/ServiceData/EffSnglChnls");
778  if(m==3) dbe->setCurrentFolder(histFolder_+"/IsoEm/ServiceData/IneffSnglChnls");
779  if(m==4) dbe->setCurrentFolder(histFolder_+"/NisoEm/ServiceData/IneffSnglChnls");
780  if(m==5) dbe->setCurrentFolder(histFolder_+"/RegionData/ServiceData/IneffSnglChnls");
781  if(m==6) dbe->setCurrentFolder(histFolder_+"/IsoEm/ServiceData/OvereffSnglChnls");
782  if(m==7) dbe->setCurrentFolder(histFolder_+"/NisoEm/ServiceData/OvereffSnglChnls");
783  if(m==8) dbe->setCurrentFolder(histFolder_+"/RegionData/ServiceData/OvereffSnglChnls");
784  if(m==9) dbe->setCurrentFolder(histFolder_+"/EffCurves/NisoEm/ServiceData/SingleChannels");
785  if(m==10) dbe->setCurrentFolder(histFolder_+"/EffCurves/NisoEm/ServiceData/SingleChannels");
786  if(m==11) dbe->setCurrentFolder(histFolder_+"/EffCurves/NisoEm/ServiceData/SingleChannels");
787 
788  for(int i=0; i<ETAMAX; i++)
789  {
790  for(int j=0; j<PHIMAX; j++)
791  {
792  char name[80], channel[80]={""} ;
793 
794  if(m==0) strcpy(name,"(Eemul-Edata)Chnl") ;
795  if(m==1) strcpy(name,"(Eemul-Edata)Chnl") ;
796  if(m==2) strcpy(name,"(Eemul-Edata)Chnl") ;
797  if(m==3) strcpy(name,"EemulChnl") ;
798  if(m==4) strcpy(name,"EemulChnl") ;
799  if(m==5) strcpy(name,"EemulChnl") ;
800  if(m==6) strcpy(name,"EdataChnl") ;
801  if(m==7) strcpy(name,"EdataChnl") ;
802  if(m==8) strcpy(name,"EdataChnl") ;
803  if(m==9) strcpy(name,"EemulChnlEff") ;
804  if(m==10) strcpy(name,"EemulChnlTrig") ;
805  if(m==11) strcpy(name,"EemulChnl") ;
806 
807  if(i<10 && j<10) sprintf(channel,"_0%d0%d",i,j);
808  else if(i<10) sprintf(channel,"_0%d%d",i,j);
809  else if(j<10) sprintf(channel,"_%d0%d",i,j);
810  else sprintf(channel,"_%d%d",i,j);
811  strcat(name,channel);
812 
813  int chnl=PHIBINS*i+j;
814 
815  if(m==0) rctIsoEffChannel_[chnl] =
816  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
817  if(m==1) rctNisoEffChannel_[chnl] =
818  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
819  if(m==2) rctRegEffChannel_[chnl] =
820  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
821  if(m==3) rctIsoIneffChannel_[chnl] =
822  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
823  if(m==4) rctNisoIneffChannel_[chnl] =
824  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
825  if(m==5) rctRegIneffChannel_[chnl] =
826  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
827  if(m==6) rctIsoOvereffChannel_[chnl] =
828  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
829  if(m==7) rctNisoOvereffChannel_[chnl] =
830  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
831  if(m==8) rctRegOvereffChannel_[chnl] =
832  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
833  if(m==9) trigEff_[chnl] =
834  dbe->book1D(name, name, ELBINS, ELMIN, ELMAX);
835  if(m==10) trigEffOcc_[chnl] =
836  dbe->book1D(name, name, ELBINS, ELMIN, ELMAX);
837  if(m==11) trigEffTriggOcc_[chnl] =
838  dbe->book1D(name, name, ELBINS, ELMIN, ELMAX);
839  }
840  }
841  }
842  }
843 
844 //end of single channels
845 
846 
847  }
848  notrigCount=0;
849  trigCount=0;
850 
851 }
852 
853 
855 {
856  if (verbose_)
857  std::cout << "L1TdeRCT: end job...." << std::endl;
858  LogInfo("EndJob") << "analyzed " << nev_ << " events";
859 
860  if (outputFile_.size() != 0 && dbe)
861  dbe->save(outputFile_);
862 
863  //std::cout << "trig count is " << trigCount << std::endl;
864  //std::cout << "no trig count is " << notrigCount << std::endl;
865 
866 
867  return;
868 }
869 
870 void L1TdeRCT::analyze(const Event & e, const EventSetup & c)
871 {
872  nev_++;
873  if (verbose_) {
874  std::cout << "L1TdeRCT: analyze...." << std::endl;
875  }
876 
877  // filter according trigger type
878  // enum ExperimentType {
879  // Undefined = 0,
880  // PhysicsTrigger = 1,
881  // CalibrationTrigger = 2,
882  // RandomTrigger = 3,
883  // Reserved = 4,
884  // TracedEvent = 5,
885  // TestTrigger = 6,
886  // ErrorTrigger = 15
887 
888  // fill a histogram with the trigger type, for normalization fill also last bin
889  // ErrorTrigger + 1
890  double triggerType = static_cast<double> (e.experimentType()) + 0.001;
891  double triggerTypeLast = static_cast<double> (edm::EventAuxiliary::ExperimentType::ErrorTrigger)
892  + 0.001;
893  triggerType_->Fill(triggerType);
894  triggerType_->Fill(triggerTypeLast + 1);
895 
896  // filter only if trigger type is greater than 0, negative values disable filtering
897  if (filterTriggerType_ >= 0) {
898 
899  // now filter, for real data only
900  if (e.isRealData()) {
901  if (!(e.experimentType() == filterTriggerType_)) {
902 
903  edm::LogInfo("L1TdeRCT") << "\n Event of TriggerType "
904  << e.experimentType() << " rejected" << std::endl;
905  return;
906 
907  }
908  }
909 
910  }
911 
912  // for GT decision word
913 // edm::ESHandle<L1GtTriggerMenu> menuRcd;
915 
916  // get GT trigger menu, maps algorithms to the bits read out
917 // c.get<L1GtTriggerMenuRcd>().get(menuRcd) ;
918 // const L1GtTriggerMenu* menu = menuRcd.product();
919 
920  // get GT decision word
921  //e.getByLabel( edm::InputTag("gtDigis"), gtRecord);
922  e.getByLabel( gtDigisLabel_ , gtRecord );
923  const DecisionWord dWord = gtRecord->decisionWord(); // this will get the decision word *before* masking disabled bits
924  int effEGThresholdBitNumber = 999;
925  if (gtEGAlgoName_ == "L1_SingleEG1")
926  {
927  effEGThresholdBitNumber = 46;
928  }
929  if (gtEGAlgoName_ == "L1_SingleEG5_0001")
930  {
931  effEGThresholdBitNumber = 47;
932  }
933  if (gtEGAlgoName_ == "L1_SingleEG8_0001")
934  {
935  effEGThresholdBitNumber = 48;
936  }
937  if (gtEGAlgoName_ == "L1_SingleEG10_0001")
938  {
939  effEGThresholdBitNumber = 49;
940  }
941  if (gtEGAlgoName_ == "L1_SingleEG12_0001")
942  {
943  effEGThresholdBitNumber = 50;
944  }
945  if (gtEGAlgoName_ == "L1_SingleEG15_0001")
946  {
947  effEGThresholdBitNumber = 51;
948  }
949  if (gtEGAlgoName_ == "L1_SingleEG20_0001")
950  {
951  effEGThresholdBitNumber = 52;
952  }
953 
954  int algoBitNumber = 0;
955  bool triggered = false;
956  bool independent_triggered = false;
957  DecisionWord::const_iterator algoItr;
958  for (algoItr = dWord.begin(); algoItr != dWord.end(); algoItr++)
959  {
960  if (*algoItr)
961  {
962  triggerAlgoNumbers_->Fill(algoBitNumber);
963  if (algoBitNumber == effEGThresholdBitNumber)
964  {
965  triggered = true;// Fill triggered events (numerator) here!
966  }
967  if (algoBitNumber <= 45 || algoBitNumber >= 53)
968  {
969  independent_triggered = true;// use the muon path only !
970  }
971  }
972  algoBitNumber++;
973  }
974 
975 
976  if(triggered)
977  trigCount++;
978  else
979  notrigCount++;
980 
981  // get TPGs
984 
985  // Get the RCT digis
988 
989  // Get the RCT digis
992 
993  // need to change to getByLabel
994  // bool doEm = true; FIXME gcc461: variable 'doEm' set but not used
995  // bool doHd = true; FIXME gcc461: variable 'doHd' set but not used
996  bool doEcal = true;
997  bool doHcal = true;
998 
999  // TPG, first try:
1000  e.getByLabel(ecalTPGData_,ecalTpData);
1001  e.getByLabel(hcalTPGData_,hcalTpData);
1002 
1003  if (!ecalTpData.isValid()) {
1004  edm::LogInfo("TPG DataNotFound") << "can't find EcalTrigPrimDigiCollection with label "
1005  << ecalTPGData_.label() ;
1006  if (verbose_)std::cout << "Can not find ecalTpData!" << std::endl ;
1007 
1008  doEcal = false ;
1009  }
1010 
1011  if(doEcal)
1012  {
1013  for(EcalTrigPrimDigiCollection::const_iterator iEcalTp = ecalTpData->begin(); iEcalTp != ecalTpData->end(); iEcalTp++)
1014  if(iEcalTp->compressedEt() > 0)
1015  {
1016 
1017  rctInputTPGEcalRank_ -> Fill(1.*(iEcalTp->compressedEt())) ;
1018 
1019  if(iEcalTp->id().ieta() > 0)
1020  {
1021  rctInputTPGEcalOccNoCut_ -> Fill(1.*(iEcalTp->id().ieta())-0.5,iEcalTp->id().iphi()) ;
1022  if(iEcalTp->compressedEt() > 3) rctInputTPGEcalOcc_ -> Fill(1.*(iEcalTp->id().ieta())-0.5,iEcalTp->id().iphi()) ;
1023  }
1024  else
1025  {
1026  rctInputTPGEcalOccNoCut_ -> Fill(1.*(iEcalTp->id().ieta())+0.5,iEcalTp->id().iphi()) ;
1027  if(iEcalTp->compressedEt() > 3) rctInputTPGEcalOcc_ -> Fill(1.*(iEcalTp->id().ieta())+0.5,iEcalTp->id().iphi()) ;
1028  }
1029 
1030 if(verbose_) std::cout << " ECAL data: Energy: " << iEcalTp->compressedEt() << " eta " << iEcalTp->id().ieta() << " phi " << iEcalTp->id().iphi() << std::endl ;
1031  }
1032  }
1033 
1034  if (!hcalTpData.isValid()) {
1035  edm::LogInfo("TPG DataNotFound") << "can't find HcalTrigPrimDigiCollection with label "
1036  << hcalTPGData_.label() ;
1037  if (verbose_)std::cout << "Can not find hcalTpData!" << std::endl ;
1038 
1039  doHcal = false ;
1040  }
1041 
1042 
1043  if(doHcal)
1044  {
1045 
1046  for(HcalTrigPrimDigiCollection::const_iterator iHcalTp = hcalTpData->begin(); iHcalTp != hcalTpData->end(); iHcalTp++)
1047  {
1048  int highSample=0;
1049  int highEt=0;
1050 
1051  for (int nSample = 0; nSample < 10; nSample++)
1052  {
1053  if (iHcalTp->sample(nSample).compressedEt() != 0)
1054  {
1055  if(verbose_) std::cout << "HCAL data: Et "
1056  << iHcalTp->sample(nSample).compressedEt()
1057  << " fg "
1058  << iHcalTp->sample(nSample).fineGrain()
1059  << " ieta " << iHcalTp->id().ieta()
1060  << " iphi " << iHcalTp->id().iphi()
1061  << " sample " << nSample
1062  << std::endl ;
1063  if (iHcalTp->sample(nSample).compressedEt() > highEt)
1064  {
1065  highSample = nSample;
1066  highEt = iHcalTp->sample(nSample).compressedEt() ;
1067  }
1068  }
1069 
1070  }
1071 
1072  if(highEt != 0)
1073  {
1074  if(iHcalTp->id().ieta() > 0)
1075  rctInputTPGHcalOcc_ -> Fill(1.*(iHcalTp->id().ieta())-0.5,iHcalTp->id().iphi()) ;
1076  else
1077  rctInputTPGHcalOcc_ -> Fill(1.*(iHcalTp->id().ieta())+0.5,iHcalTp->id().iphi()) ;
1078  rctInputTPGHcalSample_ -> Fill(highSample,highEt) ;
1079  rctInputTPGHcalRank_ -> Fill(highEt) ;
1080  }
1081 
1082  }
1083  }
1084 
1085 
1086  e.getByLabel(rctSourceData_,rgnData);
1087  e.getByLabel(rctSourceEmul_,rgnEmul);
1088 
1089  if (!rgnData.isValid()) {
1090  edm::LogInfo("DataNotFound") << "can't find L1CaloRegionCollection with label "
1091  << rctSourceData_.label() ;
1092  if (verbose_)std::cout << "Can not find rgnData!" << std::endl ;
1093  // doHd = false;
1094  }
1095 
1096 // if ( doHd ) {
1097  if (!rgnEmul.isValid()) {
1098  edm::LogInfo("DataNotFound") << "can't find L1CaloRegionCollection with label "
1099  << rctSourceEmul_.label() ;
1100  // doHd = false;
1101  if (verbose_)std::cout << "Can not find rgnEmul!" << std::endl ;
1102  }
1103 // }
1104 
1105 
1106  e.getByLabel(rctSourceData_,emData);
1107  e.getByLabel(rctSourceEmul_,emEmul);
1108 
1109  if (!emData.isValid()) {
1110  edm::LogInfo("DataNotFound") << "can't find L1CaloEmCollection with label "
1111  << rctSourceData_.label() ;
1112  if (verbose_)std::cout << "Can not find emData!" << std::endl ;
1113  // doEm = false;
1114  }
1115 
1116 // if ( doEm ) {
1117 
1118  if (!emEmul.isValid()) {
1119  edm::LogInfo("DataNotFound") << "can't find L1CaloEmCollection with label "
1120  << rctSourceEmul_.label() ;
1121  if (verbose_)std::cout << "Can not find emEmul!" << std::endl ;
1122  // doEm = false;
1123  return ;
1124  }
1125 
1126 // }
1127 
1128 
1129  // Isolated and non-isolated EM
1130 
1131  // StepI: Reset
1132 
1133  int nelectrIsoData = 0;
1134  int nelectrNisoData = 0;
1135  int nelectrIsoEmul = 0;
1136  int nelectrNisoEmul = 0;
1137 
1138  int electronDataRank[2][PhiEtaMax]={{0}};
1139  int electronDataEta[2][PhiEtaMax]={{0}};
1140  int electronDataPhi[2][PhiEtaMax]={{0}};
1141  int electronEmulRank[2][PhiEtaMax]={{0}};
1142  int electronEmulEta[2][PhiEtaMax]={{0}};
1143  int electronEmulPhi[2][PhiEtaMax]={{0}};
1144 
1145  // region/bit arrays
1146  int nRegionData = 0;
1147  int nRegionEmul = 0;
1148 
1149  int regionDataRank[PhiEtaMax] = {0};
1150  int regionDataEta [PhiEtaMax] = {0};
1151  int regionDataPhi [PhiEtaMax] = {0};
1152 
1153  bool regionDataOverFlow [PhiEtaMax] = {false};
1154  bool regionDataTauVeto [PhiEtaMax] = {false};
1155  bool regionDataMip [PhiEtaMax] = {false};
1156  bool regionDataQuiet [PhiEtaMax] = {false};
1157  bool regionDataHfPlusTau[PhiEtaMax] = {false};
1158 
1159  int regionEmulRank[PhiEtaMax] = {0};
1160  int regionEmulEta [PhiEtaMax] = {0};
1161  int regionEmulPhi [PhiEtaMax] = {0};
1162 
1163  bool regionEmulOverFlow [PhiEtaMax] = {false};
1164  bool regionEmulTauVeto [PhiEtaMax] = {false};
1165  bool regionEmulMip [PhiEtaMax] = {false};
1166  bool regionEmulQuiet [PhiEtaMax] = {false};
1167  bool regionEmulHfPlusTau[PhiEtaMax] = {false};
1168 
1169 if(first)
1170 {
1171  first = false ;
1172 }
1173 
1174 
1175  // StepII: fill variables
1176 
1177  for (L1CaloEmCollection::const_iterator iem = emEmul->begin();
1178  iem != emEmul->end();
1179  iem++)
1180  {
1181  if(iem->rank() >= 1)
1182  {
1183  if(iem->isolated())
1184  {
1185  rctIsoEmEmulOcc_->Fill(iem->regionId().ieta(), iem->regionId().iphi());
1186 
1187  // to show bad channles in the 2D efficiency plots
1188  rctIsoEmIneffOcc_->Fill (iem->regionId().ieta(), iem->regionId().iphi(), 0.01);
1189  rctIsoEmEff1Occ_->Fill (iem->regionId().ieta(), iem->regionId().iphi(), 0.01);
1190 
1191  int channel;
1192 
1193  channel=PHIBINS*iem->regionId().ieta()+iem->regionId().iphi();
1194  rctIsoEmEmulOcc1D_->Fill(channel);
1195  electronEmulRank[0][nelectrIsoEmul]=iem->rank() ;
1196  electronEmulEta[0][nelectrIsoEmul]=iem->regionId().ieta();
1197  electronEmulPhi[0][nelectrIsoEmul]=iem->regionId().iphi();
1198  nelectrIsoEmul++ ;
1199  }
1200 
1201  else
1202  {
1203  rctNisoEmEmulOcc_->Fill(iem->regionId().ieta(), iem->regionId().iphi());
1204 
1205  // to show bad channles in the 2D efficiency plots
1206  rctNisoEmIneffOcc_->Fill (iem->regionId().ieta(), iem->regionId().iphi(), 0.01);
1207  rctNisoEmEff1Occ_->Fill (iem->regionId().ieta(), iem->regionId().iphi(), 0.01);
1208 
1209  int channel;
1210 //
1211 
1212  channel=PHIBINS*iem->regionId().ieta()+iem->regionId().iphi();
1213  rctNisoEmEmulOcc1D_->Fill(channel);
1214  electronEmulRank[1][nelectrNisoEmul]=iem->rank() ;
1215  electronEmulEta[1][nelectrNisoEmul]=iem->regionId().ieta();
1216  electronEmulPhi[1][nelectrNisoEmul]=iem->regionId().iphi();
1217  nelectrNisoEmul++ ;
1218  }
1219  }
1220  }
1221 
1222  for (L1CaloEmCollection::const_iterator iem = emData->begin();
1223  iem != emData->end();
1224  iem++)
1225  {
1226  if(iem->rank() >= 1)
1227  {
1228  if (iem->isolated())
1229  {
1230  rctIsoEmDataOcc_->Fill(iem->regionId().ieta(), iem->regionId().iphi());
1231 
1232  // new stuff to avoid 0's in emulator 2D //
1233  // rctIsoEmEmulOcc_->Fill(iem->regionId().ieta(), iem->regionId().iphi(),0.01);
1234  rctIsoEmOvereffOcc_->Fill (iem->regionId().ieta(),
1235  iem->regionId().iphi(), 0.01);
1236 
1237  int channel;
1238 
1239  channel=PHIBINS*iem->regionId().ieta()+iem->regionId().iphi();
1240  rctIsoEmDataOcc1D_->Fill(channel);
1241 
1242  // new stuff to avoid 0's
1243  // rctIsoEmEmulOcc1D_->Fill(channel);
1244 
1245  electronDataRank[0][nelectrIsoData]=iem->rank() ;
1246  electronDataEta[0][nelectrIsoData]=iem->regionId().ieta();
1247  electronDataPhi[0][nelectrIsoData]=iem->regionId().iphi();
1248  nelectrIsoData++ ;
1249  }
1250 
1251  else
1252  {
1253  rctNisoEmDataOcc_->Fill(iem->regionId().ieta(), iem->regionId().iphi());
1254 
1255  // new stuff to avoid 0's in emulator 2D //
1256  // rctNisoEmEmulOcc_->Fill(iem->regionId().ieta(), iem->regionId().iphi(),0.01);
1257  rctNisoEmOvereffOcc_->Fill (iem->regionId().ieta(),
1258  iem->regionId().iphi(), 0.01);
1259 
1260  int channel;
1261 
1262  channel=PHIBINS*iem->regionId().ieta()+iem->regionId().iphi();
1263  rctNisoEmDataOcc1D_->Fill(channel);
1264 
1265  // new stuff to avoid 0's
1266  // rctNisoEmEmulOcc1D_->Fill(channel);
1267 
1268  electronDataRank[1][nelectrNisoData]=iem->rank() ;
1269  electronDataEta[1][nelectrNisoData]=iem->regionId().ieta();
1270  electronDataPhi[1][nelectrNisoData]=iem->regionId().iphi();
1271  nelectrNisoData++ ;
1272  }
1273  }
1274  }
1275 
1276  // fill region/bit arrays for emulator
1277  for(L1CaloRegionCollection::const_iterator ireg = rgnEmul->begin();
1278  ireg != rgnEmul->end();
1279  ireg++)
1280  {
1281 // std::cout << "Emul: " << nRegionEmul << " " << ireg->gctEta() << " " << ireg->gctPhi() << std::endl;
1282  if(ireg->overFlow()) rctBitEmulOverFlow2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1283  if(ireg->tauVeto()) rctBitEmulTauVeto2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1284  if(ireg->mip()) rctBitEmulMip2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1285  if(ireg->quiet()) rctBitEmulQuiet2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1286  if(ireg->fineGrain()) rctBitEmulHfPlusTau2D_->Fill(ireg->gctEta(), ireg->gctPhi());
1287  if(ireg->et() > 0)
1288  {
1289  rctRegEmulOcc1D_->Fill(PHIBINS*ireg->gctEta() + ireg->gctPhi());
1290  rctRegEmulOcc2D_->Fill(ireg->gctEta(), ireg->gctPhi());
1291  }
1292 
1293  // to show bad channels in 2D efficiency plots:
1294  if(ireg->overFlow()) {
1295  rctBitUnmatchedEmulOverFlow2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1296  rctBitMatchedOverFlow2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1297  }
1298 
1299  if(ireg->tauVeto()) {
1300  rctBitUnmatchedEmulTauVeto2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1301  rctBitMatchedTauVeto2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1302  }
1303 
1304  if(ireg->mip()) {
1305  rctBitUnmatchedEmulMip2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1306  rctBitMatchedMip2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1307  }
1308 
1309  if(ireg->quiet()) {
1310  rctBitUnmatchedEmulQuiet2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1311  rctBitMatchedQuiet2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1312  }
1313 
1314  if(ireg->fineGrain()) {
1315  rctBitUnmatchedEmulHfPlusTau2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1316  rctBitMatchedHfPlusTau2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1317  }
1318 
1319  if(ireg->et() > 0) {
1320  rctRegUnmatchedEmulOcc2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1321  rctRegMatchedOcc2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1322 /* rctRegDeltaEtOcc2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01); */
1323  }
1324 
1325  nRegionEmul = PHIBINS * ireg->gctEta() + ireg->gctPhi();
1326 
1327  regionEmulRank [nRegionEmul] = ireg->et() ;
1328  regionEmulEta [nRegionEmul] = ireg->gctEta();
1329  regionEmulPhi [nRegionEmul] = ireg->gctPhi();
1330  regionEmulOverFlow [nRegionEmul] = ireg->overFlow();
1331  regionEmulTauVeto [nRegionEmul] = ireg->tauVeto();
1332  regionEmulMip [nRegionEmul] = ireg->mip();
1333  regionEmulQuiet [nRegionEmul] = ireg->quiet();
1334  regionEmulHfPlusTau[nRegionEmul] = ireg->fineGrain();
1335  }
1336  // fill region/bit arrays for hardware
1337  for(L1CaloRegionCollection::const_iterator ireg = rgnData->begin();
1338  ireg != rgnData->end();
1339  ireg++)
1340  {
1341 // std::cout << "Data: " << nRegionData << " " << ireg->gctEta() << " " << ireg->gctPhi() << std::endl;
1342  if(ireg->overFlow()) rctBitDataOverFlow2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1343  if(ireg->tauVeto()) rctBitDataTauVeto2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1344  if(ireg->mip()) rctBitDataMip2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1345  if(ireg->quiet()) rctBitDataQuiet2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1346  if(ireg->fineGrain()) rctBitDataHfPlusTau2D_->Fill(ireg->gctEta(), ireg->gctPhi());
1347  if(ireg->et() > 0)
1348  {
1349  rctRegDataOcc1D_ ->Fill(PHIBINS*ireg->gctEta() + ireg->gctPhi());
1350  rctRegDataOcc2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1351  }
1352  // to show bad channels in 2D inefficiency:
1353  // if(ireg->overFlow()) rctBitEmulOverFlow2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1354  // if(ireg->tauVeto()) rctBitEmulTauVeto2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1355  // if(ireg->mip()) rctBitEmulMip2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1356  // if(ireg->quiet()) rctBitEmulQuiet2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1357  // if(ireg->fineGrain()) rctBitEmulHfPlusTau2D_->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1358  // if(ireg->et() > 0) rctRegEmulOcc2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1359  if(ireg->overFlow()) rctBitUnmatchedDataOverFlow2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1360  if(ireg->tauVeto()) rctBitUnmatchedDataTauVeto2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1361  if(ireg->mip()) rctBitUnmatchedDataMip2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1362  if(ireg->quiet()) rctBitUnmatchedDataQuiet2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1363  if(ireg->fineGrain()) rctBitUnmatchedDataHfPlusTau2D_->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1364  if(ireg->et() > 0) rctRegUnmatchedDataOcc2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1365 
1366  nRegionData = PHIBINS * ireg->gctEta() + ireg->gctPhi();
1367 
1368  regionDataRank [nRegionData] = ireg->et() ;
1369  regionDataEta [nRegionData] = ireg->gctEta();
1370  regionDataPhi [nRegionData] = ireg->gctPhi();
1371  regionDataOverFlow [nRegionData] = ireg->overFlow();
1372  regionDataTauVeto [nRegionData] = ireg->tauVeto();
1373  regionDataMip [nRegionData] = ireg->mip();
1374  regionDataQuiet [nRegionData] = ireg->quiet();
1375  regionDataHfPlusTau[nRegionData] = ireg->fineGrain();
1376  }
1377 
1378  if(verbose_)
1379 {
1380  std::cout << "I found Data! Iso: " << nelectrIsoData << " Niso: " << nelectrNisoData << std::endl ;
1381  for(int i=0; i<nelectrIsoData; i++)
1382  std::cout << " Iso Energy " << electronDataRank[0][i] << " eta " << electronDataEta[0][i] << " phi " << electronDataPhi[0][i] << std::endl ;
1383  for(int i=0; i<nelectrNisoData; i++)
1384  std::cout << " Niso Energy " << electronDataRank[1][i] << " eta " << electronDataEta[1][i] << " phi " << electronDataPhi[1][i] << std::endl ;
1385 
1386  std::cout << "I found Emul! Iso: " << nelectrIsoEmul << " Niso: " << nelectrNisoEmul << std::endl ;
1387  for(int i=0; i<nelectrIsoEmul; i++)
1388  std::cout << " Iso Energy " << electronEmulRank[0][i] << " eta " << electronEmulEta[0][i] << " phi " << electronEmulPhi[0][i] << std::endl ;
1389  for(int i=0; i<nelectrNisoEmul; i++)
1390  std::cout << " Niso Energy " << electronEmulRank[1][i] << " eta " << electronEmulEta[1][i] << " phi " << electronEmulPhi[1][i] << std::endl ;
1391 
1392  std::cout << "I found Data! Regions: " << PhiEtaMax << std::endl ;
1393  for(int i=0; i<(int)PhiEtaMax; i++)
1394  if(regionDataRank[i] !=0 ) std::cout << " Energy " << regionDataRank[i] << " eta " << regionDataEta[i] << " phi " << regionDataPhi[i] << std::endl ;
1395 
1396  std::cout << "I found Emul! Regions: " << PhiEtaMax << std::endl ;
1397  for(int i=0; i<(int)PhiEtaMax; i++)
1398  if(regionEmulRank[i] !=0 ) std::cout << " Energy " << regionEmulRank[i] << " eta " << regionEmulEta[i] << " phi " << regionEmulPhi[i] << std::endl ;
1399 }
1400 
1401  // StepIII: calculate and fill
1402 
1403  for(int k=0; k<2; k++)
1404  {
1405  int nelectrE, nelectrD;
1406 
1407  if(k==0)
1408  {
1409  nelectrE=nelectrIsoEmul;
1410  nelectrD=nelectrIsoData;
1411  }
1412 
1413  else
1414  {
1415  nelectrE=nelectrNisoEmul;
1416  nelectrD=nelectrNisoData;
1417  }
1418 
1419  for(int i = 0; i < nelectrE; i++)
1420  {
1421  //bool triggered = l1SingleEG2; //false; //HACK until true trigger implimented
1422  double trigThresh = doubleThreshold_; //ditto
1423  if(singlechannelhistos_) {
1424  int chnl=PHIBINS*electronEmulEta[k][i]+electronEmulPhi[k][i];
1425  if(k==1 && independent_triggered) { //non-iso
1426  //std::cout << "eta " << electronEmulEta[k][i] << " phi " << electronEmulPhi[k][i] << " with rank " << electronEmulRank[k][i] << std::endl;
1427  trigEffOcc_[chnl]->Fill(electronEmulRank[k][i]);
1428 // }
1429  if(triggered)
1430  trigEffTriggOcc_[chnl]->Fill(electronEmulRank[k][i]); }
1431  }
1432  //find number of objects with rank above 2x trigger threshold
1433  //and number after requiring a trigger too
1434  if(electronEmulRank[k][i]>=trigThresh){
1435  if(k==1 && independent_triggered) { //non-iso
1436  trigEffThreshOcc_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i]);
1437  trigEffTriggThreshOcc_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.01);
1438 // }
1439  if(triggered)
1440  trigEffTriggThreshOcc_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.98001); }
1441  }
1442 
1443 
1444 
1445  Bool_t found = kFALSE;
1446 
1447  for(int j = 0; j < nelectrD; j++)
1448  {
1449  if(electronEmulEta[k][i]==electronDataEta[k][j] &&
1450  electronEmulPhi[k][i]==electronDataPhi[k][j])
1451  {
1452  if(k==0)
1453  {
1454  rctIsoEmEff1Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.98001);
1455  // Weight is for ROOT; when added to initial weight of 0.01, should just exceed 0.99
1456 
1457  int chnl;
1458 
1459  chnl=PHIBINS*electronEmulEta[k][i]+electronEmulPhi[k][i];
1460  rctIsoEmEff1Occ1D_->Fill(chnl);
1462  {
1463  int energy_difference;
1464 
1465  energy_difference=(electronEmulRank[k][i] - electronDataRank[k][j]);
1466  rctIsoEffChannel_[chnl]->Fill(energy_difference);
1467  }
1468 
1469  if(electronEmulRank[k][i]==electronDataRank[k][j])
1470  {
1471  rctIsoEmEff2Occ1D_->Fill(chnl);
1472  rctIsoEmEff2Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.98012);
1473  // Weight is for ROOT; should just exceed 0.99
1474  // NOTE: Weight is different for eff 2 because this isn't filled initially
1475  // for current definition of Eff2 and Ineff2 we need to add additional
1476  // factor 0.99 since we divide over eff1 which is 0.99001 e.g. we use 0.99001**2 !
1477  rctIsoEmIneff2Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.0099);
1478  }
1479  else
1480  {
1481  rctIsoEmIneff2Occ1D_->Fill(chnl);
1482  rctIsoEmIneff2Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.9801);
1483  //Check for the bit that is different and store it
1484  bitset<8> bitDifference( electronEmulRank[k][i]^electronDataRank[k][j] );
1485  for( size_t n=0; n < bitDifference.size(); n++){
1486  if( n < 4 ){ rctIsoEmBitDiff_->Fill( electronEmulEta[k][i], electronEmulPhi[k][i]+n*0.25, bitDifference[n] ); }
1487  if( n >= 4 ){ rctIsoEmBitDiff_->Fill( electronEmulEta[k][i]+0.5, electronEmulPhi[k][i]+(n-4)*0.25, bitDifference[n] ); }
1488  }
1489  }
1490  }
1491 
1492  else
1493  {
1494  rctNisoEmEff1Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.98001);
1495  // Weight is for ROOT; when added to initial weight of 0.01, should just exceed 0.99
1496 
1497  int chnl;
1498 
1499  chnl=PHIBINS*electronEmulEta[k][i]+electronEmulPhi[k][i];
1500  rctNisoEmEff1Occ1D_->Fill(chnl);
1502  {
1503  int energy_difference;
1504 
1505  energy_difference=(electronEmulRank[k][i] - electronDataRank[k][j]) ;
1506  rctNisoEffChannel_[chnl]->Fill(energy_difference) ;
1507  }
1508 
1509 
1510  if(electronEmulRank[k][i]==electronDataRank[k][j])
1511  {
1512  rctNisoEmEff2Occ1D_->Fill(chnl);
1513  rctNisoEmEff2Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.98012);
1514  // Weight is for ROOT; should just exceed 0.99
1515  // NOTE: Weight is different for eff 2 because this isn't filled initially
1516  // see comments fo Iso
1517  rctNisoEmIneff2Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.0099);
1518  }
1519  else
1520  {
1521  rctNisoEmIneff2Occ1D_->Fill(chnl);
1522  rctNisoEmIneff2Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.9801);
1523  //Check for the bit that is different and store it
1524  bitset<8> bitDifference( electronEmulRank[k][i]^electronDataRank[k][j] );
1525  for( size_t n=0; n < bitDifference.size(); n++){
1526  if( n < 4 ){ rctNIsoEmBitDiff_->Fill( electronEmulEta[k][i], electronEmulPhi[k][i]+n*0.25, bitDifference[n] ); }
1527  if( n >= 4 ){ rctNIsoEmBitDiff_->Fill( electronEmulEta[k][i]+0.5, electronEmulPhi[k][i]+(n-4)*0.25, bitDifference[n] ); }
1528  }
1529  }
1530  }
1531 
1532  found = kTRUE;
1533  }
1534  }
1535 
1536  if(found == kFALSE)
1537  {
1538  if(k==0)
1539  {
1540  rctIsoEmIneffOcc_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.98);
1541  // Weight is for ROOT; when added to initial weight of 0.01, should equal 0.99
1542 
1543  int chnl;
1544 
1545  //Store the bit map for the emulator
1546  bitset<8> bit( electronEmulRank[k][i] );
1547  for( size_t n=0; n < bit.size(); n++){
1548  if( n < 4 ){ rctIsoEmBitOff_->Fill( electronEmulEta[k][i], electronEmulPhi[k][i]+n*0.25, bit[n] ); }
1549  if( n >= 4 ){ rctIsoEmBitOff_->Fill( electronEmulEta[k][i]+0.5, electronEmulPhi[k][i]+(n-4)*0.25, bit[n] ); }
1550  }
1551 
1552  chnl=PHIBINS*electronEmulEta[k][i]+electronEmulPhi[k][i];
1553  rctIsoEmIneffOcc1D_->Fill(chnl);
1555  {
1556  rctIsoIneffChannel_[chnl]->Fill(electronEmulRank[k][i]);
1557  }
1558  }
1559 
1560  else
1561  {
1562  rctNisoEmIneffOcc_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.98);
1563  // Weight is for ROOT; when added to initial weight of 0.01, should equal 0.99
1564 
1565  int chnl;
1566 
1567  chnl=PHIBINS*electronEmulEta[k][i]+electronEmulPhi[k][i];
1568  rctNisoEmIneffOcc1D_->Fill(chnl);
1569 
1570  //Store the bit map for the emulator
1571  bitset<8> bit( electronEmulRank[k][i] );
1572  for( size_t n=0; n < bit.size(); n++){
1573  if( n < 4 ){ rctNIsoEmBitOff_->Fill( electronEmulEta[k][i], electronEmulPhi[k][i]+n*0.25, bit[n] ); }
1574  if( n >= 4 ){ rctNIsoEmBitOff_->Fill( electronEmulEta[k][i]+0.5, electronEmulPhi[k][i]+(n-4)*0.25, bit[n] ); }
1575  }
1576 
1578  {
1579  rctNisoIneffChannel_[chnl]->Fill(electronEmulRank[k][i]);
1580  }
1581  }
1582  }
1583 
1584  }
1585 
1588 // DivideME1D(rctIsoEmEff2Occ1D_, rctIsoEmEmulOcc1D_, rctIsoEmEff2oneD_);
1589 // DivideME2D(rctIsoEmEff2Occ_, rctIsoEmEmulOcc_, rctIsoEmEff2_) ;
1592 // DivideME1D(rctIsoEmIneff2Occ1D_, rctIsoEmEmulOcc1D_, rctIsoEmIneff2oneD_);
1593 // DivideME2D(rctIsoEmIneff2Occ_, rctIsoEmEmulOcc_, rctIsoEmIneff2_) ;
1596 
1599 // DivideME1D(rctNisoEmEff2Occ1D_, rctNisoEmEmulOcc1D_, rctNisoEmEff2oneD_);
1600 // DivideME2D(rctNisoEmEff2Occ_, rctNisoEmEmulOcc_, rctNisoEmEff2_);
1603 // DivideME1D(rctNisoEmIneff2Occ1D_, rctNisoEmEmulOcc1D_, rctNisoEmIneff2oneD_);
1604 // DivideME2D(rctNisoEmIneff2Occ_, rctNisoEmEmulOcc_, rctNisoEmIneff2_);
1607 
1612 
1614  if(singlechannelhistos_) {
1615  for(int i = 0; i < nelectrE; i++)
1616  {
1617  int chnl=PHIBINS*electronEmulEta[k][i]+electronEmulPhi[k][i];
1618  DivideME1D(trigEffTriggOcc_[chnl], trigEffOcc_[chnl], trigEff_[chnl]);
1619  }
1620  }
1621 
1622  for(int i = 0; i < nelectrD; i++)
1623  {
1624  Bool_t found = kFALSE;
1625 
1626  for(int j = 0; j < nelectrE; j++)
1627  {
1628  if(electronEmulEta[k][j]==electronDataEta[k][i] &&
1629  electronEmulPhi[k][j]==electronDataPhi[k][i])
1630  {
1631  found = kTRUE;
1632  }
1633  }
1634 
1635  if(found == kFALSE)
1636  {
1637  if(k==0)
1638  {
1639  rctIsoEmOvereffOcc_->Fill(electronDataEta[k][i], electronDataPhi[k][i], 0.98);
1640  // Weight is for ROOT; when added to initial weight of 0.01, should equal 0.99
1641 
1642  int chnl;
1643 
1644  //Store the bit map for the emulator
1645  bitset<8> bit( electronDataRank[k][i] );
1646  for( size_t n=0; n < bit.size(); n++){
1647  if( n < 4 ){ rctIsoEmBitOn_->Fill( electronDataEta[k][i], electronDataPhi[k][i]+n*0.25, bit[n] ); }
1648  if( n >= 4 ){ rctIsoEmBitOn_->Fill( electronDataEta[k][i]+0.5, electronDataPhi[k][i]+(n-4)*0.25, bit[n] ); }
1649  }
1650 
1651  chnl=PHIBINS*electronDataEta[k][i]+electronDataPhi[k][i];
1652  rctIsoEmOvereffOcc1D_->Fill(chnl);
1653 
1655  {
1656  rctIsoOvereffChannel_[chnl]->Fill(electronDataRank[k][i]);
1657  }
1658  }
1659 
1660  else
1661  {
1662  rctNisoEmOvereffOcc_->Fill(electronDataEta[k][i], electronDataPhi[k][i], 0.98);
1663  // Weight is for ROOT; when added to initial weight of 0.01, should equal 0.99
1664 
1665  int chnl;
1666 
1667  //Store the bit map for the emulator
1668  bitset<8> bit( electronDataRank[k][i] );
1669  for( size_t n=0; n < bit.size(); n++){
1670  if( n < 4 ){ rctNIsoEmBitOn_->Fill( electronDataEta[k][i], electronDataPhi[k][i]+n*0.25, bit[n] ); }
1671  if( n >= 4 ){ rctNIsoEmBitOn_->Fill( electronDataEta[k][i]+0.5, electronDataPhi[k][i]+(n-4)*0.25, bit[n] ); }
1672  }
1673 
1674  chnl=PHIBINS*electronDataEta[k][i]+electronDataPhi[k][i];
1675  rctNisoEmOvereffOcc1D_->Fill(chnl) ;
1676 
1678  {
1679  rctNisoOvereffChannel_[chnl]->Fill(electronDataRank[k][i]);
1680  }
1681  }
1682  }
1683  }
1684 
1685  }
1686 
1687  // we try new definition of overefficiency:
1692 
1693 
1694  // calculate region/bit information
1695  for(unsigned int i = 0; i < (int)PhiEtaMax; i++)
1696 {
1697  Bool_t regFound = kFALSE;
1698  Bool_t overFlowFound = kFALSE;
1699  Bool_t tauVetoFound = kFALSE;
1700  Bool_t mipFound = kFALSE;
1701  Bool_t quietFound = kFALSE;
1702  Bool_t hfPlusTauFound = kFALSE;
1703 
1704 // for(int j = 0; j < nRegionData; j++)
1705 // {
1706 // if(regionEmulEta[i] == regionDataEta[j] &&
1707 // regionEmulPhi[i] == regionDataPhi[j])
1708 // {
1709  if(regionDataRank[i] >= 1 && regionEmulRank[i] >= 1)
1710  {
1711  int chnl;
1712 
1713  chnl = PHIBINS*regionEmulEta[i] + regionEmulPhi[i];
1714  rctRegMatchedOcc1D_->Fill(chnl);
1715  rctRegMatchedOcc2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.98001);
1716  // Weight is for ROOT; when added to initial weight of 0.01, should just exceed 0.99
1717 
1718  if(singlechannelhistos_) rctRegEffChannel_[chnl]->Fill(regionEmulRank[i] - regionDataRank[i]);
1719 
1720  // see comments for Iso Eff2
1721 
1722  if(regionEmulRank[i] == regionDataRank[i])
1723  {
1724  rctRegSpEffOcc1D_->Fill(chnl);
1725 // rctRegSpEffOcc2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.99001);
1726  rctRegSpEffOcc2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.98012);
1727  rctRegSpIneffOcc2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.0099);
1728  }
1729  else
1730  {
1731  rctRegSpIneffOcc1D_->Fill(chnl);
1732  rctRegSpIneffOcc2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.9801);
1733 
1734  bitset<10> bitDifference( regionEmulRank[i]^regionDataRank[i] );
1735  for( size_t n=0; n < bitDifference.size(); n++){
1736  if( n < 5 ){ rctRegBitDiff_->Fill( regionEmulEta[i], regionEmulPhi[i]+n*0.2, bitDifference[n] ); }
1737  if( n >= 5 ){ rctRegBitDiff_->Fill( regionEmulEta[i]+0.5, regionEmulPhi[i]+(n-5)*0.2, bitDifference[n] ); }
1738  }
1739 
1740  }
1741  // Weight is for ROOT; should just exceed 0.99
1742  // NOTE: Weight is different for eff 2 because this isn't filled initially
1743 
1744  regFound = kTRUE;
1745  }
1746 
1747  if(regionEmulOverFlow[i] == true &&
1748  regionDataOverFlow[i] == true)
1749  {
1750  rctBitMatchedOverFlow2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.98001);
1751  overFlowFound = kTRUE;
1752  }
1753 
1754  if(regionEmulTauVeto[i] == true &&
1755  regionDataTauVeto[i] == true)
1756  {
1757  rctBitMatchedTauVeto2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.98001);
1758  tauVetoFound = kTRUE;
1759  }
1760 
1761  if (regionEmulMip[i] == true && regionDataMip[i] == true) {
1762  rctBitMatchedMip2D_->Fill (regionEmulEta[i], regionEmulPhi[i], 0.98001);
1763  mipFound = kTRUE;
1764  }
1765 
1766  if (regionEmulQuiet[i] == true && regionDataQuiet[i] == true) {
1767  rctBitMatchedQuiet2D_->Fill (regionEmulEta[i], regionEmulPhi[i], 0.98001);
1768  quietFound = kTRUE;
1769  }
1770 
1771  if (regionEmulHfPlusTau[i] == true && regionDataHfPlusTau[i] == true) {
1772  rctBitMatchedHfPlusTau2D_->Fill (regionEmulEta[i], regionEmulPhi[i], 0.98001);
1773  hfPlusTauFound = kTRUE;
1774  }
1775 
1776 
1777 // }
1778 // }
1779 
1780 
1781 
1782  if(regFound == kFALSE && regionEmulRank[i] >= 1 )
1783  {
1784  int chnl;
1785 
1786  bitset<10> bit( regionEmulRank[i] );
1787  for( size_t n=0; n < bit.size(); n++){
1788  if( n < 5 ){ rctRegBitOff_->Fill( regionEmulEta[i], regionEmulPhi[i]+n*0.2, bit[n] ); }
1789  if( n >= 5 ){ rctRegBitOff_->Fill( regionEmulEta[i]+0.5, regionEmulPhi[i]+(n-5)*0.2, bit[n] ); }
1790  }
1791 
1792  chnl = PHIBINS*regionEmulEta[i] + regionEmulPhi[i];
1794  rctRegUnmatchedEmulOcc2D_->Fill(regionEmulEta[i], regionEmulPhi[i],0.98);
1795  // Weight is for ROOT; when added to initial weight of 0.01, should equal 0.99
1796 
1797  if(singlechannelhistos_) rctRegIneffChannel_[chnl]->Fill(regionEmulRank[i]);
1798  }
1799 
1800  if(overFlowFound == kFALSE && regionEmulOverFlow[i] == true)
1801  {
1802  rctBitUnmatchedEmulOverFlow2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.98);
1803  }
1804 
1805  if(tauVetoFound == kFALSE && regionEmulTauVeto[i] == true)
1806  {
1807  rctBitUnmatchedEmulTauVeto2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.98);
1808  }
1809 
1810  if (mipFound == kFALSE && regionEmulMip[i] == true) {
1811  rctBitUnmatchedEmulMip2D_->Fill (regionEmulEta[i], regionEmulPhi[i], 0.98);
1812  }
1813 
1814  if (quietFound == kFALSE && regionEmulQuiet[i] == true) {
1815  rctBitUnmatchedEmulQuiet2D_->Fill (regionEmulEta[i], regionEmulPhi[i], 0.98);
1816  }
1817 
1818  if (hfPlusTauFound == kFALSE && regionEmulHfPlusTau[i] == true ) {
1819  rctBitUnmatchedEmulHfPlusTau2D_->Fill (regionEmulEta[i], regionEmulPhi[i], 0.98);
1820  }
1821 
1822 
1823 }
1824 
1825 
1828 // DivideME1D(rctRegSpEffOcc1D_, rctRegEmulOcc1D_, rctRegSpEff1D_);
1829 // DivideME2D(rctRegSpEffOcc2D_, rctRegEmulOcc2D_, rctRegSpEff2D_);
1832 // DivideME1D(rctRegSpIneffOcc1D_, rctRegEmulOcc1D_, rctRegSpIneff1D_);
1833 // DivideME2D(rctRegSpIneffOcc2D_, rctRegEmulOcc2D_, rctRegSpIneff2D_);
1839  // QUIETBIT: To add quiet bit information, uncomment following line:
1840  // DivideME2D (rctBitMatchedQuiet2D_, rctBitEmulQuiet2D_, rctBitQuietEff2D_);
1842 
1848  // QUIETBIT: To add quiet bit information, uncomment the following line:
1849  // DivideME2D (rctBitUnmatchedEmulQuiet2D_, rctBitEmulQuiet2D_, rctBitQuietIneff2D_);
1851 
1852 
1853  // for(int i = 0; i < nRegionData; i++)
1854  for (int i = 0; i < (int)PhiEtaMax; i++)
1855 {
1856  Bool_t regFound = kFALSE;
1857  Bool_t overFlowFound = kFALSE;
1858  Bool_t tauVetoFound = kFALSE;
1859  Bool_t mipFound = kFALSE;
1860  Bool_t quietFound = kFALSE;
1861  Bool_t hfPlusTauFound = kFALSE;
1862 
1863 // for(int j = 0; j < nRegionEmul; j++)
1864 // {
1865 // if(regionEmulEta[j] == regionDataEta[i] &&
1866 // regionEmulPhi[j] == regionDataPhi[i])
1867 // {
1868 
1869  if(regionEmulRank[i] >= 1 && regionDataRank[i] >= 1)
1870  regFound = kTRUE;
1871 
1872  if(regionDataOverFlow[i] == true &&
1873  regionEmulOverFlow[i] == true)
1874  overFlowFound = kTRUE;
1875 
1876  if(regionDataTauVeto[i] == true &&
1877  regionEmulTauVeto[i] == true)
1878  tauVetoFound = kTRUE;
1879 
1880  if (regionDataMip[i] == true && regionEmulMip[i] == true)
1881  mipFound = kTRUE;
1882 
1883  if (regionDataQuiet[i] == true && regionEmulQuiet[i] == true)
1884  quietFound = kTRUE;
1885 
1886  if (regionDataHfPlusTau[i] == true && regionEmulHfPlusTau[i] == true)
1887  hfPlusTauFound = kTRUE;
1888 // }
1889 // }
1890 
1891  if(regFound == kFALSE && regionDataRank[i] >= 1)
1892  {
1893  int chnl;
1894 
1895  bitset<10> bit( regionDataRank[i] );
1896  for( size_t n=0; n < bit.size(); n++){
1897  if( n < 5 ){ rctRegBitOn_->Fill( regionDataEta[i], regionDataPhi[i]+n*0.2, bit[n] ); }
1898  if( n >= 5 ){ rctRegBitOn_->Fill( regionDataEta[i]+0.5, regionDataPhi[i]+(n-5)*0.2, bit[n] ); }
1899  }
1900 
1901 
1902  chnl = PHIBINS*regionDataEta[i] + regionDataPhi[i];
1904  rctRegUnmatchedDataOcc2D_->Fill(regionDataEta[i], regionDataPhi[i], 0.98);
1905  // Weight is for ROOT; when added to initial weight of 0.01, should equal 0.99
1906 
1907  // we try a new definition of overefficiency:
1908  // DivideME1D(rctRegUnmatchedDataOcc1D_, rctRegDataOcc1D_, rctRegOvereff1D_);
1909  // DivideME2D(rctRegUnmatchedDataOcc2D_, rctRegDataOcc2D_, rctRegOvereff2D_);
1910 
1911  if(singlechannelhistos_) rctRegOvereffChannel_[chnl]->Fill(regionDataRank[i]);
1912  }
1913 
1914  if(overFlowFound == kFALSE && regionDataOverFlow[i] == true )
1915  {
1916  rctBitUnmatchedDataOverFlow2D_->Fill(regionDataEta[i], regionDataPhi[i], 0.98);
1917  }
1918 
1919  if(tauVetoFound == kFALSE && regionDataTauVeto[i] == true )
1920  {
1921  rctBitUnmatchedDataTauVeto2D_->Fill(regionDataEta[i], regionDataPhi[i], 0.98);
1922  }
1923 
1924  if (mipFound == kFALSE && regionDataMip[i] == true ) {
1925  rctBitUnmatchedDataMip2D_->Fill (regionDataEta[i], regionDataPhi[i], 0.98);
1926  }
1927 
1928  if (quietFound == kFALSE && regionDataQuiet[i] == true ) {
1929  rctBitUnmatchedDataQuiet2D_->Fill (regionDataEta[i], regionDataPhi[i], 0.98);
1930  }
1931 
1932  if (hfPlusTauFound == kFALSE && regionDataHfPlusTau[i] == true ) {
1933  rctBitUnmatchedDataHfPlusTau2D_->Fill (regionDataEta[i], regionDataPhi[i], 0.98);
1934  }
1935 
1936 }
1937 
1938  // we try a new definition of overefficiency:
1945  // QUIETBIT: To add quiet bit information, uncomment following 2 lines:
1946  // DivideME2D (rctBitUnmatchedDataQuiet2D_, rctBitDataQuiet2D_,
1947  // rctBitQuietOvereff2D_);
1950 
1951 }
1952 
1954 
1955  TH2F* num = numerator->getTH2F();
1956  TH2F* den = denominator->getTH2F();
1957  TH2F* res = result->getTH2F();
1958 
1959  res->Divide(num,den,1,1,"");
1960 
1961 }
1962 
1964 
1965  TH1F* num = numerator->getTH1F();
1966  TH1F* den = denominator->getTH1F();
1967  TH1F* res = result->getTH1F();
1968 
1969  res->Divide(num,den,1,1,"");
1970 
1971 }
1972 
1973 
1975 {
1977 
1978 }
1979 
1981 {
1983 }
1984 
1986 {
1987  // adding fed mask into channel mask
1989  es.get<RunInfoRcd>().get(sum);
1990  const RunInfo* summary=sum.product();
1991 
1992  std::vector<int> caloFeds; // pare down the feds to the intresting ones
1993 
1994  const std::vector<int> Feds = summary->m_fed_in;
1995  for(std::vector<int>::const_iterator cf = Feds.begin(); cf != Feds.end(); ++cf){
1996  int fedNum = *cf;
1997  if(fedNum > 600 && fedNum <724)
1998  caloFeds.push_back(fedNum);
1999  }
2000 
2001  for(unsigned int i=0;i<90;++i) {
2002  std::vector<int>::iterator fv = std::find(caloFeds.begin(),caloFeds.end(),crateFED[i]);
2003  if(fv!=caloFeds.end()) {
2004  histogram->setBinContent(i+1,2,1);
2005  histogram->setBinContent(i+1,1,0);
2006  }
2007  else
2008  {
2009  histogram->setBinContent(i+1,2,0);
2010  histogram->setBinContent(i+1,1,1);
2011 
2012  }
2013 
2014  }
2015 
2016 }
MonitorElement * rctBitUnmatchedDataTauVeto2D_
Definition: L1TdeRCT.h:201
void DivideME2D(MonitorElement *numerator, MonitorElement *denominator, MonitorElement *result)
Definition: L1TdeRCT.cc:1953
MonitorElement * rctRegUnmatchedDataOcc1D_
Definition: L1TdeRCT.h:156
MonitorElement * rctIsoEmBitDiff_
Definition: L1TdeRCT.h:268
T getUntrackedParameter(std::string const &, T const &) const
const float BITRPHIMAX
Definition: L1TdeRCT.cc:63
#define PHIMAX
int i
Definition: DBlmapReader.cc:9
MonitorElement * rctRegMatchedOcc1D_
Definition: L1TdeRCT.h:155
MonitorElement * rctNisoEmEmulOcc1D_
Definition: L1TdeRCT.h:284
MonitorElement * rctNisoEmIneff2oneD_
Definition: L1TdeRCT.h:292
MonitorElement * rctNisoEmIneff1D_
Definition: L1TdeRCT.h:293
const float BITRPHIMIN
Definition: L1TdeRCT.cc:62
DQMStore * dbe
Definition: L1TdeRCT.h:144
void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * rctNisoEmEff2Occ1D_
Definition: L1TdeRCT.h:286
void beginRun(const edm::Run &, const edm::EventSetup &)
Definition: L1TdeRCT.cc:1974
MonitorElement * rctInputTPGHcalOcc_
Definition: L1TdeRCT.h:236
const unsigned int TPGETABINS
Definition: L1TdeRCT.cc:69
edm::InputTag rctSourceEmul_
Definition: L1TdeRCT.h:340
MonitorElement * rctNisoEmEff2oneD_
Definition: L1TdeRCT.h:291
virtual ~L1TdeRCT()
Definition: L1TdeRCT.cc:176
MonitorElement * rctNisoEmIneff2Occ1D_
Definition: L1TdeRCT.h:287
const float ELMIN
Definition: L1TdeRCT.cc:82
MonitorElement * rctBitMatchedTauVeto2D_
Definition: L1TdeRCT.h:199
const unsigned int ELBINS
Definition: L1TdeRCT.cc:81
MonitorElement * rctBitDataMip2D_
Definition: L1TdeRCT.h:206
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:717
void rmdir(const std::string &fullpath)
Definition: DQMStore.cc:2530
MonitorElement * rctBitUnmatchedDataHfPlusTau2D_
Definition: L1TdeRCT.h:226
int nev_
Definition: L1TdeRCT.h:332
MonitorElement * rctBitEmulTauVeto2D_
Definition: L1TdeRCT.h:197
MonitorElement * rctIsoEmIneff2Occ_
Definition: L1TdeRCT.h:244
void readFEDVector(MonitorElement *, const edm::EventSetup &)
Definition: L1TdeRCT.cc:1985
MonitorElement * trigEffThresh_
Definition: L1TdeRCT.h:314
MonitorElement * rctBitHfPlusTauIneff2D_
Definition: L1TdeRCT.h:228
bool verbose_
Definition: L1TdeRCT.h:335
void analyze(const edm::Event &e, const edm::EventSetup &c)
Definition: L1TdeRCT.cc:870
MonitorElement * rctIsoEmIneff2Occ1D_
Definition: L1TdeRCT.h:257
MonitorElement * rctIsoEmEmulOcc1D_
Definition: L1TdeRCT.h:254
MonitorElement * rctBitUnmatchedEmulTauVeto2D_
Definition: L1TdeRCT.h:200
MonitorElement * rctBitUnmatchedEmulQuiet2D_
Definition: L1TdeRCT.h:216
std::string outputFile_
Definition: L1TdeRCT.h:333
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
Definition: DQMStore.cc:2113
MonitorElement * trigEffThreshOcc_
Definition: L1TdeRCT.h:315
MonitorElement * rctNisoEffChannel_[396]
Definition: L1TdeRCT.h:304
MonitorElement * rctRegOvereff1D_
Definition: L1TdeRCT.h:163
std::vector< T >::const_iterator const_iterator
int doubleThreshold_
Definition: L1TdeRCT.h:346
MonitorElement * rctIsoEmEff2_
Definition: L1TdeRCT.h:248
const float TPGETAMAX
Definition: L1TdeRCT.cc:71
MonitorElement * rctNisoEmOvereffOcc1D_
Definition: L1TdeRCT.h:289
MonitorElement * trigEffOcc_[396]
Definition: L1TdeRCT.h:318
static const int crateFED[90]
Definition: L1TdeRCT.h:325
MonitorElement * rctRegOvereff2D_
Definition: L1TdeRCT.h:178
edm::InputTag hcalTPGData_
Definition: L1TdeRCT.h:343
#define NULL
Definition: scimark2.h:8
MonitorElement * rctIsoEmOvereffOcc1D_
Definition: L1TdeRCT.h:259
MonitorElement * triggerType_
Definition: L1TdeRCT.h:150
MonitorElement * rctBitTauVetoEff2D_
Definition: L1TdeRCT.h:202
MonitorElement * rctBitMatchedQuiet2D_
Definition: L1TdeRCT.h:215
MonitorElement * rctBitTauVetoOvereff2D_
Definition: L1TdeRCT.h:204
MonitorElement * rctRegDataOcc1D_
Definition: L1TdeRCT.h:153
MonitorElement * rctIsoEmIneffOcc_
Definition: L1TdeRCT.h:245
MonitorElement * rctBitDataQuiet2D_
Definition: L1TdeRCT.h:214
MonitorElement * rctBitMatchedHfPlusTau2D_
Definition: L1TdeRCT.h:224
MonitorElement * rctIsoEmEff2Occ_
Definition: L1TdeRCT.h:243
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
MonitorElement * rctRegEmulOcc2D_
Definition: L1TdeRCT.h:168
MonitorElement * rctRegUnmatchedEmulOcc2D_
Definition: L1TdeRCT.h:171
edm::InputTag rctSourceData_
Definition: L1TdeRCT.h:341
MonitorElement * rctRegSpEff2D_
Definition: L1TdeRCT.h:179
std::string histFolder_
Definition: L1TdeRCT.h:334
bool isRealData() const
Definition: EventBase.h:60
MonitorElement * rctBitUnmatchedEmulOverFlow2D_
Definition: L1TdeRCT.h:192
void endJob(void)
Definition: L1TdeRCT.cc:854
MonitorElement * rctIsoEmBitOn_
Definition: L1TdeRCT.h:266
const unsigned int HCALBINS
Definition: L1TdeRCT.cc:85
MonitorElement * rctRegIneff2D_
Definition: L1TdeRCT.h:177
MonitorElement * rctIsoEmEff2Occ1D_
Definition: L1TdeRCT.h:256
bool singlechannelhistos_
Definition: L1TdeRCT.h:336
MonitorElement * rctBitMipIneff2D_
Definition: L1TdeRCT.h:211
const float TPGPHIMIN
Definition: L1TdeRCT.cc:66
MonitorElement * rctBitOverFlowOvereff2D_
Definition: L1TdeRCT.h:196
void Fill(long long x)
MonitorElement * rctInputTPGHcalSample_
Definition: L1TdeRCT.h:238
MonitorElement * rctIsoEmOvereff_
Definition: L1TdeRCT.h:251
#define ETAMAX
MonitorElement * rctBitDataOverFlow2D_
Definition: L1TdeRCT.h:190
MonitorElement * rctIsoEmDataOcc_
Definition: L1TdeRCT.h:240
MonitorElement * fedVectorMonitorLS_
Definition: L1TdeRCT.h:327
const float CHNLMIN
Definition: L1TdeRCT.cc:91
MonitorElement * rctNisoEmEff1oneD_
Definition: L1TdeRCT.h:290
MonitorElement * rctNisoEmIneff2Occ_
Definition: L1TdeRCT.h:274
MonitorElement * rctNisoEmOvereffOcc_
Definition: L1TdeRCT.h:276
const float CHNLMAX
Definition: L1TdeRCT.cc:92
MonitorElement * rctRegBitOn_
Definition: L1TdeRCT.h:182
MonitorElement * rctRegBitDiff_
Definition: L1TdeRCT.h:184
MonitorElement * rctNisoEmDataOcc_
Definition: L1TdeRCT.h:270
MonitorElement * rctNisoEmIneff2_
Definition: L1TdeRCT.h:279
const float DEMIN
Definition: L1TdeRCT.cc:78
MonitorElement * rctBitDataHfPlusTau2D_
Definition: L1TdeRCT.h:223
std::string gtEGAlgoName_
Definition: L1TdeRCT.h:345
void DivideME1D(MonitorElement *numerator, MonitorElement *denominator, MonitorElement *result)
Definition: L1TdeRCT.cc:1963
#define ETAMIN
MonitorElement * rctRegIneffChannel_[396]
Definition: L1TdeRCT.h:310
MonitorElement * rctInputTPGEcalOcc_
Definition: L1TdeRCT.h:233
MonitorElement * rctRegDataOcc2D_
Definition: L1TdeRCT.h:167
MonitorElement * rctInputTPGEcalRank_
Definition: L1TdeRCT.h:235
MonitorElement * rctIsoEmIneff1D_
Definition: L1TdeRCT.h:263
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
const unsigned int BITPHIBINS
Definition: L1TdeRCT.cc:57
std::vector< bool > DecisionWord
typedefs
std::vector< int > m_fed_in
Definition: RunInfo.h:24
MonitorElement * rctBitMipOvereff2D_
Definition: L1TdeRCT.h:212
tuple result
Definition: query.py:137
MonitorElement * trigEff_[396]
Definition: L1TdeRCT.h:317
const unsigned int DEBINS
Definition: L1TdeRCT.cc:77
const float BITETAMAX
Definition: L1TdeRCT.cc:55
MonitorElement * rctBitMatchedOverFlow2D_
Definition: L1TdeRCT.h:191
const unsigned int CHNLBINS
Definition: L1TdeRCT.cc:90
MonitorElement * rctBitEmulOverFlow2D_
Definition: L1TdeRCT.h:189
MonitorElement * rctRegEmulOcc1D_
Definition: L1TdeRCT.h:154
MonitorElement * rctIsoEmBitOff_
Definition: L1TdeRCT.h:267
MonitorElement * fedVectorMonitorRUN_
Definition: L1TdeRCT.h:326
MonitorElement * rctBitEmulMip2D_
Definition: L1TdeRCT.h:205
MonitorElement * rctIsoEmIneff2_
Definition: L1TdeRCT.h:249
MonitorElement * rctBitEmulQuiet2D_
Definition: L1TdeRCT.h:213
int j
Definition: DBlmapReader.cc:9
MonitorElement * rctNisoEmEmulOcc_
Definition: L1TdeRCT.h:271
MonitorElement * rctBitEmulHfPlusTau2D_
Definition: L1TdeRCT.h:222
const float BITETAMIN
Definition: L1TdeRCT.cc:54
const float TPGRANKMAX
Definition: L1TdeRCT.cc:75
MonitorElement * triggerAlgoNumbers_
Definition: L1TdeRCT.h:147
const float BITPHIMIN
Definition: L1TdeRCT.cc:58
void setVerbose(unsigned level)
Definition: DQMStore.cc:393
MonitorElement * rctNisoIneffChannel_[396]
Definition: L1TdeRCT.h:305
MonitorElement * rctRegSpIneff2D_
Definition: L1TdeRCT.h:180
const float ELMAX
Definition: L1TdeRCT.cc:83
bool first
Definition: L1TdeRCT.cc:94
bool isValid() const
Definition: HandleBase.h:76
MonitorElement * rctIsoEmEmulOcc_
Definition: L1TdeRCT.h:241
#define PHIMIN
MonitorElement * rctIsoEmEff1Occ_
Definition: L1TdeRCT.h:242
MonitorElement * rctNisoEmOvereff1D_
Definition: L1TdeRCT.h:294
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
MonitorElement * rctNisoEmEff2Occ_
Definition: L1TdeRCT.h:273
MonitorElement * rctBitUnmatchedEmulHfPlusTau2D_
Definition: L1TdeRCT.h:225
void beginJob(void)
Definition: L1TdeRCT.cc:180
MonitorElement * rctRegEff1D_
Definition: L1TdeRCT.h:161
MonitorElement * rctBitMatchedMip2D_
Definition: L1TdeRCT.h:207
MonitorElement * rctNisoEmEff2_
Definition: L1TdeRCT.h:278
MonitorElement * rctRegSpEff1D_
Definition: L1TdeRCT.h:164
int k[5][pyjets_maxn]
MonitorElement * rctIsoEmEff1Occ1D_
Definition: L1TdeRCT.h:255
MonitorElement * rctIsoEmEff1oneD_
Definition: L1TdeRCT.h:260
const float BITPHIMAX
Definition: L1TdeRCT.cc:59
int notrigCount
Definition: L1TdeRCT.h:352
MonitorElement * rctNisoEmIneff_
Definition: L1TdeRCT.h:280
edm::InputTag gtDigisLabel_
Definition: L1TdeRCT.h:344
MonitorElement * rctRegSpEffOcc1D_
Definition: L1TdeRCT.h:158
MonitorElement * rctRegMatchedOcc2D_
Definition: L1TdeRCT.h:169
MonitorElement * rctNIsoEmBitDiff_
Definition: L1TdeRCT.h:298
MonitorElement * rctBitHfPlusTauOvereff2D_
Definition: L1TdeRCT.h:229
MonitorElement * rctNisoEmEff1Occ_
Definition: L1TdeRCT.h:272
MonitorElement * rctIsoEmOvereff1D_
Definition: L1TdeRCT.h:264
MonitorElement * rctIsoEmEff1_
Definition: L1TdeRCT.h:247
MonitorElement * rctBitTauVetoIneff2D_
Definition: L1TdeRCT.h:203
const T & get() const
Definition: EventSetup.h:55
#define ETABINS
const unsigned int TPGRANK
Definition: L1TdeRCT.cc:73
T const * product() const
Definition: ESHandle.h:62
TH1F * getTH1F(void) const
long long int num
Definition: procUtils.cc:71
MonitorElement * rctInputTPGHcalRank_
Definition: L1TdeRCT.h:237
const unsigned int PhiEtaMax
Definition: L1TdeRCT.cc:89
MonitorElement * trigEffTriggThreshOcc_
Definition: L1TdeRCT.h:316
edm::InputTag ecalTPGData_
Definition: L1TdeRCT.h:342
const float HCALMAX
Definition: L1TdeRCT.cc:87
MonitorElement * rctIsoEmIneffOcc1D_
Definition: L1TdeRCT.h:258
MonitorElement * rctRegEffChannel_[396]
Definition: L1TdeRCT.h:309
MonitorElement * rctBitHfPlusTauEff2D_
Definition: L1TdeRCT.h:227
MonitorElement * rctNisoEmIneffOcc1D_
Definition: L1TdeRCT.h:288
MonitorElement * rctRegOvereffChannel_[396]
Definition: L1TdeRCT.h:311
const float DEMAX
Definition: L1TdeRCT.cc:79
std::string const & label() const
Definition: InputTag.h:25
MonitorElement * rctBitOverFlowIneff2D_
Definition: L1TdeRCT.h:195
MonitorElement * rctRegSpIneffOcc1D_
Definition: L1TdeRCT.h:159
MonitorElement * rctBitUnmatchedDataMip2D_
Definition: L1TdeRCT.h:209
L1TdeRCT(const edm::ParameterSet &ps)
Definition: L1TdeRCT.cc:120
MonitorElement * trigEffTriggOcc_[396]
Definition: L1TdeRCT.h:319
const unsigned int TPGPHIBINS
Definition: L1TdeRCT.cc:65
MonitorElement * rctBitMipEff2D_
Definition: L1TdeRCT.h:210
MonitorElement * rctIsoEmIneff2oneD_
Definition: L1TdeRCT.h:262
MonitorElement * rctRegUnmatchedDataOcc2D_
Definition: L1TdeRCT.h:170
MonitorElement * rctBitUnmatchedEmulMip2D_
Definition: L1TdeRCT.h:208
MonitorElement * rctBitOverFlowEff2D_
Definition: L1TdeRCT.h:194
MonitorElement * rctNIsoEmBitOff_
Definition: L1TdeRCT.h:297
MonitorElement * rctIsoIneffChannel_[396]
Definition: L1TdeRCT.h:301
MonitorElement * rctRegSpEffOcc2D_
Definition: L1TdeRCT.h:173
edm::EventAuxiliary::ExperimentType experimentType() const
Definition: EventBase.h:61
#define PHIBINS
const unsigned int BITRPHIBINS
Definition: L1TdeRCT.cc:61
MonitorElement * rctIsoEmOvereffOcc_
Definition: L1TdeRCT.h:246
MonitorElement * rctNisoEmDataOcc1D_
Definition: L1TdeRCT.h:283
const unsigned int BITETABINS
Definition: L1TdeRCT.cc:53
tuple cout
Definition: gather_cfg.py:121
MonitorElement * rctNIsoEmBitOn_
Definition: L1TdeRCT.h:296
MonitorElement * rctRegIneff1D_
Definition: L1TdeRCT.h:162
MonitorElement * rctNisoEmEff1Occ1D_
Definition: L1TdeRCT.h:285
MonitorElement * rctIsoEmDataOcc1D_
Definition: L1TdeRCT.h:253
const float TPGRANKMIN
Definition: L1TdeRCT.cc:74
MonitorElement * rctBitDataTauVeto2D_
Definition: L1TdeRCT.h:198
MonitorElement * rctIsoEffChannel_[396]
Definition: L1TdeRCT.h:300
const float HCALMIN
Definition: L1TdeRCT.cc:86
TH2F * getTH2F(void) const
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:845
T first(std::pair< T, U > const &p)
const float TPGETAMIN
Definition: L1TdeRCT.cc:70
void beginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &)
Definition: L1TdeRCT.cc:1980
MonitorElement * rctNisoEmOvereff_
Definition: L1TdeRCT.h:281
MonitorElement * rctRegEff2D_
Definition: L1TdeRCT.h:176
int filterTriggerType_
filter TriggerType
Definition: L1TdeRCT.h:349
MonitorElement * rctInputTPGEcalOccNoCut_
Definition: L1TdeRCT.h:234
MonitorElement * rctNisoOvereffChannel_[396]
Definition: L1TdeRCT.h:306
MonitorElement * rctNisoEmIneffOcc_
Definition: L1TdeRCT.h:275
MonitorElement * rctIsoEmEff2oneD_
Definition: L1TdeRCT.h:261
MonitorElement * rctBitUnmatchedDataQuiet2D_
Definition: L1TdeRCT.h:217
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
Definition: Run.h:33
int trigCount
Definition: L1TdeRCT.h:352
MonitorElement * rctRegSpIneff1D_
Definition: L1TdeRCT.h:165
MonitorElement * rctRegSpIneffOcc2D_
Definition: L1TdeRCT.h:174
const float TPGPHIMAX
Definition: L1TdeRCT.cc:67
MonitorElement * rctRegBitOff_
Definition: L1TdeRCT.h:183
MonitorElement * rctIsoEmIneff_
Definition: L1TdeRCT.h:250
MonitorElement * rctRegUnmatchedEmulOcc1D_
Definition: L1TdeRCT.h:157
MonitorElement * rctBitUnmatchedDataOverFlow2D_
Definition: L1TdeRCT.h:193
MonitorElement * rctIsoOvereffChannel_[396]
Definition: L1TdeRCT.h:302
MonitorElement * rctNisoEmEff1_
Definition: L1TdeRCT.h:277