00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "DQMOffline/JetMET/interface/TcMETAnalyzer.h"
00010 #include "DataFormats/Common/interface/Handle.h"
00011 #include "FWCore/Common/interface/TriggerNames.h"
00012
00013 #include "DataFormats/Math/interface/LorentzVector.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 edm;
00026 using namespace reco;
00027 using namespace math;
00028
00029
00030 TcMETAnalyzer::TcMETAnalyzer(const edm::ParameterSet& pSet) {
00031
00032 parameters = pSet;
00033
00034 }
00035
00036
00037 TcMETAnalyzer::~TcMETAnalyzer() { }
00038
00039 void TcMETAnalyzer::beginJob(DQMStore * dbe) {
00040
00041 evtCounter = 0;
00042 metname = "tcMETAnalyzer";
00043
00044
00045 HLTPathsJetMBByName_ = parameters.getParameter<std::vector<std::string > >("HLTPathsJetMB");
00046
00047 _hlt_HighPtJet = parameters.getParameter<std::string>("HLT_HighPtJet");
00048 _hlt_LowPtJet = parameters.getParameter<std::string>("HLT_LowPtJet");
00049 _hlt_HighMET = parameters.getParameter<std::string>("HLT_HighMET");
00050
00051 _hlt_Ele = parameters.getParameter<std::string>("HLT_Ele");
00052 _hlt_Muon = parameters.getParameter<std::string>("HLT_Muon");
00053
00054
00055 theTcMETCollectionLabel = parameters.getParameter<edm::InputTag>("TcMETCollectionLabel");
00056 _source = parameters.getParameter<std::string>("Source");
00057
00058
00059 HcalNoiseRBXCollectionTag = parameters.getParameter<edm::InputTag>("HcalNoiseRBXCollection");
00060 theJetCollectionLabel = parameters.getParameter<edm::InputTag>("JetCollectionLabel");
00061 HBHENoiseFilterResultTag = parameters.getParameter<edm::InputTag>("HBHENoiseFilterResultLabel");
00062
00063
00064 _verbose = parameters.getParameter<int>("verbose");
00065 _etThreshold = parameters.getParameter<double>("etThreshold");
00066 _allhist = parameters.getParameter<bool>("allHist");
00067 _allSelection= parameters.getParameter<bool>("allSelection");
00068
00069 _highPtTcJetThreshold = parameters.getParameter<double>("HighPtTcJetThreshold");
00070 _lowPtTcJetThreshold = parameters.getParameter<double>("LowPtTcJetThreshold");
00071 _highTcMETThreshold = parameters.getParameter<double>("HighTcMETThreshold");
00072 _lowTcMETThreshold = parameters.getParameter<double>("LowTcMETThreshold");
00073
00074
00075 jetID = new reco::helper::JetIDHelper(parameters.getParameter<ParameterSet>("JetIDParams"));
00076
00077
00078 LogTrace(metname)<<"[TcMETAnalyzer] Parameters initialization";
00079 std::string DirName = "JetMET/MET/"+_source;
00080 dbe->setCurrentFolder(DirName);
00081
00082 metME = dbe->book1D("metReco", "metReco", 4, 1, 5);
00083 metME->setBinLabel(2,"TcMET",1);
00084
00085 _dbe = dbe;
00086
00087 _FolderNames.push_back("All");
00088 _FolderNames.push_back("Cleanup");
00089 _FolderNames.push_back("HcalNoiseFilter");
00090 _FolderNames.push_back("JetID");
00091 _FolderNames.push_back("JetIDTight");
00092
00093 for (std::vector<std::string>::const_iterator ic = _FolderNames.begin();
00094 ic != _FolderNames.end(); ic++){
00095 if (*ic=="All") bookMESet(DirName+"/"+*ic);
00096 if (*ic=="Cleanup") bookMESet(DirName+"/"+*ic);
00097 if (_allSelection){
00098 if (*ic=="HcalNoiseFilter") bookMESet(DirName+"/"+*ic);
00099 if (*ic=="JetID") bookMESet(DirName+"/"+*ic);
00100 if (*ic=="JetIDTight") bookMESet(DirName+"/"+*ic);
00101 }
00102 }
00103 }
00104
00105
00106 void TcMETAnalyzer::endJob() {
00107
00108 delete jetID;
00109
00110 }
00111
00112
00113 void TcMETAnalyzer::bookMESet(std::string DirName)
00114 {
00115
00116 bool bLumiSecPlot=false;
00117 if (DirName.find("All")!=std::string::npos) bLumiSecPlot=true;
00118
00119 bookMonitorElement(DirName,bLumiSecPlot);
00120
00121 if (_hlt_HighPtJet.size()){
00122 bookMonitorElement(DirName+"/"+"HighPtJet",false);
00123 meTriggerName_HighPtJet = _dbe->bookString("triggerName_HighPtJet", _hlt_HighPtJet);
00124 }
00125
00126 if (_hlt_LowPtJet.size()){
00127 bookMonitorElement(DirName+"/"+"LowPtJet",false);
00128 meTriggerName_LowPtJet = _dbe->bookString("triggerName_LowPtJet", _hlt_LowPtJet);
00129 }
00130
00131 if (_hlt_HighMET.size()){
00132 bookMonitorElement(DirName+"/"+"HighMET",false);
00133 meTriggerName_HighMET = _dbe->bookString("triggerName_HighMET", _hlt_HighMET);
00134 }
00135
00136
00137
00138
00139
00140
00141 if (_hlt_Ele.size()){
00142 bookMonitorElement(DirName+"/"+"Ele",false);
00143 meTriggerName_Ele = _dbe->bookString("triggerName_Ele", _hlt_Ele);
00144 }
00145
00146 if (_hlt_Muon.size()){
00147 bookMonitorElement(DirName+"/"+"Muon",false);
00148 meTriggerName_Muon = _dbe->bookString("triggerName_Muon", _hlt_Muon);
00149 }
00150
00151 }
00152
00153
00154 void TcMETAnalyzer::bookMonitorElement(std::string DirName, bool bLumiSecPlot=false)
00155 {
00156
00157 if (_verbose) std::cout << "booMonitorElement " << DirName << std::endl;
00158 _dbe->setCurrentFolder(DirName);
00159
00160 meTcMEx = _dbe->book1D("METTask_TcMEx", "METTask_TcMEx", 200, -500, 500);
00161 meTcMEy = _dbe->book1D("METTask_TcMEy", "METTask_TcMEy", 200, -500, 500);
00162 meTcEz = _dbe->book1D("METTask_TcEz", "METTask_TcEz", 200, -500, 500);
00163 meTcMETSig = _dbe->book1D("METTask_TcMETSig", "METTask_TcMETSig", 51, 0, 51);
00164 meTcMET = _dbe->book1D("METTask_TcMET", "METTask_TcMET", 200, 0, 1000);
00165 meTcMETPhi = _dbe->book1D("METTask_TcMETPhi", "METTask_TcMETPhi", 60, -3.2, 3.2);
00166 meTcSumET = _dbe->book1D("METTask_TcSumET", "METTask_TcSumET", 400, 0, 4000);
00167
00168 meTcNeutralEMFraction = _dbe->book1D("METTask_TcNeutralEMFraction", "METTask_TcNeutralEMFraction" ,50,0.,1.);
00169 meTcNeutralHadFraction = _dbe->book1D("METTask_TcNeutralHadFraction","METTask_TcNeutralHadFraction",50,0.,1.);
00170 meTcChargedEMFraction = _dbe->book1D("METTask_TcChargedEMFraction", "METTask_TcChargedEMFraction" ,50,0.,1.);
00171 meTcChargedHadFraction = _dbe->book1D("METTask_TcChargedHadFraction","METTask_TcChargedHadFraction",50,0.,1.);
00172 meTcMuonFraction = _dbe->book1D("METTask_TcMuonFraction", "METTask_TcMuonFraction" ,50,0.,1.);
00173
00174 meTcMETIonFeedbck = _dbe->book1D("METTask_TcMETIonFeedbck", "METTask_TcMETIonFeedbck" ,500,0,1000);
00175 meTcMETHPDNoise = _dbe->book1D("METTask_TcMETHPDNoise", "METTask_TcMETHPDNoise" ,500,0,1000);
00176 meTcMETRBXNoise = _dbe->book1D("METTask_TcMETRBXNoise", "METTask_TcMETRBXNoise" ,500,0,1000);
00177
00178 if (_allhist){
00179 if (bLumiSecPlot){
00180 meTcMExLS = _dbe->book2D("METTask_TcMEx_LS","METTask_TcMEx_LS",200,-200,200,50,0.,500.);
00181 meTcMEyLS = _dbe->book2D("METTask_TcMEy_LS","METTask_TcMEy_LS",200,-200,200,50,0.,500.);
00182 }
00183 }
00184 }
00185
00186
00187 void TcMETAnalyzer::beginRun(const edm::Run& iRun, const edm::EventSetup& iSetup)
00188 {
00189
00190 }
00191
00192
00193 void TcMETAnalyzer::endRun(const edm::Run& iRun, const edm::EventSetup& iSetup, DQMStore * dbe)
00194 {
00195
00196
00197
00198
00199 std::string dirName = "JetMET/MET/"+_source+"/";
00200 _dbe->setCurrentFolder(dirName);
00201
00202 TH1F* tlumisec;
00203
00204 MonitorElement *meLumiSec = _dbe->get("aaa");
00205 meLumiSec = _dbe->get("JetMET/lumisec");
00206
00207 int totlsec=0;
00208 double totltime=0.;
00209 if ( meLumiSec->getRootObject() ) {
00210 tlumisec = meLumiSec->getTH1F();
00211 for (int i=0; i<500; i++){
00212 if (tlumisec->GetBinContent(i+1)) totlsec++;
00213 }
00214 totltime = double(totlsec*90);
00215 }
00216
00217 if (totltime==0.) totltime=1.;
00218
00219
00220
00221
00222 for (std::vector<std::string>::const_iterator ic = _FolderNames.begin(); ic != _FolderNames.end(); ic++)
00223 {
00224
00225 std::string DirName;
00226 DirName = dirName+*ic;
00227
00228 makeRatePlot(DirName,totltime);
00229 if (_hlt_HighPtJet.size()) makeRatePlot(DirName+"/"+_hlt_HighPtJet,totltime);
00230 if (_hlt_LowPtJet.size()) makeRatePlot(DirName+"/"+_hlt_LowPtJet,totltime);
00231 if (_hlt_HighMET.size()) makeRatePlot(DirName+"/"+_hlt_HighMET,totltime);
00232
00233 if (_hlt_Ele.size()) makeRatePlot(DirName+"/"+_hlt_Ele,totltime);
00234 if (_hlt_Muon.size()) makeRatePlot(DirName+"/"+_hlt_Muon,totltime);
00235
00236 }
00237 }
00238
00239
00240
00241 void TcMETAnalyzer::makeRatePlot(std::string DirName, double totltime)
00242 {
00243
00244 _dbe->setCurrentFolder(DirName);
00245 MonitorElement *meTcMET = _dbe->get(DirName+"/"+"METTask_TcMET");
00246
00247 TH1F* tTcMET;
00248 TH1F* tTcMETRate;
00249
00250 if ( meTcMET )
00251 if ( meTcMET->getRootObject() ) {
00252 tTcMET = meTcMET->getTH1F();
00253
00254
00255 tTcMETRate = (TH1F*) tTcMET->Clone("METTask_TcMETRate");
00256 for (int i = tTcMETRate->GetNbinsX()-1; i>=0; i--){
00257 tTcMETRate->SetBinContent(i+1,tTcMETRate->GetBinContent(i+2)+tTcMET->GetBinContent(i+1));
00258 }
00259 for (int i = 0; i<tTcMETRate->GetNbinsX(); i++){
00260 tTcMETRate->SetBinContent(i+1,tTcMETRate->GetBinContent(i+1)/double(totltime));
00261 }
00262
00263 meTcMETRate = _dbe->book1D("METTask_TcMETRate",tTcMETRate);
00264
00265 }
00266
00267 }
00268
00269
00270 void TcMETAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup,
00271 const edm::TriggerResults& triggerResults) {
00272
00273 if (_verbose) std::cout << "TcMETAnalyzer analyze" << std::endl;
00274
00275 LogTrace(metname)<<"[TcMETAnalyzer] Analyze TcMET";
00276
00277 metME->Fill(2);
00278
00279
00280
00281
00282 _trig_JetMB=0;
00283 _trig_HighPtJet=0;
00284 _trig_LowPtJet=0;
00285 _trig_HighMET=0;
00286
00287
00288 if (&triggerResults) {
00289
00291
00292
00293
00294
00295 int ntrigs = triggerResults.size();
00296 if (_verbose) std::cout << "ntrigs=" << ntrigs << std::endl;
00297
00298
00299
00300
00301 const edm::TriggerNames & triggerNames = iEvent.triggerNames(triggerResults);
00302
00303
00304
00305
00306 for (unsigned int i=0; i!=HLTPathsJetMBByName_.size(); i++) {
00307 unsigned int triggerIndex = triggerNames.triggerIndex(HLTPathsJetMBByName_[i]);
00308 if (triggerIndex<triggerResults.size()) {
00309 if (triggerResults.accept(triggerIndex)) {
00310 _trig_JetMB++;
00311 }
00312 }
00313 }
00314
00315 if (HLTPathsJetMBByName_.size()==0) _trig_JetMB=triggerResults.size()-1;
00316
00317
00318 if (_verbose) std::cout << "triggerNames size" << " " << triggerNames.size() << std::endl;
00319 if (_verbose) std::cout << _hlt_HighPtJet << " " << triggerNames.triggerIndex(_hlt_HighPtJet) << std::endl;
00320 if (_verbose) std::cout << _hlt_LowPtJet << " " << triggerNames.triggerIndex(_hlt_LowPtJet) << std::endl;
00321 if (_verbose) std::cout << _hlt_HighMET << " " << triggerNames.triggerIndex(_hlt_HighMET) << std::endl;
00322
00323 if (_verbose) std::cout << _hlt_Ele << " " << triggerNames.triggerIndex(_hlt_Ele) << std::endl;
00324 if (_verbose) std::cout << _hlt_Muon << " " << triggerNames.triggerIndex(_hlt_Muon) << std::endl;
00325
00326 if (triggerNames.triggerIndex(_hlt_HighPtJet) != triggerNames.size() &&
00327 triggerResults.accept(triggerNames.triggerIndex(_hlt_HighPtJet))) _trig_HighPtJet=1;
00328
00329 if (triggerNames.triggerIndex(_hlt_LowPtJet) != triggerNames.size() &&
00330 triggerResults.accept(triggerNames.triggerIndex(_hlt_LowPtJet))) _trig_LowPtJet=1;
00331
00332 if (triggerNames.triggerIndex(_hlt_HighMET) != triggerNames.size() &&
00333 triggerResults.accept(triggerNames.triggerIndex(_hlt_HighMET))) _trig_HighMET=1;
00334
00335
00336
00337
00338 if (triggerNames.triggerIndex(_hlt_Ele) != triggerNames.size() &&
00339 triggerResults.accept(triggerNames.triggerIndex(_hlt_Ele))) _trig_Ele=1;
00340
00341 if (triggerNames.triggerIndex(_hlt_Muon) != triggerNames.size() &&
00342 triggerResults.accept(triggerNames.triggerIndex(_hlt_Muon))) _trig_Muon=1;
00343
00344 } else {
00345
00346 edm::LogInfo("TcMetAnalyzer") << "TriggerResults::HLT not found, "
00347 "automatically select events";
00348
00349
00350 _trig_JetMB=1;
00351 }
00352
00353
00354
00355
00356
00357 edm::Handle<reco::METCollection> tcmetcoll;
00358 iEvent.getByLabel(theTcMETCollectionLabel, tcmetcoll);
00359
00360 if(!tcmetcoll.isValid()) return;
00361
00362 const METCollection *tcmetcol = tcmetcoll.product();
00363 const MET *tcmet;
00364 tcmet = &(tcmetcol->front());
00365
00366 LogTrace(metname)<<"[TcMETAnalyzer] Call to the TcMET analyzer";
00367
00368
00369
00370 edm::Handle<HcalNoiseRBXCollection> HRBXCollection;
00371 iEvent.getByLabel(HcalNoiseRBXCollectionTag,HRBXCollection);
00372 if (!HRBXCollection.isValid()) {
00373 LogDebug("") << "TcMETAnalyzer: Could not find HcalNoiseRBX Collection" << std::endl;
00374 if (_verbose) std::cout << "TcMETAnalyzer: Could not find HcalNoiseRBX Collection" << std::endl;
00375 }
00376
00377
00378 edm::Handle<bool> HBHENoiseFilterResultHandle;
00379 iEvent.getByLabel(HBHENoiseFilterResultTag, HBHENoiseFilterResultHandle);
00380 bool HBHENoiseFilterResult = *HBHENoiseFilterResultHandle;
00381 if (!HBHENoiseFilterResultHandle.isValid()) {
00382 LogDebug("") << "TcMETAnalyzer: Could not find HBHENoiseFilterResult" << std::endl;
00383 if (_verbose) std::cout << "TcMETAnalyzer: Could not find HBHENoiseFilterResult" << std::endl;
00384 }
00385
00386
00387 edm::Handle<reco::CaloJetCollection> caloJets;
00388 iEvent.getByLabel(theJetCollectionLabel, caloJets);
00389 if (!caloJets.isValid()) {
00390 LogDebug("") << "TcMETAnalyzer: Could not find jet product" << std::endl;
00391 if (_verbose) std::cout << "TcMETAnalyzer: Could not find jet product" << std::endl;
00392 }
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402 if (_verbose) std::cout << "JetID starts" << std::endl;
00403
00404
00405
00406
00407 bool bJetID=true;
00408 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
00409 cal!=caloJets->end(); ++cal){
00410 jetID->calculate(iEvent, *cal);
00411 if (_verbose) std::cout << jetID->n90Hits() << " "
00412 << jetID->restrictedEMF() << " "
00413 << cal->pt() << std::endl;
00414 if (cal->pt()>10.){
00415
00416
00417 if (jetID->n90Hits()<2) bJetID=false;
00418 if (jetID->fHPD()>=0.98) bJetID=false;
00419
00420
00421
00422 if (fabs(cal->eta())<2.55){
00423 if (cal->emEnergyFraction()<=0.01) bJetID=false;
00424 }
00425
00426 else {
00427 if (cal->emEnergyFraction()<=-0.9) bJetID=false;
00428 if (cal->pt()>80.){
00429 if (cal->emEnergyFraction()>= 1.0) bJetID=false;
00430 }
00431 }
00432 }
00433 }
00434
00435
00436
00437
00438 bool bJetIDTight=true;
00439 bJetIDTight=bJetID;
00440 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
00441 cal!=caloJets->end(); ++cal){
00442 jetID->calculate(iEvent, *cal);
00443 if (cal->pt()>25.){
00444
00445
00446 if (jetID->fHPD()>=0.95) bJetIDTight=false;
00447
00448
00449 if (fabs(cal->eta())>=1.00 && fabs(cal->eta())<1.75){
00450 if (cal->pt()>80. && cal->emEnergyFraction()>=1.) bJetIDTight=false;
00451 }
00452
00453
00454 else if (fabs(cal->eta())>=1.75 && fabs(cal->eta())<2.55){
00455 if (cal->pt()>80. && cal->emEnergyFraction()>=1.) bJetIDTight=false;
00456 }
00457
00458
00459 else if (fabs(cal->eta())>=2.55 && fabs(cal->eta())<3.25){
00460 if (cal->pt()< 50. && cal->emEnergyFraction()<=-0.3) bJetIDTight=false;
00461 if (cal->pt()>=50. && cal->pt()< 80. && cal->emEnergyFraction()<=-0.2) bJetIDTight=false;
00462 if (cal->pt()>=80. && cal->pt()<340. && cal->emEnergyFraction()<=-0.1) bJetIDTight=false;
00463 if (cal->pt()>=340. && cal->emEnergyFraction()<=-0.1
00464 && cal->emEnergyFraction()>=0.95) bJetIDTight=false;
00465 }
00466
00467
00468 else if (fabs(cal->eta())>=3.25){
00469 if (cal->pt()< 50. && cal->emEnergyFraction()<=-0.3
00470 && cal->emEnergyFraction()>=0.90) bJetIDTight=false;
00471 if (cal->pt()>=50. && cal->pt()<130. && cal->emEnergyFraction()<=-0.2
00472 && cal->emEnergyFraction()>=0.80) bJetIDTight=false;
00473 if (cal->pt()>=130. && cal->emEnergyFraction()<=-0.1
00474 && cal->emEnergyFraction()>=0.70) bJetIDTight=false;
00475 }
00476 }
00477 }
00478
00479 if (_verbose) std::cout << "JetID ends" << std::endl;
00480
00481
00482
00483
00484
00485 bool bHcalNoiseFilter = HBHENoiseFilterResult;
00486
00487
00488
00489
00490 std::string DirName = "JetMET/MET/"+_source;
00491
00492 for (std::vector<std::string>::const_iterator ic = _FolderNames.begin();
00493 ic != _FolderNames.end(); ic++){
00494 if (*ic=="All") fillMESet(iEvent, DirName+"/"+*ic, *tcmet);
00495 if (*ic=="Cleanup" && bHcalNoiseFilter && bJetID) fillMESet(iEvent, DirName+"/"+*ic, *tcmet);
00496 if (_allSelection) {
00497 if (*ic=="HcalNoiseFilter" && bHcalNoiseFilter ) fillMESet(iEvent, DirName+"/"+*ic, *tcmet);
00498 if (*ic=="JetID" && bJetID) fillMESet(iEvent, DirName+"/"+*ic, *tcmet);
00499 if (*ic=="JetIDTight" && bJetIDTight) fillMESet(iEvent, DirName+"/"+*ic, *tcmet);
00500 }
00501 }
00502 }
00503
00504
00505 void TcMETAnalyzer::fillMESet(const edm::Event& iEvent, std::string DirName,
00506 const reco::MET& tcmet)
00507 {
00508
00509 _dbe->setCurrentFolder(DirName);
00510
00511 bool bLumiSecPlot=false;
00512 if (DirName.find("All")) bLumiSecPlot=true;
00513
00514 if (_trig_JetMB) fillMonitorElement(iEvent,DirName,"",tcmet, bLumiSecPlot);
00515 if (_hlt_HighPtJet.size() && _trig_HighPtJet) fillMonitorElement(iEvent,DirName,"HighPtJet",tcmet,false);
00516 if (_hlt_LowPtJet.size() && _trig_LowPtJet) fillMonitorElement(iEvent,DirName,"LowPtJet",tcmet,false);
00517 if (_hlt_HighMET.size() && _trig_HighMET) fillMonitorElement(iEvent,DirName,"HighMET",tcmet,false);
00518
00519 if (_hlt_Ele.size() && _trig_Ele) fillMonitorElement(iEvent,DirName,"Ele",tcmet,false);
00520 if (_hlt_Muon.size() && _trig_Muon) fillMonitorElement(iEvent,DirName,"Muon",tcmet,false);
00521 }
00522
00523
00524 void TcMETAnalyzer::fillMonitorElement(const edm::Event& iEvent, std::string DirName,
00525 std::string TriggerTypeName,
00526 const reco::MET& tcmet, bool bLumiSecPlot)
00527 {
00528
00529 if (TriggerTypeName=="HighPtJet") {
00530 if (!selectHighPtJetEvent(iEvent)) return;
00531 }
00532 else if (TriggerTypeName=="LowPtJet") {
00533 if (!selectLowPtJetEvent(iEvent)) return;
00534 }
00535 else if (TriggerTypeName=="HighMET") {
00536 if (tcmet.pt()<_highTcMETThreshold) return;
00537 }
00538
00539
00540
00541 else if (TriggerTypeName=="Ele") {
00542 if (!selectWElectronEvent(iEvent)) return;
00543 }
00544 else if (TriggerTypeName=="Muon") {
00545 if (!selectWMuonEvent(iEvent)) return;
00546 }
00547
00548
00549 double tcSumET = tcmet.sumEt();
00550 double tcMETSig = tcmet.mEtSig();
00551 double tcEz = tcmet.e_longitudinal();
00552 double tcMET = tcmet.pt();
00553 double tcMEx = tcmet.px();
00554 double tcMEy = tcmet.py();
00555 double tcMETPhi = tcmet.phi();
00556
00557
00558 int myLuminosityBlock;
00559
00560 myLuminosityBlock = iEvent.luminosityBlock();
00561
00562
00563 if (TriggerTypeName!="") DirName = DirName +"/"+TriggerTypeName;
00564
00565 if (_verbose) std::cout << "_etThreshold = " << _etThreshold << std::endl;
00566 if (tcMET>_etThreshold){
00567
00568 meTcMEx = _dbe->get(DirName+"/"+"METTask_TcMEx"); if (meTcMEx && meTcMEx->getRootObject()) meTcMEx->Fill(tcMEx);
00569 meTcMEy = _dbe->get(DirName+"/"+"METTask_TcMEy"); if (meTcMEy && meTcMEy->getRootObject()) meTcMEy->Fill(tcMEy);
00570 meTcMET = _dbe->get(DirName+"/"+"METTask_TcMET"); if (meTcMET && meTcMET->getRootObject()) meTcMET->Fill(tcMET);
00571 meTcMETPhi = _dbe->get(DirName+"/"+"METTask_TcMETPhi"); if (meTcMETPhi && meTcMETPhi->getRootObject()) meTcMETPhi->Fill(tcMETPhi);
00572 meTcSumET = _dbe->get(DirName+"/"+"METTask_TcSumET"); if (meTcSumET && meTcSumET->getRootObject()) meTcSumET->Fill(tcSumET);
00573 meTcMETSig = _dbe->get(DirName+"/"+"METTask_TcMETSig"); if (meTcMETSig && meTcMETSig->getRootObject()) meTcMETSig->Fill(tcMETSig);
00574 meTcEz = _dbe->get(DirName+"/"+"METTask_TcEz"); if (meTcEz && meTcEz->getRootObject()) meTcEz->Fill(tcEz);
00575
00576 meTcMETIonFeedbck = _dbe->get(DirName+"/"+"METTask_TcMETIonFeedbck"); if (meTcMETIonFeedbck && meTcMETIonFeedbck->getRootObject()) meTcMETIonFeedbck->Fill(tcMET);
00577 meTcMETHPDNoise = _dbe->get(DirName+"/"+"METTask_TcMETHPDNoise"); if (meTcMETHPDNoise && meTcMETHPDNoise->getRootObject()) meTcMETHPDNoise->Fill(tcMET);
00578 meTcMETRBXNoise = _dbe->get(DirName+"/"+"METTask_TcMETRBXNoise"); if (meTcMETRBXNoise && meTcMETRBXNoise->getRootObject()) meTcMETRBXNoise->Fill(tcMET);
00579
00580 if (_allhist){
00581 if (bLumiSecPlot){
00582 meTcMExLS = _dbe->get(DirName+"/"+"METTask_TcMExLS"); if (meTcMExLS && meTcMExLS->getRootObject()) meTcMExLS->Fill(tcMEx,myLuminosityBlock);
00583 meTcMEyLS = _dbe->get(DirName+"/"+"METTask_TcMEyLS"); if (meTcMEyLS && meTcMEyLS->getRootObject()) meTcMEyLS->Fill(tcMEy,myLuminosityBlock);
00584 }
00585 }
00586 }
00587 }
00588
00589
00590
00591 bool TcMETAnalyzer::selectHighPtJetEvent(const edm::Event& iEvent){
00592
00593 bool return_value=false;
00594
00595 edm::Handle<reco::CaloJetCollection> caloJets;
00596 iEvent.getByLabel(theJetCollectionLabel, caloJets);
00597 if (!caloJets.isValid()) {
00598 LogDebug("") << "TcMETAnalyzer: Could not find jet product" << std::endl;
00599 if (_verbose) std::cout << "TcMETAnalyzer: Could not find jet product" << std::endl;
00600 }
00601
00602 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
00603 cal!=caloJets->end(); ++cal){
00604 if (cal->pt()>_highPtTcJetThreshold){
00605 return_value=true;
00606 }
00607 }
00608
00609 return return_value;
00610 }
00611
00612
00613 bool TcMETAnalyzer::selectLowPtJetEvent(const edm::Event& iEvent){
00614
00615 bool return_value=false;
00616
00617 edm::Handle<reco::CaloJetCollection> caloJets;
00618 iEvent.getByLabel(theJetCollectionLabel, caloJets);
00619 if (!caloJets.isValid()) {
00620 LogDebug("") << "TcMETAnalyzer: Could not find jet product" << std::endl;
00621 if (_verbose) std::cout << "TcMETAnalyzer: Could not find jet product" << std::endl;
00622 }
00623
00624 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
00625 cal!=caloJets->end(); ++cal){
00626 if (cal->pt()>_lowPtTcJetThreshold){
00627 return_value=true;
00628 }
00629 }
00630
00631 return return_value;
00632
00633 }
00634
00635
00636 bool TcMETAnalyzer::selectWElectronEvent(const edm::Event& iEvent){
00637
00638 bool return_value=false;
00639
00640
00641
00642
00643
00644 return return_value;
00645
00646 }
00647
00648
00649 bool TcMETAnalyzer::selectWMuonEvent(const edm::Event& iEvent){
00650
00651 bool return_value=false;
00652
00653
00654
00655
00656
00657 return return_value;
00658
00659 }