00001 #include "DQM/HcalMonitorTasks/interface/HcalRecHitMonitor.h"
00002 #include "FWCore/Framework/interface/LuminosityBlock.h"
00003 #include "FWCore/Common/interface/TriggerNames.h"
00004 #include "CondFormats/HcalObjects/interface/HcalChannelStatus.h"
00005 #include "CondFormats/HcalObjects/interface/HcalChannelQuality.h"
00006
00007 #include "CalibCalorimetry/HcalAlgos/interface/HcalLogicalMapGenerator.h"
00008 #include "CondFormats/HcalObjects/interface/HcalLogicalMap.h"
00009 #include "RecoLocalCalo/HcalRecAlgos/interface/HcalCaloFlagLabels.h"
00010 #include "DataFormats/Common/interface/TriggerResults.h"
00011 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h"
00012 #include "Geometry/HcalTowerAlgo/src/HcalHardcodeGeometryData.h"
00013 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00014 #include <cmath>
00015
00016 HcalRecHitMonitor::HcalRecHitMonitor(const edm::ParameterSet& ps)
00017 {
00018
00019 Online_ = ps.getUntrackedParameter<bool>("online",false);
00020 mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns",false);
00021 enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup",false);
00022 debug_ = ps.getUntrackedParameter<int>("debug",0);
00023 prefixME_ = ps.getUntrackedParameter<std::string>("subSystemFolder","Hcal/");
00024 if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!="/")
00025 prefixME_.append("/");
00026 subdir_ = ps.getUntrackedParameter<std::string>("TaskFolder","RecHitMonitor_Hcal/");
00027 if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!="/")
00028 subdir_.append("/");
00029 subdir_=prefixME_+subdir_;
00030 AllowedCalibTypes_ = ps.getUntrackedParameter<std::vector<int> > ("AllowedCalibTypes");
00031 skipOutOfOrderLS_ = ps.getUntrackedParameter<bool>("skipOutOfOrderLS",false);
00032 NLumiBlocks_ = ps.getUntrackedParameter<int>("NLumiBlocks",4000);
00033 makeDiagnostics_ = ps.getUntrackedParameter<bool>("makeDiagnostics",false);
00034
00035 hbheRechitLabel_ = ps.getUntrackedParameter<edm::InputTag>("hbheRechitLabel");
00036 hoRechitLabel_ = ps.getUntrackedParameter<edm::InputTag>("hoRechitLabel");
00037 hfRechitLabel_ = ps.getUntrackedParameter<edm::InputTag>("hfRechitLabel");
00038 l1gtLabel_ = ps.getUntrackedParameter<edm::InputTag>("L1GTLabel");
00039
00040 hltresultsLabel_ = ps.getUntrackedParameter<edm::InputTag>("HLTResultsLabel");
00041 HcalHLTBits_ = ps.getUntrackedParameter<std::vector<std::string> >("HcalHLTBits");
00042 MinBiasHLTBits_ = ps.getUntrackedParameter<std::vector<std::string> >("MinBiasHLTBits");
00043
00044
00045 energyThreshold_ = ps.getUntrackedParameter<double>("energyThreshold",2);
00046 HBenergyThreshold_ = ps.getUntrackedParameter<double>("HB_energyThreshold",energyThreshold_);
00047 HEenergyThreshold_ = ps.getUntrackedParameter<double>("HE_energyThreshold",energyThreshold_);
00048 HOenergyThreshold_ = ps.getUntrackedParameter<double>("HO_energyThreshold",energyThreshold_);
00049 HFenergyThreshold_ = ps.getUntrackedParameter<double>("HF_energyThreshold",energyThreshold_);
00050
00051 ETThreshold_ = ps.getUntrackedParameter<double>("ETThreshold",0);
00052 HBETThreshold_ = ps.getUntrackedParameter<double>("HB_ETThreshold",ETThreshold_);
00053 HEETThreshold_ = ps.getUntrackedParameter<double>("HE_ETThreshold",ETThreshold_);
00054 HOETThreshold_ = ps.getUntrackedParameter<double>("HO_ETThreshold",ETThreshold_);
00055 HFETThreshold_ = ps.getUntrackedParameter<double>("HF_ETThreshold",ETThreshold_);
00056
00057 timediffThresh_ = ps.getUntrackedParameter<double>("collisiontimediffThresh",10.);
00058
00059 }
00060
00061 HcalRecHitMonitor::~HcalRecHitMonitor()
00062 {
00063 }
00064
00065
00066
00067
00068
00069 void HcalRecHitMonitor::setup()
00070 {
00071 HcalBaseDQMonitor::setup();
00072
00073
00074 if (debug_>0)
00075 std::cout <<"<HcalRecHitMonitor::setup> Setting up histograms"<<std::endl;
00076
00077
00078 HcalLogicalMapGenerator gen;
00079 logicalMap=new HcalLogicalMap(gen.createMap());
00080
00081
00082
00083 if (debug_>1)
00084 std::cout <<"<HcalRecHitMonitor::setup> Creating Histograms"<<std::endl;
00085
00086 dbe_->setCurrentFolder(subdir_);
00087 h_TriggeredEvents=dbe_->book1D("EventTriggers","EventTriggers",3,-0.5,2.5);
00088 h_TriggeredEvents->setBinLabel(1,"AllEvents");
00089 h_TriggeredEvents->setBinLabel(2,"HLT_Minbias");
00090 h_TriggeredEvents->setBinLabel(3,"HLT_Hcal");
00091
00092 dbe_->setCurrentFolder(subdir_+"rechit_parameters");
00093 MonitorElement* THR;
00094 dbe_->setCurrentFolder(subdir_+"rechit_parameters/thresholds");
00095 THR=dbe_->bookFloat("HB_Rechit_Energy_Threshold");
00096 THR->Fill(HBenergyThreshold_);
00097 THR=dbe_->bookFloat("HE_Rechit_Energy_Threshold");
00098 THR->Fill(HEenergyThreshold_);
00099 THR=dbe_->bookFloat("HO_Rechit_Energy_Threshold");
00100 THR->Fill(HOenergyThreshold_);
00101 THR=dbe_->bookFloat("HF_Rechit_Energy_Threshold");
00102 THR->Fill(HFenergyThreshold_);
00103 THR=dbe_->bookFloat("HB_Rechit_ET_Threshold");
00104 THR->Fill(HBETThreshold_);
00105 THR=dbe_->bookFloat("HE_Rechit_ET_Threshold");
00106 THR->Fill(HEETThreshold_);
00107 THR=dbe_->bookFloat("HO_Rechit_ET_Threshold");
00108 THR->Fill(HOETThreshold_);
00109 THR=dbe_->bookFloat("HF_Rechit_ET_Threshold");
00110 THR->Fill(HFETThreshold_);
00111 THR=dbe_->bookFloat("Maximum_HFM_HFP_time_difference_for_luminosityplots");
00112 THR->Fill(timediffThresh_);
00113
00114
00115
00116 dbe_->setCurrentFolder(subdir_+"Distributions_AllRecHits");
00117 SetupEtaPhiHists(OccupancyByDepth,"RecHit Occupancy","");
00118 h_rechitieta = dbe_->book1D("HcalRecHitIeta",
00119 "Hcal RecHit ieta",
00120 83,-41.5,41.5);
00121 h_rechitiphi = dbe_->book1D("HcalRecHitIphi",
00122 "Hcal RecHit iphi",
00123 72,0.5,72.5);
00124
00125 h_rechitieta_05 = dbe_->book1D("HcalRecHitIeta05",
00126 "Hcal RecHit ieta E>0.5 GeV",
00127 83,-41.5,41.5);
00128 h_rechitiphi_05 = dbe_->book1D("HcalRecHitIphi05",
00129 "Hcal RecHit iphi E>0.5 GeV",
00130 72,0.5,72.5);
00131 h_rechitieta_10 = dbe_->book1D("HcalRecHitIeta10",
00132 "Hcal RecHit ieta E>1.0 GeV",
00133 83,-41.5,41.5);
00134 h_rechitiphi_10 = dbe_->book1D("HcalRecHitIphi10",
00135 "Hcal RecHit iphi E>1.0 GeV",
00136 72,0.5,72.5);
00137 h_rechitieta_25 = dbe_->book1D("HcalRecHitIeta25",
00138 "Hcal RecHit ieta E>2.5 GeV",
00139 83,-41.5,41.5);
00140 h_rechitiphi_25 = dbe_->book1D("HcalRecHitIphi25",
00141 "Hcal RecHit iphi E>2.5 GeV",
00142 72,0.5,72.5);
00143 h_rechitieta_100 = dbe_->book1D("HcalRecHitIeta100",
00144 "Hcal RecHit ieta E>10.0 GeV",
00145 83,-41.5,41.5);
00146 h_rechitiphi_100 = dbe_->book1D("HcalRecHitIphi100",
00147 "Hcal RecHit iphi E>10.0 GeV",
00148 72,0.5,72.5);
00149
00150
00151
00152 h_LumiPlot_LS_allevents = dbe_->book1D("AllEventsPerLS",
00153 "LS # of all events",
00154 NLumiBlocks_,0.5,NLumiBlocks_+0.5);
00155 h_LumiPlot_BX_allevents = dbe_->book1D("BX_allevents",
00156 "BX # of all events",
00157 3600,0,3600);
00158 h_LumiPlot_MinTime_vs_MinHT = dbe_->book2D("MinTime_vs_MinSumET",
00159 "Energy-Weighted Time vs Min (HF+,HF-) Scalar Sum ET;min Sum ET(GeV);time(ns)",
00160 100,0,10,80,-40,40);
00161
00162 h_LumiPlot_timeHT_HFM = dbe_->book2D("HFM_Time_vs_SumET",
00163 "Energy-Weighted Time vs HFMinus Scalar Sum ET;Sum ET(GeV);time(ns)",
00164 100,0,10,80,-40,40);
00165
00166 h_LumiPlot_timeHT_HFP = dbe_->book2D("HFP_Time_vs_SumET",
00167 "Energy-Weighted Time vs HFPlus Scalar Sum ET;Sum ET(GeV);time(ns)",
00168 100,0,10,80,-40,40);
00169
00170
00171 dbe_->setCurrentFolder(subdir_+"Distributions_AllRecHits/sumplots");
00172 SetupEtaPhiHists(SumEnergyByDepth,"RecHit Summed Energy","GeV");
00173 SetupEtaPhiHists(SqrtSumEnergy2ByDepth,"RecHit Sqrt Summed Energy2","GeV");
00174 SetupEtaPhiHists(SumTimeByDepth,"RecHit Summed Time","nS");
00175
00176
00177 dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias");
00178
00179 h_HBP_weightedTime = dbe_->book1D("WeightedTime_HBP","Weighted Time for HBP",
00180 300,-150,150);
00181 h_HBM_weightedTime = dbe_->book1D("WeightedTime_HBM","Weighted Time for HBM",
00182 300,-150,150);
00183 h_HEP_weightedTime = dbe_->book1D("WeightedTime_HEP","Weighted Time for HEP",
00184 300,-150,150);
00185 h_HEM_weightedTime = dbe_->book1D("WeightedTime_HEM","Weighted Time for HEM",
00186 300,-150,150);
00187 h_HFP_weightedTime = dbe_->book1D("WeightedTime_HFP","Weighted Time for HFP",
00188 300,-150,150);
00189 h_HFM_weightedTime = dbe_->book1D("WeightedTime_HFM","Weighted Time for HFM",
00190 300,-150,150);
00191
00192 h_HFtimedifference = dbe_->book1D("HFweightedtimeDifference",
00193 "Energy-Weighted time difference between HF+ and HF- passing MinBias (no HT cut)",
00194 251,-250.5,250.5);
00195 h_HEtimedifference = dbe_->book1D("HEweightedtimeDifference",
00196 "Energy-Weighted time difference between HE+ and HE- passing MinBias (no HT cut)",
00197 251,-250.5,250.5);
00198
00199 HFP_HFM_Energy = dbe_->book2D("HFP_HFM_Energy",
00200 "HFP VS HFM Energy; Total Energy in HFMinus (TeV); Total Energy in HFPlus (TeV)",
00201 100,0,100, 100,0,100);
00202
00203
00204 h_HFenergydifference = dbe_->book1D("HFenergyDifference",
00205 "Sum(E_HFPlus - E_HFMinus)/Sum(E_HFPlus + E_HFMinus)",
00206 200,-1,1);
00207 h_HEenergydifference = dbe_->book1D("HEenergyDifference",
00208 "Sum(E_HEPlus - E_HEMinus)/Sum(E_HEPlus + E_HEMinus)",
00209 200,-1,1);
00210
00211 h_LumiPlot_LS_MinBiasEvents=dbe_->book1D("MinBiasEventsPerLS",
00212 "Number of MinBias Events vs LS (HT cut and HFM-HFP time cut)",
00213 NLumiBlocks_/10,0.5,NLumiBlocks_+0.5);
00214 h_LumiPlot_LS_MinBiasEvents_notimecut=dbe_->book1D("MinBiasEventsPerLS_notimecut",
00215 "Number of Events with MinBias vs LS (HFM,HFP HT>1,no time cut)",
00216 NLumiBlocks_/10,0.5,NLumiBlocks_+0.5);
00217
00218 h_LumiPlot_SumHT_HFPlus_vs_HFMinus = dbe_->book2D("SumHT_plus_minus",
00219 "HF+ Sum HT vs HF- Sum HT",60,0,30,60,0,30);
00220 h_LumiPlot_SumEnergy_HFPlus_vs_HFMinus = dbe_->book2D("SumEnergy_plus_minus",
00221 "HF+ Sum Energy vs HF- Sum Energy",
00222 60,0,150,60,0,150);
00223 h_LumiPlot_timeHFPlus_vs_timeHFMinus = dbe_->book2D("timeHFplus_vs_timeHFminus",
00224 "Energy-weighted time average of HF+ vs HF-",
00225 60,-60,60,60,-60,60);
00226 h_LumiPlot_BX_MinBiasEvents = dbe_->book1D("BX_MinBias_Events_TimeCut",
00227 "BX # of MinBias events (HFM & HFP HT>1 & HFM-HFP time cut)",
00228 3600,0,3600);
00229 h_LumiPlot_BX_MinBiasEvents_notimecut = dbe_->book1D("BX_MinBias_Events_notimecut",
00230 "BX # of MinBias events (HFM,HFP HT>1, no time cut)",
00231 3600,0,3600);
00232
00233 SetupEtaPhiHists(OccupancyThreshByDepth,"Above Threshold RecHit Occupancy","");
00234 h_rechitieta_thresh = dbe_->book1D("HcalRecHitIeta_thresh",
00235 "Hcal RecHit ieta above energy and ET threshold",
00236 83,-41.5,41.5);
00237 h_rechitiphi_thresh = dbe_->book1D("HcalRecHitIphi_thresh",
00238 "Hcal RecHit iphi above energy and ET threshold",
00239 72,0.5,72.5);
00240
00241 dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias/sumplots");
00242 SetupEtaPhiHists(SumEnergyThreshByDepth,"Above Threshold RecHit Summed Energy","GeV");
00243 SetupEtaPhiHists(SumTimeThreshByDepth,"Above Threshold RecHit Summed Time","nS");
00244 SetupEtaPhiHists(SqrtSumEnergy2ThreshByDepth,"Above Threshold RecHit Sqrt Summed Energy2","GeV");
00245
00246 dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias/rechit_1D_plots");
00247 h_HBThreshTime=dbe_->book1D("HB_time_thresh",
00248 "HB RecHit Time Above Threshold",
00249 int(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN),RECHITMON_TIME_MIN,RECHITMON_TIME_MAX);
00250 h_HBThreshOccupancy=dbe_->book1D("HB_occupancy_thresh",
00251 "HB RecHit Occupancy Above Threshold",260,-0.5,2599.5);
00252 h_HEThreshTime=dbe_->book1D("HE_time_thresh",
00253 "HE RecHit Time Above Threshold",
00254 int(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN),RECHITMON_TIME_MIN,RECHITMON_TIME_MAX);
00255 h_HEThreshOccupancy=dbe_->book1D("HE_occupancy_thresh",
00256 "HE RecHit Occupancy Above Threshold",260,-0.5,2599.5);
00257 h_HOThreshTime=dbe_->book1D("HO_time_thresh",
00258 "HO RecHit Time Above Threshold",
00259 int(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN),RECHITMON_TIME_MIN,RECHITMON_TIME_MAX);
00260 h_HOThreshOccupancy=dbe_->book1D("HO_occupancy_thresh",
00261 "HO RecHit Occupancy Above Threshold",217,-0.5,2169.5);
00262 h_HFThreshTime=dbe_->book1D("HF_time_thresh",
00263 "HF RecHit Time Above Threshold",
00264 int(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN),RECHITMON_TIME_MIN,RECHITMON_TIME_MAX);
00265 h_HFThreshOccupancy=dbe_->book1D("HF_occupancy_thresh",
00266 "HF RecHit Occupancy Above Threshold",
00267 173,-0.5,1729.5);
00268
00269
00270 dbe_->setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers");
00271
00272 h_LumiPlot_BX_HcalHLTEvents = dbe_->book1D("BX_HcalHLT_Events_TimeCut",
00273 "BX # of HcalHLT events (HFM & HFP HT>1 & HFM-HFP time cut)",
00274 3600,0,3600);
00275 h_LumiPlot_BX_HcalHLTEvents_notimecut = dbe_->book1D("BX_HcalHLT_Events_notimecut",
00276 "BX # of HcalHLT events (HFM,HFP HT>1, no time cut)",
00277 3600,0,3600);
00278 h_LumiPlot_LS_HcalHLTEvents=dbe_->book1D("HcalHLTEventsPerLS",
00279 "Number of HcalHLT Events vs LS (HT cut and HFM-HFP time cut)",
00280 NLumiBlocks_/10,0.5,NLumiBlocks_+0.5);
00281 h_LumiPlot_LS_HcalHLTEvents_notimecut=dbe_->book1D("HcalHLTEventsPerLS_notimecut",
00282 "Number of Events with HcalHLT vs LS (HFM,HFP HT>1,no time cut)",
00283 NLumiBlocks_/10,0.5,NLumiBlocks_+0.5);
00284
00285
00286 dbe_->setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers/");
00287 h_HF_HcalHLT_weightedtimedifference = dbe_->book1D("HF_HcalHLT_weightedtimeDifference",
00288 "Energy-Weighted time difference between HF+ and HF- Hcal HLT",
00289 251,-250.5,250.5);
00290 h_HE_HcalHLT_weightedtimedifference = dbe_->book1D("HE_HcalHLT_weightedtimeDifference",
00291 "Energy-Weighted time difference between HE+ and HE- Hcal HLT",
00292 251,-250.5,250.5);
00293 h_HF_HcalHLT_energydifference = dbe_->book1D("HF_HcalHLT_energyDifference",
00294 "Sum(E_HFPlus - E_HFMinus)/Sum(E_HFPlus + E_HFMinus)",
00295 200,-1,1);
00296 h_HE_HcalHLT_energydifference = dbe_->book1D("HE_HcalHLT_energyDifference",
00297 "Sum(E_HEPlus - E_HEMinus)/Sum(E_HEPlus + E_HEMinus)",
00298 200,-1,1);
00299
00300
00301 dbe_->setCurrentFolder(subdir_+"AnomalousCellFlags");
00302
00303
00304 h_HFLongShort_vs_LS=dbe_->book1D("HFLongShort_vs_LS",
00305 "HFLongShort Flags vs Lumi Section",
00306 NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
00307 h_HFDigiTime_vs_LS=dbe_->book1D("HFDigiTime_vs_LS",
00308 "HFDigiTime Flags vs Lumi Section",
00309 NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
00310 h_HBHEHPDMult_vs_LS=dbe_->book1D("HBHEHPDMult_vs_LS",
00311 "HBHEHPDMult Flags vs Lumi Section",
00312 NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
00313 h_HBHEPulseShape_vs_LS=dbe_->book1D("HBHEPulseShape_vs_LS",
00314 "HBHEPulseShape Flags vs Lumi Section",
00315 NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
00316
00317 h_HF_FlagCorr=dbe_->book2D("HF_FlagCorrelation",
00318 "HF LongShort vs. DigiTime flags; DigiTime; LongShort",
00319 2,-0.5,1.5,2,-0.5,1.5);
00320 h_HF_FlagCorr->setBinLabel(1,"OFF",1);
00321 h_HF_FlagCorr->setBinLabel(2,"ON",1);
00322 h_HF_FlagCorr->setBinLabel(1,"OFF",2);
00323 h_HF_FlagCorr->setBinLabel(2,"ON",2);
00324
00325 h_HBHE_FlagCorr=dbe_->book2D("HBHE_FlagCorrelation",
00326 "HBHE HpdHitMultiplicity vs. PulseShape flags; PulseShape; HpdHitMultiplicity",
00327 2,-0.5,1.5,2,-0.5,1.5);
00328 h_HBHE_FlagCorr->setBinLabel(1,"OFF",1);
00329 h_HBHE_FlagCorr->setBinLabel(2,"ON",1);
00330 h_HBHE_FlagCorr->setBinLabel(1,"OFF",2);
00331 h_HBHE_FlagCorr->setBinLabel(2,"ON",2);
00332
00333 h_FlagMap_HPDMULT=dbe_->book2D("FlagMap_HPDMULT",
00334 "RBX Map of HBHEHpdHitMultiplicity Flags;RBX;RM",
00335 72,-0.5,71.5,4,0.5,4.5);
00336 h_FlagMap_PULSESHAPE=dbe_->book2D("FlagMap_PULSESHAPE",
00337 "RBX Map of HBHEPulseShape Flags;RBX;RM",
00338 72,-0.5,71.5,4,0.5,4.5);
00339 h_FlagMap_DIGITIME=dbe_->book2D("FlagMap_DIGITIME",
00340 "RBX Map of HFDigiTime Flags;RBX;RM",
00341 24,131.5,155.5,4,0.5,4.5);
00342 h_FlagMap_LONGSHORT=dbe_->book2D("FlagMap_LONGSHORT",
00343 "RBX Map of HFLongShort Flags;RBX;RM",
00344 24,131.5,155.5,4,0.5,4.5);
00345
00346 h_FlagMap_TIMEADD=dbe_->book2D("FlagMap_TIMEADD",
00347 "RBX Map of Timing Added Flags;RBX;RM",
00348 156,-0.5,155.5,4,0.5,4.5);
00349 h_FlagMap_TIMESUBTRACT=dbe_->book2D("FlagMap_TIMESUBTRACT",
00350 "RBX Map of Timing Subtracted Flags;RBX;RM",
00351 156,-0.5,155.5,4,0.5,4.5);
00352 h_FlagMap_TIMEERROR=dbe_->book2D("FlagMap_TIMEERROR",
00353 "RBX Map of Timing Error Flags;RBX;RM",
00354 156,-0.5,155.5,4,0.5,4.5);
00355
00356 h_HBflagcounter=dbe_->book1D("HBflags","HB flags",32,-0.5,31.5);
00357 h_HBflagcounter->setBinLabel(1+HcalCaloFlagLabels::HBHEHpdHitMultiplicity, "HpdHitMult",1);
00358 h_HBflagcounter->setBinLabel(1+HcalCaloFlagLabels::HBHEPulseShape, "PulseShape",1);
00359 h_HBflagcounter->setBinLabel(1+HcalCaloFlagLabels::HSCP_R1R2, "HSCP R1R2",1);
00360 h_HBflagcounter->setBinLabel(1+HcalCaloFlagLabels::HSCP_FracLeader, "HSCP FracLeader",1);
00361 h_HBflagcounter->setBinLabel(1+HcalCaloFlagLabels::HSCP_OuterEnergy, "HSCP OuterEnergy",1);
00362 h_HBflagcounter->setBinLabel(1+HcalCaloFlagLabels::HSCP_ExpFit, "HSCP ExpFit",1);
00363
00364 h_HBflagcounter->setBinLabel(1+HcalCaloFlagLabels::HBHETimingTrustBits,"TimingTrust1",1);
00365 h_HBflagcounter->setBinLabel(2+HcalCaloFlagLabels::HBHETimingTrustBits,"TimingTrust2",1);
00366
00367 h_HBflagcounter->setBinLabel(1+HcalCaloFlagLabels::HBHETimingShapedCutsBits,"TimingShape1",1);
00368 h_HBflagcounter->setBinLabel(2+HcalCaloFlagLabels::HBHETimingShapedCutsBits,"TimingShape2",1);
00369 h_HBflagcounter->setBinLabel(3+HcalCaloFlagLabels::HBHETimingShapedCutsBits,"TimingShape3",1);
00370
00371
00372 h_HBflagcounter->setBinLabel(1+HcalCaloFlagLabels::TimingSubtractedBit, "Subtracted",1);
00373 h_HBflagcounter->setBinLabel(1+HcalCaloFlagLabels::TimingAddedBit, "Added",1);
00374 h_HBflagcounter->setBinLabel(1+HcalCaloFlagLabels::TimingErrorBit, "TimingError",1);
00375 h_HBflagcounter->setBinLabel(1+HcalCaloFlagLabels::ADCSaturationBit, "Saturation",1);
00376 h_HBflagcounter->setBinLabel(1+HcalCaloFlagLabels::Fraction2TS,"Frac2TS",1);
00377
00378
00379 h_HEflagcounter=dbe_->book1D("HEflags","HE flags",32,-0.5,31.5);
00380 h_HEflagcounter->setBinLabel(1+HcalCaloFlagLabels::HBHEHpdHitMultiplicity, "HpdHitMult",1);
00381 h_HEflagcounter->setBinLabel(1+HcalCaloFlagLabels::HBHEPulseShape, "PulseShape",1);
00382 h_HEflagcounter->setBinLabel(1+HcalCaloFlagLabels::HSCP_R1R2, "HSCP R1R2",1);
00383 h_HEflagcounter->setBinLabel(1+HcalCaloFlagLabels::HSCP_FracLeader, "HSCP FracLeader",1);
00384 h_HEflagcounter->setBinLabel(1+HcalCaloFlagLabels::HSCP_OuterEnergy, "HSCP OuterEnergy",1);
00385 h_HEflagcounter->setBinLabel(1+HcalCaloFlagLabels::HSCP_ExpFit, "HSCP ExpFit",1);
00386
00387 h_HEflagcounter->setBinLabel(1+HcalCaloFlagLabels::HBHETimingTrustBits,"TimingTrust1",1);
00388 h_HEflagcounter->setBinLabel(2+HcalCaloFlagLabels::HBHETimingTrustBits,"TimingTrust2",1);
00389
00390 h_HEflagcounter->setBinLabel(1+HcalCaloFlagLabels::HBHETimingShapedCutsBits,"TimingShape1",1);
00391 h_HEflagcounter->setBinLabel(2+HcalCaloFlagLabels::HBHETimingShapedCutsBits,"TimingShape2",1);
00392 h_HEflagcounter->setBinLabel(3+HcalCaloFlagLabels::HBHETimingShapedCutsBits,"TimingShape3",1);
00393 h_HEflagcounter->setBinLabel(1+HcalCaloFlagLabels::TimingSubtractedBit, "Subtracted",1);
00394 h_HEflagcounter->setBinLabel(1+HcalCaloFlagLabels::TimingAddedBit, "Added",1);
00395 h_HEflagcounter->setBinLabel(1+HcalCaloFlagLabels::TimingErrorBit, "TimingError",1);
00396 h_HEflagcounter->setBinLabel(1+HcalCaloFlagLabels::ADCSaturationBit, "Saturation",1);
00397 h_HEflagcounter->setBinLabel(1+HcalCaloFlagLabels::Fraction2TS,"Frac2TS",1);
00398
00399
00400 h_HOflagcounter=dbe_->book1D("HOflags","HO flags",32,-0.5,31.5);
00401 h_HOflagcounter->setBinLabel(1+HcalCaloFlagLabels::TimingSubtractedBit, "Subtracted",1);
00402 h_HOflagcounter->setBinLabel(1+HcalCaloFlagLabels::TimingAddedBit, "Added",1);
00403 h_HOflagcounter->setBinLabel(1+HcalCaloFlagLabels::TimingErrorBit, "TimingError",1);
00404 h_HOflagcounter->setBinLabel(1+HcalCaloFlagLabels::ADCSaturationBit, "Saturation",1);
00405 h_HOflagcounter->setBinLabel(1+HcalCaloFlagLabels::Fraction2TS,"Frac2TS",1);
00406
00407
00408 h_HFflagcounter=dbe_->book1D("HFflags","HF flags",32,-0.5,31.5);
00409 h_HFflagcounter->setBinLabel(1+HcalCaloFlagLabels::HFLongShort, "LongShort",1);
00410 h_HFflagcounter->setBinLabel(1+HcalCaloFlagLabels::HFDigiTime, "DigiTime",1);
00411 h_HFflagcounter->setBinLabel(1+HcalCaloFlagLabels::HFTimingTrustBits,"TimingTrust1",1);
00412 h_HFflagcounter->setBinLabel(1+HcalCaloFlagLabels::TimingSubtractedBit, "Subtracted",1);
00413 h_HFflagcounter->setBinLabel(1+HcalCaloFlagLabels::TimingAddedBit, "Added",1);
00414 h_HFflagcounter->setBinLabel(1+HcalCaloFlagLabels::TimingErrorBit, "TimingError",1);
00415 h_HFflagcounter->setBinLabel(1+HcalCaloFlagLabels::ADCSaturationBit, "Saturation",1);
00416 h_HFflagcounter->setBinLabel(1+HcalCaloFlagLabels::Fraction2TS,"Frac2TS",1);
00417
00418 h_HBflagcounter->getTH1F()->LabelsOption("v");
00419 h_HEflagcounter->getTH1F()->LabelsOption("v");
00420 h_HOflagcounter->getTH1F()->LabelsOption("v");
00421 h_HFflagcounter->getTH1F()->LabelsOption("v");
00422
00423
00424
00425
00426 dbe_->setCurrentFolder(subdir_+"diagnostics/hb");
00427
00428 h_HBTimeVsEnergy=dbe_->book2D("HBTimeVsEnergy","HB Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
00429
00430 h_HBsizeVsLS=dbe_->bookProfile("HBRecHitsVsLB","HB RecHits vs Luminosity Block",
00431 NLumiBlocks_,0.5,NLumiBlocks_+0.5,
00432 100,0,10000);
00433
00434 h_HBTime=dbe_->book1D("HB_time","HB RecHit Time",
00435 int(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN),RECHITMON_TIME_MIN,RECHITMON_TIME_MAX);
00436 h_HBOccupancy=dbe_->book1D("HB_occupancy",
00437 "HB RecHit Occupancy",260,-0.5,2599.5);
00438
00439
00440 dbe_->setCurrentFolder(subdir_+"diagnostics/he");
00441
00442 h_HETimeVsEnergy=dbe_->book2D("HETimeVsEnergy","HE Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
00443
00444 h_HEsizeVsLS=dbe_->bookProfile("HERecHitsVsLB","HE RecHits vs Luminosity Block",
00445 NLumiBlocks_,0.5,NLumiBlocks_+0.5,
00446 100,0,10000);
00447
00448 h_HETime=dbe_->book1D("HE_time","HE RecHit Time",
00449 int(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN),RECHITMON_TIME_MIN,RECHITMON_TIME_MAX);
00450 h_HEOccupancy=dbe_->book1D("HE_occupancy","HE RecHit Occupancy",260,-0.5,2599.5);
00451
00452
00453 dbe_->setCurrentFolder(subdir_+"diagnostics/ho");
00454
00455 h_HOTimeVsEnergy=dbe_->book2D("HOTimeVsEnergy","HO Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
00456
00457 h_HOsizeVsLS=dbe_->bookProfile("HORecHitsVsLB","HO RecHits vs Luminosity Block",
00458 NLumiBlocks_,0.5,NLumiBlocks_+0.5,
00459 100,0,10000);
00460 h_HOTime=dbe_->book1D("HO_time",
00461 "HO RecHit Time",
00462 int(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN),RECHITMON_TIME_MIN,RECHITMON_TIME_MAX);
00463 h_HOOccupancy=dbe_->book1D("HO_occupancy",
00464 "HO RecHit Occupancy",217,-0.5,2169.5);
00465
00466
00467 dbe_->setCurrentFolder(subdir_+"diagnostics/hf");
00468
00469 h_HFTimeVsEnergy=dbe_->book2D("HFTimeVsEnergy","HF Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
00470
00471 h_HFsizeVsLS=dbe_->bookProfile("HFRecHitsVsLB",
00472 "HF RecHits vs Luminosity Block",
00473 NLumiBlocks_,0.5,NLumiBlocks_+0.5,
00474 100, 0,10000);
00475 h_HFTime=dbe_->book1D("HF_time","HF RecHit Time",
00476 int(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN),RECHITMON_TIME_MIN,RECHITMON_TIME_MAX);
00477 h_HFOccupancy=dbe_->book1D("HF_occupancy","HF RecHit Occupancy",173,-0.5,1729.5);
00478
00479
00480 this->zeroCounters();
00481 this->reset();
00482
00483 return;
00484 }
00485
00486 void HcalRecHitMonitor::beginRun(const edm::Run& run, const edm::EventSetup& c)
00487 {
00488
00489 if (debug_>0) std::cout <<"HcalRecHitMonitor::beginRun(): task = '"<<subdir_<<"'"<<std::endl;
00490 HcalBaseDQMonitor::beginRun(run, c);
00491 if (tevt_==0)
00492 this->setup();
00493
00494 if (mergeRuns_==false)
00495 this->reset();
00496
00497 if (tevt_!=0) return;
00498
00499 dbe_->setCurrentFolder(subdir_+"rechit_parameters");
00500 std::string tnames="";
00501 if (HcalHLTBits_.size()>0)
00502 tnames=HcalHLTBits_[0];
00503 for (unsigned int i=1;i<HcalHLTBits_.size();++i)
00504 tnames=tnames + " OR " + HcalHLTBits_[i];
00505 dbe_->bookString("HcalHLTriggerRequirements",tnames);
00506 tnames="";
00507 if (MinBiasHLTBits_.size()>0)
00508 tnames=MinBiasHLTBits_[0];
00509 for (unsigned int i=1;i<MinBiasHLTBits_.size();++i)
00510 tnames=tnames + " OR " + MinBiasHLTBits_[i];
00511 dbe_->bookString("MinBiasHLTriggerRequirements",tnames);
00512 return;
00513
00514 }
00515
00516
00517 void HcalRecHitMonitor::endRun(const edm::Run& run, const edm::EventSetup& c)
00518 {
00519 if (debug_>0) std::cout <<"HcalRecHitMonitor::endRun(): task = '"<<subdir_<<"'"<<std::endl;
00520
00521
00522 }
00523
00524
00525
00526
00527 void HcalRecHitMonitor::reset()
00528 {
00529 std::vector<MonitorElement*> hists = dbe_->getAllContents(subdir_);
00530 for (unsigned int i=0;i<hists.size();++i)
00531 {
00532 if (hists[i]->kind()==MonitorElement::DQM_KIND_TH1F ||
00533 hists[i]->kind()==MonitorElement::DQM_KIND_TH2F ||
00534 hists[i]->kind()==MonitorElement::DQM_KIND_TPROFILE)
00535 hists[i]->Reset();
00536 }
00537 }
00538
00539 void HcalRecHitMonitor::endJob()
00540 {
00541 if (!enableCleanup_) return;
00542 HcalBaseDQMonitor::cleanup();
00543 this->cleanup();
00544 }
00545
00546
00547
00548
00549 void HcalRecHitMonitor::cleanup()
00550 {
00551
00552 if (!enableCleanup_) return;
00553 if (dbe_)
00554 {
00555 dbe_->setCurrentFolder(subdir_); dbe_->removeContents();
00556 dbe_->setCurrentFolder(subdir_+"rechit_parameters"); dbe_->removeContents();
00557 dbe_->setCurrentFolder(subdir_+"rechit_parameters/thresholds"); dbe_->removeContents();
00558 dbe_->setCurrentFolder(subdir_+"Distributions_AllRecHits"); dbe_->removeContents();
00559 dbe_->setCurrentFolder(subdir_+"Distributions_AllRecHits/sumplots"); dbe_->removeContents();
00560 dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias"); dbe_->removeContents();
00561 dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias/sumplots"); dbe_->removeContents();
00562 dbe_->setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers"); dbe_->removeContents();
00563 dbe_->setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers/passedTechTriggers/"); dbe_->removeContents();
00564
00565 dbe_->setCurrentFolder(subdir_+"AnomalousCellFlags"); dbe_->removeContents();
00566 dbe_->setCurrentFolder(subdir_+"diagnostics/hb"); dbe_->removeContents();
00567 dbe_->setCurrentFolder(subdir_+"diagnostics/he"); dbe_->removeContents();
00568 dbe_->setCurrentFolder(subdir_+"diagnostics/ho"); dbe_->removeContents();
00569 dbe_->setCurrentFolder(subdir_+"diagnostics/hf"); dbe_->removeContents();
00570 }
00571 return;
00572 }
00573
00574
00575
00576 void HcalRecHitMonitor::analyze(edm::Event const&e, edm::EventSetup const&s)
00577 {
00578 if (debug_>0) std::cout <<"HcalRecHitMonitor::analyze; debug = "<<debug_<<std::endl;
00579
00580 if (!IsAllowedCalibType()) return;
00581 if (LumiInOrder(e.luminosityBlock())==false) return;
00582
00583
00584 edm::Handle<HBHERecHitCollection> hbhe_rechit;
00585 edm::Handle<HORecHitCollection> ho_rechit;
00586 edm::Handle<HFRecHitCollection> hf_rechit;
00587
00588 if (!(e.getByLabel(hbheRechitLabel_,hbhe_rechit)))
00589 {
00590 edm::LogWarning("HcalHotCellMonitor")<< hbheRechitLabel_<<" hbhe_rechit not available";
00591 return;
00592 }
00593
00594 if (!(e.getByLabel(hfRechitLabel_,hf_rechit)))
00595 {
00596 edm::LogWarning("HcalHotCellMonitor")<< hfRechitLabel_<<" hf_rechit not available";
00597 return;
00598 }
00599
00600 if (!(e.getByLabel(hoRechitLabel_,ho_rechit)))
00601 {
00602 edm::LogWarning("HcalHotCellMonitor")<< hoRechitLabel_<<" ho_rechit not available";
00603 return;
00604 }
00605
00606
00607 h_LumiPlot_LS_allevents->Fill(currentLS);
00608 h_LumiPlot_BX_allevents->Fill(e.bunchCrossing());
00609 processEvent(*hbhe_rechit, *ho_rechit, *hf_rechit, e.bunchCrossing(), e);
00610
00611 HcalBaseDQMonitor::analyze(e,s);
00612 }
00613
00614
00615 void HcalRecHitMonitor::processEvent(const HBHERecHitCollection& hbHits,
00616 const HORecHitCollection& hoHits,
00617 const HFRecHitCollection& hfHits,
00618 int BCN,
00619 const edm::Event & iEvent
00620 )
00621 {
00622
00623
00624 if (debug_>1) std::cout <<"<HcalRecHitMonitor::processEvent> Processing event..."<<std::endl;
00625
00626
00627 bool passedHcalHLT=false;
00628 bool passedMinBiasHLT=false;
00629
00630 edm::Handle<edm::TriggerResults> hltRes;
00631 if (!(iEvent.getByLabel(hltresultsLabel_,hltRes)))
00632 {
00633 if (debug_>0) edm::LogWarning("HcalRecHitMonitor")<<" Could not get HLT results with tag "<<hltresultsLabel_<<std::endl;
00634 }
00635 else
00636 {
00637 const edm::TriggerNames & triggerNames = iEvent.triggerNames(*hltRes);
00638 const unsigned int nTrig(triggerNames.size());
00639 for (unsigned int i=0;i<nTrig;++i)
00640 {
00641
00642 for (unsigned int k=0;k<HcalHLTBits_.size();++k)
00643 {
00644
00645 if (triggerNames.triggerName(i).find(HcalHLTBits_[k])!=std::string::npos && hltRes->accept(i))
00646 {
00647 passedHcalHLT=true;
00648 break;
00649 }
00650 }
00651
00652 for (unsigned int k=0;k<MinBiasHLTBits_.size();++k)
00653 {
00654
00655 if (triggerNames.triggerName(i).find(MinBiasHLTBits_[k])!=std::string::npos && hltRes->accept(i))
00656 {
00657 passedMinBiasHLT=true;
00658 break;
00659 }
00660 }
00661 }
00662 }
00663
00664 if (debug_>2 && passedHcalHLT) std::cout <<"\t<HcalRecHitMonitor::processEvent> Passed Hcal HLT trigger "<<std::endl;
00665 if (debug_>2 && passedMinBiasHLT) std::cout <<"\t<HcalRecHitMonitor::processEvent> Passed MinBias HLT trigger "<<std::endl;
00666
00667 h_TriggeredEvents->Fill(0);
00668 if (passedMinBiasHLT) h_TriggeredEvents->Fill(1);
00669 if (passedHcalHLT) h_TriggeredEvents->Fill(2);
00670 processEvent_rechit(hbHits, hoHits, hfHits,passedHcalHLT,passedMinBiasHLT,BCN);
00671
00672 return;
00673 }
00674
00675
00676
00677
00678
00679 void HcalRecHitMonitor::processEvent_rechit( const HBHERecHitCollection& hbheHits,
00680 const HORecHitCollection& hoHits,
00681 const HFRecHitCollection& hfHits,
00682 bool passedHcalHLT,
00683 bool passedMinBiasHLT,
00684 int BCN)
00685 {
00686
00687
00688
00689
00690 if (debug_>1) std::cout <<"<HcalRecHitMonitor::processEvent_rechitenergy> Processing rechits..."<<std::endl;
00691
00692
00693
00694 int hbocc=0;
00695 int heocc=0;
00696 int hboccthresh=0;
00697 int heoccthresh=0;
00698
00699 double HtPlus =0, HtMinus=0;
00700 double HFePlus=0, HFeMinus=0;
00701 double HBePlus=0, HBeMinus=0;
00702 double HEePlus=0, HEeMinus=0;
00703 double HFtPlus=0, HFtMinus=0;
00704 double HBtPlus=0, HBtMinus=0;
00705 double HEtPlus=0, HEtMinus=0;
00706
00707 int hbpocc=0, hbmocc=0, hepocc=0, hemocc=0, hfpocc=0, hfmocc=0;
00708
00709 for (unsigned int i=0;i<4;++i)
00710 {
00711 OccupancyByDepth.depth[i]->update();
00712 OccupancyThreshByDepth.depth[i]->update();
00713 SumEnergyByDepth.depth[i]->update();
00714 SqrtSumEnergy2ByDepth.depth[i]->update();
00715 SumTimeByDepth.depth[i]->update();
00716 }
00717
00718 h_HBflagcounter->update();
00719 h_HEflagcounter->update();
00720 h_HFflagcounter->update();
00721 h_HOflagcounter->update();
00722
00723
00724 for (HBHERecHitCollection::const_iterator HBHEiter=hbheHits.begin(); HBHEiter!=hbheHits.end(); ++HBHEiter)
00725 {
00726 float en = HBHEiter->energy();
00727 float ti = HBHEiter->time();
00728 HcalDetId id(HBHEiter->detid().rawId());
00729 int ieta = id.ieta();
00730 int iphi = id.iphi();
00731 int depth = id.depth();
00732
00733 if (en>0.5)
00734 {
00735 h_rechitieta_05->Fill(ieta);
00736 h_rechitiphi_05->Fill(iphi);
00737 if (en>1.)
00738 {
00739 h_rechitieta_10->Fill(ieta);
00740 h_rechitiphi_10->Fill(iphi);
00741 if (en>2.5)
00742 {
00743 h_rechitieta_25->Fill(ieta);
00744 h_rechitiphi_25->Fill(iphi);
00745 if (en>10.)
00746 {
00747 h_rechitieta_100->Fill(ieta);
00748 h_rechitiphi_100->Fill(iphi);
00749 }
00750 }
00751 }
00752 }
00753
00754
00755
00756 HcalSubdetector subdet = id.subdet();
00757 double fEta=fabs(0.5*(theHBHEEtaBounds[abs(ieta)-1]+theHBHEEtaBounds[abs(ieta)]));
00758
00759 int calcEta = CalcEtaBin(subdet,ieta,depth);
00760 int rbxindex=logicalMap->getHcalFrontEndId(HBHEiter->detid()).rbxIndex();
00761 int rm= logicalMap->getHcalFrontEndId(HBHEiter->detid()).rm();
00762
00763
00764 h_HBHE_FlagCorr->Fill(HBHEiter->flagField(HcalCaloFlagLabels::HBHEPulseShape),
00765 HBHEiter->flagField(HcalCaloFlagLabels::HBHEHpdHitMultiplicity));
00766
00767 if (HBHEiter->flagField(HcalCaloFlagLabels::HBHEHpdHitMultiplicity))
00768 {
00769 h_FlagMap_HPDMULT->Fill(rbxindex,rm);
00770 h_HBHEHPDMult_vs_LS->Fill(currentLS,1);
00771 }
00772 if (HBHEiter->flagField(HcalCaloFlagLabels::HBHEPulseShape))
00773 {
00774 h_FlagMap_PULSESHAPE->Fill(rbxindex,rm);
00775 h_HBHEPulseShape_vs_LS->Fill(currentLS,1);
00776 }
00777 if (HBHEiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
00778 h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
00779 else if (HBHEiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
00780 h_FlagMap_TIMEADD->Fill(rbxindex,rm);
00781 else if (HBHEiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
00782 h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
00783
00784 if (subdet==HcalBarrel)
00785 {
00786 if (en>HBenergyThreshold_)
00787 h_HBTimeVsEnergy->Fill(en,ti);
00788
00789 for (int f=0;f<32;f++)
00790 {
00791
00792
00793
00794
00795
00796
00797
00798 if (HBHEiter->flagField(f))
00799 ++HBflagcounter_[f];
00800 }
00801 ++occupancy_[calcEta][iphi-1][depth-1];
00802 energy_[calcEta][iphi-1][depth-1]+=en;
00803 energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
00804 time_[calcEta][iphi-1][depth-1]+=ti;
00805 if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
00806 h_HBTime->Fill(ti);
00807 else
00808 ++HBtime_[int(ti-RECHITMON_TIME_MIN)];
00809 ++hbocc;
00810
00811
00812 if (
00813 en>=HBenergyThreshold_ &&
00814 en/cosh(fEta)>=HBETThreshold_
00815 )
00816 {
00817 if (passedMinBiasHLT==true)
00818 {
00819 ++occupancy_thresh_[calcEta][iphi-1][depth-1];
00820 energy_thresh_[calcEta][iphi-1][depth-1]+=en;
00821 energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
00822 time_thresh_[calcEta][iphi-1][depth-1]+=ti;
00823
00824 ++hboccthresh;
00825 if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
00826 h_HBThreshTime->Fill(ti);
00827 else
00828 ++HBtime_thresh_[int(ti-RECHITMON_TIME_MIN)];
00829 }
00830
00831 if (ieta>0)
00832 {
00833 HBePlus+=en;
00834 HBtPlus+=ti*en;
00835 hbpocc++;
00836 }
00837 else
00838 {
00839 HBeMinus+=en;
00840 HBtMinus+=ti*en;
00841 hbmocc++;
00842 }
00843 }
00844 }
00845
00846 else if (subdet==HcalEndcap)
00847 {
00848 if (en>HEenergyThreshold_)
00849 h_HETimeVsEnergy->Fill(en,ti);
00850
00851 for (int f=0;f<32;f++)
00852 {
00853 if (HBHEiter->flagField(f))
00854 ++HEflagcounter_[f];
00855 }
00856
00857 ++occupancy_[calcEta][iphi-1][depth-1];
00858 energy_[calcEta][iphi-1][depth-1]+=en;
00859 energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
00860 time_[calcEta][iphi-1][depth-1]+=ti;
00861
00862 ++heocc;
00863 if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
00864 h_HETime->Fill(ti);
00865 else
00866 ++HEtime_[int(ti-RECHITMON_TIME_MIN)];
00867
00868
00869 if (en>=HEenergyThreshold_
00870 && en/cosh(fEta)>=HEETThreshold_
00871 )
00872 {
00873
00874 if (passedMinBiasHLT==true)
00875 {
00876 ++occupancy_thresh_[calcEta][iphi-1][depth-1];
00877 energy_thresh_[calcEta][iphi-1][depth-1]+=en;
00878 energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
00879 time_thresh_[calcEta][iphi-1][depth-1]+=ti;
00880 ++heoccthresh;
00881 if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
00882 h_HEThreshTime->Fill(ti);
00883 else
00884 ++HEtime_thresh_[int(ti-RECHITMON_TIME_MIN)];
00885 }
00886
00887 if (ieta>0)
00888 {
00889 HEePlus+=en;
00890 HEtPlus+=ti*en;
00891 hepocc++;
00892 }
00893 else
00894 {
00895 HEeMinus+=en;
00896 HEtMinus+=ti*en;
00897 hemocc++;
00898 }
00899 }
00900
00901 }
00902
00903 }
00904
00905
00906 HEePlus>0 ? HEtPlus/=HEePlus : HEtPlus=10000;
00907 HEeMinus>0 ? HEtMinus/=HEeMinus : HEtMinus=-10000;
00908 HBePlus>0 ? HBtPlus/=HBePlus : HBtPlus=10000;
00909 HBeMinus>0 ? HBtMinus/=HBeMinus : HBtMinus=-10000;
00910
00911 ++HB_occupancy_[hbocc/10];
00912 ++HE_occupancy_[heocc/10];
00913 ++HB_occupancy_thresh_[hboccthresh/10];
00914 ++HE_occupancy_thresh_[heoccthresh/10];
00915 h_HBsizeVsLS->Fill(currentLS,hbocc);
00916 h_HEsizeVsLS->Fill(currentLS,heocc);
00917
00918
00919
00920 h_HOsizeVsLS->Fill(currentLS,hoHits.size());
00921 int hoocc=0;
00922 int hooccthresh=0;
00923 for (HORecHitCollection::const_iterator HOiter=hoHits.begin(); HOiter!=hoHits.end(); ++HOiter)
00924 {
00925 float en = HOiter->energy();
00926 float ti = HOiter->time();
00927 if (en>HOenergyThreshold_)
00928 h_HOTimeVsEnergy->Fill(en,ti);
00929
00930 HcalDetId id(HOiter->detid().rawId());
00931 int ieta = id.ieta();
00932 int iphi = id.iphi();
00933 int depth = id.depth();
00934
00935 if (en>0.5)
00936 {
00937 h_rechitieta_05->Fill(ieta);
00938 h_rechitiphi_05->Fill(iphi);
00939 if (en>1.)
00940 {
00941 h_rechitieta_10->Fill(ieta);
00942 h_rechitiphi_10->Fill(iphi);
00943 if (en>2.5)
00944 {
00945 h_rechitieta_25->Fill(ieta);
00946 h_rechitiphi_25->Fill(iphi);
00947 if (en>10.)
00948 {
00949 h_rechitieta_100->Fill(ieta);
00950 h_rechitiphi_100->Fill(iphi);
00951 }
00952 }
00953 }
00954 }
00955
00956
00957
00958 int calcEta = CalcEtaBin(HcalOuter,ieta,depth);
00959 double fEta=fabs(0.5*(theHBHEEtaBounds[abs(ieta)-1]+theHBHEEtaBounds[abs(ieta)]));
00960
00961 int rbxindex=logicalMap->getHcalFrontEndId(HOiter->detid()).rbxIndex();
00962 int rm= logicalMap->getHcalFrontEndId(HOiter->detid()).rm();
00963
00964 if (HOiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
00965 h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
00966 else if (HOiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
00967 h_FlagMap_TIMEADD->Fill(rbxindex,rm);
00968 else if (HOiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
00969 h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
00970
00971
00972
00973 for (int f=0;f<32;f++)
00974 {
00975 if (HOiter->flagField(f))
00976 HOflagcounter_[f]++;
00977 }
00978
00979 ++occupancy_[calcEta][iphi-1][depth-1];
00980 energy_[calcEta][iphi-1][depth-1]+=en;
00981 energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
00982 time_[calcEta][iphi-1][depth-1]+=ti;
00983 ++hoocc;
00984 if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
00985 h_HOTime->Fill(ti);
00986 else
00987 ++HOtime_[int(ti-RECHITMON_TIME_MIN)];
00988
00989
00990
00991
00992 if (en>=HOenergyThreshold_
00993 && en/cosh(fEta)>=HOETThreshold_
00994 && passedMinBiasHLT==true
00995 )
00996 {
00997 ++occupancy_thresh_[calcEta][iphi-1][depth-1];
00998 energy_thresh_[calcEta][iphi-1][depth-1]+=en;
00999 energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
01000 time_thresh_[calcEta][iphi-1][depth-1]+=ti;
01001
01002 ++hooccthresh;
01003 if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
01004 h_HOThreshTime->Fill(ti);
01005 else
01006 ++HOtime_thresh_[int(ti-RECHITMON_TIME_MIN)];
01007 }
01008 }
01009
01010 ++HO_occupancy_[hoocc/10];
01011 ++HO_occupancy_thresh_[hooccthresh/10];
01012
01013
01014 h_HFsizeVsLS->Fill(currentLS,hfHits.size());
01015
01016 HtPlus=0; HtMinus=0;
01017
01018 int hfocc=0;
01019 int hfoccthresh=0;
01020 for (HFRecHitCollection::const_iterator HFiter=hfHits.begin(); HFiter!=hfHits.end(); ++HFiter)
01021 {
01022 float en = HFiter->energy();
01023 float ti = HFiter->time();
01024 if (en> HFenergyThreshold_)
01025 h_HFTimeVsEnergy->Fill(en,ti);
01026
01027 HcalDetId id(HFiter->detid().rawId());
01028 int ieta = id.ieta();
01029 int iphi = id.iphi();
01030 int depth = id.depth();
01031
01032 if (en>0.5)
01033 {
01034 h_rechitieta_05->Fill(ieta);
01035 h_rechitiphi_05->Fill(iphi);
01036 if (en>1.)
01037 {
01038 h_rechitieta_10->Fill(ieta);
01039 h_rechitiphi_10->Fill(iphi);
01040 if (en>2.5)
01041 {
01042 h_rechitieta_25->Fill(ieta);
01043 h_rechitiphi_25->Fill(iphi);
01044 if (en>10.)
01045 {
01046 h_rechitieta_100->Fill(ieta);
01047 h_rechitiphi_100->Fill(iphi);
01048 }
01049 }
01050 }
01051 }
01052
01053 double fEta=fabs(0.5*(theHFEtaBounds[abs(ieta)-29]+theHFEtaBounds[abs(ieta)-28]));
01054 int calcEta = CalcEtaBin(HcalForward,ieta,depth);
01055
01056 int rbxindex=logicalMap->getHcalFrontEndId(HFiter->detid()).rbxIndex();
01057 int rm= logicalMap->getHcalFrontEndId(HFiter->detid()).rm();
01058
01059 h_HF_FlagCorr->Fill(HFiter->flagField(HcalCaloFlagLabels::HFDigiTime),HFiter->flagField(HcalCaloFlagLabels::HFLongShort));
01060 if (HFiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
01061 h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
01062 else if (HFiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
01063 h_FlagMap_TIMEADD->Fill(rbxindex,rm);
01064 else if (HFiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
01065 h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
01066
01067 if (HFiter->flagField(HcalCaloFlagLabels::HFDigiTime))
01068 {
01069 h_FlagMap_DIGITIME->Fill(rbxindex,rm);
01070 h_HFDigiTime_vs_LS->Fill(currentLS,1);
01071 }
01072 if (HFiter->flagField(HcalCaloFlagLabels::HFLongShort))
01073 {
01074 h_FlagMap_LONGSHORT->Fill(rbxindex,rm);
01075 h_HFLongShort_vs_LS->Fill(currentLS,1);
01076 }
01077
01078 for (int f=0;f<32;f++)
01079 {
01080 if (HFiter->flagField(f))
01081 HFflagcounter_[f]++;
01082 }
01083
01084
01085 ++occupancy_[calcEta][iphi-1][depth-1];
01086 energy_[calcEta][iphi-1][depth-1]+=en;
01087 energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
01088 time_[calcEta][iphi-1][depth-1]+=ti;
01089 ++hfocc;
01090 if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
01091 h_HFTime->Fill(ti);
01092 else
01093 ++HFtime_[int(ti-RECHITMON_TIME_MIN)];
01094
01095 ieta>0 ? HtPlus+=en/cosh(fEta) : HtMinus+=en/cosh(fEta);
01096
01097 if (en>=HFenergyThreshold_ &&
01098 en/cosh(fEta)>=HFETThreshold_
01099 )
01100 {
01101
01102 if (passedMinBiasHLT)
01103 {
01104 ++occupancy_thresh_[calcEta][iphi-1][depth-1];
01105 energy_thresh_[calcEta][iphi-1][depth-1]+=en;
01106 energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
01107 time_thresh_[calcEta][iphi-1][depth-1]+=ti;
01108
01109 ++hfoccthresh;
01110 if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
01111 h_HFThreshTime->Fill(ti);
01112 else
01113 ++HFtime_thresh_[int(ti-RECHITMON_TIME_MIN)];
01114 }
01115
01116 if (ieta>0)
01117 {
01118 HFtPlus+=en*ti;
01119 HFePlus+=en;
01120 hfpocc++;
01121 }
01122 else if (ieta<0)
01123 {
01124 HFtMinus+=en*ti;
01125 HFeMinus+=en;
01126 hfmocc++;
01127 }
01128 }
01129 }
01130
01131 ++HF_occupancy_[hfocc/10];
01132 ++HF_occupancy_thresh_[hfoccthresh/10];
01133
01134
01135
01136
01137
01138 HFePlus>0 ? HFtPlus/=HFePlus : HFtPlus = 10000;
01139 HFeMinus>0 ? HFtMinus/=HFeMinus : HFtMinus = -10000;
01140
01141 double mintime=99;
01142 double minHT=std::min(HtMinus,HtPlus);
01143 minHT==HtMinus ? mintime=HFtMinus : mintime = HFtPlus;
01144
01145
01146
01147 h_LumiPlot_MinTime_vs_MinHT->Fill(minHT, mintime);
01148 h_LumiPlot_timeHT_HFM->Fill(HtMinus,HFtMinus);
01149 h_LumiPlot_timeHT_HFP->Fill(HtPlus,HFtPlus);
01150
01151 if (passedMinBiasHLT==true)
01152 {
01153 h_LumiPlot_SumHT_HFPlus_vs_HFMinus->Fill(HtMinus,HtPlus);
01154
01155
01156
01157 if (HtMinus>1 && HtPlus > 1)
01158 {
01159 h_LumiPlot_SumEnergy_HFPlus_vs_HFMinus->Fill(HFeMinus,HFePlus);
01160 h_LumiPlot_timeHFPlus_vs_timeHFMinus->Fill(HFtMinus,HFtPlus);
01161
01162 h_HFP_weightedTime->Fill(HFtPlus);
01163 h_HFM_weightedTime->Fill(HFtMinus);
01164 h_HBP_weightedTime->Fill(HBtPlus);
01165 h_HBM_weightedTime->Fill(HBtMinus);
01166
01167 h_HEP_weightedTime->Fill(HEtPlus);
01168 h_HEM_weightedTime->Fill(HEtMinus);
01169
01170 if (hepocc>0 && hemocc>0)
01171 {
01172 h_HEtimedifference->Fill(HEtPlus-HEtMinus);
01173 if (HEePlus-HEeMinus!=0) h_HEenergydifference->Fill((HEePlus-HEeMinus)/(HEePlus+HEeMinus));
01174 }
01175 if (hfpocc>0 && hfmocc>0)
01176 {
01177 h_HFtimedifference->Fill((HFtPlus)-(HFtMinus));
01178 if (HFePlus+HFeMinus!=0) h_HFenergydifference->Fill((HFePlus-HFeMinus)/(HFePlus+HFeMinus));
01179 }
01180
01181 h_LumiPlot_LS_MinBiasEvents_notimecut->Fill(currentLS);
01182 h_LumiPlot_BX_MinBiasEvents_notimecut->Fill(BCN);
01183 if (fabs(HFtPlus-HFtMinus)<timediffThresh_)
01184 {
01185 h_LumiPlot_LS_MinBiasEvents->Fill(currentLS);
01186 h_LumiPlot_BX_MinBiasEvents->Fill(BCN);
01187 }
01188
01189 HFP_HFM_Energy->Fill(HFeMinus/1000., HFePlus/1000.);
01190 }
01191
01192 if (debug_>1) std::cout <<"\t<HcalRecHitMonitor:: HF averages> TPLUS = "<<HFtPlus<<" EPLUS = "<<HFePlus<<" TMINUS = "<<HFtMinus<<" EMINUS = "<<HFeMinus<<" Weighted Time Diff = "<<((HFtPlus)-(HFtMinus))<<std::endl;
01193
01194
01195 }
01196
01197 if (passedHcalHLT && HtMinus>1 && HtPlus> 1 )
01198 {
01199 if (hfpocc>0 && hfmocc>0)
01200 {
01201 h_HF_HcalHLT_weightedtimedifference->Fill(HFtPlus-HFtMinus);
01202 if (HFePlus+HFeMinus!=0) h_HF_HcalHLT_energydifference->Fill((HFePlus-HFeMinus)/(HFePlus+HFeMinus));
01203 }
01204 if (hepocc>0 && hemocc>0)
01205 {
01206 h_HE_HcalHLT_weightedtimedifference->Fill(HEtPlus-HEtMinus);
01207 if (HEePlus-HEeMinus!=0) h_HE_HcalHLT_energydifference->Fill((HEePlus-HEeMinus)/(HEePlus+HEeMinus));
01208 }
01209
01210 h_LumiPlot_LS_HcalHLTEvents_notimecut->Fill(currentLS);
01211 h_LumiPlot_BX_HcalHLTEvents_notimecut->Fill(BCN);
01212 if (fabs(HFtPlus-HFtMinus)<timediffThresh_)
01213 {
01214 h_LumiPlot_LS_HcalHLTEvents->Fill(currentLS);
01215 h_LumiPlot_BX_HcalHLTEvents->Fill(BCN);
01216 }
01217 }
01218
01219 return;
01220 }
01221
01222
01223
01224
01225 void HcalRecHitMonitor::endLuminosityBlock(const edm::LuminosityBlock& lumiSeg,
01226 const edm::EventSetup& c)
01227
01228 {
01229
01230 if (LumiInOrder(lumiSeg.luminosityBlock())==false) return;
01231 fill_Nevents();
01232 return;
01233 }
01234
01235
01236 void HcalRecHitMonitor::fill_Nevents(void)
01237 {
01238
01239 if (debug_>0)
01240 {
01241 for (int k = 0; k < 32; k++){
01242 std::cout << "<HcalRecHitMonitor::fill_Nevents> HF Flag counter: Bin #" << k+1 << " = "<< HFflagcounter_[k] << std::endl;
01243 }
01244 }
01245
01246 for (int i=0;i<32;i++)
01247 {
01248 h_HBflagcounter->Fill(i,HBflagcounter_[i]);
01249 h_HEflagcounter->Fill(i,HEflagcounter_[i]);
01250 h_HOflagcounter->Fill(i,HOflagcounter_[i]);
01251 h_HFflagcounter->Fill(i,HFflagcounter_[i]);
01252 HBflagcounter_[i]=0;
01253 HEflagcounter_[i]=0;
01254 HOflagcounter_[i]=0;
01255 HFflagcounter_[i]=0;
01256 }
01257
01258
01259 int myieta=-1;
01260 if (ievt_>0)
01261 {
01262 for (int mydepth=0;mydepth<4;++mydepth)
01263 {
01264 for (int eta=0;eta<OccupancyByDepth.depth[mydepth]->getNbinsX();++eta)
01265 {
01266 myieta=CalcIeta(eta,mydepth+1);
01267
01268 for (int phi=0;phi<72;++phi)
01269 {
01270 if (occupancy_[eta][phi][mydepth]>0)
01271 {
01272 h_rechitieta->Fill(myieta,occupancy_[eta][phi][mydepth]);
01273 h_rechitiphi->Fill(phi+1,occupancy_[eta][phi][mydepth]);
01274 }
01275 if (occupancy_thresh_[eta][phi][mydepth]>0)
01276 {
01277 h_rechitieta_thresh->Fill(myieta,occupancy_thresh_[eta][phi][mydepth]);
01278 h_rechitiphi_thresh->Fill(phi+1,occupancy_thresh_[eta][phi][mydepth]);
01279 }
01280 OccupancyByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,occupancy_[eta][phi][mydepth]);
01281 SumEnergyByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,energy_[eta][phi][mydepth]);
01282 SqrtSumEnergy2ByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,sqrt(energy2_[eta][phi][mydepth]));
01283 SumTimeByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,time_[eta][phi][mydepth]);
01284
01285 OccupancyThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,occupancy_thresh_[eta][phi][mydepth]);
01286 SumEnergyThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,energy_thresh_[eta][phi][mydepth]);
01287 SqrtSumEnergy2ThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,sqrt(energy2_thresh_[eta][phi][mydepth]));
01288 SumTimeThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,time_thresh_[eta][phi][mydepth]);
01289 }
01290 }
01291 }
01292
01293 FillUnphysicalHEHFBins(OccupancyByDepth);
01294 FillUnphysicalHEHFBins(OccupancyThreshByDepth);
01295 FillUnphysicalHEHFBins(SumEnergyByDepth);
01296 FillUnphysicalHEHFBins(SqrtSumEnergy2ByDepth);
01297 FillUnphysicalHEHFBins(SumEnergyThreshByDepth);
01298 FillUnphysicalHEHFBins(SqrtSumEnergy2ThreshByDepth);
01299 FillUnphysicalHEHFBins(SumTimeByDepth);
01300 FillUnphysicalHEHFBins(SumTimeThreshByDepth);
01301
01302 }
01303
01304
01305
01306 for (int i=0;i<(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN);++i)
01307 {
01308 if (HBtime_[i]!=0)
01309 {
01310 h_HBTime->setBinContent(i+1,HBtime_[i]);
01311 }
01312 if (HBtime_thresh_[i]!=0)
01313 {
01314 h_HBThreshTime->setBinContent(i+1,HBtime_thresh_[i]);
01315 }
01316 if (HEtime_[i]!=0)
01317 {
01318
01319 h_HETime->setBinContent(i+1,HEtime_[i]);
01320 }
01321 if (HEtime_thresh_[i]!=0)
01322 {
01323 h_HEThreshTime->setBinContent(i+1,HEtime_thresh_[i]);
01324 }
01325 if (HOtime_[i]!=0)
01326 {
01327 h_HOTime->setBinContent(i+1,HOtime_[i]);
01328 }
01329 if (HOtime_thresh_[i]!=0)
01330 {
01331 h_HOThreshTime->setBinContent(i+1,HOtime_thresh_[i]);
01332 }
01333 if (HFtime_[i]!=0)
01334 {
01335 h_HFTime->setBinContent(i+1,HFtime_[i]);
01336 }
01337 if (HFtime_thresh_[i]!=0)
01338 {
01339 h_HFThreshTime->setBinContent(i+1,HFtime_thresh_[i]);
01340 }
01341 }
01342
01343 for (int i=0;i<260;++i)
01344 {
01345 if (HB_occupancy_[i]>0)
01346 {
01347 h_HBOccupancy->setBinContent(i+1,HB_occupancy_[i]);
01348 }
01349 if (HB_occupancy_thresh_[i]>0)
01350 {
01351 h_HBThreshOccupancy->setBinContent(i+1,HB_occupancy_thresh_[i]);
01352 }
01353 if (HE_occupancy_[i]>0)
01354 {
01355 h_HEOccupancy->setBinContent(i+1,HE_occupancy_[i]);
01356 }
01357 if (HE_occupancy_thresh_[i]>0)
01358 {
01359 h_HEThreshOccupancy->setBinContent(i+1,HE_occupancy_thresh_[i]);
01360 }
01361 }
01362
01363 for (int i=0;i<217;++i)
01364 {
01365 if (HO_occupancy_[i]>0)
01366 {
01367 h_HOOccupancy->setBinContent(i+1,HO_occupancy_[i]);
01368 }
01369 if (HO_occupancy_thresh_[i]>0)
01370 {
01371 h_HOThreshOccupancy->setBinContent(i+1,HO_occupancy_thresh_[i]);
01372 }
01373 }
01374
01375 for (int i=0;i<173;++i)
01376 {
01377 if (HF_occupancy_[i]>0)
01378 {
01379 h_HFOccupancy->setBinContent(i+1,HF_occupancy_[i]);
01380 }
01381 if (HF_occupancy_thresh_[i]>0)
01382 {
01383 h_HFThreshOccupancy->setBinContent(i+1,HF_occupancy_thresh_[i]);
01384 }
01385 }
01386
01387
01388
01389 if (debug_>0)
01390 std::cout <<"<HcalRecHitMonitor::fill_Nevents> FILLED REC HIT CELL PLOTS"<<std::endl;
01391
01392 }
01393
01394
01395 void HcalRecHitMonitor::zeroCounters(void)
01396 {
01397
01398
01399 for (int i=0;i<32;++i)
01400 {
01401 HBflagcounter_[i]=0;
01402 HEflagcounter_[i]=0;
01403 HOflagcounter_[i]=0;
01404 HFflagcounter_[i]=0;
01405
01406 }
01407
01408 for (int i=0;i<85;++i)
01409 {
01410 for (int j=0;j<72;++j)
01411 {
01412 for (int k=0;k<4;++k)
01413 {
01414 occupancy_[i][j][k]=0;
01415 occupancy_thresh_[i][j][k]=0;
01416 energy_[i][j][k]=0;
01417 energy2_[i][j][k]=0;
01418 energy_thresh_[i][j][k]=0;
01419 energy2_thresh_[i][j][k]=0;
01420 time_[i][j][k]=0;
01421 time_thresh_[i][j][k]=0;
01422 }
01423 }
01424 }
01425
01426
01427
01428 for (int i=0;i<200;++i)
01429 {
01430 HFenergyLong_[i]=0;
01431 HFenergyLong_thresh_[i]=0;
01432 HFenergyShort_[i]=0;
01433 HFenergyShort_thresh_[i]=0;
01434 }
01435
01436
01437 for (int i=0;i<(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN);++i)
01438 {
01439 HBtime_[i]=0;
01440 HBtime_thresh_[i]=0;
01441 HEtime_[i]=0;
01442 HEtime_thresh_[i]=0;
01443 HOtime_[i]=0;
01444 HOtime_thresh_[i]=0;
01445 HFtime_[i]=0;
01446 HFtime_thresh_[i]=0;
01447 HFtimeLong_[i]=0;
01448 HFtimeLong_thresh_[i]=0;
01449 HFtimeShort_[i]=0;
01450 HFtimeShort_thresh_[i]=0;
01451 }
01452
01453
01454 for (int i=0;i<865;++i)
01455 {
01456 if (i<260)
01457 {
01458 HB_occupancy_[i]=0;
01459 HE_occupancy_[i]=0;
01460 HB_occupancy_thresh_[i]=0;
01461 HE_occupancy_thresh_[i]=0;
01462 }
01463 if (i<218)
01464 {
01465 HO_occupancy_[i]=0;
01466 HO_occupancy_thresh_[i]=0;
01467 }
01468 if (i<174)
01469 {
01470 HF_occupancy_[i]=0;
01471 HF_occupancy_thresh_[i]=0;
01472 }
01473
01474 HFlong_occupancy_[i] =0;
01475 HFshort_occupancy_[i]=0;
01476 HFlong_occupancy_thresh_[i] =0;
01477 HFshort_occupancy_thresh_[i]=0;
01478 }
01479
01480 return;
01481 }
01482
01483 DEFINE_FWK_MODULE(HcalRecHitMonitor);