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 
30 
31 #include "TF2.h"
32 
33 #include <iostream>
34 
37 
38 
39 using namespace edm;
40 
41 const unsigned int PHIBINS = 18;
42 const float PHIMIN = -0.5;
43 const float PHIMAX = 17.5;
44 
45 const unsigned int ETABINS = 22;
46 const float ETAMIN = -0.5;
47 const float ETAMAX = 21.5;
48 
49 const unsigned int TPGPHIBINS = 72;
50 const float TPGPHIMIN = -0.5;
51 const float TPGPHIMAX = 71.5;
52 
53 const unsigned int TPGETABINS = 64;
54 const float TPGETAMIN = -32.;
55 const float TPGETAMAX = 32.;
56 
57 const unsigned int TPGRANK = 256;
58 const float TPGRANKMIN = -.5;
59 const float TPGRANKMAX = 255.5;
60 
61 
62 const unsigned int DEBINS = 127;
63 const float DEMIN = -63.5;
64 const float DEMAX = 63.5;
65 
66 const unsigned int ELBINS = 64;
67 const float ELMIN = -.5;
68 const float ELMAX = 63.5;
69 
70 const unsigned int HCALBINS = 1024;
71 const float HCALMIN = -.5;
72 const float HCALMAX = 1023.5;
73 
74 const unsigned int PhiEtaMax = 396;
75 const unsigned int CHNLBINS = 396;
76 const float CHNLMIN = -0.5;
77 const float CHNLMAX = 395.5;
78 
79 bool first = true ;
80 
81 
82 const int L1TdeRCT::crateFED[90]=
83  {613, 614, 603, 702, 718,
84  611, 612, 602, 700, 718,
85  627, 610, 601,716, 722,
86  625, 626, 609, 714, 722,
87  623, 624, 608, 712, 722,
88  621, 622, 607, 710, 720,
89  619, 620, 606, 708, 720,
90  617, 618, 605, 706, 720,
91  615, 616, 604, 704, 718,
92  631, 632, 648, 703, 719,
93  629, 630, 647, 701, 719,
94  645, 628, 646, 717, 723,
95  643, 644, 654, 715, 723,
96  641, 642, 653, 713, 723,
97  639, 640, 652, 711, 721,
98  637, 638, 651, 709, 721,
99  635, 636, 650, 707, 721,
100  633, 634, 649, 705, 719
101 };
102 
103 
104 
106  rctSourceEmul_( ps.getParameter< InputTag >("rctSourceEmul") ),
107  rctSourceData_( ps.getParameter< InputTag >("rctSourceData") ),
108  ecalTPGData_( ps.getParameter< InputTag >("ecalTPGData") ),
109  hcalTPGData_( ps.getParameter< InputTag >("hcalTPGData") ),
110  gtDigisLabel_( ps.getParameter< InputTag >("gtDigisLabel") ),
111  gtEGAlgoName_ ( ps.getParameter< std::string >("gtEGAlgoName") ),
112  doubleThreshold_ ( ps.getParameter< int >("doubleThreshold") )
113 {
114 
115 
116 
117  singlechannelhistos_ = ps.getUntrackedParameter < bool > ("singlechannelhistos", false);
118 
120  if(verbose_) std::cout << "L1TdeRCT: single channels histos ON" << std::endl;
121 
122  // verbosity switch
123  verbose_ = ps.getUntrackedParameter < bool > ("verbose", false);
124 
125  if (verbose_)
126  std::cout << "L1TdeRCT: constructor...." << std::endl;
127 
128 
129  dbe = NULL;
130  if (ps.getUntrackedParameter < bool > ("DQMStore", false)) {
132  dbe->setVerbose(0);
133  }
134 
135  outputFile_ =
136  ps.getUntrackedParameter < std::string > ("outputFile", "");
137  if (outputFile_.size() != 0) {
138  if(verbose_) std::
139  cout << "L1T Monitoring histograms will be saved to " <<
140  outputFile_.c_str() << std::endl;
141  }
142 
143  bool disable =
144  ps.getUntrackedParameter < bool > ("disableROOToutput", false);
145  if (disable) {
146  outputFile_ = "";
147  }
148 
150  = ps.getUntrackedParameter<std::string>("HistFolder", "L1TEMU/L1TdeRCT/");
151 
152  if (dbe != NULL) {
154  }
155 
156 
157 
158 }
159 
161 {
162 }
163 
165 {
166 
167  nev_ = 0;
168 
169  // get hold of back-end interface
170  DQMStore *dbe = 0;
171  dbe = Service < DQMStore > ().operator->();
172 
173  if (dbe) {
175  dbe->rmdir(histFolder_);
176  }
177 
178 
179  if (dbe) {
180 
182 
184  dbe->book1D("gtTriggerAlgoNumbers", "gtTriggerAlgoNumbers", 128, -0.5, 127.5);
185 
187  dbe->book2D("rctInputTPGEcalOcc", "rctInputTPGEcalOcc", TPGETABINS, TPGETAMIN,
189 
191  dbe->book1D("rctInputTPGEcalRank", "rctInputTPGEcalRank", TPGRANK, TPGRANKMIN, TPGRANKMAX) ;
192 
194  dbe->book2D("rctInputTPGHcalOcc", "rctInputTPGHcalOcc", TPGETABINS, TPGETAMIN,
196 
198  dbe->book1D("rctInputTPGHcalSample", "rctInputTPGHcalSample", 10, -0.5, 9.5) ;
199 
201  dbe->book1D("rctInputTPGHcalRank", "rctInputTPGHcalRank", TPGRANK, TPGRANKMIN, TPGRANKMAX) ;
202 
203  dbe->setCurrentFolder(histFolder_+"EffCurves/NisoEm/");
204 
206  dbe->book2D("trigEffThresh", "Rank occupancy >= 2x trig thresh",
208 
209  dbe->setCurrentFolder(histFolder_+"EffCurves/NisoEm/ServiceData");
210 
212  dbe->book2D("trigEffThreshOcc", "Rank occupancy >= 2x trig thresh",
215  dbe->book2D("trigEffTriggThreshOcc", "Rank occupancy >= 2x trig thresh, triggered",
217 
218  dbe->setCurrentFolder(histFolder_+"IsoEm");
219 
220  rctIsoEmEff1_ =
221  dbe->book2D("rctIsoEmEff1", "rctIsoEmEff1", ETABINS, ETAMIN,
223 
225  dbe->book1D("rctIsoEmEff1oneD", "rctIsoEmEff1oneD",
227 
228  rctIsoEmEff2_ =
229  dbe->book2D("rctIsoEmEff2", "rctIsoEmEff2, energy matching required", ETABINS, ETAMIN,
231 
233  dbe->book1D("rctIsoEmEff2oneD", "rctIsoEmEff2oneD, energy matching required",
235 
237  dbe->book2D("rctIsoEmIneff2", "rctIsoEmIneff2, energy matching required", ETABINS, ETAMIN,
239 
241  dbe->book1D("rctIsoEmIneff2oneD", "rctIsoEmIneff2oneD, energy matching required",
243 
244 
246  dbe->book2D("rctIsoEmIneff", "rctIsoEmIneff", ETABINS, ETAMIN,
248 
250  dbe->book1D("rctIsoEmIneff1D", "rctIsoEmIneff1D",
252 
254  dbe->book2D("rctIsoEmOvereff", "rctIsoEmOvereff", ETABINS, ETAMIN,
256 
258  dbe->book1D("rctIsoEmOvereff1D", "rctIsoEmOvereff1D",
260 
261  dbe->setCurrentFolder(histFolder_+"IsoEm/ServiceData");
262 
264  dbe->book2D("rctIsoEmDataOcc", "rctIsoEmDataOcc", ETABINS, ETAMIN,
266 
268  dbe->book1D("rctIsoEmDataOcc1D", "rctIsoEmDataOcc1D",
270 
272  dbe->book2D("rctIsoEmEmulOcc", "rctIsoEmEmulOcc", ETABINS, ETAMIN,
274 
276  dbe->book1D("rctIsoEmEmulOcc1D", "rctIsoEmEmulOcc1D",
278 
280  dbe->book2D("rctIsoEmEff1Occ", "rctIsoEmEff1Occ", ETABINS, ETAMIN,
282 
284  dbe->book1D("rctIsoEmEff1Occ1D", "rctIsoEmEff1Occ1D",
286 
288  dbe->book2D("rctIsoEmEff2Occ", "rctIsoEmEff2Occ", ETABINS, ETAMIN,
290 
292  dbe->book1D("rctIsoEmEff2Occ1D", "rctIsoEmEff2Occ1D",
294 
296  dbe->book2D("rctIsoEmIneff2Occ", "rctIsoEmIneff2Occ", ETABINS, ETAMIN,
298 
300  dbe->book1D("rctIsoEmIneff2Occ1D", "rctIsoEmIneff2Occ1D",
302 
304  dbe->book2D("rctIsoEmIneffOcc", "rctIsoEmIneffOcc", ETABINS, ETAMIN,
306 
308  dbe->book1D("rctIsoEmIneffOcc1D", "rctIsoEmIneffOcc1D",
310 
312  dbe->book2D("rctIsoEmOvereffOcc", "rctIsoEmOvereffOcc", ETABINS, ETAMIN,
314 
316  dbe->book1D("rctIsoEmOvereffOcc1D", "rctIsoEmOvereffOcc1D",
318 
319 
320  dbe->setCurrentFolder(histFolder_+"NisoEm");
322  dbe->book2D("rctNisoEmEff1", "rctNisoEmEff1", ETABINS, ETAMIN,
324 
326  dbe->book1D("rctNisoEmEff1oneD", "rctNisoEmEff1oneD",
328 
330  dbe->book2D("rctNisoEmEff2", "rctNisoEmEff2, energy matching required", ETABINS, ETAMIN,
332 
334  dbe->book1D("rctNisoEmEff2oneD", "rctNisoEmEff2oneD, energy matching required",
336 
338  dbe->book2D("rctNisoEmIneff2", "rctNisoEmIneff2, energy matching required", ETABINS, ETAMIN,
340 
342  dbe->book1D("rctNisoEmIneff2oneD", "rctNisoEmIneff2oneD, energy matching required",
344 
345 
347  dbe->book2D("rctNisoEmIneff", "rctNisoEmIneff", ETABINS, ETAMIN,
349 
351  dbe->book1D("rctNisoEmIneff1D", "rctNisoEmIneff1D",
353 
355  dbe->book2D("rctNisoEmOvereff", "rctNisoEmOvereff", ETABINS, ETAMIN,
357 
359  dbe->book1D("rctNisoEmOvereff1D", "rctNisoEmOvereff1D",
361 
362  dbe->setCurrentFolder(histFolder_+"NisoEm/ServiceData");
363 
365  dbe->book2D("rctNisoEmDataOcc", "rctNisoEmDataOcc", ETABINS, ETAMIN,
367 
369  dbe->book1D("rctNisoEmDataOcc1D", "rctNisoEmDataOcc1D",
371 
373  dbe->book2D("rctNisoEmEmulOcc", "rctNisoEmEmulOcc", ETABINS, ETAMIN,
375 
377  dbe->book1D("rctNisoEmEmulOcc1D", "rctNisoEmEmulOcc1D",
379 
381  dbe->book2D("rctNisoEmEff1Occ", "rctNisoEmEff1Occ", ETABINS, ETAMIN,
383 
385  dbe->book1D("rctNisoEmEff1Occ1D", "rctNisoEmEff1Occ1D",
387 
389  dbe->book2D("rctNisoEmEff2Occ", "rctNisoEmEff2Occ", ETABINS, ETAMIN,
391 
393  dbe->book1D("rctNisoEmEff2Occ1D", "rctNisoEmEff2Occ1D",
395 
397  dbe->book2D("rctNisoEmIneff2Occ", "rctNisoEmIneff2Occ", ETABINS, ETAMIN,
399 
401  dbe->book1D("rctNisoEmIneff2Occ1D", "rctNisoEmIneff2Occ1D",
403 
405  dbe->book2D("rctNisoEmIneffOcc", "rctNisoEmIneffOcc", ETABINS, ETAMIN,
407 
409  dbe->book1D("rctNisoEmIneffOcc1D", "rctNisoEmIneffOcc1D",
411 
413  dbe->book2D("rctNisoEmOvereffOcc", "rctNisoEmOvereffOcc", ETABINS, ETAMIN,
415 
417  dbe->book1D("rctNisoEmOvereffOcc1D", "rctNisoEmOvereffOcc1D",
419 
420  // region information
421  dbe->setCurrentFolder(histFolder_+"RegionData");
422 
423  rctRegEff1D_ =
424  dbe->book1D("rctRegEff1D", "1D region efficiency",
426 
428  dbe->book1D("rctRegIneff1D", "1D region inefficiency",
430 
432  dbe->book1D("rctRegOvereff1D", "1D region overefficiency",
434 
436  dbe->book1D("rctRegSpEff1D", "1D region efficiency, energy matching required",
438 
440  dbe->book1D("rctRegSpIneff1D", "1D region inefficiency, energy matching required",
442 
443  rctRegEff2D_ =
444  dbe->book2D("rctRegEff2D", "2D region efficiency",
446 
448  dbe->book2D("rctRegIneff2D", "2D region inefficiency",
450 
452  dbe->book2D("rctRegOvereff2D", "2D region overefficiency",
454 
456  dbe->book2D("rctRegSpEff2D", "2D region efficiency, energy matching required",
458 
460  dbe->book2D("rctRegSpIneff2D", "2D region inefficiency, energy matching required",
462 
463  dbe->setCurrentFolder(histFolder_+"RegionData/ServiceData");
464 
466  dbe->book1D("rctRegDataOcc1D", "1D region occupancy from data",
468 
470  dbe->book1D("rctRegEmulOcc1D", "1D region occupancy from emulator",
472 
474  dbe->book1D("rctRegMatchedOcc1D", "1D region occupancy for matched hits",
476 
478  dbe->book1D("rctRegUnmatchedDataOcc1D", "1D region occupancy for unmatched hardware hits",
480 
482  dbe->book1D("rctRegUnmatchedEmulOcc1D", "1D region occupancy for unmatched emulator hits",
484 
486  dbe->book1D("rctRegSpEffOcc1D", "1D region occupancy for \\Delta E_{T} efficiency",
488 
490  dbe->book1D("rctRegSpIneffOcc1D", "1D region occupancy for \\Delta E_{T} efficiency ",
492 
494  dbe->book2D("rctRegDataOcc2D", "2D region occupancy from hardware",
496 
498  dbe->book2D("rctRegEmulOcc2D", "2D region occupancy from emulator",
500 
502  dbe->book2D("rctRegMatchedOcc2D", "2D region occupancy for matched hits",
504 
506  dbe->book2D("rctRegUnmatchedDataOcc2D", "2D region occupancy for unmatched hardware hits",
508 
510  dbe->book2D("rctRegUnmatchedEmulOcc2D", "2D region occupancy for unmatched emulator hits",
512 
513 // rctRegDeltaEt2D_ =
514 // dbe->book2D("rctRegDeltaEt2D", " \\Delta E_{T} for each channel",
515 // CHNLBINS, CHNLMIN, CHNLMAX, 100, -50., 50.);
516 
518  dbe->book2D("rctRegSpEffOcc2D", "2D region occupancy for \\Delta E_{T} efficiency",
520 
522  dbe->book2D("rctRegSpIneffOcc2D", "2D region occupancy for \\Delta E_{T} inefficiency",
524 
525  // bit information
526  dbe->setCurrentFolder(histFolder_+"BitData");
527 
529  dbe->book2D("rctBitOverFlowEff2D", "2D overflow bit efficiency",
531 
533  dbe->book2D("rctBitOverFlowIneff2D", "2D overflow bit inefficiency",
535 
537  dbe->book2D("rctBitOverFlowOvereff2D", "2D overflow bit overefficiency",
539 
541  dbe->book2D("rctBitTauVetoEff2D", "2D tau veto bit efficiency",
543 
545  dbe->book2D("rctBitTauVetoIneff2D", "2D tau veto bit inefficiency",
547 
549  dbe->book2D("rctBitTauVetoOvereff2D", "2D tau veto bit overefficiency",
551 
553  dbe->book2D("rctBitMipEff2D", "2D mip bit efficiency",
555 
557  dbe->book2D("rctBitMipIneff2D", "2D mip bit inefficiency",
559 
561  dbe->book2D("rctBitMipOvereff2D", "2D mip bit overefficiency",
563 
564  // QUIETBIT: To add quiet bit information, uncomment following 11 lines:
565  // rctBitQuietEff2D_ =
566  // dbe->book2D("rctBitQuietEff2D", "2D quiet bit efficiency",
567  // ETABINS, ETAMIN, ETAMAX, PHIBINS, PHIMIN, PHIMAX);
568 
569  // rctBitQuietIneff2D_ =
570  // dbe->book2D("rctBitQuietIneff2D", "2D quiet bit inefficiency",
571  // ETABINS, ETAMIN, ETAMAX, PHIBINS, PHIMIN, PHIMAX);
572 
573  // rctBitQuietOvereff2D_ =
574  // dbe->book2D("rctBitQuietOvereff2D", "2D quiet bit overefficiency",
575  // ETABINS, ETAMIN, ETAMAX, PHIBINS, PHIMIN, PHIMAX);
576 
578  dbe->book2D("rctBitHfPlusTauEff2D", "2D HfPlusTau bit efficiency",
580 
582  dbe->book2D("rctBitHfPlusTauIneff2D", "2D HfPlusTau bit inefficiency",
584 
586  dbe->book2D("rctBitHfPlusTauOvereff2D", "2D HfPlusTau bit overefficiency",
588 
589  dbe->setCurrentFolder(histFolder_+"BitData/ServiceData");
590 
592  dbe->book2D("rctBitEmulOverFlow2D", "2D overflow bit from emulator",
594 
596  dbe->book2D("rctBitDataOverFlow2D", "2D overflow bit from hardware",
598 
600  dbe->book2D("rctBitMatchedOverFlow2D", "2D overflow bit for matched hits",
602 
604  dbe->book2D("rctBitUnmatchedEmulOverFlow2D", "2D overflow bit for unmatched emulator hits",
606 
608  dbe->book2D("rctBitUnmatchedDataOverFlow2D", "2D overflow bit for unmatched hardware hits",
610 
612  dbe->book2D("rctBitEmulTauVeto2D", "2D tau veto bit from emulator",
614 
616  dbe->book2D("rctBitDataTauVeto2D", "2D tau veto bit from hardware",
618 
620  dbe->book2D("rctBitMatchedTauVeto2D", "2D tau veto bit for matched hits",
622 
624  dbe->book2D("rctBitUnmatchedEmulTauVeto2D", "2D tau veto bit for unmatched emulator hits",
626 
628  dbe->book2D("rctBitUnmatchedDataTauVeto2D", "2D tau veto bit for unmatched hardware hits",
630 
632  dbe->book2D("rctBitEmulMip2D", "2D mip bit from emulator",
634 
636  dbe->book2D("rctBitDataMip2D", "2D mip bit from hardware",
638 
640  dbe->book2D("rctBitMatchedMip2D", "2D mip bit for matched hits",
642 
644  dbe->book2D("rctBitUnmatchedEmulMip2D", "2D mip bit for unmatched emulator hits",
646 
648  dbe->book2D("rctBitUnmatchedDataMip2D", "2D mip bit for unmatched hardware hits",
650 
652  dbe->book2D("rctBitEmulQuiet2D", "2D quiet bit from emulator",
654 
656  dbe->book2D("rctBitDataQuiet2D", "2D quiet bit from hardware",
658 
660  dbe->book2D("rctBitMatchedQuiet2D", "2D quiet bit for matched hits",
662 
664  dbe->book2D("rctBitUnmatchedEmulQuiet2D", "2D quiet bit for unmatched emulator hits",
666 
668  dbe->book2D("rctBitUnmatchedDataQuiet2D", "2D quiet bit for unmatched hardware hits",
670 
672  dbe->book2D("rctBitEmulHfPlusTau2D", "2D HfPlusTau bit from emulator",
674 
676  dbe->book2D("rctBitDataHfPlusTau2D", "2D HfPlusTau bit from hardware",
678 
680  dbe->book2D("rctBitMatchedHfPlusTau2D", "2D HfPlusTau bit for matched hits",
682 
684  dbe->book2D("rctBitUnmatchedEmulHfPlusTau2D", "2D HfPlusTau bit for unmatched emulator hits",
686 
688  dbe->book2D("rctBitUnmatchedDataHfPlusTau2D", "2D HfPlusTau bit for unmatched hardware hits",
690 
691 
692  dbe->setCurrentFolder(histFolder_+"/DBData");
693  fedVectorMonitorRUN_ = dbe->book2D("rctFedVectorMonitorRUN", "FED Vector Monitor Per Run",90,0,90,2,0,2);
694  fedVectorMonitorLS_ = dbe->book2D("rctFedVectorMonitorLS", "FED Vector Monitor Per LS",90,0,90,2,0,2);
695 
696  for(unsigned int i=0;i<90;++i) {
697  char fed[10];
698  sprintf(fed,"%d",crateFED[i]);
699  fedVectorMonitorRUN_->getTH2F()->GetXaxis()->SetBinLabel(i+1,fed);
700  fedVectorMonitorLS_->getTH2F()->GetXaxis()->SetBinLabel(i+1,fed);
701  }
702  fedVectorMonitorRUN_->getTH2F()->GetYaxis()->SetBinLabel(1,"OUT");
703  fedVectorMonitorRUN_->getTH2F()->GetYaxis()->SetBinLabel(2,"IN");
704  fedVectorMonitorLS_->getTH2F()->GetYaxis()->SetBinLabel(1,"OUT");
705  fedVectorMonitorLS_->getTH2F()->GetYaxis()->SetBinLabel(2,"IN");
706 
707 
708 
709 // for single channels
710 
712  {
713  for(int m=0; m<12; m++)
714  {
715  if(m==0) dbe->setCurrentFolder(histFolder_+"IsoEm/ServiceData/Eff1SnglChnls");
716  if(m==1) dbe->setCurrentFolder(histFolder_+"NisoEm/ServiceData/Eff1SnglChnls");
717  if(m==2) dbe->setCurrentFolder(histFolder_+"RegionData/ServiceData/EffSnglChnls");
718  if(m==3) dbe->setCurrentFolder(histFolder_+"IsoEm/ServiceData/IneffSnglChnls");
719  if(m==4) dbe->setCurrentFolder(histFolder_+"NisoEm/ServiceData/IneffSnglChnls");
720  if(m==5) dbe->setCurrentFolder(histFolder_+"RegionData/ServiceData/IneffSnglChnls");
721  if(m==6) dbe->setCurrentFolder(histFolder_+"IsoEm/ServiceData/OvereffSnglChnls");
722  if(m==7) dbe->setCurrentFolder(histFolder_+"NisoEm/ServiceData/OvereffSnglChnls");
723  if(m==8) dbe->setCurrentFolder(histFolder_+"RegionData/ServiceData/OvereffSnglChnls");
724  if(m==9) dbe->setCurrentFolder(histFolder_+"EffCurves/NisoEm/ServiceData/SingleChannels");
725  if(m==10) dbe->setCurrentFolder(histFolder_+"EffCurves/NisoEm/ServiceData/SingleChannels");
726  if(m==11) dbe->setCurrentFolder(histFolder_+"EffCurves/NisoEm/ServiceData/SingleChannels");
727 
728  for(int i=0; i<ETAMAX; i++)
729  {
730  for(int j=0; j<PHIMAX; j++)
731  {
732  char name[80], channel[80]={""} ;
733 
734  if(m==0) strcpy(name,"(Eemul-Edata)Chnl") ;
735  if(m==1) strcpy(name,"(Eemul-Edata)Chnl") ;
736  if(m==2) strcpy(name,"(Eemul-Edata)Chnl") ;
737  if(m==3) strcpy(name,"EemulChnl") ;
738  if(m==4) strcpy(name,"EemulChnl") ;
739  if(m==5) strcpy(name,"EemulChnl") ;
740  if(m==6) strcpy(name,"EdataChnl") ;
741  if(m==7) strcpy(name,"EdataChnl") ;
742  if(m==8) strcpy(name,"EdataChnl") ;
743  if(m==9) strcpy(name,"EemulChnlEff") ;
744  if(m==10) strcpy(name,"EemulChnlTrig") ;
745  if(m==11) strcpy(name,"EemulChnl") ;
746 
747  if(i<10 && j<10) sprintf(channel,"_0%d0%d",i,j);
748  else if(i<10) sprintf(channel,"_0%d%d",i,j);
749  else if(j<10) sprintf(channel,"_%d0%d",i,j);
750  else sprintf(channel,"_%d%d",i,j);
751  strcat(name,channel);
752 
753  int chnl=PHIBINS*i+j;
754 
755  if(m==0) rctIsoEffChannel_[chnl] =
756  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
757  if(m==1) rctNisoEffChannel_[chnl] =
758  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
759  if(m==2) rctRegEffChannel_[chnl] =
760  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
761  if(m==3) rctIsoIneffChannel_[chnl] =
762  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
763  if(m==4) rctNisoIneffChannel_[chnl] =
764  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
765  if(m==5) rctRegIneffChannel_[chnl] =
766  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
767  if(m==6) rctIsoOvereffChannel_[chnl] =
768  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
769  if(m==7) rctNisoOvereffChannel_[chnl] =
770  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
771  if(m==8) rctRegOvereffChannel_[chnl] =
772  dbe->book1D(name, name, DEBINS, DEMIN, DEMAX);
773  if(m==9) trigEff_[chnl] =
774  dbe->book1D(name, name, ELBINS, ELMIN, ELMAX);
775  if(m==10) trigEffOcc_[chnl] =
776  dbe->book1D(name, name, ELBINS, ELMIN, ELMAX);
777  if(m==11) trigEffTriggOcc_[chnl] =
778  dbe->book1D(name, name, ELBINS, ELMIN, ELMAX);
779  }
780  }
781  }
782  }
783 
784 //end of single channels
785 
786 
787  }
788  notrigCount=0;
789  trigCount=0;
790 
791 }
792 
793 
795 {
796  if (verbose_)
797  std::cout << "L1TdeRCT: end job...." << std::endl;
798  LogInfo("EndJob") << "analyzed " << nev_ << " events";
799 
800  if (outputFile_.size() != 0 && dbe)
801  dbe->save(outputFile_);
802 
803  //std::cout << "trig count is " << trigCount << std::endl;
804  //std::cout << "no trig count is " << notrigCount << std::endl;
805 
806 
807  return;
808 }
809 
810 void L1TdeRCT::analyze(const Event & e, const EventSetup & c)
811 {
812  nev_++;
813  if (verbose_) {
814  std::cout << "L1TdeRCT: analyze...." << std::endl;
815  }
816 
817  // for GT decision word
818 // edm::ESHandle<L1GtTriggerMenu> menuRcd;
820 
821  // get GT trigger menu, maps algorithms to the bits read out
822 // c.get<L1GtTriggerMenuRcd>().get(menuRcd) ;
823 // const L1GtTriggerMenu* menu = menuRcd.product();
824 
825  // get GT decision word
826  //e.getByLabel( edm::InputTag("gtDigis"), gtRecord);
827  e.getByLabel( gtDigisLabel_ , gtRecord );
828  const DecisionWord dWord = gtRecord->decisionWord(); // this will get the decision word *before* masking disabled bits
829  int effEGThresholdBitNumber = 999;
830  if (gtEGAlgoName_ == "L1_SingleEG1")
831  {
832  effEGThresholdBitNumber = 46;
833  }
834  if (gtEGAlgoName_ == "L1_SingleEG5_0001")
835  {
836  effEGThresholdBitNumber = 47;
837  }
838  if (gtEGAlgoName_ == "L1_SingleEG8_0001")
839  {
840  effEGThresholdBitNumber = 48;
841  }
842  if (gtEGAlgoName_ == "L1_SingleEG10_0001")
843  {
844  effEGThresholdBitNumber = 49;
845  }
846  if (gtEGAlgoName_ == "L1_SingleEG12_0001")
847  {
848  effEGThresholdBitNumber = 50;
849  }
850  if (gtEGAlgoName_ == "L1_SingleEG15_0001")
851  {
852  effEGThresholdBitNumber = 51;
853  }
854  if (gtEGAlgoName_ == "L1_SingleEG20_0001")
855  {
856  effEGThresholdBitNumber = 52;
857  }
858 
859  int algoBitNumber = 0;
860  bool triggered = false;
861  bool independent_triggered = false;
862  DecisionWord::const_iterator algoItr;
863  for (algoItr = dWord.begin(); algoItr != dWord.end(); algoItr++)
864  {
865  if (*algoItr)
866  {
867  triggerAlgoNumbers_->Fill(algoBitNumber);
868  if (algoBitNumber == effEGThresholdBitNumber)
869  {
870  triggered = true;// Fill triggered events (numerator) here!
871  }
872  if (algoBitNumber <= 45 || algoBitNumber >= 53)
873  {
874  independent_triggered = true;// use the muon path only !
875  }
876  }
877  algoBitNumber++;
878  }
879 
880 
881  if(triggered)
882  trigCount++;
883  else
884  notrigCount++;
885 
886  // get TPGs
889 
890  // Get the RCT digis
893 
894  // Get the RCT digis
897 
898  // need to change to getByLabel
899  bool doEm = true;
900  bool doHd = true;
901  bool doEcal = true;
902  bool doHcal = true;
903 
904  // TPG, first try:
905  e.getByLabel(ecalTPGData_,ecalTpData);
906  e.getByLabel(hcalTPGData_,hcalTpData);
907 
908  if (!ecalTpData.isValid()) {
909  edm::LogInfo("TPG DataNotFound") << "can't find EcalTrigPrimDigiCollection with label "
910  << ecalTPGData_.label() ;
911  if (verbose_)std::cout << "Can not find ecalTpData!" << std::endl ;
912 
913  doEcal = false ;
914  }
915 
916  if(doEcal)
917  {
918  for(EcalTrigPrimDigiCollection::const_iterator iEcalTp = ecalTpData->begin(); iEcalTp != ecalTpData->end(); iEcalTp++)
919  if(iEcalTp->compressedEt() > 0)
920  {
921 
922  rctInputTPGEcalRank_ -> Fill(1.*(iEcalTp->compressedEt())) ;
923 
924  if(iEcalTp->id().ieta() > 0)
925  rctInputTPGEcalOcc_ -> Fill(1.*(iEcalTp->id().ieta())-0.5,iEcalTp->id().iphi()) ;
926  else
927  rctInputTPGEcalOcc_ -> Fill(1.*(iEcalTp->id().ieta())+0.5,iEcalTp->id().iphi()) ;
928 
929 if(verbose_) std::cout << " ECAL data: Energy: " << iEcalTp->compressedEt() << " eta " << iEcalTp->id().ieta() << " phi " << iEcalTp->id().iphi() << std::endl ;
930  }
931  }
932 
933  if (!hcalTpData.isValid()) {
934  edm::LogInfo("TPG DataNotFound") << "can't find HcalTrigPrimDigiCollection with label "
935  << hcalTPGData_.label() ;
936  if (verbose_)std::cout << "Can not find hcalTpData!" << std::endl ;
937 
938  doHcal = false ;
939  }
940 
941 
942  if(doHcal)
943  {
944 
945  for(HcalTrigPrimDigiCollection::const_iterator iHcalTp = hcalTpData->begin(); iHcalTp != hcalTpData->end(); iHcalTp++)
946  {
947  int highSample=0;
948  int highEt=0;
949 
950  for (int nSample = 0; nSample < 10; nSample++)
951  {
952  if (iHcalTp->sample(nSample).compressedEt() != 0)
953  {
954  if(verbose_) std::cout << "HCAL data: Et "
955  << iHcalTp->sample(nSample).compressedEt()
956  << " fg "
957  << iHcalTp->sample(nSample).fineGrain()
958  << " ieta " << iHcalTp->id().ieta()
959  << " iphi " << iHcalTp->id().iphi()
960  << " sample " << nSample
961  << std::endl ;
962  if (iHcalTp->sample(nSample).compressedEt() > highEt)
963  {
964  highSample = nSample;
965  highEt = iHcalTp->sample(nSample).compressedEt() ;
966  }
967  }
968 
969  }
970 
971  if(highEt != 0)
972  {
973  if(iHcalTp->id().ieta() > 0)
974  rctInputTPGHcalOcc_ -> Fill(1.*(iHcalTp->id().ieta())-0.5,iHcalTp->id().iphi()) ;
975  else
976  rctInputTPGHcalOcc_ -> Fill(1.*(iHcalTp->id().ieta())+0.5,iHcalTp->id().iphi()) ;
977  rctInputTPGHcalSample_ -> Fill(highSample,highEt) ;
978  rctInputTPGHcalRank_ -> Fill(highEt) ;
979  }
980 
981  }
982  }
983 
984 
985  e.getByLabel(rctSourceData_,rgnData);
986  e.getByLabel(rctSourceEmul_,rgnEmul);
987 
988  if (!rgnData.isValid()) {
989  edm::LogInfo("DataNotFound") << "can't find L1CaloRegionCollection with label "
990  << rctSourceData_.label() ;
991  if (verbose_)std::cout << "Can not find rgnData!" << std::endl ;
992  doHd = false;
993  }
994 
995 // if ( doHd ) {
996  if (!rgnEmul.isValid()) {
997  edm::LogInfo("DataNotFound") << "can't find L1CaloRegionCollection with label "
998  << rctSourceEmul_.label() ;
999  doHd = false;
1000  if (verbose_)std::cout << "Can not find rgnEmul!" << std::endl ;
1001  }
1002 // }
1003 
1004 
1005  e.getByLabel(rctSourceData_,emData);
1006  e.getByLabel(rctSourceEmul_,emEmul);
1007 
1008  if (!emData.isValid()) {
1009  edm::LogInfo("DataNotFound") << "can't find L1CaloEmCollection with label "
1010  << rctSourceData_.label() ;
1011  if (verbose_)std::cout << "Can not find emData!" << std::endl ;
1012  doEm = false;
1013  }
1014 
1015 // if ( doEm ) {
1016 
1017  if (!emEmul.isValid()) {
1018  edm::LogInfo("DataNotFound") << "can't find L1CaloEmCollection with label "
1019  << rctSourceEmul_.label() ;
1020  if (verbose_)std::cout << "Can not find emEmul!" << std::endl ;
1021  doEm = false; return ;
1022  }
1023 
1024 // }
1025 
1026 
1027  // Isolated and non-isolated EM
1028 
1029  // StepI: Reset
1030 
1031  int nelectrIsoData = 0;
1032  int nelectrNisoData = 0;
1033  int nelectrIsoEmul = 0;
1034  int nelectrNisoEmul = 0;
1035 
1036  int electronDataRank[2][PhiEtaMax]={{0}};
1037  int electronDataEta[2][PhiEtaMax]={{0}};
1038  int electronDataPhi[2][PhiEtaMax]={{0}};
1039  int electronEmulRank[2][PhiEtaMax]={{0}};
1040  int electronEmulEta[2][PhiEtaMax]={{0}};
1041  int electronEmulPhi[2][PhiEtaMax]={{0}};
1042 
1043  // region/bit arrays
1044  int nRegionData = 0;
1045  int nRegionEmul = 0;
1046 
1047  int regionDataRank[PhiEtaMax] = {0};
1048  int regionDataEta [PhiEtaMax] = {0};
1049  int regionDataPhi [PhiEtaMax] = {0};
1050 
1051  bool regionDataOverFlow [PhiEtaMax] = {false};
1052  bool regionDataTauVeto [PhiEtaMax] = {false};
1053  bool regionDataMip [PhiEtaMax] = {false};
1054  bool regionDataQuiet [PhiEtaMax] = {false};
1055  bool regionDataHfPlusTau[PhiEtaMax] = {false};
1056 
1057  int regionEmulRank[PhiEtaMax] = {0};
1058  int regionEmulEta [PhiEtaMax] = {0};
1059  int regionEmulPhi [PhiEtaMax] = {0};
1060 
1061  bool regionEmulOverFlow [PhiEtaMax] = {false};
1062  bool regionEmulTauVeto [PhiEtaMax] = {false};
1063  bool regionEmulMip [PhiEtaMax] = {false};
1064  bool regionEmulQuiet [PhiEtaMax] = {false};
1065  bool regionEmulHfPlusTau[PhiEtaMax] = {false};
1066 
1067 if(first)
1068 {
1069  first = false ;
1070 }
1071 
1072 
1073  // StepII: fill variables
1074 
1075  for (L1CaloEmCollection::const_iterator iem = emEmul->begin();
1076  iem != emEmul->end();
1077  iem++)
1078  {
1079  if(iem->rank() >= 1)
1080  {
1081  if(iem->isolated())
1082  {
1083  rctIsoEmEmulOcc_->Fill(iem->regionId().ieta(), iem->regionId().iphi());
1084 
1085  // to show bad channles in the 2D efficiency plots
1086  rctIsoEmIneffOcc_->Fill (iem->regionId().ieta(), iem->regionId().iphi(), 0.01);
1087  rctIsoEmEff1Occ_->Fill (iem->regionId().ieta(), iem->regionId().iphi(), 0.01);
1088 
1089  int channel;
1090 
1091  channel=PHIBINS*iem->regionId().ieta()+iem->regionId().iphi();
1092  rctIsoEmEmulOcc1D_->Fill(channel);
1093  electronEmulRank[0][nelectrIsoEmul]=iem->rank();
1094  electronEmulEta[0][nelectrIsoEmul]=iem->regionId().ieta();
1095  electronEmulPhi[0][nelectrIsoEmul]=iem->regionId().iphi();
1096  nelectrIsoEmul++ ;
1097  }
1098 
1099  else
1100  {
1101  rctNisoEmEmulOcc_->Fill(iem->regionId().ieta(), iem->regionId().iphi());
1102 
1103  // to show bad channles in the 2D efficiency plots
1104  rctNisoEmIneffOcc_->Fill (iem->regionId().ieta(), iem->regionId().iphi(), 0.01);
1105  rctNisoEmEff1Occ_->Fill (iem->regionId().ieta(), iem->regionId().iphi(), 0.01);
1106 
1107  int channel;
1108 //
1109 
1110  channel=PHIBINS*iem->regionId().ieta()+iem->regionId().iphi();
1111  rctNisoEmEmulOcc1D_->Fill(channel);
1112  electronEmulRank[1][nelectrNisoEmul]=iem->rank();
1113  electronEmulEta[1][nelectrNisoEmul]=iem->regionId().ieta();
1114  electronEmulPhi[1][nelectrNisoEmul]=iem->regionId().iphi();
1115  nelectrNisoEmul++ ;
1116  }
1117  }
1118  }
1119 
1120  for (L1CaloEmCollection::const_iterator iem = emData->begin();
1121  iem != emData->end();
1122  iem++)
1123  {
1124  if(iem->rank() >= 1)
1125  {
1126  if (iem->isolated())
1127  {
1128  rctIsoEmDataOcc_->Fill(iem->regionId().ieta(), iem->regionId().iphi());
1129 
1130  // new stuff to avoid 0's in emulator 2D //
1131  // rctIsoEmEmulOcc_->Fill(iem->regionId().ieta(), iem->regionId().iphi(),0.01);
1132  rctIsoEmOvereffOcc_->Fill (iem->regionId().ieta(),
1133  iem->regionId().iphi(), 0.01);
1134 
1135  int channel;
1136 
1137  channel=PHIBINS*iem->regionId().ieta()+iem->regionId().iphi();
1138  rctIsoEmDataOcc1D_->Fill(channel);
1139 
1140  // new stuff to avoid 0's
1141  // rctIsoEmEmulOcc1D_->Fill(channel);
1142 
1143  electronDataRank[0][nelectrIsoData]=iem->rank();
1144  electronDataEta[0][nelectrIsoData]=iem->regionId().ieta();
1145  electronDataPhi[0][nelectrIsoData]=iem->regionId().iphi();
1146  nelectrIsoData++ ;
1147  }
1148 
1149  else
1150  {
1151  rctNisoEmDataOcc_->Fill(iem->regionId().ieta(), iem->regionId().iphi());
1152 
1153  // new stuff to avoid 0's in emulator 2D //
1154  // rctNisoEmEmulOcc_->Fill(iem->regionId().ieta(), iem->regionId().iphi(),0.01);
1155  rctNisoEmOvereffOcc_->Fill (iem->regionId().ieta(),
1156  iem->regionId().iphi(), 0.01);
1157 
1158  int channel;
1159 
1160  channel=PHIBINS*iem->regionId().ieta()+iem->regionId().iphi();
1161  rctNisoEmDataOcc1D_->Fill(channel);
1162 
1163  // new stuff to avoid 0's
1164  // rctNisoEmEmulOcc1D_->Fill(channel);
1165 
1166  electronDataRank[1][nelectrNisoData]=iem->rank();
1167  electronDataEta[1][nelectrNisoData]=iem->regionId().ieta();
1168  electronDataPhi[1][nelectrNisoData]=iem->regionId().iphi();
1169  nelectrNisoData++ ;
1170  }
1171  }
1172  }
1173 
1174  // fill region/bit arrays for emulator
1175  for(L1CaloRegionCollection::const_iterator ireg = rgnEmul->begin();
1176  ireg != rgnEmul->end();
1177  ireg++)
1178  {
1179 // std::cout << "Emul: " << nRegionEmul << " " << ireg->gctEta() << " " << ireg->gctPhi() << std::endl;
1180  if(ireg->overFlow()) rctBitEmulOverFlow2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1181  if(ireg->tauVeto()) rctBitEmulTauVeto2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1182  if(ireg->mip()) rctBitEmulMip2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1183  if(ireg->quiet()) rctBitEmulQuiet2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1184  if(ireg->fineGrain()) rctBitEmulHfPlusTau2D_->Fill(ireg->gctEta(), ireg->gctPhi());
1185  if(ireg->et() > 0)
1186  {
1187  rctRegEmulOcc1D_->Fill(PHIBINS*ireg->gctEta() + ireg->gctPhi());
1188  rctRegEmulOcc2D_->Fill(ireg->gctEta(), ireg->gctPhi());
1189  }
1190 
1191  // to show bad channels in 2D efficiency plots:
1192  if(ireg->overFlow()) {
1193  rctBitUnmatchedEmulOverFlow2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1194  rctBitMatchedOverFlow2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1195  }
1196 
1197  if(ireg->tauVeto()) {
1198  rctBitUnmatchedEmulTauVeto2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1199  rctBitMatchedTauVeto2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1200  }
1201 
1202  if(ireg->mip()) {
1203  rctBitUnmatchedEmulMip2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1204  rctBitMatchedMip2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1205  }
1206 
1207  if(ireg->quiet()) {
1208  rctBitUnmatchedEmulQuiet2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1209  rctBitMatchedQuiet2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1210  }
1211 
1212  if(ireg->fineGrain()) {
1213  rctBitUnmatchedEmulHfPlusTau2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1214  rctBitMatchedHfPlusTau2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1215  }
1216 
1217  if(ireg->et() > 0) {
1218  rctRegUnmatchedEmulOcc2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1219  rctRegMatchedOcc2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01);
1220 /* rctRegDeltaEtOcc2D_->Fill (ireg->gctEta(), ireg->gctPhi(), 0.01); */
1221  }
1222 
1223  nRegionEmul = PHIBINS * ireg->gctEta() + ireg->gctPhi();
1224 
1225  regionEmulRank [nRegionEmul] = ireg->et();
1226  regionEmulEta [nRegionEmul] = ireg->gctEta();
1227  regionEmulPhi [nRegionEmul] = ireg->gctPhi();
1228  regionEmulOverFlow [nRegionEmul] = ireg->overFlow();
1229  regionEmulTauVeto [nRegionEmul] = ireg->tauVeto();
1230  regionEmulMip [nRegionEmul] = ireg->mip();
1231  regionEmulQuiet [nRegionEmul] = ireg->quiet();
1232  regionEmulHfPlusTau[nRegionEmul] = ireg->fineGrain();
1233  }
1234  // fill region/bit arrays for hardware
1235  for(L1CaloRegionCollection::const_iterator ireg = rgnData->begin();
1236  ireg != rgnData->end();
1237  ireg++)
1238  {
1239 // std::cout << "Data: " << nRegionData << " " << ireg->gctEta() << " " << ireg->gctPhi() << std::endl;
1240  if(ireg->overFlow()) rctBitDataOverFlow2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1241  if(ireg->tauVeto()) rctBitDataTauVeto2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1242  if(ireg->mip()) rctBitDataMip2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1243  if(ireg->quiet()) rctBitDataQuiet2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1244  if(ireg->fineGrain()) rctBitDataHfPlusTau2D_->Fill(ireg->gctEta(), ireg->gctPhi());
1245  if(ireg->et() > 0)
1246  {
1247  rctRegDataOcc1D_ ->Fill(PHIBINS*ireg->gctEta() + ireg->gctPhi());
1248  rctRegDataOcc2D_ ->Fill(ireg->gctEta(), ireg->gctPhi());
1249  }
1250  // to show bad channels in 2D inefficiency:
1251  // if(ireg->overFlow()) rctBitEmulOverFlow2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1252  // if(ireg->tauVeto()) rctBitEmulTauVeto2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1253  // if(ireg->mip()) rctBitEmulMip2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1254  // if(ireg->quiet()) rctBitEmulQuiet2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1255  // if(ireg->fineGrain()) rctBitEmulHfPlusTau2D_->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1256  // if(ireg->et() > 0) rctRegEmulOcc2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1257  if(ireg->overFlow()) rctBitUnmatchedDataOverFlow2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1258  if(ireg->tauVeto()) rctBitUnmatchedDataTauVeto2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1259  if(ireg->mip()) rctBitUnmatchedDataMip2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1260  if(ireg->quiet()) rctBitUnmatchedDataQuiet2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1261  if(ireg->fineGrain()) rctBitUnmatchedDataHfPlusTau2D_->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1262  if(ireg->et() > 0) rctRegUnmatchedDataOcc2D_ ->Fill(ireg->gctEta(), ireg->gctPhi(), 0.01);
1263 
1264  nRegionData = PHIBINS * ireg->gctEta() + ireg->gctPhi();
1265 
1266  regionDataRank [nRegionData] = ireg->et();
1267  regionDataEta [nRegionData] = ireg->gctEta();
1268  regionDataPhi [nRegionData] = ireg->gctPhi();
1269  regionDataOverFlow [nRegionData] = ireg->overFlow();
1270  regionDataTauVeto [nRegionData] = ireg->tauVeto();
1271  regionDataMip [nRegionData] = ireg->mip();
1272  regionDataQuiet [nRegionData] = ireg->quiet();
1273  regionDataHfPlusTau[nRegionData] = ireg->fineGrain();
1274  }
1275 
1276  if(verbose_)
1277 {
1278  std::cout << "I found Data! Iso: " << nelectrIsoData << " Niso: " << nelectrNisoData << std::endl ;
1279  for(int i=0; i<nelectrIsoData; i++)
1280  std::cout << " Iso Energy " << electronDataRank[0][i] << " eta " << electronDataEta[0][i] << " phi " << electronDataPhi[0][i] << std::endl ;
1281  for(int i=0; i<nelectrNisoData; i++)
1282  std::cout << " Niso Energy " << electronDataRank[1][i] << " eta " << electronDataEta[1][i] << " phi " << electronDataPhi[1][i] << std::endl ;
1283 
1284  std::cout << "I found Emul! Iso: " << nelectrIsoEmul << " Niso: " << nelectrNisoEmul << std::endl ;
1285  for(int i=0; i<nelectrIsoEmul; i++)
1286  std::cout << " Iso Energy " << electronEmulRank[0][i] << " eta " << electronEmulEta[0][i] << " phi " << electronEmulPhi[0][i] << std::endl ;
1287  for(int i=0; i<nelectrNisoEmul; i++)
1288  std::cout << " Niso Energy " << electronEmulRank[1][i] << " eta " << electronEmulEta[1][i] << " phi " << electronEmulPhi[1][i] << std::endl ;
1289 
1290  std::cout << "I found Data! Regions: " << PhiEtaMax << std::endl ;
1291  for(int i=0; i<(int)PhiEtaMax; i++)
1292  if(regionDataRank[i] !=0 ) std::cout << " Energy " << regionDataRank[i] << " eta " << regionDataEta[i] << " phi " << regionDataPhi[i] << std::endl ;
1293 
1294  std::cout << "I found Emul! Regions: " << PhiEtaMax << std::endl ;
1295  for(int i=0; i<(int)PhiEtaMax; i++)
1296  if(regionEmulRank[i] !=0 ) std::cout << " Energy " << regionEmulRank[i] << " eta " << regionEmulEta[i] << " phi " << regionEmulPhi[i] << std::endl ;
1297 }
1298 
1299  // StepIII: calculate and fill
1300 
1301  for(int k=0; k<2; k++)
1302  {
1303  int nelectrE, nelectrD;
1304 
1305  if(k==0)
1306  {
1307  nelectrE=nelectrIsoEmul;
1308  nelectrD=nelectrIsoData;
1309  }
1310 
1311  else
1312  {
1313  nelectrE=nelectrNisoEmul;
1314  nelectrD=nelectrNisoData;
1315  }
1316 
1317  for(int i = 0; i < nelectrE; i++)
1318  {
1319  //bool triggered = l1SingleEG2; //false; //HACK until true trigger implimented
1320  double trigThresh = doubleThreshold_; //ditto
1321  if(singlechannelhistos_) {
1322  int chnl=PHIBINS*electronEmulEta[k][i]+electronEmulPhi[k][i];
1323  if(k==1 && independent_triggered) { //non-iso
1324  //std::cout << "eta " << electronEmulEta[k][i] << " phi " << electronEmulPhi[k][i] << " with rank " << electronEmulRank[k][i] << std::endl;
1325  trigEffOcc_[chnl]->Fill(electronEmulRank[k][i]);
1326 // }
1327  if(triggered)
1328  trigEffTriggOcc_[chnl]->Fill(electronEmulRank[k][i]); }
1329  }
1330  //find number of objects with rank above 2x trigger threshold
1331  //and number after requiring a trigger too
1332  if(electronEmulRank[k][i]>=trigThresh){
1333  if(k==1 && independent_triggered) { //non-iso
1334  trigEffThreshOcc_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i]);
1335  trigEffTriggThreshOcc_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.01);
1336 // }
1337  if(triggered)
1338  trigEffTriggThreshOcc_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.98001); }
1339  }
1340 
1341 
1342 
1343  Bool_t found = kFALSE;
1344 
1345  for(int j = 0; j < nelectrD; j++)
1346  {
1347  if(electronEmulEta[k][i]==electronDataEta[k][j] &&
1348  electronEmulPhi[k][i]==electronDataPhi[k][j])
1349  {
1350  if(k==0)
1351  {
1352  rctIsoEmEff1Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.98001);
1353  // Weight is for ROOT; when added to initial weight of 0.01, should just exceed 0.99
1354 
1355  int chnl;
1356 
1357  chnl=PHIBINS*electronEmulEta[k][i]+electronEmulPhi[k][i];
1358  rctIsoEmEff1Occ1D_->Fill(chnl);
1360  {
1361  int energy_difference;
1362 
1363  energy_difference=(electronEmulRank[k][i] - electronDataRank[k][j]);
1364  rctIsoEffChannel_[chnl]->Fill(energy_difference);
1365  }
1366 
1367  if(electronEmulRank[k][i]==electronDataRank[k][j])
1368  {
1369  rctIsoEmEff2Occ1D_->Fill(chnl);
1370  rctIsoEmEff2Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.98012);
1371  // Weight is for ROOT; should just exceed 0.99
1372  // NOTE: Weight is different for eff 2 because this isn't filled initially
1373  // for current definition of Eff2 and Ineff2 we need to add additional
1374  // factor 0.99 since we divide over eff1 which is 0.99001 e.g. we use 0.99001**2 !
1375  rctIsoEmIneff2Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.0099);
1376  }
1377  else
1378  {
1379  rctIsoEmIneff2Occ1D_->Fill(chnl);
1380  rctIsoEmIneff2Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.9801);
1381  }
1382  }
1383 
1384  else
1385  {
1386  rctNisoEmEff1Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.98001);
1387  // Weight is for ROOT; when added to initial weight of 0.01, should just exceed 0.99
1388 
1389  int chnl;
1390 
1391  chnl=PHIBINS*electronEmulEta[k][i]+electronEmulPhi[k][i];
1392  rctNisoEmEff1Occ1D_->Fill(chnl);
1394  {
1395  int energy_difference;
1396 
1397  energy_difference=(electronEmulRank[k][i] - electronDataRank[k][j]) ;
1398  rctNisoEffChannel_[chnl]->Fill(energy_difference) ;
1399  }
1400 
1401  if(electronEmulRank[k][i]==electronDataRank[k][j])
1402  {
1403  rctNisoEmEff2Occ1D_->Fill(chnl);
1404  rctNisoEmEff2Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.98012);
1405  // Weight is for ROOT; should just exceed 0.99
1406  // NOTE: Weight is different for eff 2 because this isn't filled initially
1407  // see comments fo Iso
1408  rctNisoEmIneff2Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.0099);
1409  }
1410  else
1411  {
1412  rctNisoEmIneff2Occ1D_->Fill(chnl);
1413  rctNisoEmIneff2Occ_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.9801);
1414  }
1415  }
1416 
1417  found = kTRUE;
1418  }
1419  }
1420 
1421  if(found == kFALSE)
1422  {
1423  if(k==0)
1424  {
1425  rctIsoEmIneffOcc_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.98);
1426  // Weight is for ROOT; when added to initial weight of 0.01, should equal 0.99
1427 
1428  int chnl;
1429 
1430  chnl=PHIBINS*electronEmulEta[k][i]+electronEmulPhi[k][i];
1431  rctIsoEmIneffOcc1D_->Fill(chnl);
1433  {
1434  rctIsoIneffChannel_[chnl]->Fill(electronEmulRank[k][i]);
1435  }
1436  }
1437 
1438  else
1439  {
1440  rctNisoEmIneffOcc_->Fill(electronEmulEta[k][i], electronEmulPhi[k][i], 0.98);
1441  // Weight is for ROOT; when added to initial weight of 0.01, should equal 0.99
1442 
1443  int chnl;
1444 
1445  chnl=PHIBINS*electronEmulEta[k][i]+electronEmulPhi[k][i];
1446  rctNisoEmIneffOcc1D_->Fill(chnl);
1448  {
1449  rctNisoIneffChannel_[chnl]->Fill(electronEmulRank[k][i]);
1450  }
1451  }
1452  }
1453 
1454  }
1455 
1458 // DivideME1D(rctIsoEmEff2Occ1D_, rctIsoEmEmulOcc1D_, rctIsoEmEff2oneD_);
1459 // DivideME2D(rctIsoEmEff2Occ_, rctIsoEmEmulOcc_, rctIsoEmEff2_) ;
1462 // DivideME1D(rctIsoEmIneff2Occ1D_, rctIsoEmEmulOcc1D_, rctIsoEmIneff2oneD_);
1463 // DivideME2D(rctIsoEmIneff2Occ_, rctIsoEmEmulOcc_, rctIsoEmIneff2_) ;
1466 
1469 // DivideME1D(rctNisoEmEff2Occ1D_, rctNisoEmEmulOcc1D_, rctNisoEmEff2oneD_);
1470 // DivideME2D(rctNisoEmEff2Occ_, rctNisoEmEmulOcc_, rctNisoEmEff2_);
1473 // DivideME1D(rctNisoEmIneff2Occ1D_, rctNisoEmEmulOcc1D_, rctNisoEmIneff2oneD_);
1474 // DivideME2D(rctNisoEmIneff2Occ_, rctNisoEmEmulOcc_, rctNisoEmIneff2_);
1477 
1482 
1484  if(singlechannelhistos_) {
1485  for(int i = 0; i < nelectrE; i++)
1486  {
1487  int chnl=PHIBINS*electronEmulEta[k][i]+electronEmulPhi[k][i];
1488  DivideME1D(trigEffTriggOcc_[chnl], trigEffOcc_[chnl], trigEff_[chnl]);
1489  }
1490  }
1491 
1492  for(int i = 0; i < nelectrD; i++)
1493  {
1494  Bool_t found = kFALSE;
1495 
1496  for(int j = 0; j < nelectrE; j++)
1497  {
1498  if(electronEmulEta[k][j]==electronDataEta[k][i] &&
1499  electronEmulPhi[k][j]==electronDataPhi[k][i])
1500  {
1501  found = kTRUE;
1502  }
1503  }
1504 
1505  if(found == kFALSE)
1506  {
1507  if(k==0)
1508  {
1509  rctIsoEmOvereffOcc_->Fill(electronDataEta[k][i], electronDataPhi[k][i], 0.98);
1510  // Weight is for ROOT; when added to initial weight of 0.01, should equal 0.99
1511 
1512  int chnl;
1513 
1514  chnl=PHIBINS*electronDataEta[k][i]+electronDataPhi[k][i];
1515  rctIsoEmOvereffOcc1D_->Fill(chnl);
1516 
1518  {
1519  rctIsoOvereffChannel_[chnl]->Fill(electronDataRank[k][i]);
1520  }
1521  }
1522 
1523  else
1524  {
1525  rctNisoEmOvereffOcc_->Fill(electronDataEta[k][i], electronDataPhi[k][i], 0.98);
1526  // Weight is for ROOT; when added to initial weight of 0.01, should equal 0.99
1527 
1528  int chnl;
1529 
1530  chnl=PHIBINS*electronDataEta[k][i]+electronDataPhi[k][i];
1531  rctNisoEmOvereffOcc1D_->Fill(chnl) ;
1532 
1534  {
1535  rctNisoOvereffChannel_[chnl]->Fill(electronDataRank[k][i]);
1536  }
1537  }
1538  }
1539  }
1540 
1541  }
1542 
1543  // we try new definition of overefficiency:
1548 
1549 
1550  // calculate region/bit information
1551  for(unsigned int i = 0; i < (int)PhiEtaMax; i++)
1552 {
1553  Bool_t regFound = kFALSE;
1554  Bool_t overFlowFound = kFALSE;
1555  Bool_t tauVetoFound = kFALSE;
1556  Bool_t mipFound = kFALSE;
1557  Bool_t quietFound = kFALSE;
1558  Bool_t hfPlusTauFound = kFALSE;
1559 
1560 // for(int j = 0; j < nRegionData; j++)
1561 // {
1562 // if(regionEmulEta[i] == regionDataEta[j] &&
1563 // regionEmulPhi[i] == regionDataPhi[j])
1564 // {
1565  if(regionDataRank[i] >= 1 && regionEmulRank[i] >= 1)
1566  {
1567  int chnl;
1568 
1569  chnl = PHIBINS*regionEmulEta[i] + regionEmulPhi[i];
1570  rctRegMatchedOcc1D_->Fill(chnl);
1571  rctRegMatchedOcc2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.98001);
1572  // Weight is for ROOT; when added to initial weight of 0.01, should just exceed 0.99
1573 
1574  if(singlechannelhistos_) rctRegEffChannel_[chnl]->Fill(regionEmulRank[i] - regionDataRank[i]);
1575 
1576  // see comments for Iso Eff2
1577 
1578  if(regionEmulRank[i] == regionDataRank[i])
1579  {
1580  rctRegSpEffOcc1D_->Fill(chnl);
1581 // rctRegSpEffOcc2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.99001);
1582  rctRegSpEffOcc2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.98012);
1583  rctRegSpIneffOcc2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.0099);
1584  }
1585  else
1586  {
1587  rctRegSpIneffOcc1D_->Fill(chnl);
1588  rctRegSpIneffOcc2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.9801);
1589  }
1590  // Weight is for ROOT; should just exceed 0.99
1591  // NOTE: Weight is different for eff 2 because this isn't filled initially
1592 
1593  regFound = kTRUE;
1594  }
1595 
1596  if(regionEmulOverFlow[i] == true &&
1597  regionDataOverFlow[i] == true)
1598  {
1599  rctBitMatchedOverFlow2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.98001);
1600  overFlowFound = kTRUE;
1601  }
1602 
1603  if(regionEmulTauVeto[i] == true &&
1604  regionDataTauVeto[i] == true)
1605  {
1606  rctBitMatchedTauVeto2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.98001);
1607  tauVetoFound = kTRUE;
1608  }
1609 
1610  if (regionEmulMip[i] == true && regionDataMip[i] == true) {
1611  rctBitMatchedMip2D_->Fill (regionEmulEta[i], regionEmulPhi[i], 0.98001);
1612  mipFound = kTRUE;
1613  }
1614 
1615  if (regionEmulQuiet[i] == true && regionDataQuiet[i] == true) {
1616  rctBitMatchedQuiet2D_->Fill (regionEmulEta[i], regionEmulPhi[i], 0.98001);
1617  quietFound = kTRUE;
1618  }
1619 
1620  if (regionEmulHfPlusTau[i] == true && regionDataHfPlusTau[i] == true) {
1621  rctBitMatchedHfPlusTau2D_->Fill (regionEmulEta[i], regionEmulPhi[i], 0.98001);
1622  hfPlusTauFound = kTRUE;
1623  }
1624 
1625 
1626 // }
1627 // }
1628 
1629 
1630 
1631  if(regFound == kFALSE && regionEmulRank[i] >= 1 )
1632  {
1633  int chnl;
1634 
1635  chnl = PHIBINS*regionEmulEta[i] + regionEmulPhi[i];
1637  rctRegUnmatchedEmulOcc2D_->Fill(regionEmulEta[i], regionEmulPhi[i],0.98);
1638  // Weight is for ROOT; when added to initial weight of 0.01, should equal 0.99
1639 
1640  if(singlechannelhistos_) rctRegIneffChannel_[chnl]->Fill(regionEmulRank[i]);
1641  }
1642 
1643  if(overFlowFound == kFALSE && regionEmulOverFlow[i] == true)
1644  {
1645  rctBitUnmatchedEmulOverFlow2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.98);
1646  }
1647 
1648  if(tauVetoFound == kFALSE && regionEmulTauVeto[i] == true)
1649  {
1650  rctBitUnmatchedEmulTauVeto2D_->Fill(regionEmulEta[i], regionEmulPhi[i], 0.98);
1651  }
1652 
1653  if (mipFound == kFALSE && regionEmulMip[i] == true) {
1654  rctBitUnmatchedEmulMip2D_->Fill (regionEmulEta[i], regionEmulPhi[i], 0.98);
1655  }
1656 
1657  if (quietFound == kFALSE && regionEmulQuiet[i] == true) {
1658  rctBitUnmatchedEmulQuiet2D_->Fill (regionEmulEta[i], regionEmulPhi[i], 0.98);
1659  }
1660 
1661  if (hfPlusTauFound == kFALSE && regionEmulHfPlusTau[i] == true ) {
1662  rctBitUnmatchedEmulHfPlusTau2D_->Fill (regionEmulEta[i], regionEmulPhi[i], 0.98);
1663  }
1664 
1665 
1666 }
1667 
1668 
1671 // DivideME1D(rctRegSpEffOcc1D_, rctRegEmulOcc1D_, rctRegSpEff1D_);
1672 // DivideME2D(rctRegSpEffOcc2D_, rctRegEmulOcc2D_, rctRegSpEff2D_);
1675 // DivideME1D(rctRegSpIneffOcc1D_, rctRegEmulOcc1D_, rctRegSpIneff1D_);
1676 // DivideME2D(rctRegSpIneffOcc2D_, rctRegEmulOcc2D_, rctRegSpIneff2D_);
1682  // QUIETBIT: To add quiet bit information, uncomment following line:
1683  // DivideME2D (rctBitMatchedQuiet2D_, rctBitEmulQuiet2D_, rctBitQuietEff2D_);
1685 
1691  // QUIETBIT: To add quiet bit information, uncomment the following line:
1692  // DivideME2D (rctBitUnmatchedEmulQuiet2D_, rctBitEmulQuiet2D_, rctBitQuietIneff2D_);
1694 
1695 
1696  // for(int i = 0; i < nRegionData; i++)
1697  for (int i = 0; i < (int)PhiEtaMax; i++)
1698 {
1699  Bool_t regFound = kFALSE;
1700  Bool_t overFlowFound = kFALSE;
1701  Bool_t tauVetoFound = kFALSE;
1702  Bool_t mipFound = kFALSE;
1703  Bool_t quietFound = kFALSE;
1704  Bool_t hfPlusTauFound = kFALSE;
1705 
1706 // for(int j = 0; j < nRegionEmul; j++)
1707 // {
1708 // if(regionEmulEta[j] == regionDataEta[i] &&
1709 // regionEmulPhi[j] == regionDataPhi[i])
1710 // {
1711 
1712  if(regionEmulRank[i] >= 1 && regionDataRank[i] >= 1)
1713  regFound = kTRUE;
1714 
1715  if(regionDataOverFlow[i] == true &&
1716  regionEmulOverFlow[i] == true)
1717  overFlowFound = kTRUE;
1718 
1719  if(regionDataTauVeto[i] == true &&
1720  regionEmulTauVeto[i] == true)
1721  tauVetoFound = kTRUE;
1722 
1723  if (regionDataMip[i] == true && regionEmulMip[i] == true)
1724  mipFound = kTRUE;
1725 
1726  if (regionDataQuiet[i] == true && regionEmulQuiet[i] == true)
1727  quietFound = kTRUE;
1728 
1729  if (regionDataHfPlusTau[i] == true && regionEmulHfPlusTau[i] == true)
1730  hfPlusTauFound = kTRUE;
1731 // }
1732 // }
1733 
1734  if(regFound == kFALSE && regionDataRank[i] >= 1)
1735  {
1736  int chnl;
1737 
1738  chnl = PHIBINS*regionDataEta[i] + regionDataPhi[i];
1740  rctRegUnmatchedDataOcc2D_->Fill(regionDataEta[i], regionDataPhi[i], 0.98);
1741  // Weight is for ROOT; when added to initial weight of 0.01, should equal 0.99
1742 
1743  // we try a new definition of overefficiency:
1744  // DivideME1D(rctRegUnmatchedDataOcc1D_, rctRegDataOcc1D_, rctRegOvereff1D_);
1745  // DivideME2D(rctRegUnmatchedDataOcc2D_, rctRegDataOcc2D_, rctRegOvereff2D_);
1746 
1747  if(singlechannelhistos_) rctRegOvereffChannel_[chnl]->Fill(regionDataRank[i]);
1748  }
1749 
1750  if(overFlowFound == kFALSE && regionDataOverFlow[i] == true )
1751  {
1752  rctBitUnmatchedDataOverFlow2D_->Fill(regionDataEta[i], regionDataPhi[i], 0.98);
1753  }
1754 
1755  if(tauVetoFound == kFALSE && regionDataTauVeto[i] == true )
1756  {
1757  rctBitUnmatchedDataTauVeto2D_->Fill(regionDataEta[i], regionDataPhi[i], 0.98);
1758  }
1759 
1760  if (mipFound == kFALSE && regionDataMip[i] == true ) {
1761  rctBitUnmatchedDataMip2D_->Fill (regionDataEta[i], regionDataPhi[i], 0.98);
1762  }
1763 
1764  if (quietFound == kFALSE && regionDataQuiet[i] == true ) {
1765  rctBitUnmatchedDataQuiet2D_->Fill (regionDataEta[i], regionDataPhi[i], 0.98);
1766  }
1767 
1768  if (hfPlusTauFound == kFALSE && regionDataHfPlusTau[i] == true ) {
1769  rctBitUnmatchedDataHfPlusTau2D_->Fill (regionDataEta[i], regionDataPhi[i], 0.98);
1770  }
1771 
1772 }
1773 
1774  // we try a new definition of overefficiency:
1781  // QUIETBIT: To add quiet bit information, uncomment following 2 lines:
1782  // DivideME2D (rctBitUnmatchedDataQuiet2D_, rctBitDataQuiet2D_,
1783  // rctBitQuietOvereff2D_);
1786 
1787 }
1788 
1790 
1791  TH2F* num = numerator->getTH2F();
1792  TH2F* den = denominator->getTH2F();
1793  TH2F* res = result->getTH2F();
1794 
1795  res->Divide(num,den,1,1,"");
1796 
1797 }
1798 
1800 
1801  TH1F* num = numerator->getTH1F();
1802  TH1F* den = denominator->getTH1F();
1803  TH1F* res = result->getTH1F();
1804 
1805  res->Divide(num,den,1,1,"");
1806 
1807 }
1808 
1809 
1811 {
1813 
1814 }
1815 
1817 {
1819 }
1820 
1822 {
1823  // adding fed mask into channel mask
1825  es.get<RunInfoRcd>().get(sum);
1826  const RunInfo* summary=sum.product();
1827 
1828  std::vector<int> caloFeds; // pare down the feds to the intresting ones
1829 
1830  const std::vector<int> Feds = summary->m_fed_in;
1831  for(std::vector<int>::const_iterator cf = Feds.begin(); cf != Feds.end(); ++cf){
1832  int fedNum = *cf;
1833  if(fedNum > 600 && fedNum <724)
1834  caloFeds.push_back(fedNum);
1835  }
1836 
1837  for(unsigned int i=0;i<90;++i) {
1838  std::vector<int>::iterator fv = std::find(caloFeds.begin(),caloFeds.end(),crateFED[i]);
1839  if(fv!=caloFeds.end()) {
1840  histogram->setBinContent(i+1,2,1);
1841  histogram->setBinContent(i+1,1,0);
1842  }
1843  else
1844  {
1845  histogram->setBinContent(i+1,2,0);
1846  histogram->setBinContent(i+1,1,1);
1847 
1848  }
1849 
1850  }
1851 
1852 }
MonitorElement * rctBitUnmatchedDataTauVeto2D_
Definition: L1TdeRCT.h:181
void DivideME2D(MonitorElement *numerator, MonitorElement *denominator, MonitorElement *result)
Definition: L1TdeRCT.cc:1789
MonitorElement * rctRegUnmatchedDataOcc1D_
Definition: L1TdeRCT.h:140
T getUntrackedParameter(std::string const &, T const &) const
#define PHIMAX
int i
Definition: DBlmapReader.cc:9
MonitorElement * rctRegMatchedOcc1D_
Definition: L1TdeRCT.h:139
MonitorElement * rctNisoEmEmulOcc1D_
Definition: L1TdeRCT.h:259
MonitorElement * rctNisoEmIneff2oneD_
Definition: L1TdeRCT.h:267
MonitorElement * rctNisoEmIneff1D_
Definition: L1TdeRCT.h:268
DQMStore * dbe
Definition: L1TdeRCT.h:131
void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * rctNisoEmEff2Occ1D_
Definition: L1TdeRCT.h:261
void beginRun(const edm::Run &, const edm::EventSetup &)
Definition: L1TdeRCT.cc:1810
MonitorElement * rctInputTPGHcalOcc_
Definition: L1TdeRCT.h:215
const unsigned int TPGETABINS
Definition: L1TdeRCT.cc:53
edm::InputTag rctSourceEmul_
Definition: L1TdeRCT.h:311
MonitorElement * rctNisoEmEff2oneD_
Definition: L1TdeRCT.h:266
virtual ~L1TdeRCT()
Definition: L1TdeRCT.cc:160
MonitorElement * rctNisoEmIneff2Occ1D_
Definition: L1TdeRCT.h:262
const float ELMIN
Definition: L1TdeRCT.cc:67
MonitorElement * rctBitMatchedTauVeto2D_
Definition: L1TdeRCT.h:179
const unsigned int ELBINS
Definition: L1TdeRCT.cc:66
MonitorElement * rctBitDataMip2D_
Definition: L1TdeRCT.h:186
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:514
void rmdir(const std::string &fullpath)
Definition: DQMStore.cc:2311
MonitorElement * rctBitUnmatchedDataHfPlusTau2D_
Definition: L1TdeRCT.h:206
int nev_
Definition: L1TdeRCT.h:303
MonitorElement * rctBitEmulTauVeto2D_
Definition: L1TdeRCT.h:177
MonitorElement * rctIsoEmIneff2Occ_
Definition: L1TdeRCT.h:223
void readFEDVector(MonitorElement *, const edm::EventSetup &)
Definition: L1TdeRCT.cc:1821
MonitorElement * trigEffThresh_
Definition: L1TdeRCT.h:285
MonitorElement * rctBitHfPlusTauIneff2D_
Definition: L1TdeRCT.h:208
bool verbose_
Definition: L1TdeRCT.h:306
void analyze(const edm::Event &e, const edm::EventSetup &c)
Definition: L1TdeRCT.cc:810
MonitorElement * rctIsoEmIneff2Occ1D_
Definition: L1TdeRCT.h:236
MonitorElement * rctIsoEmEmulOcc1D_
Definition: L1TdeRCT.h:233
MonitorElement * rctBitUnmatchedEmulTauVeto2D_
Definition: L1TdeRCT.h:180
MonitorElement * rctBitUnmatchedEmulQuiet2D_
Definition: L1TdeRCT.h:196
std::string outputFile_
Definition: L1TdeRCT.h:304
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:1898
MonitorElement * trigEffThreshOcc_
Definition: L1TdeRCT.h:286
MonitorElement * rctNisoEffChannel_[396]
Definition: L1TdeRCT.h:275
MonitorElement * rctRegOvereff1D_
Definition: L1TdeRCT.h:147
std::vector< T >::const_iterator const_iterator
int doubleThreshold_
Definition: L1TdeRCT.h:317
MonitorElement * rctIsoEmEff2_
Definition: L1TdeRCT.h:227
const float TPGETAMAX
Definition: L1TdeRCT.cc:55
MonitorElement * rctNisoEmOvereffOcc1D_
Definition: L1TdeRCT.h:264
MonitorElement * trigEffOcc_[396]
Definition: L1TdeRCT.h:289
static const int crateFED[90]
Definition: L1TdeRCT.h:296
MonitorElement * rctRegOvereff2D_
Definition: L1TdeRCT.h:162
edm::InputTag hcalTPGData_
Definition: L1TdeRCT.h:314
#define NULL
Definition: scimark2.h:8
MonitorElement * rctIsoEmOvereffOcc1D_
Definition: L1TdeRCT.h:238
MonitorElement * rctBitTauVetoEff2D_
Definition: L1TdeRCT.h:182
MonitorElement * rctBitMatchedQuiet2D_
Definition: L1TdeRCT.h:195
MonitorElement * rctBitTauVetoOvereff2D_
Definition: L1TdeRCT.h:184
MonitorElement * rctRegDataOcc1D_
Definition: L1TdeRCT.h:137
MonitorElement * rctIsoEmIneffOcc_
Definition: L1TdeRCT.h:224
MonitorElement * rctBitDataQuiet2D_
Definition: L1TdeRCT.h:194
MonitorElement * rctBitMatchedHfPlusTau2D_
Definition: L1TdeRCT.h:204
MonitorElement * rctIsoEmEff2Occ_
Definition: L1TdeRCT.h:222
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:152
MonitorElement * rctRegUnmatchedEmulOcc2D_
Definition: L1TdeRCT.h:155
edm::InputTag rctSourceData_
Definition: L1TdeRCT.h:312
MonitorElement * rctRegSpEff2D_
Definition: L1TdeRCT.h:163
std::string histFolder_
Definition: L1TdeRCT.h:305
MonitorElement * rctBitUnmatchedEmulOverFlow2D_
Definition: L1TdeRCT.h:172
void endJob(void)
Definition: L1TdeRCT.cc:794
const unsigned int HCALBINS
Definition: L1TdeRCT.cc:70
MonitorElement * rctRegIneff2D_
Definition: L1TdeRCT.h:161
MonitorElement * rctIsoEmEff2Occ1D_
Definition: L1TdeRCT.h:235
bool singlechannelhistos_
Definition: L1TdeRCT.h:307
MonitorElement * rctBitMipIneff2D_
Definition: L1TdeRCT.h:191
const float TPGPHIMIN
Definition: L1TdeRCT.cc:50
return((rh^lh)&mask)
MonitorElement * rctBitOverFlowOvereff2D_
Definition: L1TdeRCT.h:176
void Fill(long long x)
MonitorElement * rctInputTPGHcalSample_
Definition: L1TdeRCT.h:217
MonitorElement * rctIsoEmOvereff_
Definition: L1TdeRCT.h:230
#define ETAMAX
MonitorElement * rctBitDataOverFlow2D_
Definition: L1TdeRCT.h:170
MonitorElement * rctIsoEmDataOcc_
Definition: L1TdeRCT.h:219
MonitorElement * fedVectorMonitorLS_
Definition: L1TdeRCT.h:298
const float CHNLMIN
Definition: L1TdeRCT.cc:76
MonitorElement * rctNisoEmEff1oneD_
Definition: L1TdeRCT.h:265
MonitorElement * rctNisoEmIneff2Occ_
Definition: L1TdeRCT.h:249
MonitorElement * rctNisoEmOvereffOcc_
Definition: L1TdeRCT.h:251
const float CHNLMAX
Definition: L1TdeRCT.cc:77
MonitorElement * rctNisoEmDataOcc_
Definition: L1TdeRCT.h:245
MonitorElement * rctNisoEmIneff2_
Definition: L1TdeRCT.h:254
const float DEMIN
Definition: L1TdeRCT.cc:63
MonitorElement * rctBitDataHfPlusTau2D_
Definition: L1TdeRCT.h:203
std::string gtEGAlgoName_
Definition: L1TdeRCT.h:316
void DivideME1D(MonitorElement *numerator, MonitorElement *denominator, MonitorElement *result)
Definition: L1TdeRCT.cc:1799
#define ETAMIN
MonitorElement * rctRegIneffChannel_[396]
Definition: L1TdeRCT.h:281
MonitorElement * rctInputTPGEcalOcc_
Definition: L1TdeRCT.h:213
MonitorElement * rctRegDataOcc2D_
Definition: L1TdeRCT.h:151
MonitorElement * rctInputTPGEcalRank_
Definition: L1TdeRCT.h:214
MonitorElement * rctIsoEmIneff1D_
Definition: L1TdeRCT.h:242
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
std::vector< bool > DecisionWord
typedefs
std::vector< int > m_fed_in
Definition: RunInfo.h:24
MonitorElement * rctBitMipOvereff2D_
Definition: L1TdeRCT.h:192
tuple result
Definition: query.py:137
MonitorElement * trigEff_[396]
Definition: L1TdeRCT.h:288
const unsigned int DEBINS
Definition: L1TdeRCT.cc:62
MonitorElement * rctBitMatchedOverFlow2D_
Definition: L1TdeRCT.h:171
const unsigned int CHNLBINS
Definition: L1TdeRCT.cc:75
MonitorElement * rctBitEmulOverFlow2D_
Definition: L1TdeRCT.h:169
MonitorElement * rctRegEmulOcc1D_
Definition: L1TdeRCT.h:138
MonitorElement * fedVectorMonitorRUN_
Definition: L1TdeRCT.h:297
MonitorElement * rctBitEmulMip2D_
Definition: L1TdeRCT.h:185
MonitorElement * rctIsoEmIneff2_
Definition: L1TdeRCT.h:228
MonitorElement * rctBitEmulQuiet2D_
Definition: L1TdeRCT.h:193
int j
Definition: DBlmapReader.cc:9
MonitorElement * rctNisoEmEmulOcc_
Definition: L1TdeRCT.h:246
MonitorElement * rctBitEmulHfPlusTau2D_
Definition: L1TdeRCT.h:202
const float TPGRANKMAX
Definition: L1TdeRCT.cc:59
MonitorElement * triggerAlgoNumbers_
Definition: L1TdeRCT.h:134
void setVerbose(unsigned level)
Definition: DQMStore.cc:196
MonitorElement * rctNisoIneffChannel_[396]
Definition: L1TdeRCT.h:276
MonitorElement * rctRegSpIneff2D_
Definition: L1TdeRCT.h:164
const float ELMAX
Definition: L1TdeRCT.cc:68
bool first
Definition: L1TdeRCT.cc:79
bool isValid() const
Definition: HandleBase.h:76
MonitorElement * rctIsoEmEmulOcc_
Definition: L1TdeRCT.h:220
#define PHIMIN
MonitorElement * rctIsoEmEff1Occ_
Definition: L1TdeRCT.h:221
MonitorElement * rctNisoEmOvereff1D_
Definition: L1TdeRCT.h:269
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:355
MonitorElement * rctNisoEmEff2Occ_
Definition: L1TdeRCT.h:248
MonitorElement * rctBitUnmatchedEmulHfPlusTau2D_
Definition: L1TdeRCT.h:205
void beginJob(void)
Definition: L1TdeRCT.cc:164
MonitorElement * rctRegEff1D_
Definition: L1TdeRCT.h:145
MonitorElement * rctBitMatchedMip2D_
Definition: L1TdeRCT.h:187
MonitorElement * rctNisoEmEff2_
Definition: L1TdeRCT.h:253
MonitorElement * rctRegSpEff1D_
Definition: L1TdeRCT.h:148
int k[5][pyjets_maxn]
MonitorElement * rctIsoEmEff1Occ1D_
Definition: L1TdeRCT.h:234
MonitorElement * rctIsoEmEff1oneD_
Definition: L1TdeRCT.h:239
int notrigCount
Definition: L1TdeRCT.h:320
MonitorElement * rctNisoEmIneff_
Definition: L1TdeRCT.h:255
edm::InputTag gtDigisLabel_
Definition: L1TdeRCT.h:315
MonitorElement * rctRegSpEffOcc1D_
Definition: L1TdeRCT.h:142
MonitorElement * rctRegMatchedOcc2D_
Definition: L1TdeRCT.h:153
MonitorElement * rctBitHfPlusTauOvereff2D_
Definition: L1TdeRCT.h:209
MonitorElement * rctNisoEmEff1Occ_
Definition: L1TdeRCT.h:247
MonitorElement * rctIsoEmOvereff1D_
Definition: L1TdeRCT.h:243
MonitorElement * rctIsoEmEff1_
Definition: L1TdeRCT.h:226
MonitorElement * rctBitTauVetoIneff2D_
Definition: L1TdeRCT.h:183
const T & get() const
Definition: EventSetup.h:55
#define ETABINS
const unsigned int TPGRANK
Definition: L1TdeRCT.cc:57
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:216
const unsigned int PhiEtaMax
Definition: L1TdeRCT.cc:74
MonitorElement * trigEffTriggThreshOcc_
Definition: L1TdeRCT.h:287
edm::InputTag ecalTPGData_
Definition: L1TdeRCT.h:313
const float HCALMAX
Definition: L1TdeRCT.cc:72
MonitorElement * rctIsoEmIneffOcc1D_
Definition: L1TdeRCT.h:237
MonitorElement * rctRegEffChannel_[396]
Definition: L1TdeRCT.h:280
MonitorElement * rctBitHfPlusTauEff2D_
Definition: L1TdeRCT.h:207
MonitorElement * rctNisoEmIneffOcc1D_
Definition: L1TdeRCT.h:263
MonitorElement * rctRegOvereffChannel_[396]
Definition: L1TdeRCT.h:282
const float DEMAX
Definition: L1TdeRCT.cc:64
std::string const & label() const
Definition: InputTag.h:25
MonitorElement * rctBitOverFlowIneff2D_
Definition: L1TdeRCT.h:175
MonitorElement * rctRegSpIneffOcc1D_
Definition: L1TdeRCT.h:143
MonitorElement * rctBitUnmatchedDataMip2D_
Definition: L1TdeRCT.h:189
L1TdeRCT(const edm::ParameterSet &ps)
Definition: L1TdeRCT.cc:105
MonitorElement * trigEffTriggOcc_[396]
Definition: L1TdeRCT.h:290
const unsigned int TPGPHIBINS
Definition: L1TdeRCT.cc:49
MonitorElement * rctBitMipEff2D_
Definition: L1TdeRCT.h:190
MonitorElement * rctIsoEmIneff2oneD_
Definition: L1TdeRCT.h:241
MonitorElement * rctRegUnmatchedDataOcc2D_
Definition: L1TdeRCT.h:154
MonitorElement * rctBitUnmatchedEmulMip2D_
Definition: L1TdeRCT.h:188
MonitorElement * rctBitOverFlowEff2D_
Definition: L1TdeRCT.h:174
MonitorElement * rctIsoIneffChannel_[396]
Definition: L1TdeRCT.h:272
MonitorElement * rctRegSpEffOcc2D_
Definition: L1TdeRCT.h:157
#define PHIBINS
MonitorElement * rctIsoEmOvereffOcc_
Definition: L1TdeRCT.h:225
MonitorElement * rctNisoEmDataOcc1D_
Definition: L1TdeRCT.h:258
tuple cout
Definition: gather_cfg.py:41
MonitorElement * rctRegIneff1D_
Definition: L1TdeRCT.h:146
MonitorElement * rctNisoEmEff1Occ1D_
Definition: L1TdeRCT.h:260
MonitorElement * rctIsoEmDataOcc1D_
Definition: L1TdeRCT.h:232
const float TPGRANKMIN
Definition: L1TdeRCT.cc:58
MonitorElement * rctBitDataTauVeto2D_
Definition: L1TdeRCT.h:178
MonitorElement * rctIsoEffChannel_[396]
Definition: L1TdeRCT.h:271
const float HCALMIN
Definition: L1TdeRCT.cc:71
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:642
T first(std::pair< T, U > const &p)
const float TPGETAMIN
Definition: L1TdeRCT.cc:54
void beginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &)
Definition: L1TdeRCT.cc:1816
MonitorElement * rctNisoEmOvereff_
Definition: L1TdeRCT.h:256
MonitorElement * rctRegEff2D_
Definition: L1TdeRCT.h:160
MonitorElement * rctNisoOvereffChannel_[396]
Definition: L1TdeRCT.h:277
MonitorElement * rctNisoEmIneffOcc_
Definition: L1TdeRCT.h:250
MonitorElement * rctIsoEmEff2oneD_
Definition: L1TdeRCT.h:240
MonitorElement * rctBitUnmatchedDataQuiet2D_
Definition: L1TdeRCT.h:197
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
Definition: Run.h:32
int trigCount
Definition: L1TdeRCT.h:320
MonitorElement * rctRegSpIneff1D_
Definition: L1TdeRCT.h:149
MonitorElement * rctRegSpIneffOcc2D_
Definition: L1TdeRCT.h:158
const float TPGPHIMAX
Definition: L1TdeRCT.cc:51
MonitorElement * rctIsoEmIneff_
Definition: L1TdeRCT.h:229
MonitorElement * rctRegUnmatchedEmulOcc1D_
Definition: L1TdeRCT.h:141
MonitorElement * rctBitUnmatchedDataOverFlow2D_
Definition: L1TdeRCT.h:173
MonitorElement * rctIsoOvereffChannel_[396]
Definition: L1TdeRCT.h:273
MonitorElement * rctNisoEmEff1_
Definition: L1TdeRCT.h:252