CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/DQM/L1TMonitor/interface/L1TdeRCT.h

Go to the documentation of this file.
00001 // -*-C++-*-
00002 #ifndef L1TdeRCT_H
00003 #define L1TdeRCT_H
00004 
00005 /*
00006  * \file L1TdeRCT.h
00007  *
00008  * Version 0.0. A.Savin 2008/04/26
00009  *
00010  * $Date: 2010/09/30 22:26:45 $
00011  * $Revision: 1.13 $
00012  * \author P. Wittich
00013  * $Id: L1TdeRCT.h,v 1.13 2010/09/30 22:26:45 bachtis Exp $
00014  * $Log: L1TdeRCT.h,v $
00015  * Revision 1.13  2010/09/30 22:26:45  bachtis
00016  * Add RCT FED vector monitoring
00017  *
00018  * Revision 1.12  2010/03/25 13:46:02  weinberg
00019  * removed quiet bit information
00020  *
00021  * Revision 1.11  2009/11/19 14:35:32  puigh
00022  * modify beginJob
00023  *
00024  * Revision 1.10  2009/10/11 21:12:58  asavin
00025  * *** empty log message ***
00026  *
00027  * Revision 1.9  2008/12/11 09:20:16  asavin
00028  * efficiency curves in L1TdeRCT
00029  *
00030  * Revision 1.8  2008/11/07 15:54:03  weinberg
00031  * Changed fine grain bit to HF plus tau bit
00032  *
00033  * Revision 1.7  2008/09/22 16:48:32  asavin
00034  * reg1D overeff added
00035  *
00036  * Revision 1.6  2008/07/25 13:06:48  weinberg
00037  * added GCT region/bit information
00038  *
00039  * Revision 1.5  2008/06/30 07:34:36  asavin
00040  * TPGs inculded in the RCT code
00041  *
00042  * Revision 1.4  2008/05/06 18:04:02  nuno
00043  * cruzet update
00044  *
00045  * Revision 1.3  2008/05/05 18:42:23  asavin
00046  * DataOcc added
00047  *
00048  * Revision 1.2  2008/05/05 15:01:37  asavin
00049  * single channel histos are added
00050  *
00051  * Revision 1.4  2008/03/01 00:40:00  lat
00052  * DQM core migration.
00053  *
00054  * Revision 1.3  2007/09/03 15:14:42  wittich
00055  * updated RCT with more diagnostic and local coord histos
00056  *
00057  * Revision 1.2  2007/02/23 21:58:43  wittich
00058  * change getByType to getByLabel and add InputTag
00059  *
00060  * Revision 1.1  2007/02/19 22:49:53  wittich
00061  * - Add RCT monitor
00062  *
00063  *
00064  *
00065 */
00066 
00067 // system include files
00068 #include <memory>
00069 #include <unistd.h>
00070 
00071 
00072 #include <iostream>
00073 #include <fstream>
00074 #include <vector>
00075 
00076 
00077 // user include files
00078 #include "FWCore/Framework/interface/Frameworkfwd.h"
00079 #include "FWCore/Framework/interface/EDAnalyzer.h"
00080 
00081 #include "FWCore/Framework/interface/Event.h"
00082 #include "FWCore/Framework/interface/MakerMacros.h"
00083 
00084 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00085 
00086 #include "FWCore/ServiceRegistry/interface/Service.h"
00087 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00088 
00089 // DQM
00090 #include "DQMServices/Core/interface/DQMStore.h"
00091 #include "DQMServices/Core/interface/MonitorElement.h"
00092 
00093 
00094 // Trigger Headers
00095 
00096 
00097 
00098 
00099 
00100 //
00101 // class declaration
00102 //
00103 
00104 class L1TdeRCT : public edm::EDAnalyzer {
00105 
00106 public:
00107 
00108 // Constructor
00109   L1TdeRCT(const edm::ParameterSet& ps);
00110 
00111 // Destructor
00112  virtual ~L1TdeRCT();
00113 
00114 protected:
00115 // Analyze
00116   void analyze(const edm::Event& e, const edm::EventSetup& c);
00117   
00118   // BeginJob
00119   void beginJob(void);
00120 
00121   //For FED vector monitoring 
00122   void beginRun(const edm::Run&, const edm::EventSetup&);
00123   void beginLuminosityBlock(const edm::LuminosityBlock&, const edm::EventSetup&);
00124   void readFEDVector(MonitorElement*,const edm::EventSetup&); 
00125 
00126 
00127 
00128 
00129 // EndJob
00130 void endJob(void);
00131 
00132 private:
00133   // ----------member data ---------------------------
00134   DQMStore * dbe;
00135 
00136   // begin GT decision information
00137   MonitorElement *triggerAlgoNumbers_;
00138 
00139   // begin region information
00140   MonitorElement *rctRegDataOcc1D_;
00141   MonitorElement *rctRegEmulOcc1D_;
00142   MonitorElement *rctRegMatchedOcc1D_;
00143   MonitorElement *rctRegUnmatchedDataOcc1D_;
00144   MonitorElement *rctRegUnmatchedEmulOcc1D_;
00145   MonitorElement *rctRegSpEffOcc1D_;
00146   MonitorElement *rctRegSpIneffOcc1D_;
00147 
00148   MonitorElement *rctRegEff1D_;
00149   MonitorElement *rctRegIneff1D_;
00150   MonitorElement *rctRegOvereff1D_;
00151   MonitorElement *rctRegSpEff1D_;
00152   MonitorElement *rctRegSpIneff1D_;
00153 
00154   MonitorElement *rctRegDataOcc2D_;
00155   MonitorElement *rctRegEmulOcc2D_;
00156   MonitorElement *rctRegMatchedOcc2D_;
00157   MonitorElement *rctRegUnmatchedDataOcc2D_;
00158   MonitorElement *rctRegUnmatchedEmulOcc2D_;
00159 //  MonitorElement *rctRegDeltaEt2D_;
00160   MonitorElement *rctRegSpEffOcc2D_;
00161   MonitorElement *rctRegSpIneffOcc2D_;
00162 
00163   MonitorElement *rctRegEff2D_;
00164   MonitorElement *rctRegIneff2D_;
00165   MonitorElement *rctRegOvereff2D_;
00166   MonitorElement *rctRegSpEff2D_;
00167   MonitorElement *rctRegSpIneff2D_;
00168 
00169   // end region information
00170 
00171   // begin bit information
00172   MonitorElement *rctBitEmulOverFlow2D_;
00173   MonitorElement *rctBitDataOverFlow2D_;
00174   MonitorElement *rctBitMatchedOverFlow2D_;
00175   MonitorElement *rctBitUnmatchedEmulOverFlow2D_;
00176   MonitorElement *rctBitUnmatchedDataOverFlow2D_;
00177   MonitorElement *rctBitOverFlowEff2D_;
00178   MonitorElement *rctBitOverFlowIneff2D_;
00179   MonitorElement *rctBitOverFlowOvereff2D_;
00180   MonitorElement *rctBitEmulTauVeto2D_;
00181   MonitorElement *rctBitDataTauVeto2D_;
00182   MonitorElement *rctBitMatchedTauVeto2D_;
00183   MonitorElement *rctBitUnmatchedEmulTauVeto2D_;
00184   MonitorElement *rctBitUnmatchedDataTauVeto2D_;
00185   MonitorElement *rctBitTauVetoEff2D_;
00186   MonitorElement *rctBitTauVetoIneff2D_;
00187   MonitorElement *rctBitTauVetoOvereff2D_;
00188   MonitorElement *rctBitEmulMip2D_;
00189   MonitorElement *rctBitDataMip2D_;
00190   MonitorElement *rctBitMatchedMip2D_;
00191   MonitorElement *rctBitUnmatchedEmulMip2D_;
00192   MonitorElement *rctBitUnmatchedDataMip2D_;
00193   MonitorElement *rctBitMipEff2D_;
00194   MonitorElement *rctBitMipIneff2D_;
00195   MonitorElement *rctBitMipOvereff2D_;
00196   MonitorElement *rctBitEmulQuiet2D_;
00197   MonitorElement *rctBitDataQuiet2D_;
00198   MonitorElement *rctBitMatchedQuiet2D_;
00199   MonitorElement *rctBitUnmatchedEmulQuiet2D_;
00200   MonitorElement *rctBitUnmatchedDataQuiet2D_;
00201   // QUIETBIT: To add quiet bit information, uncomment following 3 lines:
00202   // MonitorElement *rctBitQuietEff2D_;
00203   // MonitorElement *rctBitQuietIneff2D_;
00204   // MonitorElement *rctBitQuietOvereff2D_;
00205   MonitorElement *rctBitEmulHfPlusTau2D_;
00206   MonitorElement *rctBitDataHfPlusTau2D_;
00207   MonitorElement *rctBitMatchedHfPlusTau2D_;
00208   MonitorElement *rctBitUnmatchedEmulHfPlusTau2D_;
00209   MonitorElement *rctBitUnmatchedDataHfPlusTau2D_;
00210   MonitorElement *rctBitHfPlusTauEff2D_;
00211   MonitorElement *rctBitHfPlusTauIneff2D_;
00212   MonitorElement *rctBitHfPlusTauOvereff2D_;
00213 
00214   // end bit information
00215 
00216   MonitorElement* rctInputTPGEcalOcc_ ;
00217   MonitorElement* rctInputTPGEcalRank_ ;
00218   MonitorElement* rctInputTPGHcalOcc_ ;
00219   MonitorElement* rctInputTPGHcalRank_ ;
00220   MonitorElement* rctInputTPGHcalSample_ ;
00221 
00222   MonitorElement* rctIsoEmDataOcc_ ;
00223   MonitorElement* rctIsoEmEmulOcc_ ;
00224   MonitorElement* rctIsoEmEff1Occ_ ;
00225   MonitorElement* rctIsoEmEff2Occ_ ;
00226   MonitorElement* rctIsoEmIneff2Occ_ ;
00227   MonitorElement* rctIsoEmIneffOcc_ ;
00228   MonitorElement* rctIsoEmOvereffOcc_ ;
00229   MonitorElement* rctIsoEmEff1_ ;
00230   MonitorElement* rctIsoEmEff2_ ;
00231   MonitorElement* rctIsoEmIneff2_ ;
00232   MonitorElement* rctIsoEmIneff_ ;
00233   MonitorElement* rctIsoEmOvereff_ ;
00234 
00235   MonitorElement* rctIsoEmDataOcc1D_ ;
00236   MonitorElement* rctIsoEmEmulOcc1D_ ;
00237   MonitorElement* rctIsoEmEff1Occ1D_ ;
00238   MonitorElement* rctIsoEmEff2Occ1D_ ;
00239   MonitorElement* rctIsoEmIneff2Occ1D_ ;
00240   MonitorElement* rctIsoEmIneffOcc1D_ ;
00241   MonitorElement* rctIsoEmOvereffOcc1D_ ;
00242   MonitorElement* rctIsoEmEff1oneD_ ;
00243   MonitorElement* rctIsoEmEff2oneD_ ;
00244   MonitorElement* rctIsoEmIneff2oneD_ ;
00245   MonitorElement* rctIsoEmIneff1D_ ;
00246   MonitorElement* rctIsoEmOvereff1D_ ;
00247 
00248   MonitorElement* rctNisoEmDataOcc_ ;
00249   MonitorElement* rctNisoEmEmulOcc_ ;
00250   MonitorElement* rctNisoEmEff1Occ_ ;
00251   MonitorElement* rctNisoEmEff2Occ_ ;
00252   MonitorElement* rctNisoEmIneff2Occ_ ;
00253   MonitorElement* rctNisoEmIneffOcc_ ;
00254   MonitorElement* rctNisoEmOvereffOcc_ ;
00255   MonitorElement* rctNisoEmEff1_ ;
00256   MonitorElement* rctNisoEmEff2_ ;
00257   MonitorElement* rctNisoEmIneff2_ ;
00258   MonitorElement* rctNisoEmIneff_ ;
00259   MonitorElement* rctNisoEmOvereff_ ;
00260 
00261   MonitorElement* rctNisoEmDataOcc1D_ ;
00262   MonitorElement* rctNisoEmEmulOcc1D_ ;
00263   MonitorElement* rctNisoEmEff1Occ1D_ ;
00264   MonitorElement* rctNisoEmEff2Occ1D_ ;
00265   MonitorElement* rctNisoEmIneff2Occ1D_ ;
00266   MonitorElement* rctNisoEmIneffOcc1D_ ;
00267   MonitorElement* rctNisoEmOvereffOcc1D_ ;
00268   MonitorElement* rctNisoEmEff1oneD_ ;
00269   MonitorElement* rctNisoEmEff2oneD_ ;
00270   MonitorElement* rctNisoEmIneff2oneD_ ;
00271   MonitorElement* rctNisoEmIneff1D_ ;
00272   MonitorElement* rctNisoEmOvereff1D_ ;
00273 
00274   MonitorElement*  rctIsoEffChannel_[396] ;
00275   MonitorElement*  rctIsoIneffChannel_[396] ;
00276   MonitorElement*  rctIsoOvereffChannel_[396] ;
00277 
00278   MonitorElement*  rctNisoEffChannel_[396] ;
00279   MonitorElement*  rctNisoIneffChannel_[396] ;
00280   MonitorElement*  rctNisoOvereffChannel_[396] ;
00281 
00282   // begin region channel information
00283   MonitorElement* rctRegEffChannel_[396];
00284   MonitorElement* rctRegIneffChannel_[396];
00285   MonitorElement* rctRegOvereffChannel_[396];
00286 
00287   //efficiency
00288   MonitorElement* trigEffThresh_;
00289   MonitorElement* trigEffThreshOcc_;
00290   MonitorElement* trigEffTriggThreshOcc_;
00291   MonitorElement* trigEff_[396];
00292   MonitorElement* trigEffOcc_[396];
00293   MonitorElement* trigEffTriggOcc_[396];
00294 
00295   // end region channel information
00296 
00297 
00298   //begin fed vector information
00299   static const int crateFED[90];
00300   MonitorElement *fedVectorMonitorRUN_;
00301   MonitorElement *fedVectorMonitorLS_;
00303 
00304 
00305 
00306   int nev_; // Number of events processed
00307   std::string outputFile_; //file name for ROOT ouput
00308   std::string histFolder_; // base dqm folder
00309   bool verbose_;
00310   bool singlechannelhistos_;
00311   bool monitorDaemon_;
00312   ofstream logFile_;
00313 
00314   edm::InputTag rctSourceEmul_;
00315   edm::InputTag rctSourceData_;
00316   edm::InputTag ecalTPGData_;
00317   edm::InputTag hcalTPGData_;
00318   edm::InputTag gtDigisLabel_;
00319   std::string gtEGAlgoName_; // name of algo to determine EG trigger threshold
00320   int doubleThreshold_; // value of ET at which to make 2-D eff plot
00321 
00322 
00323   int trigCount,notrigCount;
00324 
00325 protected:
00326 
00327 void DivideME1D(MonitorElement* numerator, MonitorElement* denominator, MonitorElement* result) ;
00328 void DivideME2D(MonitorElement* numerator, MonitorElement* denominator, MonitorElement* result) ;
00329 
00330 };
00331 
00332 #endif