![]() |
![]() |
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