CMS 3D CMS Logo

L1TGCT.cc

Go to the documentation of this file.
00001 /*
00002  * \file L1TGCT.cc
00003  *
00004  * $Date: 2008/10/28 14:16:16 $
00005  * $Revision: 1.36 $
00006  * \author J. Berryhill
00007  *
00008  * $Log: L1TGCT.cc,v $
00009  * Revision 1.36  2008/10/28 14:16:16  tapper
00010  * Tidied up and removed some unnecessary code.
00011  *
00012  * Revision 1.35  2008/10/24 08:38:54  jbrooke
00013  * fix empty jet plots
00014  *
00015  * Revision 1.34  2008/10/10 12:41:24  jbrooke
00016  * put back checks on energy sum vector size, change [] to .at()
00017  *
00018  * Revision 1.33  2008/09/21 14:37:51  jad
00019  * updated HF Sums & Counts and added individual Jet Candidates and differences
00020  *
00021  * Revision 1.30  2008/06/09 11:07:52  tapper
00022  * Removed electron sub-folders with histograms per eta and phi bin.
00023  *
00024  * Revision 1.29  2008/06/06 15:18:22  tapper
00025  * Removed errorSummary folder stuff.
00026  *
00027  * Revision 1.28  2008/06/02 11:08:58  tapper
00028  * Added HF ring histograms....
00029  *
00030  * Revision 1.27  2008/05/12 12:52:46  tapper
00031  * Fixed problem when no GCT data in the event.
00032  *
00033  * Revision 1.26  2008/05/09 16:42:27  ameyer
00034  * *** empty log message ***
00035  *
00036  * Revision 1.25  2008/04/29 15:24:49  tapper
00037  * Changed path to summary histograms.
00038  *
00039  * Revision 1.24  2008/04/28 09:23:07  tapper
00040  * Added 1D eta and phi histograms for electrons and jets as input to Q tests.
00041  *
00042  * Revision 1.23  2008/04/25 15:40:21  tapper
00043  * Added histograms to EventInfo//errorSummarySegments.
00044  *
00045  * Revision 1.22  2008/03/20 19:38:25  berryhil
00046  *
00047  *
00048  * organized message logger
00049  *
00050  * Revision 1.21  2008/03/14 20:35:46  berryhil
00051  *
00052  *
00053  * stripped out obsolete parameter settings
00054  *
00055  * rpc tpg restored with correct dn access and dbe handling
00056  *
00057  * Revision 1.20  2008/03/12 17:24:24  berryhil
00058  *
00059  *
00060  * eliminated log files, truncated HCALTPGXana histo output
00061  *
00062  * Revision 1.19  2008/03/01 00:40:00  lat
00063  * DQM core migration.
00064  *
00065  * Revision 1.18  2008/02/20 18:59:29  tapper
00066  * Ported GCTMonitor histograms into L1TGCT
00067  *
00068  * Revision 1.17  2008/01/22 18:56:02  muzaffar
00069  * include cleanup. Only for cc/cpp files
00070  *
00071  * Revision 1.16  2007/12/21 17:41:20  berryhil
00072  *
00073  *
00074  * try/catch removal
00075  *
00076  * Revision 1.15  2007/11/19 15:08:22  lorenzo
00077  * changed top folder name
00078  *
00079  * Revision 1.14  2007/09/27 23:01:28  ratnik
00080  * QA campaign: fixes to compensate includes cleanup in  DataFormats/L1Trigger
00081  *
00082  * Revision 1.13  2007/09/27 16:56:26  wittich
00083  * verbosity fixes
00084  *
00085  * Revision 1.12  2007/09/26 15:26:23  berryhil
00086  *
00087  *
00088  * restored L1TGCT.cc
00089  *
00090  * Revision 1.10  2007/09/05 22:31:36  wittich
00091  * - Factorize getByLabels to approximate my understanding of what the
00092  *   HW can do.
00093  * - tested (loosely speaking) on GREJ' data.
00094  *
00095  * Revision 1.9  2007/09/04 02:54:19  wittich
00096  * - fix dupe ME in RCT
00097  * - put in rank>0 req in GCT
00098  * - various small other fixes
00099  *
00100  * Revision 1.8  2007/08/31 18:14:21  wittich
00101  * update GCT packages to reflect GctRawToDigi, and move to raw plots
00102  *
00103  * Revision 1.7  2007/08/31 11:02:56  wittich
00104  * cerr -> LogInfo
00105  *
00106  * Revision 1.6  2007/02/22 19:43:53  berryhil
00107  *
00108  *
00109  *
00110  * InputTag parameters added for all modules
00111  *
00112  *
00113  *
00114  */
00115 
00116 #include "DQM/L1TMonitor/interface/L1TGCT.h"
00117 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00118 
00119 // Trigger Headers
00120 
00121 // GCT and RCT data formats
00122 #include "DataFormats/L1GlobalCaloTrigger/interface/L1GctCollections.h"
00123 #include "DataFormats/L1GlobalCaloTrigger/interface/L1GctEtSums.h"
00124 #include "DQMServices/Core/interface/DQMStore.h"
00125 
00126 using namespace edm;
00127 
00128 // Define statics for bins etc.
00129 const unsigned int ETABINS = 22;
00130 const float ETAMIN = -0.5;
00131 const float ETAMAX = 21.5;
00132 
00133 const unsigned int METPHIBINS = 72;
00134 const float METPHIMIN = -0.5;
00135 const float METPHIMAX = 71.5;
00136 
00137 const unsigned int PHIBINS = 18;
00138 const float PHIMIN = -0.5;
00139 const float PHIMAX = 17.5;
00140 
00141 // Ranks 6, 10 and 12 bits
00142 const unsigned int R6BINS = 64;
00143 const float R6MIN = -0.5;
00144 const float R6MAX = 63.5;
00145 const unsigned int R10BINS = 1024;
00146 const float R10MIN = -0.5;
00147 const float R10MAX = 1023.5;
00148 const unsigned int R12BINS = 4096;
00149 const float R12MIN = -0.5;
00150 const float R12MAX = 4095.5;
00151 //and for 5 bits for the HF Ring stuff
00152 const unsigned int R5BINS = 32;
00153 const float R5MIN = -0.5;
00154 const float R5MAX = 31.5;
00155 //and for 3 bits for the HF Ring stuff
00156 const unsigned int R3BINS = 8;
00157 const float R3MIN = -0.5;
00158 const float R3MAX = 7.5;
00159 
00160 
00161 L1TGCT::L1TGCT(const edm::ParameterSet & ps) :
00162   gctCenJetsSource_(ps.getParameter<edm::InputTag>("gctCentralJetsSource")),
00163   gctForJetsSource_(ps.getParameter<edm::InputTag>("gctForwardJetsSource")),
00164   gctTauJetsSource_(ps.getParameter<edm::InputTag>("gctTauJetsSource")),
00165   gctEnergySumsSource_(ps.getParameter<edm::InputTag>("gctEnergySumsSource")),
00166   gctIsoEmSource_(ps.getParameter<edm::InputTag>("gctIsoEmSource")),
00167   gctNonIsoEmSource_(ps.getParameter<edm::InputTag>("gctNonIsoEmSource"))
00168 {
00169 
00170   // verbosity switch
00171   verbose_ = ps.getUntrackedParameter < bool > ("verbose", false);
00172 
00173   if (verbose_)
00174     edm::LogInfo("L1TGCT") << "L1TGCT: constructor...." << std::endl;
00175 
00176 
00177   dbe = NULL;
00178   if (ps.getUntrackedParameter < bool > ("DQMStore", false)) {
00179     dbe = edm::Service < DQMStore > ().operator->();
00180     dbe->setVerbose(0);
00181   }
00182 
00183   outputFile_ = ps.getUntrackedParameter < std::string > ("outputFile", "");
00184   if (outputFile_.size() != 0) {
00185     edm::LogInfo("L1TGCT") << "L1T Monitoring histograms will be saved to "
00186                            << outputFile_ << std::endl;
00187   }
00188 
00189   bool disable = ps.getUntrackedParameter<bool>("disableROOToutput", false);
00190   if(disable){
00191     outputFile_="";
00192   }
00193 
00194 
00195   if (dbe != NULL) {
00196     dbe->setCurrentFolder("L1T/L1TGCT");
00197   }
00198 
00199 }
00200 
00201 L1TGCT::~L1TGCT()
00202 {
00203 }
00204 
00205 void L1TGCT::beginJob(const edm::EventSetup & c)
00206 {
00207 
00208   nev_ = 0;
00209 
00210   // get hold of back-end interface
00211   DQMStore *dbe = 0;
00212   dbe = edm::Service < DQMStore > ().operator->();
00213 
00214   if (dbe) {
00215     dbe->setCurrentFolder("L1T/L1TGCT");
00216     dbe->rmdir("L1T/L1TGCT");
00217   }
00218 
00219 
00220   if (dbe) {
00221 
00222     dbe->setCurrentFolder("L1T/L1TGCT");
00223 
00224     // GCT hardware quantities for experts
00225     l1GctCenJetsEtEtaPhi_ = dbe->book2D("CenJetsEtEtaPhi", "CENTRAL JET RANK",
00226                                         PHIBINS, PHIMIN, PHIMAX, 
00227                                         ETABINS, ETAMIN, ETAMAX);
00228     l1GctForJetsEtEtaPhi_ = dbe->book2D("ForJetsEtEtaPhi", "FORWARD JET RANK",
00229                                         PHIBINS, PHIMIN, PHIMAX, 
00230                                         ETABINS, ETAMIN, ETAMAX);
00231     l1GctTauJetsEtEtaPhi_ = dbe->book2D("TauJetsEtEtaPhi", "TAU JET RANK", 
00232                                         PHIBINS, PHIMIN, PHIMAX, 
00233                                         ETABINS, ETAMIN, ETAMAX);
00234     l1GctIsoEmRankEtaPhi_ = dbe->book2D("IsoEmRankEtaPhi", "ISO EM RANK", 
00235                                         PHIBINS, PHIMIN, PHIMAX,                    
00236                                         ETABINS, ETAMIN, ETAMAX);
00237     l1GctNonIsoEmRankEtaPhi_ = dbe->book2D("NonIsoEmRankEtaPhi", "NON-ISO EM RANK",
00238                                            PHIBINS, PHIMIN, PHIMAX, 
00239                                            ETABINS, ETAMIN, ETAMAX);
00240     l1GctCenJetsOccEtaPhi_ = dbe->book2D("CenJetsOccEtaPhi", "CENTRAL JET OCCUPANCY",
00241                                          PHIBINS, PHIMIN, PHIMAX, 
00242                                          ETABINS, ETAMIN, ETAMAX);
00243     l1GctForJetsOccEtaPhi_ = dbe->book2D("ForJetsOccEtaPhi", "FORWARD JET OCCUPANCY",
00244                                          PHIBINS, PHIMIN, PHIMAX,
00245                                          ETABINS, ETAMIN, ETAMAX);
00246     l1GctTauJetsOccEtaPhi_ = dbe->book2D("TauJetsOccEtaPhi", "TAU JET OCCUPANCY",
00247                                          PHIBINS, PHIMIN, PHIMAX, 
00248                                          ETABINS, ETAMIN, ETAMAX);
00249     l1GctIsoEmOccEtaPhi_ = dbe->book2D("IsoEmOccEtaPhi", "ISO EM OCCUPANCY",
00250                                        PHIBINS, PHIMIN, PHIMAX, 
00251                                        ETABINS, ETAMIN, ETAMAX);
00252     l1GctNonIsoEmOccEtaPhi_ = dbe->book2D("NonIsoEmOccEtaPhi", "NON-ISO EM OCCUPANCY",
00253                                           PHIBINS, PHIMIN, PHIMAX, 
00254                                           ETABINS, ETAMIN, ETAMAX);
00255 
00256     l1GctHFRing0PosEtaNegEta_ = dbe->book2D("HFRing0Corr", "HF RING0 CORRELATION NEG POS ETA",
00257                                             PHIBINS, PHIMIN, PHIMAX, 
00258                                             ETABINS, ETAMIN, ETAMAX);
00259     l1GctHFRing1PosEtaNegEta_ = dbe->book2D("HFRing1Corr", "HF RING1 CORRELATION NEG POS ETA",
00260                                             PHIBINS, PHIMIN, PHIMAX, 
00261                                             ETABINS, ETAMIN, ETAMAX);
00262     l1GctHFRing0TowerCountPosEtaNegEta_ = dbe->book2D("HFRing0TowerCountCorr", "HF RING0 TOWER COUNT CORRELATION NEG POS ETA",
00263                                                       PHIBINS, PHIMIN, PHIMAX, 
00264                                                       ETABINS, ETAMIN, ETAMAX);
00265 
00266     l1GctHFRing1TowerCountPosEtaNegEta_ = dbe->book2D("HFRing1TowerCountCorr", "HF RING1 TOWER COUNT CORRELATION NEG POS ETA",
00267                                                       PHIBINS, PHIMIN, PHIMAX, 
00268                                                       ETABINS, ETAMIN, ETAMAX);
00269 
00270 
00271     // For Qtests need 1D eta and phi histograms (would be better if Qtests ran on 2D histograms too!)
00272     l1GctCenJetsOccEta_  = dbe->book1D("CenJetsOccEta", "CENTRAL JET ETA OCCUPANCY", ETABINS, ETAMIN, ETAMAX);
00273     l1GctCenJetsOccPhi_  = dbe->book1D("CenJetsOccPhi", "CENTRAL JET PHI OCCUPANCY", PHIBINS, PHIMIN, PHIMAX); 
00274     l1GctForJetsOccEta_  = dbe->book1D("ForJetsOccEta", "FORWARD JET ETA OCCUPANCY", ETABINS, ETAMIN, ETAMAX);
00275     l1GctForJetsOccPhi_  = dbe->book1D("ForJetsOccPhi", "FORWARD JET PHI OCCUPANCY", PHIBINS, PHIMIN, PHIMAX);
00276     l1GctTauJetsOccEta_  = dbe->book1D("TauJetsOccEta", "TAU JET ETA OCCUPANCY", ETABINS, ETAMIN, ETAMAX);
00277     l1GctTauJetsOccPhi_  = dbe->book1D("TauJetsOccPhi", "TAU JET PHI OCCUPANCY", PHIBINS, PHIMIN, PHIMAX); 
00278     l1GctIsoEmOccEta_    = dbe->book1D("IsoEmOccEta", "ISO EM ETA OCCUPANCY", ETABINS, ETAMIN, ETAMAX);
00279     l1GctIsoEmOccPhi_    = dbe->book1D("IsoEmOccPhi", "ISO EM PHI OCCUPANCY", PHIBINS, PHIMIN, PHIMAX); 
00280     l1GctNonIsoEmOccEta_ = dbe->book1D("NonIsoEmOccEta", "NON-ISO EM ETA OCCUPANCY", ETABINS, ETAMIN, ETAMAX);
00281     l1GctNonIsoEmOccPhi_ = dbe->book1D("NonIsoEmOccPhi", "NON-ISO EM PHI OCCUPANCY", PHIBINS, PHIMIN, PHIMAX); 
00282         
00283     //HF Ring stuff
00284     l1GctHFRing0TowerCountPosEta_ = dbe->book1D("HFRing0TowerCountPosEta", "POS ETA RING0 HFRING BIT", R3BINS, R3MIN, R3MAX);
00285     l1GctHFRing0TowerCountNegEta_ = dbe->book1D("HFRing0TowerCountNegEta", "NEG ETA RING0 HFRING BIT", R3BINS, R3MIN, R3MAX);
00286     l1GctHFRing1TowerCountPosEta_ = dbe->book1D("HFRing1TowerCountPosEta", "POS ETA RING1 HFRING BIT", R3BINS, R3MIN, R3MAX);
00287     l1GctHFRing1TowerCountNegEta_ = dbe->book1D("HFRing1TowerCountNegEta", "NEG ETA RING1 HFRING BIT", R3BINS, R3MIN, R3MAX);
00288 
00289     l1GctHFRing0ETSumPosEta_ = dbe->book1D("HFRing0ETSumPosEta", "POS ETA RING0 ET SUM", R3BINS, R3MIN, R3MAX);
00290     l1GctHFRing0ETSumNegEta_ = dbe->book1D("HFRing0ETSumNegEta", "NEG ETA RING0 ET SUM", R3BINS, R3MIN, R3MAX);
00291     l1GctHFRing1ETSumPosEta_ = dbe->book1D("HFRing1ETSumPosEta", "POS ETA RING1 ET SUM", R3BINS, R3MIN, R3MAX);
00292     l1GctHFRing1ETSumNegEta_ = dbe->book1D("HFRing1ETSumNegEta", "NEG ETA RING1 ET SUM", R3BINS, R3MIN, R3MAX);
00293     l1GctHFRingRatioPosEta_  = dbe->book1D("HFRingRatioPosEta", "RING RATIO POS ETA", R5BINS, R5MIN, R5MAX);
00294     l1GctHFRingRatioNegEta_  = dbe->book1D("HFRingRatioNegEta", "RING RATIO NEG ETA", R5BINS, R5MIN, R5MAX);
00295     
00296     // Rank histograms
00297     l1GctCenJetsRank_  = dbe->book1D("CenJetsRank", "CENTRAL JET RANK", R6BINS, R6MIN, R6MAX);
00298     l1GctForJetsRank_  = dbe->book1D("ForJetsRank", "FORWARD JET RANK", R6BINS, R6MIN, R6MAX);
00299     l1GctTauJetsRank_  = dbe->book1D("TauJetsRank", "TAU JET RANK", R6BINS, R6MIN, R6MAX);
00300     l1GctIsoEmRank_    = dbe->book1D("IsoEmRank", "ISO EM RANK", R6BINS, R6MIN, R6MAX);
00301     l1GctNonIsoEmRank_ = dbe->book1D("NonIsoEmRank", "NON-ISO EM RANK", R6BINS, R6MIN, R6MAX);
00302 
00303     // Energy sums
00304     l1GctEtMiss_    = dbe->book1D("EtMiss", "MISSING E_{T}", R12BINS, R12MIN, R12MAX);
00305     l1GctEtMissPhi_ = dbe->book1D("EtMissPhi", "MISSING E_{T} #phi", METPHIBINS, PHIMIN, PHIMAX);
00306     l1GctEtTotal_   = dbe->book1D("EtTotal", "TOTAL E_{T}", R12BINS, R12MIN, R12MAX);
00307     l1GctEtHad_     = dbe->book1D("EtHad", "TOTAL HAD E_{T}", R12BINS, R12MIN, R12MAX);
00308 
00309     // More detailed EM quantities
00310     l1GctIsoEmRankCand0_ = dbe->book1D("GctIsoEmRankCand0","ISO EM RANK CAND 0", R6BINS, R6MIN, R6MAX);
00311     l1GctIsoEmRankCand1_ = dbe->book1D("GctIsoEmRankCand1","ISO EM RANK CAND 1", R6BINS, R6MIN, R6MAX);
00312     l1GctIsoEmRankCand2_ = dbe->book1D("GctIsoEmRankCand2","ISO EM RANK CAND 2", R6BINS, R6MIN, R6MAX);
00313     l1GctIsoEmRankCand3_ = dbe->book1D("GctIsoEmRankCand3","ISO EM RANK CAND 3", R6BINS, R6MIN, R6MAX);
00314 
00315     l1GctNonIsoEmRankCand0_ = dbe->book1D("GctNonIsoEmRankCand0","NON-ISO EM RANK CAND 0", R6BINS, R6MIN, R6MAX);
00316     l1GctNonIsoEmRankCand1_ = dbe->book1D("GctNonIsoEmRankCand1","NON-ISO EM RANK CAND 1", R6BINS, R6MIN, R6MAX);
00317     l1GctNonIsoEmRankCand2_ = dbe->book1D("GctNonIsoEmRankCand2","NON-ISO EM RANK CAND 2", R6BINS, R6MIN, R6MAX);
00318     l1GctNonIsoEmRankCand3_ = dbe->book1D("GctNonIsoEmRankCand3","NON-ISO EM RANK CAND 3", R6BINS, R6MIN, R6MAX);
00319 
00320     l1GctCenJetsRankCand0_ = dbe->book1D("GctCenJetsRankCand0","CEN JET RANK CAND 0", R6BINS, R6MIN, R6MAX);
00321     l1GctCenJetsRankCand1_ = dbe->book1D("GctCenJetsRankCand1","CEN JET RANK CAND 1", R6BINS, R6MIN, R6MAX);
00322     l1GctCenJetsRankCand2_ = dbe->book1D("GctCenJetsRankCand2","CEN JET RANK CAND 2", R6BINS, R6MIN, R6MAX);
00323     l1GctCenJetsRankCand3_ = dbe->book1D("GctCenJetsRankCand3","CEN JET RANK CAND 3", R6BINS, R6MIN, R6MAX);
00324 
00325     l1GctForJetsRankCand0_ = dbe->book1D("GctForJetsRankCand0","FOR JET RANK CAND 0", R6BINS, R6MIN, R6MAX);
00326     l1GctForJetsRankCand1_ = dbe->book1D("GctForJetsRankCand1","FOR JET RANK CAND 1", R6BINS, R6MIN, R6MAX);
00327     l1GctForJetsRankCand2_ = dbe->book1D("GctForJetsRankCand2","FOR JET RANK CAND 2", R6BINS, R6MIN, R6MAX);
00328     l1GctForJetsRankCand3_ = dbe->book1D("GctForJetsRankCand3","FOR JET RANK CAND 3", R6BINS, R6MIN, R6MAX);
00329 
00330     l1GctTauJetsRankCand0_ = dbe->book1D("GctTauJetsRankCand0","TAU JET RANK CAND 0", R6BINS, R6MIN, R6MAX);
00331     l1GctTauJetsRankCand1_ = dbe->book1D("GctTauJetsRankCand1","TAU JET RANK CAND 1", R6BINS, R6MIN, R6MAX);
00332     l1GctTauJetsRankCand2_ = dbe->book1D("GctTauJetsRankCand2","TAU JET RANK CAND 2", R6BINS, R6MIN, R6MAX);
00333     l1GctTauJetsRankCand3_ = dbe->book1D("GctTauJetsRankCand3","TAU JET RANK CAND 3", R6BINS, R6MIN, R6MAX);
00334 
00335     l1GctIsoEmRankDiff01_ = dbe->book1D("GctIsoEmRankDiffCand01","ISO EM RANK CAND 0 - CAND 1", 2*R6BINS, -R6MAX, R6MAX);
00336     l1GctIsoEmRankDiff12_ = dbe->book1D("GctIsoEmRankDiffCand12","ISO EM RANK CAND 1 - CAND 2", 2*R6BINS, -R6MAX, R6MAX);
00337     l1GctIsoEmRankDiff23_ = dbe->book1D("GctIsoEmRankDiffCand23","ISO EM RANK CAND 2 - CAND 3", 2*R6BINS, -R6MAX, R6MAX);
00338 
00339     l1GctNonIsoEmRankDiff01_ = dbe->book1D("GctNonIsoEmRankDiffCand01","NON-ISO EM RANK CAND 0 - CAND 1", 2*R6BINS, -R6MAX, R6MAX);
00340     l1GctNonIsoEmRankDiff12_ = dbe->book1D("GctNonIsoEmRankDiffCand12","NON-ISO EM RANK CAND 1 - CAND 2", 2*R6BINS, -R6MAX, R6MAX);
00341     l1GctNonIsoEmRankDiff23_ = dbe->book1D("GctNonIsoEmRankDiffCand23","NON-ISO EM RANK CAND 2 - CAND 3", 2*R6BINS, -R6MAX, R6MAX);    
00342 
00343     l1GctCenJetsRankDiff01_ = dbe->book1D("GctCenJetsRankDiffCand01","CEN JET RANK CAND 0 - CAND 1", 2*R6BINS, -R6MAX, R6MAX);
00344     l1GctCenJetsRankDiff12_ = dbe->book1D("GctCenJetsRankDiffCand12","CEN JET RANK CAND 1 - CAND 2", 2*R6BINS, -R6MAX, R6MAX);
00345     l1GctCenJetsRankDiff23_ = dbe->book1D("GctCenJetsRankDiffCand23","CEN JET RANK CAND 2 - CAND 3", 2*R6BINS, -R6MAX, R6MAX);
00346 
00347     l1GctForJetsRankDiff01_ = dbe->book1D("GctForJetsRankDiffCand01","FOR JET RANK CAND 0 - CAND 1", 2*R6BINS, -R6MAX, R6MAX);
00348     l1GctForJetsRankDiff12_ = dbe->book1D("GctForJetsRankDiffCand12","FOR JET RANK CAND 1 - CAND 2", 2*R6BINS, -R6MAX, R6MAX);
00349     l1GctForJetsRankDiff23_ = dbe->book1D("GctForJetsRankDiffCand23","FOR JET RANK CAND 2 - CAND 3", 2*R6BINS, -R6MAX, R6MAX);
00350 
00351     l1GctTauJetsRankDiff01_ = dbe->book1D("GctTauJetsRankDiffCand01","TAU JET RANK CAND 0 - CAND 1", 2*R6BINS, -R6MAX, R6MAX);
00352     l1GctTauJetsRankDiff12_ = dbe->book1D("GctTauJetsRankDiffCand12","TAU JET RANK CAND 1 - CAND 2", 2*R6BINS, -R6MAX, R6MAX);
00353     l1GctTauJetsRankDiff23_ = dbe->book1D("GctTauJetsRankDiffCand23","TAU JET RANK CAND 2 - CAND 3", 2*R6BINS, -R6MAX, R6MAX);
00354 
00355   }
00356 
00357 }
00358 
00359 
00360 void L1TGCT::endJob(void)
00361 {
00362   if (verbose_)
00363     edm::LogInfo("L1TGCT") << "L1TGCT: end job...." << std::endl;
00364   edm::LogInfo("EndJob") << "analyzed " << nev_ << " events";
00365 
00366   if (outputFile_.size() != 0 && dbe) {
00367     dbe->save(outputFile_);
00368   }
00369 
00370   return;
00371 }
00372 
00373 void L1TGCT::analyze(const edm::Event & e, const edm::EventSetup & c)
00374 {
00375   nev_++;
00376   if (verbose_) {
00377     edm::LogInfo("L1TGCT") << "L1TGCT: analyze...." << std::endl;
00378   }
00379   
00380   // Get all the collections
00381   edm::Handle < L1GctEmCandCollection > l1IsoEm;
00382   edm::Handle < L1GctEmCandCollection > l1NonIsoEm;
00383   edm::Handle < L1GctJetCandCollection > l1CenJets;
00384   edm::Handle < L1GctJetCandCollection > l1ForJets;
00385   edm::Handle < L1GctJetCandCollection > l1TauJets;
00386   edm::Handle < L1GctHFRingEtSumsCollection > l1HFSums; 
00387   edm::Handle < L1GctHFBitCountsCollection > l1HFCounts;
00388   edm::Handle < L1GctEtMissCollection >  l1EtMiss;
00389   edm::Handle < L1GctEtHadCollection >   l1EtHad;
00390   edm::Handle < L1GctEtTotalCollection > l1EtTotal;
00391 
00392   e.getByLabel(gctIsoEmSource_, l1IsoEm);
00393   e.getByLabel(gctNonIsoEmSource_, l1NonIsoEm);
00394   e.getByLabel(gctCenJetsSource_, l1CenJets);
00395   e.getByLabel(gctForJetsSource_, l1ForJets);
00396   e.getByLabel(gctTauJetsSource_, l1TauJets);
00397   e.getByLabel(gctEnergySumsSource_, l1HFSums);
00398   e.getByLabel(gctEnergySumsSource_, l1HFCounts);  
00399   e.getByLabel(gctEnergySumsSource_, l1EtMiss);
00400   e.getByLabel(gctEnergySumsSource_, l1EtHad);
00401   e.getByLabel(gctEnergySumsSource_, l1EtTotal);
00402 
00403   // Fill histograms
00404 
00405   // Central jets
00406   if (l1CenJets.isValid()) {
00407     for (L1GctJetCandCollection::const_iterator cj = l1CenJets->begin();cj != l1CenJets->end(); cj++) {
00408       l1GctCenJetsRank_->Fill(cj->rank());
00409       // only plot eta and phi maps for non-zero candidates
00410       if (cj->rank()) {
00411         l1GctCenJetsEtEtaPhi_->Fill(cj->regionId().iphi(),cj->regionId().ieta(),cj->rank());
00412         l1GctCenJetsOccEtaPhi_->Fill(cj->regionId().iphi(),cj->regionId().ieta());
00413         l1GctCenJetsOccEta_->Fill(cj->regionId().ieta());
00414         l1GctCenJetsOccPhi_->Fill(cj->regionId().iphi());
00415       }
00416     }
00417     if ( l1CenJets->size()==4){
00418       // Rank for each candidate
00419       l1GctCenJetsRankCand0_->Fill((*l1CenJets).at(0).rank());
00420       l1GctCenJetsRankCand1_->Fill((*l1CenJets).at(1).rank());
00421       l1GctCenJetsRankCand2_->Fill((*l1CenJets).at(2).rank());
00422       l1GctCenJetsRankCand3_->Fill((*l1CenJets).at(3).rank());
00423       // Differences between candidate ranks
00424       l1GctCenJetsRankDiff01_->Fill((*l1CenJets).at(0).rank()-(*l1CenJets).at(1).rank());
00425       l1GctCenJetsRankDiff12_->Fill((*l1CenJets).at(1).rank()-(*l1CenJets).at(2).rank());
00426       l1GctCenJetsRankDiff23_->Fill((*l1CenJets).at(2).rank()-(*l1CenJets).at(3).rank());
00427     }
00428   } else {    
00429     edm::LogWarning("DataNotFound") << " Could not find l1CenJets label was " << gctCenJetsSource_ ;
00430   }
00431 
00432 
00433   // Forward jets
00434   if (l1ForJets.isValid()) {
00435     for (L1GctJetCandCollection::const_iterator fj = l1ForJets->begin(); fj != l1ForJets->end(); fj++) {
00436       l1GctForJetsRank_->Fill(fj->rank());
00437       // only plot eta and phi maps for non-zero candidates
00438       if (fj->rank()) {
00439         l1GctForJetsEtEtaPhi_->Fill(fj->regionId().iphi(),fj->regionId().ieta(),fj->rank());
00440         l1GctForJetsOccEtaPhi_->Fill(fj->regionId().iphi(),fj->regionId().ieta());
00441         l1GctForJetsOccEta_->Fill(fj->regionId().ieta());
00442         l1GctForJetsOccPhi_->Fill(fj->regionId().iphi());
00443       }
00444     }
00445     if ( l1ForJets->size()==4){
00446       // Rank for each candidate
00447       l1GctForJetsRankCand0_->Fill((*l1ForJets).at(0).rank());
00448       l1GctForJetsRankCand1_->Fill((*l1ForJets).at(1).rank());
00449       l1GctForJetsRankCand2_->Fill((*l1ForJets).at(2).rank());
00450       l1GctForJetsRankCand3_->Fill((*l1ForJets).at(3).rank());
00451       // Differences between candidate ranks
00452       l1GctForJetsRankDiff01_->Fill((*l1ForJets).at(0).rank()-(*l1ForJets).at(1).rank());
00453       l1GctForJetsRankDiff12_->Fill((*l1ForJets).at(1).rank()-(*l1ForJets).at(2).rank());
00454       l1GctForJetsRankDiff23_->Fill((*l1ForJets).at(2).rank()-(*l1ForJets).at(3).rank());
00455     }
00456   } else {    
00457     edm::LogWarning("DataNotFound") << " Could not find l1ForJets label was " << gctForJetsSource_ ;
00458   }
00459 
00460   // Tau jets
00461   if (l1TauJets.isValid()) {
00462     for (L1GctJetCandCollection::const_iterator tj = l1TauJets->begin(); tj != l1TauJets->end(); tj++) {
00463       l1GctTauJetsRank_->Fill(tj->rank());
00464       // only plot eta and phi maps for non-zero candidates
00465       if (tj->rank()) {
00466         l1GctTauJetsEtEtaPhi_->Fill(tj->regionId().iphi(),tj->regionId().ieta(),tj->rank());
00467         l1GctTauJetsOccEtaPhi_->Fill(tj->regionId().iphi(),tj->regionId().ieta());
00468         l1GctTauJetsOccEta_->Fill(tj->regionId().ieta());
00469         l1GctTauJetsOccPhi_->Fill(tj->regionId().iphi());
00470       }
00471     }
00472     if (l1TauJets->size()==4){
00473       // Rank for each candidate
00474       l1GctTauJetsRankCand0_->Fill((*l1TauJets).at(0).rank());
00475       l1GctTauJetsRankCand1_->Fill((*l1TauJets).at(1).rank());
00476       l1GctTauJetsRankCand2_->Fill((*l1TauJets).at(2).rank());
00477       l1GctTauJetsRankCand3_->Fill((*l1TauJets).at(3).rank());
00478       // Differences between candidate ranks
00479       l1GctTauJetsRankDiff01_->Fill((*l1TauJets).at(0).rank()-(*l1TauJets).at(1).rank());
00480       l1GctTauJetsRankDiff12_->Fill((*l1TauJets).at(1).rank()-(*l1TauJets).at(2).rank());
00481       l1GctTauJetsRankDiff23_->Fill((*l1TauJets).at(2).rank()-(*l1TauJets).at(3).rank());
00482     }
00483   } else {    
00484     edm::LogWarning("DataNotFound") << " Could not find l1TauJets label was " << gctTauJetsSource_ ;
00485   }
00486   
00487 
00488   // Missing ET
00489   if (l1EtMiss.isValid()) { 
00490     if (l1EtMiss->size()) {
00491       l1GctEtMiss_->Fill(l1EtMiss->at(0).et());
00492       l1GctEtMissPhi_->Fill(l1EtMiss->at(0).phi());
00493     }
00494   } else {
00495     edm::LogWarning("DataNotFound") << " Could not find l1EtMiss label was " << gctEnergySumsSource_ ;    
00496   }
00497 
00498   // HT 
00499   if (l1EtHad.isValid()) {
00500     if (l1EtHad->size()) { 
00501       l1GctEtHad_->Fill(l1EtHad->at(0).et());
00502     }
00503   } else {
00504     edm::LogWarning("DataNotFound") << " Could not find l1EtHad label was " << gctEnergySumsSource_ ;    
00505   }
00506 
00507   // Total ET
00508   if (l1EtTotal.isValid()) {
00509     if (l1EtTotal->size()) { 
00510       l1GctEtTotal_->Fill(l1EtTotal->at(0).et());
00511     }
00512   } else {
00513     edm::LogWarning("DataNotFound") << " Could not find l1EtTotal label was " << gctEnergySumsSource_ ;    
00514   }
00515 
00516   //HF Ring Et Sums
00517   if (l1HFSums.isValid()) {
00518     for (L1GctHFRingEtSumsCollection::const_iterator hfs=l1HFSums->begin(); hfs!=l1HFSums->end(); hfs++){ 
00519       // Individual ring Et sums
00520       l1GctHFRing0ETSumPosEta_->Fill(hfs->etSum(0));
00521       l1GctHFRing0ETSumNegEta_->Fill(hfs->etSum(1));
00522       l1GctHFRing1ETSumPosEta_->Fill(hfs->etSum(2));
00523       l1GctHFRing1ETSumNegEta_->Fill(hfs->etSum(3));
00524       // Ratio of ring Et sums
00525       if (hfs->etSum(2)!=0) l1GctHFRingRatioPosEta_->Fill((hfs->etSum(0))/(hfs->etSum(2)));
00526       if (hfs->etSum(3)!=0) l1GctHFRingRatioNegEta_->Fill((hfs->etSum(1))/(hfs->etSum(3)));
00527       // Correlate positive and neagative eta
00528       l1GctHFRing0PosEtaNegEta_->Fill(hfs->etSum(0),hfs->etSum(1));
00529       l1GctHFRing1PosEtaNegEta_->Fill(hfs->etSum(2),hfs->etSum(3));
00530     }
00531   } else {    
00532     edm::LogWarning("DataNotFound") << " Could not find l1HFSums label was " << gctEnergySumsSource_ ;
00533   }
00534 
00535   // HF Ring Counts
00536   if (l1HFCounts.isValid()) {
00537     for (L1GctHFBitCountsCollection::const_iterator hfc=l1HFCounts->begin(); hfc!=l1HFCounts->end(); hfc++){ 
00538       // Individual ring counts
00539       l1GctHFRing0TowerCountPosEta_->Fill(hfc->bitCount(0));
00540       l1GctHFRing0TowerCountNegEta_->Fill(hfc->bitCount(1));
00541       l1GctHFRing1TowerCountPosEta_->Fill(hfc->bitCount(2));
00542       l1GctHFRing1TowerCountNegEta_->Fill(hfc->bitCount(3));
00543       // Correlate positive and negative eta
00544       l1GctHFRing0TowerCountPosEtaNegEta_->Fill(hfc->bitCount(0),hfc->bitCount(1));
00545       l1GctHFRing1TowerCountPosEtaNegEta_->Fill(hfc->bitCount(2),hfc->bitCount(3));
00546     }
00547   } else {    
00548     edm::LogWarning("DataNotFound") << " Could not find l1HFCounts label was " << gctEnergySumsSource_ ;
00549   }
00550 
00551   // Isolated EM
00552   if (l1IsoEm.isValid()) {
00553     for (L1GctEmCandCollection::const_iterator ie=l1IsoEm->begin(); ie!=l1IsoEm->end(); ie++) {
00554       l1GctIsoEmRank_->Fill(ie->rank());
00555       // only plot eta and phi maps for non-zero candidates
00556       if (ie->rank()){ 
00557         l1GctIsoEmRankEtaPhi_->Fill(ie->regionId().iphi(),ie->regionId().ieta(),ie->rank());
00558         l1GctIsoEmOccEtaPhi_->Fill(ie->regionId().iphi(),ie->regionId().ieta());
00559         l1GctIsoEmOccEta_->Fill(ie->regionId().ieta());
00560         l1GctIsoEmOccPhi_->Fill(ie->regionId().iphi());
00561       }
00562     }
00563     if (l1IsoEm->size()==4){
00564       // Rank for each candidate
00565       l1GctIsoEmRankCand0_->Fill((*l1IsoEm).at(0).rank());
00566       l1GctIsoEmRankCand1_->Fill((*l1IsoEm).at(1).rank());
00567       l1GctIsoEmRankCand2_->Fill((*l1IsoEm).at(2).rank());
00568       l1GctIsoEmRankCand3_->Fill((*l1IsoEm).at(3).rank());
00569       // Differences between candidate ranks
00570       l1GctIsoEmRankDiff01_->Fill((*l1IsoEm).at(0).rank()-(*l1IsoEm).at(1).rank());
00571       l1GctIsoEmRankDiff12_->Fill((*l1IsoEm).at(1).rank()-(*l1IsoEm).at(2).rank());
00572       l1GctIsoEmRankDiff23_->Fill((*l1IsoEm).at(2).rank()-(*l1IsoEm).at(3).rank());
00573     }
00574   } else {
00575     edm::LogWarning("DataNotFound") << " Could not find l1IsoEm label was " << gctIsoEmSource_ ;
00576   } 
00577 
00578   // Non-isolated EM
00579   if (l1NonIsoEm.isValid()) { 
00580     for (L1GctEmCandCollection::const_iterator ne=l1NonIsoEm->begin(); ne!=l1NonIsoEm->end(); ne++) {
00581       l1GctNonIsoEmRank_->Fill(ne->rank());
00582       // only plot eta and phi maps for non-zero candidates
00583       if (ne->rank()){ 
00584         l1GctNonIsoEmRankEtaPhi_->Fill(ne->regionId().iphi(),ne->regionId().ieta(),ne->rank());
00585         l1GctNonIsoEmOccEtaPhi_->Fill(ne->regionId().iphi(),ne->regionId().ieta());
00586         l1GctNonIsoEmOccEta_->Fill(ne->regionId().ieta());
00587         l1GctNonIsoEmOccPhi_->Fill(ne->regionId().iphi());
00588       }
00589     }
00590     if (l1NonIsoEm->size()==4){
00591       // Rank for each candidate
00592       l1GctNonIsoEmRankCand0_->Fill((*l1NonIsoEm).at(0).rank());
00593       l1GctNonIsoEmRankCand1_->Fill((*l1NonIsoEm).at(1).rank());
00594       l1GctNonIsoEmRankCand2_->Fill((*l1NonIsoEm).at(2).rank());
00595       l1GctNonIsoEmRankCand3_->Fill((*l1NonIsoEm).at(3).rank());
00596       // Differences between candidate ranks
00597       l1GctNonIsoEmRankDiff01_->Fill((*l1NonIsoEm).at(0).rank()-(*l1NonIsoEm).at(1).rank());
00598       l1GctNonIsoEmRankDiff12_->Fill((*l1NonIsoEm).at(1).rank()-(*l1NonIsoEm).at(2).rank());
00599       l1GctNonIsoEmRankDiff23_->Fill((*l1NonIsoEm).at(2).rank()-(*l1NonIsoEm).at(3).rank());
00600     }
00601   } else {
00602     edm::LogWarning("DataNotFound") << " Could not find l1NonIsoEm label was " << gctNonIsoEmSource_ ;
00603   }     
00604 }
00605 
00606   

Generated on Tue Jun 9 17:33:11 2009 for CMSSW by  doxygen 1.5.4