00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "DQMOffline/JetMET/src/CaloMETAnalyzer.h"
00010 #include "DataFormats/Common/interface/Handle.h"
00011
00012 #include "DataFormats/METReco/interface/CaloMET.h"
00013 #include "DataFormats/METReco/interface/CaloMETCollection.h"
00014
00015 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00016
00017 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h"
00018 #include "DataFormats/CaloTowers/interface/CaloTowerDetId.h"
00019 #include "DataFormats/EcalDetId/interface/EcalSubdetector.h"
00020 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
00021
00022 #include "DataFormats/Math/interface/LorentzVector.h"
00023
00024 #include <string>
00025 using namespace std;
00026 using namespace edm;
00027
00028 CaloMETAnalyzer::CaloMETAnalyzer(const edm::ParameterSet& pSet) {
00029
00030 parameters = pSet;
00031
00032 }
00033
00034
00035 CaloMETAnalyzer::~CaloMETAnalyzer() { }
00036
00037
00038 void CaloMETAnalyzer::beginJob(edm::EventSetup const& iSetup,DQMStore * dbe) {
00039
00040 evtCounter = 0;
00041 metname = "caloMETAnalyzer";
00042
00043 LogTrace(metname)<<"[CaloMETAnalyzer] Parameters initialization";
00044 dbe->setCurrentFolder("JetMET/CaloMETAnalyzer");
00045
00046 HLTPathsJetMBByName_ = parameters.getParameter<std::vector<std::string > >("HLTPathsJetMB");
00047 nHLTPathsJetMB_=HLTPathsJetMBByName_.size();
00048 HLTPathsJetMBByIndex_.resize(nHLTPathsJetMB_);
00049
00050 jetME = dbe->book1D("caloMETReco", "caloMETReco", 3, 1, 4);
00051 jetME->setBinLabel(1,"CaloMET",1);
00052
00053 hNevents = dbe->book1D("METTask_Nevents", "METTask_Nevents" ,1,0,1);
00054 hCaloMEx = dbe->book1D("METTask_CaloMEx", "METTask_CaloMEx" ,500,-500,500);
00055 hCaloMEy = dbe->book1D("METTask_CaloMEy", "METTask_CaloMEy" ,500,-500,500);
00056 hCaloEz = dbe->book1D("METTask_CaloEz", "METTask_CaloEz" ,500,-500,500);
00057 hCaloMETSig = dbe->book1D("METTask_CaloMETSig","METTask_CaloMETSig",51,0,51);
00058 hCaloMET = dbe->book1D("METTask_CaloMET", "METTask_CaloMET" ,500,0,1000);
00059 hCaloMETPhi = dbe->book1D("METTask_CaloMETPhi","METTask_CaloMETPhi",80,-4,4);
00060 hCaloSumET = dbe->book1D("METTask_CaloSumET", "METTask_CaloSumET" ,1000,0,2000);
00061 hCaloMExLS = dbe->book2D("METTask_CaloMEx_LS","METTask_CaloMEx_LS",200,-200,200,500,0.,500.);
00062 hCaloMEyLS = dbe->book2D("METTask_CaloMEy_LS","METTask_CaloMEy_LS",200,-200,200,500,0.,500.);
00063
00064 hCaloMaxEtInEmTowers = dbe->book1D("METTask_CaloMaxEtInEmTowers", "METTask_CaloMaxEtInEmTowers" ,1000,0,2000);
00065 hCaloMaxEtInHadTowers = dbe->book1D("METTask_CaloMaxEtInHadTowers", "METTask_CaloMaxEtInHadTowers" ,1000,0,2000);
00066 hCaloEtFractionHadronic = dbe->book1D("METTask_CaloEtFractionHadronic","METTask_CaloEtFractionHadronic",100,0,1);
00067 hCaloEmEtFraction = dbe->book1D("METTask_CaloEmEtFraction", "METTask_CaloEmEtFraction" ,100,0,1);
00068
00069 hCaloHadEtInHB = dbe->book1D("METTask_CaloHadEtInHB","METTask_CaloHadEtInHB",1000,0,2000);
00070 hCaloHadEtInHO = dbe->book1D("METTask_CaloHadEtInHO","METTask_CaloHadEtInHO",1000,0,2000);
00071 hCaloHadEtInHE = dbe->book1D("METTask_CaloHadEtInHE","METTask_CaloHadEtInHE",1000,0,2000);
00072 hCaloHadEtInHF = dbe->book1D("METTask_CaloHadEtInHF","METTask_CaloHadEtInHF",1000,0,2000);
00073
00074
00075 hCaloEmEtInHF = dbe->book1D("METTask_CaloEmEtInHF" ,"METTask_CaloEmEtInHF" ,1000,0,2000);
00076 hCaloEmEtInEE = dbe->book1D("METTask_CaloEmEtInEE" ,"METTask_CaloEmEtInEE" ,1000,0,2000);
00077 hCaloEmEtInEB = dbe->book1D("METTask_CaloEmEtInEB" ,"METTask_CaloEmEtInEB" ,1000,0,2000);
00078
00079 hCaloMExNoHF = dbe->book1D("METTask_CaloMExNoHF", "METTask_CaloMExNoHF" ,500,-500,500);
00080 hCaloMEyNoHF = dbe->book1D("METTask_CaloMEyNoHF", "METTask_CaloMEyNoHF" ,500,-500,500);
00081 hCaloEzNoHF = dbe->book1D("METTask_CaloEzNoHF", "METTask_CaloEzNoHF" ,500,-500,500);
00082 hCaloMETSigNoHF = dbe->book1D("METTask_CaloMETSigNoHF","METTask_CaloMETSigNoHF",51,0,51);
00083 hCaloMETNoHF = dbe->book1D("METTask_CaloMETNoHF", "METTask_CaloMETNoHF" ,1000,0,1000);
00084 hCaloMETPhiNoHF = dbe->book1D("METTask_CaloMETPhiNoHF","METTask_CaloMETPhiNoHF",80,-4,4);
00085 hCaloSumETNoHF = dbe->book1D("METTask_CaloSumETNoHF", "METTask_CaloSumETNoHF" ,1000,0,2000);
00086 hCaloMExNoHFLS = dbe->book2D("METTask_CaloMExNoHF_LS","METTask_CaloMExNoHF_LS",200,-200,200,500,0.,500.);
00087 hCaloMEyNoHFLS = dbe->book2D("METTask_CaloMEyNoHF_LS","METTask_CaloMEyNoHF_LS",200,-200,200,500,0.,500.);
00088
00089 }
00090
00091 void CaloMETAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup,
00092 const edm::TriggerResults& triggerResults,
00093 const reco::CaloMET& calomet, const reco::CaloMET& calometNoHF) {
00094
00095 LogTrace(metname)<<"[CaloMETAnalyzer] Analyze CaloMET";
00096
00097 jetME->Fill(1);
00098
00099
00100
00101
00102 if(&triggerResults) {
00103
00105
00106
00107
00108
00109 int ntrigs = triggerResults.size();
00110
00111
00112
00113
00114
00115
00116 edm::TriggerNames triggerNames;
00117 triggerNames.init(triggerResults);
00118 unsigned int n(nHLTPathsJetMB_);
00119 for (unsigned int i=0; i!=n; i++) {
00120 HLTPathsJetMBByIndex_[i]=triggerNames.triggerIndex(HLTPathsJetMBByName_[i]);
00121 }
00122
00123
00124
00125
00126 if (n==0) {
00127 n=triggerResults.size();
00128 HLTPathsJetMBByName_.resize(n);
00129 HLTPathsJetMBByIndex_.resize(n);
00130 for (unsigned int i=0; i!=n; i++) {
00131 HLTPathsJetMBByName_[i]=triggerNames.triggerName(i);
00132 HLTPathsJetMBByIndex_[i]=i;
00133 }
00134 }
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154 unsigned int fired(0);
00155 for (unsigned int i=0; i!=n; i++) {
00156 if (HLTPathsJetMBByIndex_[i]<triggerResults.size()) {
00157 if (triggerResults.accept(HLTPathsJetMBByIndex_[i])) {
00158 fired++;
00159 }
00160 }
00161 }
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172 if (fired==0) return;
00173
00174 } else {
00175
00176 edm::LogInfo("CaloMetAnalyzer") << "TriggerResults::HLT not found, "
00177 "automatically select events";
00178
00179
00180 }
00181
00182
00183
00184 double caloSumET = calomet.sumEt();
00185 double caloMETSig = calomet.mEtSig();
00186 double caloEz = calomet.e_longitudinal();
00187 double caloMET = calomet.pt();
00188 double caloMEx = calomet.px();
00189 double caloMEy = calomet.py();
00190 double caloMETPhi = calomet.phi();
00191
00192 double caloMaxEtInEMTowers = calomet.maxEtInEmTowers();
00193 double caloMaxEtInHadTowers = calomet.maxEtInHadTowers();
00194 double caloEtFractionHadronic = calomet.etFractionHadronic();
00195 double caloEmEtFraction = calomet.emEtFraction();
00196
00197 double caloHadEtInHB = calomet.hadEtInHB();
00198 double caloHadEtInHO = calomet.hadEtInHO();
00199 double caloHadEtInHE = calomet.hadEtInHE();
00200 double caloHadEtInHF = calomet.hadEtInHF();
00201 double caloEmEtInEB = calomet.emEtInEB();
00202 double caloEmEtInEE = calomet.emEtInEE();
00203 double caloEmEtInHF = calomet.emEtInHF();
00204
00205 double caloSumETNoHF = calometNoHF.sumEt();
00206 double caloMETSigNoHF = calometNoHF.mEtSig();
00207 double caloEzNoHF = calometNoHF.e_longitudinal();
00208 double caloMETNoHF = calometNoHF.pt();
00209 double caloMExNoHF = calometNoHF.px();
00210 double caloMEyNoHF = calometNoHF.py();
00211 double caloMETPhiNoHF = calometNoHF.phi();
00212
00213
00214 int myLuminosityBlock;
00215
00216 myLuminosityBlock = iEvent.luminosityBlock();
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227 hCaloMEx->Fill(caloMEx);
00228 hCaloMEy->Fill(caloMEy);
00229 hCaloMET->Fill(caloMET);
00230 hCaloMETPhi->Fill(caloMETPhi);
00231 hCaloSumET->Fill(caloSumET);
00232 hCaloMETSig->Fill(caloMETSig);
00233 hCaloEz->Fill(caloEz);
00234 hCaloMExLS->Fill(caloMEx,myLuminosityBlock);
00235 hCaloMEyLS->Fill(caloMEy,myLuminosityBlock);
00236
00237 hCaloMaxEtInEmTowers->Fill(caloMaxEtInEMTowers);
00238 hCaloMaxEtInHadTowers->Fill(caloMaxEtInHadTowers);
00239 hCaloEtFractionHadronic->Fill(caloEtFractionHadronic);
00240 hCaloEmEtFraction->Fill(caloEmEtFraction);
00241
00242 hCaloHadEtInHB->Fill(caloHadEtInHB);
00243 hCaloHadEtInHO->Fill(caloHadEtInHO);
00244 hCaloHadEtInHE->Fill(caloHadEtInHE);
00245 hCaloHadEtInHF->Fill(caloHadEtInHF);
00246 hCaloEmEtInEB->Fill(caloEmEtInEB);
00247 hCaloEmEtInEE->Fill(caloEmEtInEE);
00248 hCaloEmEtInHF->Fill(caloEmEtInHF);
00249
00250 hCaloMExNoHF->Fill(caloMExNoHF);
00251 hCaloMEyNoHF->Fill(caloMEyNoHF);
00252 hCaloMETNoHF->Fill(caloMETNoHF);
00253 hCaloMETPhiNoHF->Fill(caloMETPhiNoHF);
00254 hCaloSumETNoHF->Fill(caloSumETNoHF);
00255 hCaloMETSigNoHF->Fill(caloMETSigNoHF);
00256 hCaloEzNoHF->Fill(caloEzNoHF);
00257 hCaloMExNoHFLS->Fill(caloMExNoHF,myLuminosityBlock);
00258 hCaloMEyNoHFLS->Fill(caloMEyNoHF,myLuminosityBlock);
00259
00260 }